Die Auswahl eines Entwicklungsmodells ist normalerweise bestimmt von den Projekteigenheiten und den Kundenvorgaben.
Wir empfehlen:
Das Waterfall-Modell für kritische Systeme, die selten geändert oder komplett modifiziert werden und deren Analyse zu Projektbeginn durchgeführt wird.
Das Incremental-Modell für kritische Systeme und Zielsysteme wie Embedded Software,
Spiele, Programmiertools, Web-Services.
Agile (scrum) Entwicklung für Business-Applikationen, die charakterisiert sind durch:
- die Anforderungen entwickeln und ändern sich während des Projekts
- der Kunde braucht sehr früh im Projekt laufenden Code
- Ausrichtung und Anforderungen ändern sich während der Projektlaufzeit signifikant
Scrum Praktiken
Der Entwicklungsprozess erfolgt in kleinen, aber handfesten Schritten, statt zu versuchen, alles im voraus zu planen.
Ungefähre Pläne für das Endergebnis: : vor Projektstart werden der Rohentwurf, Arbeistaufwände und Teamgröße grob geschätzt.
Flexible Planung: vor jeder erneuten Schätzung(Iteration) (alle 3 Wochen) wird eine Liste von Features festgelegt, die während dieser Iterationsphase implementiert werden muß (sprint backlog). Der Kunde kann so leicht Anforderungen während der gesamten Entwicklungsphase ändern oder funktionale Prioritäten so verändern, daß sie in andere Iterationsphasen eingefügt werden.
Sichtbarkeit: alle 3 Wochen werden Ergebnisse (eine Anzahl Features, immer potentiell funktionierende Software) an den Kunden geliefert
Frühe Bug-Erkennung: Entwicklung und Test laufen parrallel, um Bugs frühestmöglich zu erkennen der Tester arbeitet innerhalb des Entwicklungsteams. Frühe Erkennung von notwendigen oder unnützen Features.
Gute Entwicklungsgeschwindigkeit: fdie fixe und kurze Dauer bis zu jeder Auslieferung hilft, einen intensiven Arbeitsrhythmus im Entwicklungsteam zu halten.
Klare Kommunikation: enge, tägliche Kooperation und Integration innerhalb des Teams (tägliche persönliche Meetings des gesamten Teams, gemeinsames Arbeiten des Teams in einem Raum, falls möglich) führen zur Vermeidung unnötiger Nacharbeiten durch mögliche fehlende Abstimmung
Team-Verantwortlichkeit: die Einbeziehung des gesamten Teams in die Aufwandsschätzung führt zu gesteigertem Verantwortungsgefühl für die Endergebnisse
