StartseiteSitemapDownloadsHilfeImpressum Chat


Startseite

Einführung

Was versteht man unter einem Entwicklungsmodell?

Mit einem Entwicklungsmodell werden verschiedene Stadien (Phasen) eines Softwareprodukts von seiner Entstehung bis zum Ende seiner Verwendung vorgegeben, vergleiche [INFODUDEN S. 656]. Mit einem Entwicklungsmodell versucht man den Prozess der Systementwicklung im Vorhinein so festzulegen, dass man im Nachhinein auf eine optimale Systementwicklung zurückblicken kann. Ein Entwicklungsmodell hilft dem Entwickler, den gesamten Prozess der Systementwicklung so aufzuteilen, dass diese überschaubar und somit beherrschbar wird.

Aspekte

Bei der Aufteilung in einzelne Stadien/Phasen, die wiederum aufteilbar sind, stehen je nach Entwicklungsmodell verschiedene Aspekte im Vordergrund wie zum Beispiel:

Aufgaben und Rollen

Während der Systementwicklung fallen viele unterschiedliche Aufgaben an. Jede Aufgabe erfordert eine bestimmte Herangehensweise. Man spricht hierbei von Tätikeiten und Aktivitäten, für die je nach Entwicklungsmodell Rollen festgelegt werden. Typische Rollen in der Softwareentwicklung sind: Selbstverständlich lassen sich oben genannte Rollen wiederum in weitere spezialisiertere Rollen aufteilen. Und weitere Rollen wie zum Beispiel Rollen für die Qualitätssicherung sind hier noch gar nicht erwähnt.

Synonym

Im Vergleich zum Begriff Entwicklungsmodell hat sich in der IT−Branche der Begriff Vorgehensmodell (nicht zu verwechseln mit dem Begriff V-Modell) besser durchgesetzt. Die einzige Rechtfertigung für meine Begriffsungenauigkeit ist, dass sich meines Erachtens die Nicht−IT−ler unter dem Begriff Entwicklungsmodell etwas mehr vorstellen können.



Modelle

Es ist allgemein bekannt, dass zuverlässige, robuste, portable, wartbare, benutzerfreundliche und erweiterbare Software nur schwer zu entwicklen ist. Der Entwickler wünscht sich deshalb ein plan- und kontrollierbares Modell zur Entwicklung von Software, mit dem es möglich ist, sich dem Endziel (exzellente Software) schrittweise aber sicher anzunähern.
Zunächst liegt das Hauptaugenmerk auf etwas, das kaum planbar und kontrollierbar ist, was aber jeder kennt: dem Code−and−Fix−Zyklus.

Code−and−Fix

Unter einem Code−and−Fix−Verfahren versteht Boehm die unsystematische Vorgehensweise in der Frühzeit des Programmierens: Man beginnt ohne weitere Planungen und Vorüberlegungen mit dem Schreiben von Code (oft in einer niederen, wenig übersichtlichen Programmiersprache) und endet mit dem langwierigen und mühseligen Austesten und Zusammenfügen der Programmbausteine (fix). [INFO2004]
Dieses Verfahren ist aus diesem Grunde nicht sehr empfehlenswert für Projekte, vielleicht nicht einmal für Einmannprojekte.

Code−and−Fix−Algorithmus

1. Code schreiben
2. Code testen
3. Code verbessern
4. Goto 1 :-)
Jeder, der schon einmal nach diesem Verfahren programmiert hat, sagt sich spätestens bei der zehntausendsten Code−Zeile: Das programmier' ich später nochmal, aber dann viel besser! :−)
Diese Art zu programmieren, führte 1968 zur Software−Krise, denn:
  1. Zuverlässigkeit nimmt kontinuierlich ab!
  2. Wartbarkeit nimmt kontinuierlich ab!
  3. Wenn der Programmierer kündigt, ist alles vorbei!
Code−and−Fix ist also kein guter Ansatz für zuverlässige, wartbare Software. Außerdem umfassen heutige Projekte mehrere Personenjahre oder gar Personenjahrhunderte — das schafft ein einzelner Programmierer ja gar nicht!
Wer nun glaubt, dass das Code−and−Fix−Verfahren, also das „Drauflosprogrammieren”, der Vergangenheit angehört, irrt sich. Viele Programmierer (vermutlich sogar alle) programmieren — entgegen besserem Wissen — erst einmal drauflos, ohne überhaupt genau zu wissen, was sie wollen. Was dabei herauskommt, genügt den Qualitätsanforderungen eines Endprodukts in den seltensten Fällen. Sinnvoll ist dieses Vorgehen eventuell beim Erstellen eines vorläufigen Prototypen (Evolutionäres Modell).

Das Wasserfallmodell

Das Wasserfallmodell gliedert sich in mehrere Phasen, wobei jede einzelne Phase metaphorisch für eine Fallstufe eines echten Wasserfalls steht. Erst wenn eine Phase vollständig abgeschlossen ist, kann mit der Folgephase fortgefahren werden. Ein Rücksprung in eine Vorgängerphase ist nicht vorgesehen, ähnlich wie bei einem echten Wasserfall: Ein Wassermolekül kann keine Fallstufe mehr erreichen, die es bereits passiert hat (ohne Rücksprung).
Jedoch bietet dieses Modell nur wenige Möglichkeiten zur Kosten− und Ressourcenabschätzung, und die Vorwegnahme von nachträglichen Änderungsmöglichkeiten (Antizipation des Wandels) wird überhaupt nicht unterstützt.

Das V−Modell

Zu den wohl berühmtesten Vorgehensmodellen zählt das V−Modell. Es zeichnet sich dadurch aus, dass der Entwicklungsprozess auf die projektspezifischen Bedürfnisse angepasst werden kann, um nicht mehr Aufwand zu haben als unbedingt notwendig ist. Der Name des V−Modells gründet auf der V−artigen Anordnung der einzelnen Phasen in einem Detailierung−Zeit−Diagramm.

Das evolutionäre Modell

Das evolutionäre Modell ist ein flexibles Modell zur strukturierten Software−Entwicklung. Es eignet sich besonders dann, wenn der Kunde überhaupt nicht weiß, was er will! Zudem kann es auch vorkommen, dass der Entwickler nicht weiß, wie bestimmte Anforderungen realisiert werden können. Zur schrittweisen Annäherung an eine vage Anforderung oder eine vage Realisierung bietet das evolutionäre Modell den nötigen Spielraum für beide Seiten — den Auftraggeber und den Auftragnehmer.
Ein System/Produkt wird als Folge von Approximationen realisiert. Mit diesem Modell lernt das Entwickler−Team, die Bedürfnisse und Wünsche des Kunden zu verstehen und demgemäß umzusetzen.

Das Spiralmodell

Das Spiralmodell ist ein Metamodell, das evolutionäre Aspekte und Risikobewertung umfasst. Das Softwareprodukt wächst wie eine Spirale, wobei diese in vier Quadranten (je ein 90°−Sektor) unterteilt ist. Ein Umlauf durch alle vier Quadranten ergibt den nächsten Prototyp, der wiederum im nächsten Umlauf erweitert wird.

Spiralmodell−Algorithmus

1. Anforderungsdefinition
2. Bewertung von Alternativen und deren Risiken
3. Entwurf, Implementation und Test
4. Auswertung und Planung des nächsten Umlaufs
5. Goto 1

Extreme Programming

Unter Extreme Programming versteht man einen Prozess zum schnellen Programmerstellen in unsicherem Umfeld. Es ist sozusagen eine Erweiterung von Code-and-Fix für eine kleine Gruppe qualifizierter Programmierer, die sich ihre Regeln selbst macht; zum Beispiel sorgt Pair Programming (Programmieren in Paaren) für ständiges Gegenlesen durch den Partner.
Jeder darf die Software umstrukturieren, solange dies begründet und kommentiert ist.
Der Grundsatz des Extreme Programming lautet:
  1. Ohne Testen läuft gar nichts!
Nach der Implementierung wird oftmals die Verifikation vernachlässigt. Aus diesem Grund schreibt man die Testfälle vor der Implementierung der Methoden, die jederzeit automatisch ausgeführt werden können; JUnit ist zum Beispiel ein gutes Werkzeug dafür.


Extreme Programming ist die Antwort auf die übermäßige Prozessmodellierung der 90er Jahre. Das Wasserfallmodell hat beispielsweise bei größeren Projekten eine lästige, projektinterne Bürokratie zur Folge, in der sich nur wenige zurechtfinden.
Es ist jedoch unklar, ob das Modell „Extreme Programming” auf große bzw. kritische Systeme anwendbar ist.

Scrum

„Scrum ist ein Entwicklungsstil, bei dem ein Projekt sich einem Featureset widmet, das innerhalb eines 30 Tage Sprints implementiert werden kann”, heißt es in [SWSCHäTZUNG S. 113].
Unter Featureset verstehe ich eine kleine zusammengehörige Funktionsmenge, die in relativ kurzer Zeit (Sprint) implementiert werden kann, sobald die Anforderungsdefinition dafür abgeschlossen ist.
Nach dem Sprint folgt die nächste Iteration, d. h. die Featureset−Definition, welche wiederum in einem Sprint implementiert wird. Des Weiteren heißt es in [SWSCHäTZUNG], dass der Kunde während eines Sprints nicht mehr die Möglichkeit habe, die entsprechende Featureset−Definition zu ändern.

Das Transformationsmodell

Für manch kleine Anwendungen eignet sich das Transformationsmodell. Das fertige Programm wird (beinahe voll-) automatisch mit einer formalen Spezifikation erstellt. Dies erfordert allerdings eine teure Anwendung mit korrektheitserhaltenden Transformationen, also eine solide Software- und Maschinenunterstützung.
Zum Beispiel können Scanner und Parser unter Angabe einer formalen Spezifikation (reguläre Ausdrücke, Token etc.) beinahe automatisch erzeugt werden.
Jedoch sind viele Anforderungen heutzutage viel zu komplex, als dass sie automatisch von Maschinen produziert werden könnten.



Info

stefan−baur.de / Entwicklungsmodelle
  • besucht am Freitag, den 12. März 2010 um 15:39 Uhr
  • geändert am Mittwoch, den 18. März 2009 von Stefan K. Baur
  • ähnliche Seite:

[INFODUDEN]  Duden Informatik,  Bibliographisches Institut & F. A. Brockhaus AG,  2. Auflage,  1993,  ISBN 3−411−05232−5.  Ein Sachlexikon für Studium und Praxis

[INFO2004]  Heinz−Peter Gumm,  Manfred Sommer:  Einführung in die Informatik,  Oldenbourg Wissenschaftsverlag GmbH,  6. Auflage,  2004,  ISBN 3−486−27389−2.

[SWSCHäTZUNG]  Steve McConnell:  Aufwandschätzung bei Softwareprojekten,  Microsoft Press Deutschland,  2006,  ISBN 3−86645−612−3.  Softwareschätzung ist kein Buch mit sieben Siegeln







Startseite

Copyright © 2004-2009 Stefan K. Baur − Druck20042005200620072008200920102011