zusammenfassungen/Writerside/topics/02/OOAD/SoftwareProcesses.md
David Schirrmeister 73e1392286 update
2024-12-05 13:53:10 +01:00

93 lines
3.5 KiB
Markdown

# Software Processes
In den 1950ern wurde Software an Seite der Hardware entwickelt
- Ziel dieser Prozesse war das komplette Produkt in einem einzigen Projekt zu entwerfen
## Classic Organizational Structure
- **Business or Client**
- braucht neue Software/System
- Definiert Kriterien, welche für die Vollständigkeit des Systems essenziell sind
- Definiert _[requirements specification](IntroductionOOAD.md#requirements-in-software-engineering)_, welche das benötigte System beschreibt
- **Entwicklungsteam oder Software-Firma**
- Bekommt _requirements specification_
- Designt und entwickelt das System anhand der gegebenen Spezifikationen
- Erstellt ein Handbuch
- **Operations Team**
- Bekommt Handbuch
- Nimmt Rechenschaft für das Laufen der Software auf sich
- Gibt auftretende Fehler an das Entwicklungsteam weiter
## Handling of Change: Implications
Ursprüngliches Projekt ist fertig - Kunde ist aber nicht glücklich
- Ein neues Projekt startet den SDLC neu
- ![image_42.png](image_42.png)
## Waterfall Model
- Sequenzielle Ausführung der Phasen des [SDLC](IntroductionOOAD.md#software-development-lifecycle-sdlc)
- Jede Phase wird mit einer Dokumentation des Schritts beendet
- Iterationen sind nur zwischen zwei aufeinanderfolgenden Phasen möglich
- ![image_40.png](image_40.png)
- [![image_41.png](image_41.png)](SoftwareProcesses.md#classic-organizational-structure)
## Neue Modelle
### V-Modell
![image_43.png](image_43.png)
### Spiral-Modell
![image_44.png](image_44.png)
## Agile
### The Agile Manifesto
#### 4 Werte
- **Individuen und Interaktionen** über _Prozesse und Werkzeuge_
- **Funktionierende Software** über _verständliche Dokumentation_
- **Arbeit mit Kunden** über _Vertragsverhandlungen_
- **Anpassung an Veränderung** über _folgen des Plans_
#### 12 Prinzipien
- Funktionierende Software ist die primäre Ressource um den Fortschritt zu messen
- Die höchste Priorität ist den Kunden durch frühe und durchgehende Lieferung von wertvoller Software glücklich zu machen
- Liefere funktionierende Software regelmäßig, ~mehrere Wochen bis mehrere Monate → kürzer = besser
- Durchgehende Aufmerksamkeit auf technische Exzellenz und gutes Design verbessert die Agilität
### Strongly Iterative Development
Verstärkt durchgehende Kreation von Nutzen für Kunden
- Scope: wichtigsten Features der Iteration
- ![image_45.png](image_45.png)
Durchgehende Anpassung der Anforderungen an aktuelle Nachfrage
- ![image_46.png](image_46.png)
### Small and Cross-functional Teams
- Selbst organisiert, divers, T-shaped skills
- klein
- ![image_48.png](image_48.png)
- Beispiel Scrum Team:
- **3-9 Developers**
- verantwortlich für alle Aspekte der Entwicklung
- **1 Product Owner**
- spielt Kunde für die Devs, kreiert und priorisiert Features
- **1 Scrum Master**
- Coach, Prozess-Authorität
Business/Client wird Teil des Teams
- Product Owner
- ![image_47.png](image_47.png)
## DevOps
Erweiterung der agilen [Software-Entwicklung](SoftwareProcesses.md#agile)
- nicht nur Dev (_Entwicklung_), sondern auch Ops(_Operations_)
- Gefördert durch dynamische Cloud-Infrastuktur
- Führt zu höherer Qualität
- Devs machen stabileren Code
- fördert Automatisierung in allen Aspekten
DevOps fördert schnellere Iterationen
- Features können individuell ausgeliefert werden
- mehrere Releases am Tag sind normal
- schnellere Feedback-Cycles
- Bessere Adaption zu neuen Anforderungen
- Nutzer-Verhalten kann aufgezeichnet und für spätere Arbeit genutzt werden