VL I-? Flashcards
Prozess-Modelle beschreiben…
… den organisatorischen Rahmen für die Software-Entwicklung mit:
1) Reihenfolge und Phasen des Arbeitsablaufs
2) jeweils durchzuführenden Aktivitäten
3) Definition der Teilprodukte und ihrer Anforderungen
Eigenschaften des einfachen Wasserfall-Modells
Plangesteuert, sowohl inhaltlich als auch zeitlich. Eine Phase muss abgeschlossen sein, bevor die nächste beginnt. Aus jeder Phase gehen entsprechende Dokumente hervor.
Phasen des einfachen Wasserfall-Modells
1) Machbarkeitsstudie
2) Anforderungsanalyse
3) Entwurf
4) Codierung
5) Test
6) Betrieb
Wasserfall-Modell: Machbarkeitsstudie
Alternative Lösungsvorschläge:
- Ressourcen
- Kosten
- mögliche Erträge
Wasserfall-Modell: Anforderungsanalyse
Pflichtenheft, spezialisiert was die Software leisten soll, d.h. alle relevanten Funktions- und Qualitätsmerkmale präzise, vollständig, konsistent und verständlich
Wasserfall-Modell: Entwurf
Systemarchitektur:
- Module (Objekte, Klassen) & ihre Beziehungen
- häufig: Top-Down Entwurf, d.h. Zerlegung des Systems in Komponenten, der Komponenten in Unterkomponenten usw.
Wasserfall-Modell: Codierung
Implementierung:
- Programm bzw. Programmtext Module
- Implementierungsbericht:
- Details der Implementierung
- Abweichungen vom Entwurf
- Abweichungen vom Zeitplan inkl. Begründungen
Wasserfall-Modell: Test
Modultest: unabhäniger Test einzelner Module
Integrationstest: Test des Zusammenspiels mehrerer Module
Systemtest: Test des Gesamtsystems (alle Module)
Testbericht: Ergebnisse der durchgeführen Tests
Wasserfall-Modell: Betrieb
Installation beim Kunden -> Beginn der Wartung
Probleme des einfachen Wasserfall-Modells
- “Über die Mauer werfen”:
Kommunikation nur äber Dokumente, Verständnis für Phänomene der Phase N geht in N+1 weitgehend verloren - Probleme aus Phase N erfordern möglicherweise Änderungen in N-1
- > Wasserfall-Modell mit Rückkopplung zur direkt vorangegangen Phase
V-Modell
erweitert das Wasserfall-Modell um die Qualitätssicherung:
Anforderungsdefinition -> Anwendungsszenarien -> Abnahmetest
Grobentwurf -> Testfälle -> Systemtest
Feinentwurf -> Testfälle -> Integrationstest
Modulimplementation -> Testfälle -> Modultest
Probleme von Wasserfall-Modellem im Allgemeinen
1) Machbarkeit und Kosten lassen sich nur schwer schätzen
2) Pflichtenheft gibt dem Kunden nur unzureichenden Eindruck des zu entwickelnden Systems
3) Anforderungen werden zu früh festgesetzt
4) Zu viele Berichte, Dokumente -> Bürokratie
5) Kunde weiß oft nicht was er will
6) Fehler und Lücken in Anforderungen werden häufig erst im Betrieb entdeckt
7) Wartung schließt Weiterentwicklung mit ein -> Wiederholung einzelner Phasen
Evolutionäre/inkrementelle Softwareentwicklung
- Schrittweise (vor- und rückwärts) in Richtung Lösung
- Wichtigste Funktionalität in frühem Systeminkrement
- Frühes und stetiges Feedback vom KUnden
- Plangesteuert, agil oder Mischung daraus
- Günstiger und einfacher Änderungen einzuarbeiten
- Gleichzeitig stattfindende bzw. ineinander greifende Aktivitäten (Spezifikation -> Entwicklung -> Validierung)
Herausforderungen inkrementeller Softwareentwicklung
- inkrementelle Auslieferung kann normale Geschäftsabläufe stören
- stetige Veränderungen wodurch Systemstruktur beeinträchtigt werden kann
Arten von Prototypen
1) Demonstations-Prototyp: dient der Auftragsakquise
2) Analyse-Prototyp: dient der Veranschaulichung während der Analyse und ist ein provisorisches, ablauffähiges System
3) Labormuster: dient der Klärung konstruktionsbezogener Fragen
4) Pilotsystem: ist kein des zu erstellenden Produkts
Eigenschaften agiler Softwareentwicklung
1) Inkrementeller Ansatz (sehr kleine Inkremente)
2) Schnelle Entwicklung (zwei bis drei Wochen bis zur nächsten Version)
3) Kunde essentieller Bestandteil der Entwicklung (schnelle Rückmeldung bzgl. Anforderungen)
4) Informelle Kommunikation (Dokumentation wird minimiert)
5) Fokus auf Programmentwicklung
Extreme Programming
1) Anforderungen über User-Stories, direkte Implementierung über Abfolge von Aufgaben
2) Pair-Programming (Driver, Navigator)
3) Kollektives Eigentum (jeder darf alles ändern, verhindert Experteninseln)
4) Kunde vor Ort
5) Test-Driven Development (Tests vor Implementierung, Regressionstests)
6) Refactoring
7) Kurzer Releasezyklus
8) Continuous Integrations (Integrationstests)
SCRUM
Fokus auf Verwaltung iterativer Entwicklung
Personen:
Produkt Owner, Scrum Master, Team
Abfolge:
Product Backlog Items > Sprint Planning > Sprint Backlog > Sprint Demo & Retrospective (2 Wochen + tägliche Scrum Meetings und Burndown Charts) > Shippable Produkt
Probleme agiler Ansätze
- Ist der Kunde dazu bereit bzw. in der Lage im Entwicklungsprozess aktiv mitzuwirken
- Teamfähigkeit der Entwickler
- Passt es zur Firmenphilosophie (Prozesse anderer Abteilungen, Dokumente)