Familien von Vorgehensmodellen
Familien von Vorgehensmodellen
Familien von Vorgehensmodellen
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Grundlagen<br />
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
Existierende Vorgehensmodelle lassen sich in <strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
einordnen, die sich durch gemeinsame Eigenschaften<br />
auszeichnen. So beschreiben beispielsweise alle Vorgehensmodelle<br />
der Familie der sequenziellen Modelle eine sequenzielle, d. h. eine<br />
aufeinanderfolgende Abarbeitung der anfallenden Software-Entwicklungsaktivitäten.<br />
Vorgehensmodelle innerhalb einer Familie können<br />
sich beispielsweise hinsichtlich der Bezeichnung einzelner Entwicklungsschritte,<br />
der Zuordnung <strong>von</strong> Aktivitäten und Teilergebnissen<br />
zu bestimmten Entwicklungsschritten und hinsichtlich des Detaillierungsgrades<br />
einzelner Aktivitäten unterscheiden.<br />
Ziel dieses Kapitels ist es, existierende Vorgehensmodeli-<strong>Familien</strong><br />
einzuführen. Dazu wird zunächst ein Schema definiert, anhand dessen<br />
sich Vorgehensmodelle und Begriffe in deren Umfeld einordnen<br />
lassen. In den folgenden Unterkapiteln werden dann die vier "wichtigsten"<br />
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong>, d.h. (1) die sequenziellen<br />
Vorgehensmodelle, (2) die wiederholenden Vorgehensmodelle, die<br />
prototypischen Vorgehensmodelle sowie (4) die wiederverwendungsorientierten<br />
Vorgehensmodelle, vorgestellt. jede Familie wird mit ihren<br />
Eigenschaften erläutert. Des Weiteren wird aufgezeigt, welche Voraussetzungen<br />
erfüllt sein müssen, um einen Vertreter einer Familie<br />
in einem Projekt erfolgreich einsetzen zu können. Komplementär<br />
hierzu werden Situationen in der Software-Entwicklung bzw. in einem<br />
Projekt definiert, in denen der Einsatz eines Vorgehensmodells einer<br />
Familie nicht geeignet ist.<br />
Die vier <strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong> werden im nächsten Kapitel<br />
zur Klassifikation der konkreten objektorientierten Vorgehensmodelle<br />
verwendet. jedes konkrete Vorgehensmodell wird dabei<br />
einer oder mehrerer <strong>Familien</strong> zugeordnet. Eine kompakte Darstellung<br />
der Zuordnung der Methoden zu den <strong>Familien</strong> finden Sie im Kapitel<br />
"Eigenschaften <strong>von</strong> <strong>Vorgehensmodellen</strong>".<br />
Grundlagen<br />
Das Thema Vorgehensmodelle in der Software-Entwicklung hat an Bedeutung<br />
gewonnen, insbesondere durch eine steigende Komplexität<br />
zu entwickelnder Software-Systeme. Häufig werden spezialisierte<br />
Vorgehensmodelle zur Lösung spezifischer Problemkomplexe definiert<br />
und publiziert. Dies führte in den letzten Jahren zu einem star-<br />
3
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
ken, unübersichtlichen Wachstum verfügbarerer Vorgehensmodelle<br />
sowie zu einer uneinheitlichen Begriffsbildung. Zur Klärung dieser<br />
Problematik hat daher die Fachgruppe .,Vorgehensmodelle" der Gesellschaft<br />
für Informatik (GI) das nachfolgend beschriebene, allgemeine<br />
Schema zur Einordnung und Definition <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
und Begriffen in deren Umfeld vorgeschlagen.<br />
,--<br />
i Rollen- definiert Vorgehens- gibt vor Methoden<br />
und<br />
i mode!l<br />
modell<br />
i<br />
l _____<br />
Werkzeuge<br />
~----<br />
i<br />
!<br />
I<br />
; I<br />
i I<br />
i<br />
r<br />
~geordnet ~definiert Regeln für 1<br />
Tätigkeitsbereiche<br />
I<br />
I<br />
I Projekt- Konfigurations- Qualitäts- Systemi<br />
management management management entwicklung<br />
I<br />
Aktivitäten<br />
definiert als<br />
Komponenten<br />
Ergebnisse<br />
unterstütz en<br />
Entsprechend dieses Schemas strukturiert ein Vorgehensmodell den<br />
Softwareentwicklungsprozess in Aktivitäten und Ergebnisse und<br />
legt Regeln für die Abarbeitung der Aktivitäten und der sich daraus<br />
ergebenden Ergebnisse fest. Aktivitäten und Ergebnisse stammen dabei<br />
aus verschiedenen Tätigkeitsbereichen innerhalb des Systementwicklungsprozesses:<br />
aus dem Projektmanagement, dem Konfigurationsmanagement,<br />
dem Qualitätsmanagement und der Systementwicklung<br />
selbst. Ein Vorgehensmodelllegt weiterhin Methoden und Werkzeuge<br />
fest, die die Erarbeitung der Ergebnisse unterstützen. Außerdem<br />
legt ein Vorgehensmodell Rollen fest, die die Aktivitäten der verschiedenen<br />
Tätigkeitsbereiche verantworten und/oder durchführen.<br />
Die sequenziellen Vorgehensmodelle<br />
Die Familie der sequenziellen Vorgehensmodelle hat ihren Ursprung<br />
im Systems Engineering. Typische Vertreter dieser Familie sind das<br />
Phasen-, Wasserfall- oder SchleifenmodelL Das Phasenmodell wurde<br />
4
ereits 1956 veröffentlicht. Royce publizierte das Wasserfall- oder<br />
Schleifenmodell erstmalig 1970. Vorgehensmodelle dieser Familie<br />
ordnen die Aktivitäten, die bei der Entwicklung <strong>von</strong> Software durchgeführt<br />
werden, Phasen zu. Diese Phasen werden sequenziell hintereinander<br />
durchgeführt. Beim Übergang einer Phase zur nächsten<br />
setzt ein Vorgehensmodell dieser Familie voraus, dass die vorangegangene<br />
Phase abgeschlossen ist. Jede Phase liefert Ergebnisse in<br />
Form <strong>von</strong> Dokumenten, z. B. in Form <strong>von</strong> Anforderungs- oder Entwurfsdokumenten.<br />
Die Ergebnisse, die in einer Phase entwickelt werden,<br />
werden in der nächsten Phase weiterverarbeitet und vom Projektmanagement<br />
als Meilensteine verwendet, um den Projektfortschritt<br />
zu überprüfen.<br />
Analyse<br />
jO<br />
h<br />
I •<br />
Legende:<br />
D Aktivität<br />
......,. Entwicklungsverlauf<br />
.. • Rückschritte<br />
~~r-.<br />
Installation<br />
t--.<br />
Einsatz<br />
Obiges Bild zeigt ein sechsphasiges, sequenzielles SchleifenmodelL<br />
In der ersten Phase, der Analysephase, werden die Anforderungen<br />
an das zu entwickelnde Software-System möglichst umfassend ermittelt<br />
und dokumentiert. Ziel dieser Phase ist, dass Benutzer/Kunden<br />
und Entwickler ein gemeinsames und möglichst genaues Verständnis<br />
des gewünschten Systems erhalten. Die aus dieser Phase resultierenden<br />
Anforderungsdokumente dienen als Grundlage für alle weiteren,<br />
nachfolgenden Phasen. In der Entwurfsphase wird basierend auf den<br />
Anforderungen ein realisierbares Software-System entworfen (Entwurf).<br />
Ziel des Entwurfs ist dabei die Identifikation einzelner Teilsysteme<br />
und deren Dokumentation. Ziel der Aufteilung ist die später<br />
möglichst unabhängige Implementierung der einzelnen Teilsysteme.<br />
Einzelne Teilsysteme werden anschließend mittels einer "beliebigen"<br />
Programmiersprache realisiert und umgesetzt.<br />
Danach, d. h. in der Integrationsphase, erfolgt das Zusammensetzen<br />
der implementierten Teilsysteme zu einem Gesamtsystem. In<br />
5
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
der Installationsphase wird das integrierte Gesamtsystem in die Umgebung<br />
des Kunden übertragen. Während des dortigen Einsatzes wird<br />
Fehlverhalten des Systems entdeckt, protokolliert und behoben. Zusätzlich<br />
wird das System an sich ändernde Benutzerwünsche und Umgebungsbedingungen<br />
angepasst.<br />
Am Ende jeder Phase kann ein fertiggestelltes Ergebnis (z. B. Anforderungen,<br />
ausführbares System) Qualitätssicherungsmaßnahmen unterzogen<br />
werden, d. h., es wird inspiziert (manuelle Prüfung) oder getestet.<br />
Beispielsweise könnten am Ende der Analyse die dokumentierten<br />
Anforderungen hinsichtlich verschiedener Qualitätskriterien<br />
(z. B. Verständlichkeit, Konsistenz) überprüft werden.<br />
Im Vergleich zum Phasenmodell erlaubt das Wasserfall- oder<br />
Schleifenmodell kontrollierte Iterationen, d. h., bereits abgeschlossene<br />
Entwicklungsaktivitäten können unter bestimmten Umständen<br />
erneut durchgeführt werden. Dies erlaubt zum Beispiel die Behebung<br />
<strong>von</strong> Fehlern in Ergebnissen früherer Aktivitäten. Ob Rückschritte ausschließlich<br />
in die direkte Vorgängerphase oder auch in andere Vorgängerphasen<br />
erlaubt sind, hängt <strong>von</strong> der konkreten Ausprägung<br />
des Wasserfall- oder Schleifenmodells ab. Sequenzielle Vorgehensmodelle<br />
betrachten Rückschritte in vorangegangene Phasen als Ausnahmefall<br />
im Gegensatz zu den wiederholenden <strong>Vorgehensmodellen</strong>.<br />
Vorgehensmodelle aus der Familie der Phasen-, Wasserfall- und<br />
Schleifenmodelle haben verschiedene Vor- und Nachteile im Vergleich<br />
zu anderen <strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong>. Bei der Integration<br />
eines Systems werden bei Vertretern dieser Familie vergleichsweise<br />
wenige Probleme entstehen. Der Grund hierfür ist, dass die Anforderungen<br />
möglichst vollständig ermittelt und dokumentiert werden<br />
und der Entwurf vollständig auf Basis der Anforderungen entsteht.<br />
Die Folge ist, dass der Entwurf so konzipiert werden kann,<br />
dass er alle Anforderungen berücksichtigt. Zudem erfolgt die Beschreibung<br />
der Schnittstellen zwischen den Komponenten zur gleichen<br />
Zeit. Ein Integrationstest gestaltet sich zum Teil schwierig,<br />
weil alle Komponenten zur gleichen Zeit fertiggestellt und integriert<br />
werden können.<br />
Ein weiterer Vorteil <strong>von</strong> <strong>Vorgehensmodellen</strong> dieser Familie ist,<br />
dass sie kein umfangreiches Versions- und Konfigurationsmanagement<br />
erfordern. Im Vergleich zu anderen <strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
ist bei dieser Familie die Anzahl der Versionen und Konfigurationen<br />
eher gering. Wenn alle Phasen des Modells einmal durchlaufen<br />
werden und es keine Rückschritte in vorherige Phasen gibt, ist min-<br />
6
Die sequenziellen Vorgehensmodelle<br />
destens eine Version <strong>von</strong> jedem Ergebnis erforderlich, und es entsteht<br />
eine Systemkonfiguration, die die Versionen aller Ergebnisse<br />
umfasst. Die Anzahl erforderlicher Versionen eines Ergebnisses erhöht<br />
sich beispielsweise, wenn mehrere Entwickler ein Ergebnis bearbeiten.<br />
Jeder Rückschritt in eine vorangegangene Phase macht ebenfalls<br />
mindestens eine neue Version eines Ergebnisses erforderlich<br />
und führt eventuell zu einerneuen Systemkonfiguration.<br />
Ein Vorgehensmodell der Familie der Phasen-, Wasserfall- und<br />
Schleifenmodelle können Sie sinnvoll einsetzen, wenn Sie die Anforderungen<br />
an das zu entwickelnde System gut verstehen. Die Anforderungen<br />
müssen beschreibbar und möglichst stabil sein. Ergeben sich<br />
häufig Änderungen an den Anforderungen, führt dies im schlimmsten<br />
Fall dazu, dass die Analysephase niemals verlassen wird. Treten<br />
Anforderungsänderungen nach Beendigung der Analysephase auf,<br />
müssen alle bereits fertiggestellten Ergebnisse überarbeitet werden.<br />
Dies ist notwendig, da das System basierend auf der beschriebenen<br />
Menge <strong>von</strong> Anforderungen vollständig entworfen und implementiert<br />
wird.<br />
Die Verwendung eines Vertreters aus der Familie der Phasen-, Wasserfall-<br />
und Schleifenmodelle setzt voraus, dass sie über eine große<br />
Erfahrung bezüglich der verwendeten Entwicklungstechniken (z. B.<br />
objektorientierte Techniken oder verwendete Werkzeuge) und hinsichtlich<br />
der Abschätzung der Projektkosten verfügen. Der Grund<br />
hierfür ist, dass das sequenzielle und vollständige Abarbeiten einzelner<br />
Phasen es schwer bis gar unmöglich macht, gesammelte Erfahrungen<br />
aus einer Phase im gleichen Projekt zu nutzen. Eine Ausnahme<br />
stellen Rückschritte in bereits abgearbeitete Phasen dar. Hier kann<br />
gesammelte Erfahrung wieder verwendet werden.<br />
Grundsätzlich sollten Sie ein Vorgehensmodell aus dieser Familie<br />
nicht einsetzen, wenn Sie einen festen Auslieferungstermin für das<br />
Software-System einhalten müssen. Da die Entwicklungsschritte immer<br />
vollständig durchgeführt werden, entsteht erst spät im Projektverlauf<br />
ein sichtbares Ergebnis. Dies kann bei einer Termin- oder Aufwandsüberschreitung<br />
des Entwicklungsprojekts dazu führen, dass<br />
zum versprochenen Termin kein ausführbares System verfügbar ist.<br />
Außerdem kann bei der Terminüberschreitung eines Meilensteins<br />
der Auslieferungstermin nicht unbedingt durch Weglassen <strong>von</strong> Teilfunktionen<br />
gesichert werden. Die Einsparungen, die Sie durch Weglassen<br />
<strong>von</strong> Teilfunktionen erreichen können, sind eventuell nicht<br />
groß genug, um den Auslieferungstermin zu halten. Die wegzulassen-<br />
7
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
den Teilfunktionen sind bereits in allen fertiggestellten Entwicklungsprodukten<br />
berücksichtigt. Wenn Sie allerdings die gesamte<br />
Funktionalität des Systems realisieren müssen und der Auslieferungstermirr<br />
gegebenenfalls nach hinten verschoben werden kann,<br />
können Sie ein Vorgehensmodell dieser Familie problemlos einsetzen.<br />
Die prototypischen Vorgebensmodelle<br />
Prototypische Vorgehensmodelle sind sequenzielle Modelle, die zu<br />
bestimmten Zeitpunkten während der Entwicklung eines Software<br />
Systems kontrollierte Rückschritte und die Wiederholung vorangegangener<br />
Phasen festlegen. Die bestimmten Zeitpunkte sind dabei definiert<br />
durch die Entwicklung <strong>von</strong> Prototypen, d. h. eingeschränkt<br />
funktionsfähige bzw. vereinfachte Modelle oder Versionen des geplanten<br />
Systems. Die gesammelten Erfahrungen mit den entwickelten<br />
Prototypen führen zur erneuten Ausführung bereits abgearbeiteter<br />
Phasen. Weitere Ausführungen <strong>von</strong> Phasen können durch Rückschritte<br />
aus anderen Phasen notwendig sein.<br />
Legende:<br />
0 Aktivität<br />
-• Entwicklungsverlauf<br />
.,. Rückschritte<br />
c_____::..____J'•<br />
Installation r.<br />
Einsatz<br />
Das obige Bild zeigt ein prototypisches Modell, das die Entwicklung<br />
eines Analyse· und eines Entwurfsprototyps vorsieht. Die anderen<br />
Phasen entsprechen den Phasen des gezeigten Schleifenmodells.<br />
Ein bekanntes Vorgehensmodell, das die Entwicklung <strong>von</strong> Prototypen<br />
explizit vorsieht, ist das Spiralmodell <strong>von</strong> Boehm, das 1988 veröffentlicht<br />
wurde. Neben der Entwicklung <strong>von</strong> Prototypen sieht das<br />
Spiralmodell ein inkrementelies Vorgehen bei der Entwicklung vor<br />
und gehört aus diesem Grund nicht nur zur Familie der prototypi-<br />
8
sehen Vorgehensmodelle, sondern auch gleichzeitig zur Familie der<br />
wiederholenden Vorgehensmodelle. Eine kurze Beschreibung des<br />
Spiralmodells findet sich im folgenden UnterkapiteL<br />
Ein entwickelter Prototyp kann unterschiedlichen Zwecken während<br />
der Software-Entwicklung dienen. Ziel eines Analyseprototyps<br />
ist eine Überprüfung unklarer oder schwieriger Teile der Anforderungen<br />
durch den Kunden bereits sehr früh im Entwicklungsprozess. Die<br />
Anforderungen werden auf Basis der mit dem Prototyp gesammelten<br />
Erfahrungen angepasst, und das Software-System wird neu entwickelt.<br />
Fokus eines Entwurfsprototyps ist die Überprüfung unklarer<br />
oder schwieriger Entwurfsaspekte. Beispielsweise kann mit einem<br />
Entwurfsprototyp überprüft werden, ob die gewählte Architektur geforderte<br />
Performanz-Anforderungen erfüllt.<br />
Die Erstellung <strong>von</strong> Analyse- oder Entwurfsprototypen in einem Projekt<br />
sollte möglichst schnell und kostengünstig erfolgen. Ein Prototyp<br />
kann dabei unterschiedlich realisiert werden: Beispielsweise werden<br />
die Oberflächen des Systems auf dem Papier skizziert, die Ausgaben<br />
des Systems werden durch eine Person simuliert, oder es wird ein<br />
ausführbarer Prototyp entwickelt. Zur Erstellung eines ausführbaren<br />
Prototyps kann beispielsweise ein Software-System aus einem ähnlichen<br />
Projekt verwendet und angepasst werden. Für einen Analyseprototypen<br />
können Sie auch eine Notation für Ihre Anforderungen verwenden,<br />
die eine Ausführung der dokumentierten Anforderungen erlaubt<br />
(z. B. SOL).<br />
Von den drei aufgezeigten Alternativen spiegelt ein ausführbarer<br />
Prototyp das zu entwickelnde Software-System am realistischsten wider.<br />
Eine Implementierung eines ausführbaren Prototyps ist aber<br />
gleichzeitig sehr aufwendig und kostenintensiv. Sind keine ähnlichen,<br />
bereits realisierten Systeme verfügbar, wird ein Analyseprototyp<br />
beispielsweise durch kostenintensive Modeliierung der Anforderungen<br />
mithilfe einer ausführbaren Beschreibungstechnik erstellt.<br />
Vorgehensmodelle aus der Familie der prototypischen Modelle haben<br />
verschiedene Vor- und Nachteile im Vergleich zu anderen <strong>Familien</strong><br />
<strong>von</strong> <strong>Vorgehensmodellen</strong>. Bei der Integration des Systems sollten<br />
wie bei sequenziellen <strong>Vorgehensmodellen</strong> kaum Probleme entstehen.<br />
Auch hier werden die Anforderungen möglichst vollständig ermittelt<br />
und dokumentiert sowie der Entwurf vollständig auf Basis der Anforderungen<br />
entwickelt. Analyseprototypen unterstützen dabei die korrekte<br />
und vollständige Ermittlung der Anforderungen. Der Entwurf<br />
wird ebenfalls so konzipiert, dass er alle Anforderungen berücksich-<br />
9
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
tigt. Entwurfsprototypen sichern darüber hinaus ab, dass die gewählte<br />
Systemarchitektur geforderte nicht-funktionale bzw. Qualitätsanforderungen<br />
erfüllt.<br />
Wie Vorgehensmodelle der Familie der sequenziellen Vorgehensmodelle<br />
erfordern prototypische Vorgehensmodelle kein umfangreiches<br />
Versions-und Konfigurationsmanagement. Auch hier ist die Anzahl<br />
<strong>von</strong> Versionen und Konfigurationen gering. Für alle Phasen, die<br />
nicht durch einen Prototyp unterstützt werden und in die keine Rückschritte<br />
notwendig sind, muss mindestens eine Version eines Ergebnisses<br />
angelegt werden. Phasen, die durch einen Prototyp unterstützt<br />
werden, erfordern minimal zwei Versionen: eine Version für die Ersterstellung<br />
und eine Version für das geänderte Ergebnis auf Basis<br />
des Prototyps. Natürlich kann auch hier eine höhere Anzahl <strong>von</strong> Versionen<br />
erforderlich sein, wenn beispielsweise mehrere Entwickler ein<br />
Ergebnis bearbeiten. Eine Systemkonfiguration fasst die aktuellen<br />
Versionen aller Ergebnisse zusammen. Rückschritte führen zu neuen<br />
Versionen der Ergebnisse und eventuell zu neuen Systemkonfigurationen<br />
Der Einsatz eines prototypischen Vorgehensmodells ist sinnvoll,<br />
wenn die Anforderungen oder Teile der Anforderungen an das zu entwickelnde<br />
System unklar sind. Mithilfe eines Analyseprototyps werden<br />
die Anforderungen oder die kritische Bereiche mit dem Benutzer/Kunden<br />
geklärt und danach präzise dokumentiert. Instabile Anforderungen<br />
können reduziert werden, da dem Benutzer/Kunden<br />
die Funktionalität des Systems visualisiert werden kann. Ergeben<br />
sich im weiteren Entwicklungsverlauf Änderungen an den Anforderungen<br />
führen diese zu einer Überarbeitung aller bereits fertiggestellten<br />
Ergebnisse, ähnlich den Vergehensmodellen der Familie der<br />
sequenziellen Modelle. Ein Entwurfsprototyp hilft Ihnen, frühzeitig<br />
zu überprüfen, ob geforderte nicht-funktionale Anforderungen mit<br />
der gewählten Architektur umgesetzt werden können bzw. ob nichtfunktionale<br />
Anforderungen überhaupt realisierbar sind. Dies minimiert<br />
das Risiko eines Projektfehlschlags.<br />
Die Verwendung eines prototypischen Vorgehensmodells ist, wie<br />
bei sequenziellen <strong>Vorgehensmodellen</strong>, nur sinnvoll, wenn Ihre Erfahrung<br />
mit den verwendeten Entwicklungstechniken (z. B. objektorientierte<br />
Techniken oder verwendete Werkzeuge) hoch ist. Ein sequenzielles<br />
und vollständiges Abarbeiten einzelner Phasen erschwert die<br />
Nutzung gesammelter Erfahrungen aus einer Phase im gleichen Pro·<br />
jekt. Eine Ausnahme stellen Rückschritte in bereits abgearbeitete<br />
10
Die wiederholenden Vorgehensmodelle<br />
Phasen dar, beispielsweise um die Erfahrungen mit einem entwickelten<br />
Prototypen einzubringen. Hier kann gesammelte Erfahrung aus<br />
dieser Phase genutzt werden. Neben der Erfahrung mit den verwendeten<br />
Entwicklungstechniken müssen die technologischen Möglichkeiten<br />
zur Realisierung <strong>von</strong> Prototypen vorhanden sein, insbesondere<br />
dann, wenn ein ausführbarer Prototyp entwickelt werden soll.<br />
Sie sollten ein Vorgehensmodell der Familie der prototypischen<br />
Modelle, vergleichbar zu Vertretern der sequenziellen Vorgehensmodelle,<br />
nicht einsetzen, wenn Sie einen festen Auslieferungstermin für<br />
das zu entwickelnde Software-System einhalten müssen. Es entsteht<br />
zwar früh im Projekt ein Prototyp und damit ein erstes sichtbares<br />
Ergebnis. Dennoch werden die folgenden Entwicklungsschritte vollständig<br />
durchgeführt, so dass erst spät im Projektverlauf ein Endergebnis<br />
entsteht. Dies kann bei einer Termin- oder Aufwandsüberschreitung<br />
des Projekts dazu führen, dass zum versprochenen Termin<br />
nur der ausführbare Prototyp verfügbar ist. Ein ausführbarer Prototyp<br />
wird <strong>von</strong> Kunden/Benutzern leicht als Endsystem verkannt,<br />
sollte aber in keinem Fall so eingesetzt werden.<br />
Ein prototypisches Vorgehensmodell reduziert das Risiko einer<br />
Fehlentwicklung, weil kritische Bereiche mit dem Kunden überprüft<br />
werden können. Sie können den entwickelten Prototyp außerdem verwenden,<br />
um Anforderungen zu priorisieren und um Systemteile zu<br />
identifizieren, die unter Zeitdruck weggelassen werden können. Ansonsten<br />
bleiben die Schwierigkeiten bei der Projektkontrolle und<br />
beim Risikomanagement wie auch bei sequenziellen <strong>Vorgehensmodellen</strong><br />
bestehen: Ein Weglassen <strong>von</strong> Teilfunktionen sichert nicht unbedingt<br />
den Auslieferungstermin. Die Einsparungen, die Sie durch<br />
Weglassen <strong>von</strong> Teilfunktionen erreichen können, sind eventuell nicht<br />
groß genug, um den Auslieferungstermin zu halten. Die wegzulassenden<br />
Teilfunktionen sind bereits in allen fertiggestellten Entwicklungsprodukten<br />
berücksichtigt. Ein Vorgehensmodell dieser Familie<br />
ist problemlos einsetzbar, wenn Sie die gesamte Funktionalität des<br />
Systems realisieren müssen und der Auslieferungstermin gegebenenfalls<br />
nach hinten verschoben werden kann.<br />
Die wiederholenden Vorgebensmodelle<br />
Bei der Klasse der wiederholenden Vorgehensmodelle werden, wie<br />
beim Wasserfall- oder Schleifenmodell, einzelne Phasen nicht rein sequenziell,<br />
sondern wiederholt durchlaufen. Wiederholende Vorge-<br />
11
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
hensmodelle sind alle inkrementellen, evolutionären, rekursiven und<br />
iterativen Vorgehensmodelle. Das iterative Verbesserungsmodell ist<br />
eines der ersten Modelle dieser Familie. Das Modell wurde 1975 <strong>von</strong><br />
Basili und Turner veröffentlicht. Wie bereits im letzten Unterkapitel<br />
angedeutet, gehört auch das Spiralmodell <strong>von</strong> Boehm zu dieser Familie.<br />
Die Basisidee dieser Familie <strong>von</strong> <strong>Vorgehensmodellen</strong> ist, dass das<br />
Software-System in Inkrementen entwickelt wird. Ausgehend <strong>von</strong><br />
einer Teilmenge aller Anforderungen werden für diese Teilmenge<br />
alle Ergebnisse in sequenzieller Ordnung erstellt. Die Ergebnisse werden<br />
in Aktivitäten erstellt, die im Wesentlichen den Phasen der sequenziellen<br />
Vorgehensmodelle entsprechen. Allerdings heißen die<br />
Aktivitäten nicht mehr Phasen, da sie zu unterschiedlichen Zeiten<br />
wiederholt werden. Ein Inkrement besteht aus allen Ergebnissen für<br />
die Teilmenge der Anforderungen. Danach wird die Teilmenge der<br />
Anforderungen erweitert und ein weiteres Inkrement erstellt. Ein Folgeinkrement<br />
stellt damit eine Erweiterung eines bereits erstellten Inkrements<br />
dar. Dieser Prozess endet erst, wenn das Software-System<br />
beim Kunden deinstalliert wird. Bei wiederholenden <strong>Vorgehensmodellen</strong><br />
werden Weiterentwicklungen des zu entwickelnden Software<br />
Systems und Änderungen an diesem als natürliche Bestandteile der<br />
Software-Entwicklung betrachtet. Iterationen in bereits abgearbeitete<br />
Aktivitäten sind wie bei den sequenziellen oder bei den prototypischen<br />
<strong>Vorgehensmodellen</strong> möglich.<br />
Legende:<br />
CJ Aktivität<br />
-. Entwicklungsverlauf<br />
• Rückschritte<br />
Das Bild zeigt ein inkrementelies Vorgehensmodell, das aus sechs Aktivitäten<br />
besteht. Die Entwicklung <strong>von</strong> drei Inkrementen wird dadurch<br />
angedeutet, dass alle Aktivitäten dreimal hintereinander<br />
durchgeführt werden. Nach Fertigstellung des ersten Inkrements<br />
12
Die wiederholenden Vorgehensmodelle<br />
wird dieses Inkrement (Teilsystem) erweitert, indem erneut alle Entwicklungsaktivitäten<br />
durchgeführt werden. Dabei entsteht ein neues<br />
(d. h. erweitertes) Inkrement.<br />
Evolutionäre Modelle erweitern die inkrementeilen und iterativen<br />
Verbesserungsmodelle um eine Risikoanalyse zur Auswahl der Anforderungen<br />
des nächsten Inkrements. Eine solche Risikoanalyse sieht<br />
das Spiralmodell <strong>von</strong> Boehm bereits vor. Das Spiralmodell <strong>von</strong> Boehm<br />
betrachtet die Software-Entwicklung als risikogetriebenen Prozess.<br />
Auf neue Erkenntnisse innerhalb des Projekts kann somit dynamisch<br />
reagiert werden. Die Software-Entwicklung selbst wird als Durchlaufen<br />
einer Spirale, bestehend aus vier Quadranten aufgefasst. Bei jedem<br />
Zyklus der Spirale werden diese Quadranten durchlaufen: Im<br />
ersten Quadranten werden Ziele identifiziert, Alternativen festgelegt<br />
und Einschränkungen bestimmt. Im zweiten Quadranten werden Alternativen<br />
bewertet und Risikoquellen aufgedeckt sowie Maßnahmen<br />
zur Beherrschung der Risiken definiert. Im dritten Quadranten wird<br />
das Software-System auf der jeweiligen Stufe entwickelt und abgenommen.<br />
Im vierten und letzten Quadranten wird die nächste Stufe<br />
des Software-Systems geplant. In jedem Zyklus wird aufgrund einer<br />
Risikoabschätzung der weitere Entwicklungsverlauf abgesichert. Jeder<br />
Zyklus endet mit einer Überprüfung des Entwicklungsergebnisses,<br />
an der die betroffenen Benutzer beteiligt sind. Erst wenn die Ergebnisse<br />
abgenommen worden sind, kann mit dem geplanten nächsten<br />
Zyklus begonnen werden.<br />
t<br />
'<br />
,.../I<br />
~-·---~<br />
Risikoanalyse<br />
RISikoanalyse<br />
Uberprüfe Allemat1ven<br />
idenllfiztere und benebe Rlsfken<br />
Plane noctlste Phase<br />
Entwickle und überprüfe<br />
Prooukt der nächsten Ebene<br />
13
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
Besonderheit der rekursiven Vorgehensmodelle ist der <strong>von</strong> diesen<br />
<strong>Vorgehensmodellen</strong> verwendete Systembegriff. Rekursive Vorgehensmodelle<br />
verstehen unter einem .,System" nicht nur das Gesamtsystem,<br />
sondern auch Teilsysteme, Teilsysteme <strong>von</strong> Teilsystemen<br />
usw. Für jedes System werden die einzelnen Entwicklungsaktivitäten<br />
durchlaufen.<br />
Wiederholende Vorgehensmodelle haben verschiedene Vor- und<br />
Nachteile im Vergleich zu anderen <strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong>.<br />
Vorgehensmodelle dieser Familie erfordern ein umfangreiches Versions-und<br />
Konfigurationsmanagement Im Vergleich zu anderen <strong>Familien</strong><br />
<strong>von</strong> <strong>Vorgehensmodellen</strong> ist bei dieser Familie die Anzahl der Versionen<br />
und Konfigurationen größer. Da es <strong>von</strong> einem Ergebnis häufig<br />
mehrere Inkremente gibt, sind minimal auch mehrere Versionen <strong>von</strong><br />
diesem Ergebnis erforderlich. Für jedes Inkrement sollte mindestens<br />
eine Konfiguration existieren, die aus den zugehörigen Versionen der<br />
Ergebnisse besteht. Die Anzahl <strong>von</strong> Versionen und Konfigurationen<br />
kann sich zudem erhöhen, wenn innerhalb eines Inkrements Rückschritte<br />
in frühere Entwicklungsschritte durchgeführt werden und<br />
wenn ein Ergebnis <strong>von</strong> mehreren Entwicklern bearbeitet wird. Insgesamt<br />
ist die Anzahl <strong>von</strong> Versionen und Konfigurationen deutlich höher<br />
als bei den anderen genannten <strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong>.<br />
Sie können ein Vorgehensmodell dieser Familie einsetzen, wenn<br />
Teile der Anforderungen an das zu entwickelnde System unklar<br />
oder instabil sind. Sie beginnen mit dem klaren und stabilen Teil<br />
der Anforderungen. Während der Entwicklung des ersten Inkrements<br />
festigen sich vielleicht weitere Teile der Anforderungen, die in folgenden<br />
Inkrementen realisiert werden können. Die Anwendung eines<br />
Vorgehensmodells dieser Familie erfordert, dass sich Anforderungen<br />
in Teilmengen aufteilen lassen, die möglichst wenige Abhängigkeiten<br />
untereinander besitzen. Ergeben sich im weiteren Entwicklungsverlauf<br />
Änderungen an den Anforderungen des bearbeiteten Inkrements<br />
führen diese zu einer Überarbeitung bereits fertig gestellter Entwicklungsergebnisse.<br />
Änderungen an anderen Teilen der Anforderungen<br />
wirken sich nur auf die dokumentierten Anforderungen aus.<br />
Eine Integration der verschiedenen Inkremente kann bei einem<br />
Vergehensmodell dieser Familie schwierig sein und hängt da<strong>von</strong> ab,<br />
( 1) wie gut die Anforderungen partitionierbar waren (d. h. wie viele<br />
Abhängigkeiten zwischen den verschiedenen Teilmengen der Anforderungen<br />
existieren) und (2) wie erweiterbar die zugrunde liegende<br />
Systemarchitektur ist. In jedem Falle sollte die Systemarchitektur do-<br />
14
Die wiederholenden Vorgehensmodelle<br />
kumentiert sein, um sicherzustellen, dass bei weiteren Inkrementen<br />
die gleichen Entwurfsprinzipien berücksichtigt werden. Ein inkrementelies<br />
Vorgehen unterstützt den Integrationstest. Grund hierfür<br />
ist, dass große Systemschnittstellen zuerst und am häufigsten getestet<br />
werden. Der Test ist einfacher, weil nicht alles gleichzeitig integriert<br />
und getestet wird.<br />
Sie können ein Vorgehensmodell der Familie der wiederholenden<br />
Vorgehensmodelle verwenden, wenn Ihre Erfahrung mit den verwendeten<br />
Entwicklungstechniken (z. B. objektorientierte Techniken oder<br />
verwendete Werkzeuge) oder die Erfahrung des eingesetzten Entwicklungsteams<br />
gering ist. Sie können die gesammelte Erfahrung<br />
bei der Entwicklung eines Inkrements bei der Entwicklung weiterer<br />
Inkremente berücksichtigen. Bei schlechten Erfahrungen mit speziellen<br />
Techniken können Sie gegebenenfalls auch Techniken austauschen.<br />
Ein unerfahrenes Team kann über verschiedene Inkremente<br />
hinweg lernen. Dem Benutzer erlaubt ein inkrementelies Vorgehen<br />
einen sanften Umstieg vom alten System auf das neue System, da<br />
fragmentarische Systemversionen bereits angewendet werden können.<br />
Zusätzlich reduziert ein Vorgehensmodell aus dieser Familie<br />
das Risiko einer Fehlentwicklung, weil einzelne Inkremente bereits<br />
frühzeitig mit dem Kunden besprochen werden können. Die Projektplanung<br />
kann im Rahmen des Projekts auf Basis bereits erstellter Inkremente<br />
laufend verbessert werden.<br />
Wenn ein bestimmter Auslieferungstermin für das Software-System<br />
auf jeden Fall eingehalten werden muss, sollten Sie ein Vorgehensmodell<br />
dieser Familie anwenden. Bereits fertiggestellte Inkremente können<br />
ausgeliefert werden, während noch nicht realisierte Anforderungen<br />
unter Zeitdruck weggelassen werden. Dies vermeidet einen Fehlschlag<br />
des Projekts, wenn der Zeitplan nicht eingehalten werden<br />
kann. Um das inkrementeHe Vorgehen sinnvoll zu nutzen, sollten<br />
Sie mit dem Kunden/Benutzer die Anforderungen priorisieren. In<br />
den ersten Inkrementen sollten Sie die wichtigsten Anforderungen<br />
realisieren und in späteren Inkrementen die weniger wichtigen. Dieses<br />
Vorgehen führt dazu, dass fertiggestellte Inkremente die wichtigsten<br />
Anforderungen des Kunden/Benutzers realisieren. Unter Zeitdruck<br />
wird dann Funktionalität weggelassen, die für den Kunden/Benutzer<br />
weniger wichtig ist.<br />
15
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
Die wiederverwendungsorientierten Modelle<br />
Wiederverwendungsorientierte Vorgehensmodelle sind wiederholende<br />
Modelle, die auf die Wiederverwendung <strong>von</strong> Ergebnissen aus<br />
vorangegangenen Software-Entwicklungsprojekten setzen. Gleichzeitig<br />
wird auf die Wiederverwendbarkeit <strong>von</strong> Ergebnissen des laufenden<br />
Software-Entwicklungsprojekts, als Basis für zukünftige Projekte,<br />
geachtet_ Verschiedene Modelle dieser Familie verwenden dabei<br />
unterschiedliche Methoden, um den gewünschten Grad <strong>von</strong> Wiederverwendung<br />
zu erreichen. Dies können beispielsweise sein: Strukturierung<br />
der Software-Entwicklung nach wiederverwendbaren Komponenten,<br />
Verwendung <strong>von</strong> Software-Bibliotheken oder Entwurfsmustern,<br />
intensive Nutzung eines iterativen Prozesses, um innerhalb<br />
eines Software-Entwicklungsprojekts zu lernen und Erfahrungen wiederzuverwenden,<br />
und domänenorientierte Vorgehensmodelle, in denen<br />
Gemeinsamkeiten und Unterschiede einer Familie <strong>von</strong> Software<br />
Systemen (Produktlinie) beschrieben werden.<br />
~---~i r-<br />
1 Anforderungs- L--~ Entwurf<br />
L --~_:-;:~ L---.-<br />
) lntegratkm [i: ]<br />
und Einsatz I<br />
L~______j<br />
_j<br />
___<br />
f==--ßibliolhed<br />
...:.~-----<br />
:•<br />
Wiederverwendungskandidaten [<br />
(z B Muster, Module)<br />
1<br />
'------<br />
--------'<br />
Das obige Bild zeigt ein Beispiel für ein wiederverwendungsorientiertes<br />
Vorgehensmodells. In jeder Entwicklungsaktivität wird geprüft,<br />
ob abgelegte Ergebnisse aus der Ergebnisbibliothek verwendet werden<br />
können. Gleichzeitig werden erarbeitete Ergebnisse in dem Saftware-Entwicklungsprojekt<br />
auf deren mögliche Wiederverwendung geprüft<br />
und abgelegt. je nach konkretem Vorgehensmodell liegt die<br />
Aufbereitung der sogenannten Wiederverwendungskandidaten und<br />
deren Ablage in der Bibliothek im konkreten Software-Entwicklungs-<br />
16
""""''>""'' '"''''' Die wiederverwendungsorientierten Modelle<br />
projekt oder außerhalb. Beispielsweise kann auch eine separate Abteilung<br />
mit der Aufbereitung und Verwaltung möglicher Wiederverwendungskandidaten<br />
betraut werden. Ziel ist dabei, die konkreten<br />
Entwicklungsprojekte zu entlasten und die Qualität der Bibliothek<br />
zu gewährleisten, da eine Aufbereitung <strong>von</strong> Kandidaten und deren geeignete<br />
Ablage Zeit und Geld kostet.<br />
Vorgehensmodelle aus der Familie der wiederverwendungsorientierten<br />
Modelle haben verschiedene Vor- und Nachteile im Vergleich<br />
zu anderen <strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong>. Die Integration des<br />
Systems wird schwieriger, weil wiederverwendete Ergebnisse aus<br />
vorangegangenen Projekten (z. B. Anforderungen, Architekturen,<br />
Softwaremodule) eventuell mehr oder weniger Funktionalität als im<br />
aktuellen Projekt benötigt bereitstellen. D. h., dass wiederverwendbare<br />
Ergebnisse nicht immer zu 100% passen und daher entsprechend<br />
angepasst werden müssen. Diese Ergebnisse müssen sinnvoll in das<br />
laufende Projekt integriert werden (Wrapper, Glue-Code etc.). Dies erhöht<br />
aber die Komplexität des zu entwickelnden Software-Systems.<br />
Durch den Einsatz <strong>von</strong> Ergebnissen aus vorangegangenen Projekten<br />
werden aber auch Erfahrungen wiederverwendet und so eventuell<br />
Fehler bei der Software-Entwicklung vermieden. Prototypen können<br />
beispielsweise leichter bereitgestellt werden. Durch die Anwendung<br />
<strong>von</strong> Mustern (Lösungen für wiederkehrende Probleme) auf Ebene<br />
<strong>von</strong> Anforderungen, Architektur, Entwurf und Code (Analyse-, Architektur-<br />
und Entwurfsmuster sowie Idiome) lassen sich beispielsweise<br />
spätere Änderungen leichter unterstützen und durch die Wiederverwendung<br />
<strong>von</strong> Software-Modulen lassen sich Aufwände für den Systemtest<br />
reduzieren. Auch negative Erfahrungen, die in Form <strong>von</strong> sogenannten<br />
Anti-Pattern beschrieben sind, lassen sich so zielführend<br />
einsetzen.<br />
Wie die Vorgehensmodelle der Familie der wiederholenden Vorgehensmodelle<br />
erfordern wiederverwendungsorientierte Vorgehensmodelle<br />
ein umfangreiches Versions- und Konfigurationsmanagement.<br />
Dieses ist nicht nur im Projekt, sondern auch projektübergreifend<br />
erforderlich, da die wiederverwendbaren Ergebnisse aus vorangegangenen<br />
Projekten qualitätsgesichert projektübergreifend abgelegt<br />
werden müssen. Wiederverwendungsorientierte Vorgehensmodelle<br />
bedürfen einer Reihe <strong>von</strong> unterstützenden Unternehmensprozessen,<br />
die beispielsweise beschreiben, wie wiederverwendbare Ergebnisse<br />
zu Wiederverwendungskandidaten aufbereitet werden und<br />
wie die Qualität der Wiederverwendungsbibliothek sichergestellt<br />
17
<strong>Familien</strong> <strong>von</strong> <strong>Vorgehensmodellen</strong><br />
werden kann. Diese Prozesse sollten durch eine spezielle Unternehmensorganisation<br />
unterstützt werden. Daher müssen verwendungsorientierte<br />
Vorgehensmodelle durch die Unternehmensstrategie und<br />
entsprechend durch das Management unterstützt werden.<br />
Der Einsatz eines wiederverwendungsorientierten Vorgehensmodells<br />
bietet sich insbesondere dann an, wenn Sie in Ihrem Unternehmen<br />
ähnliche Software-Systeme entwickeln. je ähnlicher die Software-Systeme<br />
sind, desto höher ist das WiederverwendungspotenziaL<br />
Die Verwendung eines wiederverwendungsorientierten Vorgehensmodells<br />
ist nur sinnvoll, wenn Ihre Erfahrung mit den verwendeten<br />
Entwicklungstechniken (z. B. objektorientierte Techniken oder<br />
verwendete Werkzeuge) hoch ist. Zwar können durch Wiederholungen<br />
Erfahrungen aus einer Aktivität im gleichen Projekt genutzt werden.<br />
Um allerdings mögliche Wiederverwendungskandidaten für andere<br />
Projekte bereitstellen zu können, sollten die Software-Systeme<br />
so strukturiert, dass sich einzelne Software-Komponenten mit geringem<br />
Aufwand herauslösen lassen. Außerdem sollten mögliche Wiederverwendungskandidaten<br />
gut dokumentiert werden.<br />
Die Bereitstellung <strong>von</strong> Wiederverwendungskandidaten führt typischerweise<br />
zu zusätzlichen Kosten im Projekt. Erst die Wiederverwendung<br />
<strong>von</strong> Ergebnissen vorangegangener Projekte kann zu Kosteneinsparungen<br />
führen.<br />
Weiterführende Literatur<br />
Basi Ii, V. R., Turner, A.<br />
Iterative enhancement, a practical technique for software development<br />
IEEE Transactions on Software Engineering, SE-1 (4), Dec. 1975<br />
Boehm, B. IV.<br />
Software- Engineering<br />
IEEE Transactions on Computers, Vol. C-25, 1976, S. 1226-1241<br />
Boehm, B. W.<br />
A Spiral Model of Software Development and Enhancement<br />
!HE Computer 21, J 988<br />
Jalote, P.<br />
An lntegrated Approach to Software Engineering<br />
Springer Verlag, 2. überarb. Auflage, 1997<br />
18
Weiterführende Literatur<br />
Kneuper, R., Müller-Luschnat, G., überweis, A.<br />
Vorgehensmodelle für die betriebliche Anwendungsentwicklung<br />
B. G. Teubner Verlag, 1998<br />
Pomberger, G., Blaschek, G.<br />
Software Engineering: Prototyping und objektorientierte<br />
Software-Entwicklung<br />
Hanser Verlag, 2. überarb. Auflage, 1996<br />
Royce, W. W.<br />
Managing the Development of Large Software Systems:<br />
Concepts and Techniques<br />
Proc. IEEE WESCON, 1970, S. 1-9 (auch veröffentlicht in Proc. 9th<br />
ICSE, Computer Society Press, 1987)<br />
Jacobson, lvar, Griss, Martin, Jonsson, Patrik<br />
Software Reuse: Achitecture, Process and Organization<br />
for Business Success<br />
Addison-Wesley Longman, Amsterdam, 1997<br />
Mili, Hafedh, Mili, Ali, Yacoub, Sherif, Addy, Edward<br />
Reuse-Based Software Engineering: Techniques, Organizations,<br />
and Controls<br />
Wiley-lnterscience; Istedition 2001<br />
Ezran, Michel, Morisio, Maurizio, Tully, Colin<br />
Practical Software Reuse (Practitioner Series)<br />
Springer; 1 edition, 2002<br />
19