4.2 KiB
4.2 KiB
Introduction
What is Software Engineering
Definition according to Ian Sommerville
Software engineering is an engineering discipline that is concerned with all aspects of
software production from the early stages of system specification through to maintaining
the system after it has gone into use.
...Ingenieurdisziplin... | ...alle Aspekte der Softwareproduktion... |
---|---|
Ingenieure lassen Dinge funktionieren! | nicht nur die Softwareentwicklung |
Sie wenden Theorien, Methoden und Werkzeuge dort an, wo diese angemessen sind | beinhaltet auch Aktivitäten wie Projektmanagement, Entwicklung von Werkzeugen, Methoden und Theorien zur Unterstützung |
Lösungen müssen innerhalb organisatorischer und finanzieller Einschränkungen funktionieren |
Iron Triangle: Organizational and Financial Constraints
- visualisiert Einschränkungen im Projektmanagement
- verkündet:
- Qualität der Ergebnisse eines Projekts ist durch folgende Faktoren eingeschränkt:
- Kosten (verfügbar: Budget, Ingenieure, ...)
- Zeit (verfügbar: Zeit, Fristen)
- Umfang (Funktionen, bereitgestellte Funktionalität)
- PM kann zwischen Einschränkungen handeln
- Änderungen in einer Einschränkung erfordern Änderungen in anderen zur Kompensation, oder die Qualität wird leiden
- Qualität der Ergebnisse eines Projekts ist durch folgende Faktoren eingeschränkt:
- Die Realität ist komplexer
- Geld in ein vollständig ausgelastetes Projekt zu stecken, kann es verlangsamen
Software Development Lifecycle (SDLC)
stateDiagram
1: Requirement Analysis
2: Design
3: Implementation
4: Testing
5: Maintaining/Operations
1-->2
2-->3
3-->4
4-->5
5-->1
Requirement Analysis
- Understand what your client wants and/or needs
Design
- Design a solution that meets functional/non-functional requirements
Implementation
- Actually build the system meeting required quality goals
Testing
- Ensure that the whole system meets all requirements
Maintaining/Operations
- The system serves its purpose (earns money)
Software Quality
Requirements in Software Engineering
Functional Requirements (FR) | Non-Functional Requirements (NFR) |
---|---|
Systemfunktionen, Anwendungsfälle, ... | Eigenschaften des Systems als Ganzes, nicht im Zusammenhang mit der Funktionalität (bspw. Sicherheit, Performance, Wartbarkeit) |
Können unterschiedlich detailliert erfasst sein (je nach Komplexität des Projekts) | Beeinflussen die gesamte Architektur eines Systems, nicht nur einzelne Komponenten |
FRs sind meist höchste Prio des Clients, aber auch am einfachsten zu verhandeln | Wenn ein NFR scheitert, kann das ganze System nicht funktionieren |
Eight Quality Characteristics
Maintainability
- Modularität
- Wiederverwendbarkeit
- Analysierbarkeit
- Modifizierbarkeit
- Testbarkeit
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
~John F. Woods