27.12.2014 Aufrufe

Familien von Vorgehensmodellen

Familien von Vorgehensmodellen

Familien von Vorgehensmodellen

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!