3 Vorgehensmodelle und Entwicklungsprozesse Flashcards
Was ist das Wasserfallmodell?
Vorgehensmodell zur Entwicklung von Software
- Vorgehen linear in vorher festgelegten Phasen > Erlauben keinen Rückschritt
- Im Rahmen jeder Phase werden klar definierte Ergebnisse erzielt und dokumentiert, bevor die nächste Phase gestartet wird
Welche Phasen umfasst das Wasserfallmodell?
- Anforderungserhebung
- Anforderungen definieren
- Dokumentation in Lastenheft (funktionale und nicht-funktionale Anforderungen) - Design und Spezifikation
- Beschreibung der Funktionsweise der Software (basierend auf vorher definierten Anforderungen)
- Pflichtenheft: Dokumentation der Software-Spezifikation, beschreibt, wie und womit die jeweiligen Anforderungen erfüllt werden sollen - Implementierung / Programmierung
- Software wird basierend auf Pflichtenheft programmiert.
- Innerhalb der Implementierung erste Tests der einzelnen entwickelnden Funktionen (Modultests) - Test
- Entwickeltes System wird in seiner Gesamtheit auf korrekte Funktionalität überprüft
- Umfasst das Zusammenspiel der einzelnen entwickelten Funktionen und den Datenaustausch mit anderen Systemen über Schnittstellen - Inbetriebnahme
- Wartung
- Fehlerbehebung und nachträglich entstandene Änderungswünsche
Was sind die Vorteile des Wasserfallmodells?
- leicht verständlich, erklärbar und enthält klare Anforderungen an die Dokumentation der einzelnen Phasen
- Fortschritt im Projekt gut erkennbar und kontrollierbar
- Erleichterte Planung des Gesamtprojekts
o Erstellung einer darauf basierenden gesamtheitlichen Aufwands-, Kosten- und Zeitplanung erstellt werden kann
o Voraussetzung zu Beginn des Projekts Umfang an Anforderungen transparent und unveränderter Projektverlauf
Was sind die Nachteile des Wasserfallmodells?
Nachteile:
- Unflexibel: starr und linear, kein Rückschritt möglich
o bei Überarbeitung und Neudefinition von Anforderungen
- Aufwändigen Phasen vor der Implementierung
o tatsächliche Software entsteht spät
o Anforderer sehen spät wie ihre Anforderungen in Systemfunktionen umgesetzt werden
Was ist die agile Vorgehensweise?
- Iteratives Vorgehen > in der Entwicklung Schritt für Schritt dem Ziel annähern
- übergeordnetes Ziel: möglichst früh einen funktionsfähigen Prototyp der Software zur Verfügung zu stellen, der dann iterativ verbessert und erweitert wird
Mögliche Probleme beim agilen Vorgehen
- wenn Ziele zu Projektbeginn nicht klar definiert
- nicht einfach Verträge mit Dienstleistern auf Basis agiler Vorgehensweise zu definieren, da keine genaue Planung die kommerzielle Bewertung erleichtert
Was ist ein Sprint?
- regelmäßigen Abstände, in denen eine neue Version der Software erstellt wird
- läuft für einen zuvor definierten Zeitraum (meist 2-4 Wochen)
- beginnt mit Sprintplanung
- endet mit Sprintreview
- Innerhalb des Sprints werden bestimmte Anforderungen umgesetzt > damit Erstellung neuer Version von potenziell auslieferbarer Software
- Kunden/Anforderern möglich schnell und kontinuierlich Feedback zu geben
o Erhöhte Anwenderakzeptanz
Vorteile Agiles Vorgehen
- Anpassungsfähigkeit: Agile Methoden erlauben flexible Anpassungen an veränderte Anforderungen.
- Frühe und regelmäßige Softwareversionen: Durch die kurzen Sprints entstehen kontinuierlich funktionale Versionen.
- Ständige Rückkopplung: Erhöht die Relevanz und Akzeptanz der Software.
- Transparenz und Teamkommunikation: Regelmäßige Meetings fördern die Zusammenarbeit.
Nachteile Agile Methoden
- Unklare Ziele zu Beginn: Fehlende Projektziele können zu Orientierungsproblemen führen.
- Planungs- und Kostenschätzungsschwierigkeiten: Fehlende langfristige Planung erschwert Kostenschätzung und Zeitpläne.
- Abhängigkeit von Kundenfeedback: Der Erfolg hängt von regelmäßiger Kundeneinbindung ab.
- Teamdisziplin und Selbstorganisation: Agile Methoden verlangen hohe Eigenverantwortung und Disziplin im Team.
Was sind die Hauptrollen im Scrum-Team?
- Product Owner: Verantwortlich für die Maximierung des Wertes des Produkts und die Verwaltung des Product Backlogs.
- Scrum Master: Unterstützt das Scrum-Team bei der Umsetzung von Scrum und entfernt Hindernisse.
- Entwickler (Developers): Fachleute, die die Arbeit zur Produktentwicklung durchführen. Dies umfasst Softwareentwickler, Designer, Tester und andere relevante Fachleute
Was sind die Ereignisse (Events) im Scrum?
- Sprint: Eine Zeitbox von in der Regel ein bis vier Wochen, in der ein funktionierendes Inkrement des Produkts erstellt wird.
- Sprint Planning: Eine Besprechung, in der das Team die Arbeit für den Sprint plant.
- Daily Scrum: Eine tägliche kurze Besprechung, in der das Team den Fortschritt und die Pläne für den Tag bespricht.
- Sprint Review: Eine Besprechung am Ende des Sprints, in der das Team das fertige Inkrement präsentiert und Feedback erhält.
- Sprint Retrospective: Eine Besprechung, in der das Team den Sprint reflektiert und Möglichkeiten zur Verbesserung identifiziert.
Artefakte im Scrum
- Product Backlog: Eine priorisierte Liste von Funktionen, Anforderungen und Verbesserungen für das Produkt.
- Sprint Backlog: Eine Liste der Aufgaben, die das Team während des Sprints erledigen möchte.
- Increment: Das fertige, funktionierende Ergebnis des Sprints.
Was ist Kanban?
- Visualisierung: Aufgaben werden auf einem Kanban-Board visualisiert, das in Spalten wie “Offen”, “In Arbeit” und “Erledigt” unterteilt ist.
- Pull-Prinzip: Teammitglieder wählen sich Aufgaben selbstständig, sobald sie Kapazitäten frei haben.
- WIP-Limit: Eine Obergrenze für die Anzahl gleichzeitig bearbeiteter Aufgaben, um Überlastung zu vermeiden (Work-In-Progress)
- Stetige Verbesserung: Regelmäßige Abstimmungen zur Prozessoptimierung.
Was ist Extreme Programming?
- Technische Exzellenz: Fokus auf hohe Code-Qualität durch Praktiken wie Testgetriebene Entwicklung und kontinuierliche Integration (Code in Hauptrepository > aktueller Stand)
- Kurze Entwicklungszyklen: Häufige und kleine Software-Updates, um schnell auf Änderungen und Feedback reagieren zu können.
- Paar-Programmierung: Zwei Entwickler arbeiten gemeinsam an einer Aufgabe, um Wissen zu teilen und Fehler frühzeitig zu erkennen.
- Kollektive Code-Eigentümerschaft: Jeder im Team kann Änderungen vornehmen.
- Kundeneinbindung: Der Kunde ist in den gesamten Entwicklungsprozess integriert.
Was sind die Unterschiede zwischen Wasserfall und Agile Methoden?
Vorgehensweise:
* Wasserfallmodell: Sequenzielles Vorgehen mit klar definierten Phasen.
* Agile Methoden: Iteratives Vorgehen mit kurzen Entwicklungszyklen (Sprints).
Phasenübergänge:
* Wasserfallmodell: Jede Phase muss abgeschlossen und dokumentiert sein, bevor die nächste beginnt; Rückschritte sind nicht vorgesehen.
* Agile Methoden: Jede Iteration liefert eine lauffähige Softwareversion, die ständig weiterentwickelt wird.
Planbarkeit und Flexibilität:
* Wasserfallmodell: Gut planbar und kontrollierbar, jedoch unflexibel bei sich ändernden Anforderungen.
* Agile Methoden: Flexibel und anpassungsfähig, da Anforderungen laufend angepasst werden können.
Feedback:
* Wasserfallmodell: Feedback ist meist erst am Ende möglich, wenn das Produkt nahezu fertig ist.
* Agile Methoden: Kontinuierliches Kundenfeedback nach jedem Sprint, was die Relevanz und Qualität des Endprodukts erhöht.