Prozessmodelle - Software Engineering - JKU
Prozessmodelle - Software Engineering - JKU
Prozessmodelle - Software Engineering - JKU
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 1<br />
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong><br />
Vorbemerkungen<br />
Joachim Fröhlich<br />
joachim.froehlich@jku.at<br />
Komplexe <strong>Software</strong>produkte müssen systematisch entwickelt werden. Das ist jedoch alles andere als<br />
einfach: Die Komplexität der Entwicklungsprozesse widerspiegelt die Komplexität der <strong>Software</strong>produkte.<br />
Daher kann das inzwischen beträchtliche Angebot an <strong>Software</strong>-<strong>Prozessmodelle</strong>n nicht überraschen.<br />
Hier seien nur einige <strong>Prozessmodelle</strong> aufgezählt: XP, Scrum, OPEN, V-Modell, RUP, MSF,<br />
ROOM, OORAM, Octopus und FDD. Die große Zahl von zum Teil konkurrierenden <strong>Prozessmodelle</strong>n<br />
weist darauf hin, dass über die Systematik der <strong>Software</strong>entwicklung keine Einigkeit besteht. Diese<br />
Vermutung stützen auch die vielen, oft emotional geführten Diskussionen zwischen Anhängern der<br />
verschiedenen <strong>Prozessmodelle</strong>. Die Diskussionen verlieren jedoch an Schärfe, wenn man charakteristische<br />
Aussagen der verschiedenen <strong>Prozessmodelle</strong> nicht absolut auffasst sondern den Gehalt der<br />
Aussagen in Bezug setzt zu den Annahmen, auf denen die Modelle beruhen, und Einflussfaktoren<br />
(Parameter), die die Modelle berücksichtigen.<br />
In der Praxis beeinflussen zahlreiche Faktoren <strong>Software</strong>-Entwicklungsprozesse. Diese Faktoren<br />
haben oft ganz unterschiedliche Ausprägungen. Erneut seien hier einige Faktoren beispielgebend genannt:<br />
Fertigkeiten und Fähigkeiten von Mitarbeitern in Bezug auf Anwendungsbereiche, Lösungsbereiche<br />
(eingesetzte Technologien) und Arbeitsweisen, Programmtypen (interaktive Programme, Batch-<br />
Programme, datenzentrierte Programme, verteilte Systeme, Echtzeitsysteme etc.), Entwicklungstechnologien<br />
(Paradigmen, Sprachen, Bibliotheken, Werkzeuge etc.), Kritikalität der Programme 1 , Umfang,<br />
Dauer und Budget von Projekten, Unternehmenskulturen, Branchen, Märkte sowie verschiedene<br />
Anforderungen verschiedener Produktinteressenten und deren Verteilung über die Laufzeit von Projekten.<br />
Dieser Aufsatz soll den Ausgangspunkt bilden für eine einheitliche Beschreibung und einen systematischen<br />
Vergleich von typischen <strong>Prozessmodelle</strong>n, um situationsbedingt geeignete Vorgehensweisen<br />
auswählen und anwenden zu können. Dazu braucht man eine systematische Darstellung von<br />
<strong>Prozessmodelle</strong>n. Eine Systematisierung stößt jedoch auf einige Schwierigkeiten, weil die Modelle<br />
mit verschiedenen oder verschieden interpretierbaren Begriffen beschrieben werden und Annahmen<br />
und Einflussfaktoren nicht ausdrücklich oder nicht systematisch offen legen. Bei einigen in der Praxis<br />
entstandenen <strong>Prozessmodelle</strong>n stehen dahinter wirtschaftliche Erwägungen, da die Beherrschung von<br />
Entwicklungsprozessen selbstredend Wettbewerbsvorteile sichert. 2<br />
Der Aufsatz liefert Überblicke über einzelne <strong>Prozessmodelle</strong>, statt eines Überblicks über mehrere<br />
Modelle. Naturgemäß erleichtert ein Überblick die Orientierung oder unterstützt die Erinnerung, ersetzt<br />
jedoch nicht die gründliche Auseinandersetzung, die insbesondere vor der Anwendung (vor der<br />
Operationalisierung) eines Prozessmodells angebracht ist. Der Aufsatz versucht im gegenwärtigen<br />
Zustand insbesondere nicht, <strong>Prozessmodelle</strong> zu systematisieren, etwa durch Bestimmung von Prozessmerkmalen,<br />
gemeinsamen und unterscheidenden Merkmalsausprägungen und einer darauf aufbauenden<br />
Klassifikation. Da eine Klassifikation fehlt, werden die <strong>Prozessmodelle</strong> auch nicht beurteilt.<br />
1 Unter Kritikalität ist hier die Bedeutung zu verstehen, die einem Programm (<strong>Software</strong>produkt) in einer bestimmten<br />
Umgebung für einen bestimmten Verwendungszweck beigemessen wird.<br />
2 Ein prominentes Beispiel dafür ist das vom Object Technology Center (OTC) der Firma IBM entwickelte Prozessmodell,<br />
das auf die Entwicklung objektorientierter Programme spezialisiert ist. Nach Auskunft eines leitenden IBM-Mitarbeiters<br />
im März 2003 stammt die letzte ausführliche Publikation zu diesem Modell [OTC97] aus dem Jahr 1997. Seitdem hat IBM<br />
das Prozessmodell ausschließlich firmenintern weiter entwickelt. Es ist inzwischen so reif, dass ein Werkzeug die Planung<br />
und Abwicklung von Prozessen auf der Basis des Prozessmodells unterstützt.
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 2<br />
Der Aufsatz widmet jedem der <strong>Prozessmodelle</strong> RUP, V-Modell, XP, Scrum und MSF ein eigenes<br />
Kapitel. Diese Modelle wurden ausgewählt, primär weil über sie bis Heute auffallend viel gesprochen<br />
wird. Zu Beginn eines Kapitels werden die Gründe genannt, die zur Entwicklung des jeweiligen Modells<br />
geführt haben. Das erleichtert das Verständnis charakteristischer Modelleigenschaften, die nach<br />
den Gründen angeführt werden. Abgesehen von dieser einheitlichen Struktur folgen die einzelnen Modellbeschreibungen<br />
mehr der Logik des jeweiligen Modells als der Logik eines einheitlichen Beschreibungsschemas.<br />
Die Modellbeschreibungen gehen auf Aussagen von Modellentwicklern oder Modellexperten<br />
zurück; die Informationsquellen werden so genau wie möglich angeführt.<br />
Der Aufsatz ist eine Sammlung von Modellbeschreibungen, deren Reihenfolge keiner besonderen<br />
Ordnung unterliegt. Bei der sequentiellen Durcharbeitung der Materialsammlung begegnen dem Leser<br />
Gemeinsamkeiten und auch Unterschiede, ohne dass der Aufsatz diese ausdrücklich heraus arbeitet<br />
und etwa in einen eigenständigen Abschnitt ausklammert. Die Materialsammlung ist aus der Sicht des<br />
Autors vor einer Systematisierung zunächst mit Beschreibungen weiterer, interessanter Modelle zu ergänzen.<br />
Auf der Warteliste ganz oben stehen OPEN (Akronym für Object-Oriented Process, Environment<br />
and Notation) [GrHY98], FDD (Akronym für Feature-Driven Development) [PaFe02], Architecture-Centric<br />
Project Management [Pauli02] und Process Patterns [Ambl98] [Ambl99].<br />
Inhalt<br />
RUP [Rational, 1998]................................................................................................................. 3<br />
Dynamikelemente................................................................................................................... 4<br />
Statikelemente........................................................................................................................ 5<br />
V-Modell 97 [IABG Ottobrunn, 1997].......................................................................................... 6<br />
XP [K.Beck, 2000] ..................................................................................................................... 8<br />
Scrum [K.Schwaber, J.Sutherland, M.Beedle, 1996].....................................................................12<br />
MSF [Microsoft, v1:1991, v2:1998, v3:2003] ..............................................................................15<br />
MSF-Modelle ........................................................................................................................17<br />
MSF-Disziplinen...................................................................................................................20<br />
Referenzen ...............................................................................................................................22
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 3<br />
RUP [Rational, 1998 3 ]<br />
Quellen: [Kruc00][Jaco00]<br />
Der RUP (Akronym für Rational Unified Process) beruht⎯nach den Aussagen von Rational⎯auf 6<br />
bewährten Praktiken, die erfolgreichen, professionellen Entwicklungsprozessen zugrunde liegen (engl.<br />
best practices 4 ) [Kruc00, 6ff]:<br />
1. Entwickle <strong>Software</strong> iterativ.<br />
2. Verwalte (engl. manage) Anforderungen (engl. requirements).<br />
3. Verwende komponentenbasierte <strong>Software</strong>architekturen.<br />
4. Modelliere <strong>Software</strong> visuell.<br />
5. Prüfe <strong>Software</strong> kontinuierlich.<br />
6. Ändere <strong>Software</strong> kontrolliert.<br />
Besonderes Gewicht legt RUP auf Modelle zum Verstehen und Gestalten von Anwendungs- und Lösungsbereichen,<br />
insbesondere auf <strong>Software</strong>architekturen. 6 Verschiedene Produktinteressenten (engl.<br />
stakeholder 7 ) haben verschiedene Sichten auf ein <strong>Software</strong>produkt. Dessen <strong>Software</strong>architektur dient<br />
der Integration der verschiedenen Sichten und steuert dabei den iterativen und inkrementellen Entwicklungsprozess<br />
während des gesamten Produkt-Lebenszyklusses [Kruc00, 9].<br />
Mit Hilfe der zuvor genannten 6 Praktiken soll RUP typische Probleme bei der Entwicklung von<br />
<strong>Software</strong> meistern helfen. Die Probleme äußern sich wie folgt [Kruc00, 4]:<br />
• Ungenügendes Verständnis der Anforderungen von Anwendern.<br />
• Ungeeigneter Umgang mit neuen oder sich ändernden Anforderungen.<br />
• <strong>Software</strong>teile, die nicht zusammen passen.<br />
• <strong>Software</strong>, die schwer zu pflegen ist oder kaum weiter entwickelt werden kann.<br />
• Späte Entdeckung von schwerwiegenden Fehlern.<br />
• Schlechte <strong>Software</strong>qualität.<br />
• Unzureichende Leistungsfähigkeit (Performance) der <strong>Software</strong>.<br />
• Sich gegenseitig behindernde Projektmitarbeiter.<br />
• Unzuverlässige Build-Prozesse und Release-Prozesse.<br />
Diese Symptome gehen auf folgende Probleme zurück [Kruc00, 5]:<br />
• Ungeplante (ad hoc) Verwaltung von Anforderungen.<br />
• Mehrdeutige und unpräzise Kommunikation.<br />
• Instabile <strong>Software</strong>architekturen.<br />
• Ausufernde Komplexität der <strong>Software</strong>.<br />
• Versteckte Inkonsistenzen zwischen Anforderungen, Entwürfen und Implementierungen.<br />
• Unzureichende Tests.<br />
• Subjektive Einschätzung des Projektzustands.<br />
• Unzureichender Umgang mit Risiken.<br />
• Unkontrollierte <strong>Software</strong>änderungen.<br />
• Unzureichende Automatisierung.<br />
3 [Kruc00, 33]. Die Jahreszahlen geben das Jahr der ersten Nennung des Prozessmodells an.<br />
4 Für Begriffe, die in der deutschen Übersetzung ungewohnt klingen, werden die englischen (engl.) Originalbezeichner<br />
angeführt.<br />
5 Für Begriffe, die in der deutschen Übersetzung ungewohnt klingen, werden die englischen (engl.) Originalbezeichner<br />
angeführt.<br />
6 Zum Beispiel ist im Buch The Rational Unified Process. An Introduction ein ganzes Kapitel dem Thema “An<br />
Architecture-centric Process“ gewidmet [Kruc00, 81-96].<br />
7 Ein Stakeholder ist eine Person, die ein berechtigtes Interesse an einem (<strong>Software</strong>-) Produkt hat, z. B. Endbenutzer, <strong>Software</strong>entwickler,<br />
Tester, technische Schreiber, Projektmanager. Verschiedene Stakeholder haben i. Allg. verschiedene<br />
Interessen. Oder: „A stakeholder is anyone who is materially affected by the outcome of the project.“ [Kruc00, 265]
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 4<br />
Zur Meisterung dieser Probleme gliedert RUP Entwicklungsprozesse in 2 Dimensionen (siehe Abb. 1)<br />
[Kruc00, 22]:<br />
• Dynamische Dimension: Gliederung von Aktivitäten nach der Zeit.<br />
Zeigt die schrittweise Entwicklung des Produkt-Lebenszyklusses in Form von projekttypischen,<br />
situationsbedingten—und insofern dynamischen—Verläufen von Phasen,<br />
Iterationen und Zyklen.<br />
• Statische Dimension: Gliederung von Aktivitäten nach dem Inhalt.<br />
Zeigt logische und zweckdienliche Zusammenhänge zwischen Aktivitäten, Rollen und<br />
Artifakten. Diese Zusammenhänge gelten weitgehend unabhängig von der konkreten<br />
Entwicklung eines Produkt-Lebenszyklusses und sind insofern statisch.<br />
Dynamikelemente<br />
In der dynamischen Dimension werden Prozesse strukturiert hinsichtlich Phasen, Zyklen, Iterationen<br />
und Meilensteine [Kruc00, 61-66]:<br />
• Phasen:<br />
1. Ideenphase (I, engl. inception) mit den Schwerpunkten: Produktziele und –umfang abstecken,<br />
allgemeine und hauptsächliche Anforderungen verstehen, Risiken identifizieren,<br />
Projektbudget und –plan grob festlegen.<br />
2. Ausarbeitungsphase (E, engl. elaboration) mit den Schwerpunkten: Anforderungen im Detail<br />
erheben, Architektur prototypisch entwickeln, Lösungsansätze ausprobieren, Kenntnisse<br />
über Techniken und Werkzeuge des Lösungsbereichs vertiefen.<br />
3. Konstruktionsphase (C, engl. construction) mit dem Schwerpunkt, ausgehend vom Prototypen<br />
ein lauffähiges Produkt (erstes Beta-Release [Kruc00, 64, Fig. 4-6]) zu entwickeln.<br />
4. Übergangsphase (T, engl. Transition) mit den Schwerpunkten: Produktqualität in Bezug auf<br />
die gesteckten Ziele stabilisieren, Produktfähigkeiten (engl. features) anpassen, Anwender<br />
trainieren, finale Produktversion erstellen und ausliefern.<br />
• Zyklen:<br />
Die genannten Phasen bilden einen Entwicklungszyklus (I-E-C-T) und führen zu einer neuen<br />
Generation (Version, u. U. auch Variante) eines <strong>Software</strong>produkts.<br />
Organization along Content<br />
Core Workflows<br />
Support<br />
Workflows<br />
Business Modeling<br />
Requirements<br />
Analysis & Design<br />
Implementation<br />
Test / Assessment<br />
Deployment<br />
Configuration &<br />
Change Management<br />
Project Management<br />
Environment<br />
Inception Elaboration Construction Transition<br />
Preliminary<br />
Iteration<br />
Organization along Time<br />
LO LA OC PR<br />
Iteration<br />
#1<br />
Iteration<br />
#2 ...<br />
Iteration<br />
#n<br />
Iteration<br />
#n+1 ...<br />
Iteration<br />
#m ...<br />
Time
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 5<br />
Abb. 1: RUP gliedert Prozesse in 2 Dimensionen [Kruc00, 23, 46, 62].<br />
Meilensteine: LO (Lifecycle Objective), LA (Lifecycle Architecture),OC (Initial Operational Capability), PR<br />
(Product Release). Die Dauer der Phasen (z. B. Inception, Elaboration) hängt von den Projektumständen ab.<br />
• Iterationen:<br />
Zur Verringerung von Risiken werden pro Zyklus lediglich ein Teil der Anforderungen<br />
bearbeitet (I), die dazu notwendigen Entwürfe erstellt (E), implementiert und getestet (C) und<br />
dem Auftraggeber übergeben (T). Jede Iteration folgt einem Muster ähnlich dem des Wasserfall-Modells<br />
mit den Besonderheiten, dass sich die Workflows (z. B. Anforderungsanalyse<br />
(Requirements), Design und Implementierung, siehe Abb. 1) überlagern und die Aktivitätsschwerpunkte<br />
von Phase zu Phase und von Iteration zu Iteration verschieben [Kruch00, 64-65].<br />
• Meilensteine:<br />
Meilensteine sind Punkte am Ende von Phasen, an denen anhand von Evaluationskriterien<br />
entschieden wird über die Weiterführung, die Änderung oder den Abbruch eines Prozesses.<br />
Meilensteine sind (siehe Abb. 1):<br />
1. LO (Lifecycle Objective) u. a. mit den Kriterien: Produktinteressenten haben Übereinkunft<br />
erzielt über allgemeine und hauptsächliche Anforderungen, Ressourceplan ist plausibel, Architekturprototyp<br />
deckt kritische Bereiche ab.<br />
2. LA (Lifecycle Architecture) u. a. mit den Kriterien: Produktvision ist stabil, Architektur ist<br />
stabil, Plan für die Konstruktionsphase ist plausibel nachvollziehbar, der aktuelle Ressourcenverbrauch<br />
ist gegenüber dem geplanten vertretbar.<br />
3. OC (Initial Operational Capability) u.a. mit den Kriterien: Produkt ist reif und stabil genug<br />
für ein Beta-Release, der aktuelle Ressourcenverbrauch ist gegenüber dem geplanten vertretbar.<br />
4. PR (Product Release) u.a. mit den Kriterien: Benutzer sind mit dem Produkt zufrieden, der<br />
aktuelle Ressourcenverbrauch ist gegenüber dem geplanten vertretbar.<br />
Statikelemente<br />
In der statischen Dimension werden Prozesse gegliedert hinsichtlich Rollen, Aktivitäten, Artifakten<br />
und Arbeitsabläufen [Kruc00, 36ff]:<br />
• Rollen (engl. Worker): Wer führt eine Aktivität aus?<br />
Eine Rolle definiert zusammenhängende Aktivitäten und die damit verbundene Verantwortung<br />
einer Person (oder eine Gruppe von Personen), für gewöhnlich ausgedrückt in Beziehung auf<br />
bestimmte Artifakte. Beispiele [Kruch00, 263-265]: Project Manager, Architekt, Architekt<br />
Reviewer, User-Interface-Designer, System Analysator, Test Designer, Tester, Configuration<br />
Manager 9 , Change Control Manager.<br />
• Aktivität (engl. activity): Wie ist etwas auszuführen?<br />
Eine Aktivität ist eine sachlogisch zusammenhängende, zweckmäßige Aufgabe einer Rolle, für<br />
gewöhnlich eine Form der Erzeugung, Verwendung oder Aktualisierung von Artifakten. Eine<br />
Aktivität ist ein Planungsinstrument. Beispiele: Plane eine Iteration (Project Manager), Ermittle<br />
Anwendungsfälle (System Analysator).<br />
• Artifakte (engl. artifact): Was sind die Gegenstände von Aktivitäten?<br />
Ein Artifakt ist eine Information [Kruc00, 40], die im Laufe einer Aktivität oder eines Prozesses<br />
erzeugt, verwendet oder aktualisiert wird. Dokumente sind nur eine spezielle Form von<br />
Artifakten. Artifakte bilden eine Einheit zusammen mit den Werkzeugen (z. B. Datenbank-<br />
Systeme, Web-Publishing-Systeme, Bug-Tracking-Systeme), die zu ihrer Erzeugung und Verwaltung<br />
eingesetzt werden. Artifakte fallen in eine der folgenden Bereiche: Mana-gement, Anforderungen,<br />
Entwurf, Implementierung und Deployment. Geschäftlich verwertbare Ergeb-<br />
8 Bearbeiter ist hier im Sinne eines Konzeptes gebraucht.<br />
9 Der Configuration Manager entspricht dem SEU-Betreuer (SEU=<strong>Software</strong>entwicklungsumgebung) im V-Modell 97.
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 6<br />
nisse bilden eine Teilmenge der Artifakte. Beispiele: Anwendungsfall-Modelle (engl. use case<br />
models), Source Code, Projektpläne, Datenbank mit Systemanforderungen, Fehlermeldungen.<br />
• Arbeitsabläufe (engl. workflows): Wann ist etwas auszuführen?<br />
Ein Arbeitsablauf ist eine Folge von Aktivitäten, die zu geschäftlich verwertbaren Ergebnissen<br />
führen. Arbeitsabläufe gruppieren (und ordnen) logisch zusammengehörende Aktivitäten,<br />
Artifakte und Rollen. Beispiele: Geschäftprozess-Modellierung, Analyse und Design (siehe<br />
Abb. 1).<br />
Statikelemente und Dynamikelemente bilden zusammen mit<br />
1. Richtlinien für die Gestaltung von Aktivitäten und Artifakten,<br />
2. Schablonen (engl. templates; hier im Sinn von Dokumentvorlagen, Modellen und Prototypen)<br />
für Artifakte sowie<br />
3. Werkzeug-Mentoren<br />
ein Prozess-Framework [Kruc00, 50], in dem Sinn, dass Rollen, Artifakte, Aktivitäten (Statikelemente<br />
allgemein) situationsbedingt kombiniert, hinzugefügt, ersetzt oder gestrichen werden. Das führt<br />
zu verschiedenen, anpassbaren Abläufen, die RUP mit Phasen, Iterationen und Meilensteinen (Dynamikelementen)<br />
beschreibt. 10<br />
V-Modell 97 [IABG Ottobrunn, 1997 11 ]<br />
Quellen: [HaNe01] [Vers00] [Stra03][WWW1]<br />
Das V-Modell 97 (im weiteren abgekürzt mit VM97) soll den sogenannten Teufelskreis des <strong>Software</strong>-<br />
<strong>Engineering</strong> [Vers00, 3] durchbrechen:<br />
• Mangelhafte Entwicklung führt zu<br />
• schlechter Produktqualität, die zu<br />
• erhöhtem Pflegeaufwand führt, was wiederum zu<br />
• Personalengpässen führt, was zu<br />
• mangelhafter Entwicklung führt<br />
• ...<br />
Die Ziele des VM97 sind [HaNe01, 212]:<br />
• Bessere Kommunikation der Projektbeteiligten.<br />
• Einheitliches Vorgehen bei Behörden und beauftragten Firmen.<br />
• Höhere Produktqualität.<br />
• Weniger Wartungsausfälle.<br />
• Geringerer Wartungsaufwand durch besseres Verständnis und einheitliche Dokumentation.<br />
• Höhere Entwicklungsproduktivität durch geringere Einarbeitungs- und Schulungszeiten.<br />
• Bessere Kalkulation von Neuprojekten durch standardisiertes Vorgehen.<br />
• Geringere Abhängigkeit von Personen und beauftragten Firmen.<br />
Das VM97 wird vor allem im öffentlichen Bereich, sowie im Banken- und Versicherungswesen eingesetzt<br />
[Vers00, 5]. Das VM97 dient als [Stra03, 10]<br />
• Vertragsgrundlage<br />
• Arbeitsanleitung<br />
• Kommunikationsbasis<br />
• Materialsammlung<br />
Das VM97 ist in 3 Ebenen gegliedert [Vers00, 6][HaNe01, 212]:<br />
1. Vorgehensmodell: Was ist zu tun?<br />
Beschreibt Aktivitäten und Produkte (Ergebnisse).<br />
10 Zur Bedeutung des Begriffs Prozess-Framework im Umfeld von RUP siehe z. B. auch Kapitel “Building your own process<br />
by specializing a process framework” von Jacobson [Jaco00, 155-164], einem maßgebenden Entwickler von RUP.<br />
11 [Vers00, 6], siehe auch http://www.v-modell.iabg.de, zitiert am 25.6.2003
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 7<br />
2. Methodenstandard: Wie ist es zu tun?<br />
Beschreibt grundlegende (elementare und komplexe) Methoden, die die genannten Aktivitäten<br />
unterstützen.<br />
3. Werkzeuganforderungen: Womit ist es zu tun?<br />
Beschreibt funktionale Anforderungen an Werkzeuge, die die Verwendung der festgelegten<br />
Methoden unterstützen.<br />
Jede dieser Ebenen durchzieht die Tätigkeitsbereiche (Teilmodelle, siehe Abb. 2):<br />
• <strong>Software</strong>erstellung: Teilmodell SE.<br />
• Qualitätssicherung: Teilmodell QS.<br />
• Konfigurationsmanagement: Teilmodell KM.<br />
• Projektmanagement: Teilmodell PM.<br />
Konfigurationsmanagement<br />
Qualitätssicherung<br />
<strong>Software</strong>erstellung<br />
Projektmanagement<br />
Vorgehensmodell<br />
Methodenstandard<br />
Werkzeuganforderungen<br />
Abb. 2: Ebenen und Tätigkeitsbereiche (Teilmodelle) des VM97 [HaNe01, 212].<br />
Die <strong>Software</strong>erstellung ist der zentrale Tätigkeitsbereich; andere Tätigkeitsbereiche begleiten die <strong>Software</strong>erstellung.<br />
Das VM97 gibt für die <strong>Software</strong>erstellung Aktivitäten und deren Ergebnisse (Produkte,<br />
Artifakte) einheitlich und verbindlich vor [HaNe01, 213]. Jede Aktivität wird durch eine Aktivitätenbeschreibung<br />
(Aktivitätsanleitung) in Form einer Produktflusstabelle beschrieben (siehe Abb.<br />
3).<br />
Von Aktivität Zustand Produkt Nach Aktivität Zustand<br />
Extern - Rahmenbedingungen - -<br />
Extern - Externe Vorgaben (AG) - -<br />
SE 2 akzeptiert Systemarchitektur - -<br />
- - Systemanforderungen SE 2, SE 3, SE<br />
4-SW, SE 5-SW<br />
vorgelegt<br />
- - SWPÄ-Konzept SE 9, PM 5 vorgelegt<br />
Protokoll PM 6 -<br />
Abb. 3: Produktflusstabelle für die Aktivität SE 1 „System-Anforderungsanalyse“ (Hauptaktivität des Teilmodells<br />
SE). SWPÄ = <strong>Software</strong> Pflege- und –Änderung. SE 4 „Grobentwurf“ gib es in 2 Varianten (1) für <strong>Software</strong>: SE 4-<br />
SW und (2) für Hardware: SE 4-HW. AG = Auftraggeber.<br />
SE 1 ist eine Hauptaktivität. Hauptaktivitäten werden in Subaktivitäten (SE 1.1 „Ist-Aufnahme/-Analyse<br />
durchführen“, SE 1.2 „Anwendungssystem beschreiben“ ...) untergliedert. Aktivitäten ändern<br />
Produktzustände (siehe Abb. 4).<br />
geplant in Bearbeitung vorgelegt akzeptiert<br />
Abb. 4: Produktzustände und Zustandsübergänge.<br />
Die 4 Teilmodelle (SE, QS, KM, PM) von VM97 sind miteinander verknüpft und beeinflussen sich<br />
über den Austausch von Produkten (siehe Abb. 5).
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 8<br />
SE<br />
QS<br />
KM<br />
PM<br />
A2 P2 A5 P6 A7<br />
A3<br />
P3<br />
A4 P4<br />
A1 P1 A6 P5<br />
Abb. 5: Schematische Darstellung eines Aktivitäten- und Produktflusses über die 4 Teilmodelle (SE, QS, KM, PM)<br />
des VM97 [HaNe01, 217] [Vers00, 12]. Ai = Aktivitäten, Pi = Produkte.<br />
Das VM97 ist ein organisationstunabhängiges Modell [Vers00, 55]. Daher werden Aufgabenträger<br />
in Form von Rollen beschrieben. Eine Rollenbeschreibung legt fest:<br />
• Aktivitäten, an denen die Rolle beteiligt ist.<br />
• Aufgaben und Tätigkeiten, die die Rolle wahrnehmen muss.<br />
• Kenntnisse, die für die Ausübung der Aufgaben und Tätigkeiten notwendig sind.<br />
Beispiele für Rollen im Teilmodell SE [Vers00, 56] sind: Systemanalytiker, Systemdesigner,<br />
<strong>Software</strong>entwickler, Hardwareentwickler, Technischer Autor, Systembetreuer, SEU 12 -Betreuer.<br />
Rollen und Aktivitäten bilden eine Matrix. Dabei werden die Beteilungsformen verantwortlich,<br />
mitwirkend und beratend unterschieden (siehe Abb. 6).<br />
SE 1: „Systemanforderungsanalyse<br />
SE 1.1: Ist-Aufnahme/-Analyse durchführen<br />
SE 1.2: Anwendungssystem beschreiben<br />
…<br />
SE 2: System-Entwurf<br />
SE 2.3: Realisierbarkeit untersuchen<br />
.<br />
Systemanalytiker<br />
.<br />
verantwortlich<br />
verantwortlich<br />
.<br />
.<br />
mitwirkend<br />
.<br />
Abb. 6: Ausschnitt aus der Aktivitäten/Rollen-Matrix am Beispiel eines Systemanalytikers.<br />
VM97 kann an projektspezifische Gegebenheiten angepasst werden (Tailoring) [Vers00, 14]. Dabei ist<br />
zu prüfen, welche Aktivitäten und Produkte notwendig sind. VM97 unterscheidet 2 Formen von Anpassungen:<br />
1. Ausschreibungsrelevante Anpassungen: Anpassungen vor Beginn des Projekts.<br />
2. Technische Anpassungen: Anpassungen während des Projekts.<br />
Das angepasste VM97 (1. Form) und/oder die Rahmenbedingungen, unter denen bestimmte Aktivitäten<br />
ausgeführt oder Produkte erzeugt bzw. verwendet werden (2. Form), sind im Projekthandbuch<br />
festzuhalten.<br />
XP [K.Beck, 2000 13 ]<br />
Quellen: [Beck00] [WWW2] [ASRW02]<br />
<strong>Software</strong>entwicklung ist verschiedenen Risiken ausgesetzt [Beck00, 3], z. B.<br />
• Terminverschiebungen.<br />
• Komplizierte, zunehmend schwerer wartbare Programme.<br />
• Un- oder Missverständnis des Anwendungsbereichs.<br />
• Änderungen des Anwendungsbereichs.<br />
• Funktional überladene Programme (engl. false feature richness).<br />
Zum Umgang mit den Risiken stehen grundsätzlich vier Optionen zur Verfügung [Beck00, 12]:<br />
• Abbrechen: Streichen von Features.<br />
12 SEU = (S)oftware(e)ntwicklungs(u)mgebung<br />
13 [High02, 297]
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 9<br />
• Wechseln: Ändern der Projektrichtung oder Ändern von Features.<br />
• Verschieben: Warten bis die Situation überschaubarer ist.<br />
• Skalieren: Anpassen an Projektgröße und –dynamik.<br />
Diese Optionen stehen dem Auftraggeber unter XP (Extreme 14 Programming) während der Abwicklung<br />
eines Projekts kontinuierlich zur Verfügung.<br />
XP ist besonders auf die Abwicklung von Projekten mit vagen oder sich häufig ändernden<br />
Anforderungen ausgerichtet [Beck00, 13]. Wage oder sich häufig ändernde Anforderungen führen<br />
üblicherweise im Laufe der Zeit zu hohen Änderungskosten. Mit XP sollen diese Kosten nachhaltig<br />
gesenkt werden (siehe Abb. 7).<br />
Cost of Change<br />
Requirements Analysis Design Implementation Testing Production<br />
Time<br />
Abb. 7: Üblicherweise steigen die Änderungskosten exponentiell mit der Zeit (7a) [Beck00, 21]. XP soll<br />
Änderungskosten konstant halten (7b) [Beck00, 23].<br />
Um das ökonomische Ziel (annähernd konstante Änderungskosten) zu erreichen, werden XP-Projekte<br />
etwa so gesteuert wie Fahrzeuge [Beck00, 28]: „Driving is not about getting the car going in the right<br />
direction. Driving is about constantly paying attention, making a little correction this way, a little correction<br />
that way. This is the paradigm of XP.” Dabei ist der Steuermann des Projekts der Kunde (der<br />
Auftraggeber) [Beck00, 28]. Die Projektmitarbeiter (<strong>Software</strong>entwickler) geben dem Kunden kontinuierlich<br />
Feedback über den aktuellen Stand des Projektes.<br />
Diese Art der Projektsteuerung birgt die Gefahr in sich, dass durch zahlreiche, kurzfristige Änderungen<br />
langfristige Ziele und bewährte Arbeitstechniken (Praktiken, siehe weiter unten) vergessen<br />
werden. Konflikte zwischen kurzfristigen, meist individuellen Zielen und langfristigen, gemeinschaftlichen<br />
Zielen werden in sozialen Gruppen auf der Basis gemeinsamer Wertvorstellungen ausgetragen.<br />
In diesem Sinn werden im Kontext von XP Projektmitarbeiter eingeschworen auf die folgenden vier<br />
grundlegenden Werte [Beck00, 29-35]:<br />
1. Kommunikation: Probleme, kritischen Änderungen, Lösungsalternativen etc. werden kontinuierlich<br />
besprochen.<br />
2. Einfachheit: Einfache Programme, die aktuelle Aufgaben lösen, können zukünftig leichter geändert<br />
werden, als komplizierte Programme, die nicht nur aktuelle Aufgaben lösen sondern<br />
auch zukünftige Aufgaben, die jedoch für das Programm möglicherweise nie relevant sind.<br />
3. Feedback: Kontinuierliche Rückmeldungen über den Zustand eines Systems oder des Projektes<br />
ersetzt selbsttrügerischen Optimismus, z. B. kontinuierliche Unit-Tests und unmittelbare<br />
Aufwandsschätzungen durch <strong>Software</strong>entwickler für Anforderungen von Kunden.<br />
4. Mut (Courage): Mut ist notwendig, um (1) die Programmarchitektur umzubauen, wenn das<br />
(aufwendige) Änderungen von zahlreichen Unit-Tests nach sich zieht, (2) um überflüssigen<br />
Code aus der Codebasis zu entfernen, oder (3) um Fehler in Programmteilen anderer <strong>Software</strong>entwickler<br />
auszubessern. Diese Anpassungen sind notwendig, z. B. um gemäß dem Wert<br />
Einfachheit die Programmstruktur immer so einfach als möglich zu halten.<br />
Da diese Werte zu abstrakt sind, um auf deren Grundlage in konkreten Situationen Entscheidungen zu<br />
treffen, postuliert XP die folgenden, aus den genannten Werten abgeleitete, zentrale Prinzipien<br />
[Beck00, 37-38]:<br />
• Hole Feedback, interpretiere es, ziehe schnell Konsequenzen (engl. rapid feedback).<br />
14 “Why the ‘extreme’ in the name? XP takes commonsense principles and practices to extreme levels.” [Beck00, xv]<br />
7a<br />
7b
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 10<br />
• Gehe davon aus, dass es eine einfache Lösung gibt (engl. assume simplicity).<br />
• Löse Probleme schrittweise (engl. incremental change).<br />
• Löse das dringenste Problem zuerst, bewahre weitere Optionen (engl. embracing change).<br />
• Strebe ständig nach qualitativ hochwertigen Arbeitsergebnissen (engl. quality work).<br />
Weitere Prinzipien sind [Beck00, 39-42]:<br />
• Lehre lernen 15 , statt doktrinäre Anweisungen zu geben und zu befolgen (engl. teach learning).<br />
• Investiere schrittweise, beginne mit einer geringen Investition (engl. small initial investment).<br />
• Suche den Erfolg (engl. play to win).<br />
• Teste Entscheidungen mit Experimenten (engl. concrete experiments).<br />
• Kommuniziere offen und redlich (engl. open, honest communication).<br />
• Arbeite mit den Instinkten statt gegen sie (engl. work with people’s instincts, not against them).<br />
• Übernehme Verantwortung auf eigene Initiative (engl. accepted responsibility).<br />
• Passe XP an lokale und aktuelle Gegebenheiten an (engl. local adaption).<br />
• Erstelle wenige, einfache und nützliche (Zwischen-)Produkte / Artifakte (engl. travel light).<br />
• Kontrolliere und steure den Prozess mit nützlichen statt technisch möglichen Maßen (engl.<br />
honest measurement).<br />
Ein Projekt soll auch bei häufigen Änderungen auf Kurs gehalten werden, dabei den grundlegenden<br />
Werten und Prinzipien folgen und gleichzeitig die Änderungskosten niedrig halten. Zur Erreichung<br />
dieser Ziele muss sich ein Entwicklungsprozess auf wesentliche Aktivitäten konzentrieren. Wesentlich<br />
sind jene Aktivitäten, auf die während der Entwicklung qualitativ hochwertiger, langlebiger Programme<br />
nicht verzichtet werden kann. Das sind [Beck00, 43ff]:<br />
• Programmieren: Ohne Programmieren gibt es kein Programm.<br />
• Testen: Ohne Testen ist nicht klar, ob die Programmierung abgeschlossen ist.<br />
• Zuhören: Ohne Zuhören ist nicht klar, was programmiert und getestet werden soll.<br />
• Entwerfen: Ohne Entwerfen kann nicht langfristig programmiert und getestet werden.<br />
Auf Dokumentation (Systemdokumentation) verzichtet XP vollständig. Dokumentation ist für<br />
typische XP-Projekte keine wesentliche Entwicklungstätigkeit. Dokumentation kann durch Praktiken<br />
ersetzt werden, die auf zuvor genannten Prinzipien zurückgehen, insbesondere auf intensive Kommunikation,<br />
kontinuierliches Feedback, einfache Programme, einfache Entwürfe (einfache Metaphern)<br />
und zahlreiche, automatisierte Testtreiber. Im Einzelnen konzentriert sich XP auf die folgenden 12<br />
Praktiken [Beck00, 54]:<br />
• Das Planungsspiel (engl. the planning game): Der Inhalt des nächsten Release (der nächsten<br />
Produktfreigabe) wird mit Story Cards (Beschreibungen von Produktfähigkeiten, engl.<br />
features) [Beck00, 88] bestimmt. Das soll einfach und schnell gehen. Dabei werden Geschäftsziele<br />
(des Kunden) und Aufwandsschätzungen der <strong>Software</strong>entwickler abgeglichen. Der Plan<br />
kann während der Entwicklung an sich ändernde Situationen angepasst werden.<br />
• Kurze Release-Zyklen (engl. small releases): Funktional begrenzte Produktversionen werden in<br />
kurzen Zyklen freigegeben.<br />
• Metapher (engl. methaphor): Ein einfaches Konzept über Aufbau und Arbeitsweise des Programms<br />
steuert die <strong>Software</strong>ntwicklung.<br />
• Einfacher Entwurf (engl. simple design): Das Programm soll immer so einfach als möglich<br />
implementiert werden. Unnötige Komplexität ist zu beseitigen, sobald sie entdeckt wird.<br />
• Testen (engl. testing): <strong>Software</strong>entwickler erstellen kontinuierlich Unit-Tests. Unit-Tests sollen<br />
vor dem Testgegenstand entwickelt werden und müssen vor dem nächsten Entwicklungsschritt<br />
abgeschlossen werden. Kunden entwickeln Systemtests zur Überprüfung der im Planungsspiel<br />
(siehe oben) festgelegten Produktfähigkeiten (engl. features).<br />
15 Man könnte ergänzen: Lerne lehren [A.d.V.]
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 11<br />
• Umbau (engl. refactoring): <strong>Software</strong>entwickler restrukturieren das Programm ohne dessen<br />
Funktionen zu ändern, um überflüssigen Code zu entfernen, um das Programm zu vereinfachen<br />
oder um es, wenn notwendig, flexibler zu gestalten.<br />
• Programmieren in Paaren (engl. pair programming): Zwei <strong>Software</strong>entwickler entwickeln<br />
Quellcode gemeinsam. Ein Enwickler gibt dem anderen kontinuierlich Feedback. Die Zusammensetzung<br />
der Paar wechselt in bestimmten Abständen.<br />
• Gemeinsame Verantwortung (engl. collective ownership): Jeder <strong>Software</strong>entwickler kann jede<br />
Codezeile (im gesamten Projekt) zu jedem Zeitpunkt ändern.<br />
• Kontinuierliche Integration (engl. continuous integration): Das System wird integriert, sobald<br />
eine neue Einwicklungsaufgabe (engl. task 16 ) implementiert wurde.<br />
• 40-Stunden Woche (engl. 40-hour week): Pro Woche sollen in der Regel nicht mehr als 40<br />
Stunden gearbeitet werden. Die Wochenarbeitszeit soll höchstens 1 Woche (keine 2 Wochen<br />
hintereinander) überschritten werden.<br />
• Kunde vor Ort (engl. on-site customer): In die Projektgruppe soll ein Kunde integriert werden.<br />
Der Kunde soll für die Entwickler immer verfügbar sein, um jederzeit Fragen beantworten zu<br />
können.<br />
• Programmierstandards (engl. coding standards): <strong>Software</strong>entwickler erstellen Programme<br />
nach einheitlichen Richtlinien zur der Kommunikation direkt durch den Quellcode. Das erleichtert<br />
z. B. den kontinuierlichen Programmumbau und fördert einen einfachen Programmentwurf.<br />
XP verlangt den Einsatz aller Praktiken, da alle Praktiken direkt oder indirekt zusammenhängen.<br />
XP kann in Projekten mit bis zu ca. 10 <strong>Software</strong>entwicklern eingesetzt werden. Die <strong>Software</strong>entwickler<br />
müssen fachlich ähnlich qualifiziert sein und kommunizieren können. Zur Förderung der<br />
Kommunikation sollen alle <strong>Software</strong>entwickler in einem Raum sitzen. Übliche XP-Projekte dauern<br />
zwischen 1 und 6 Monaten; ein Entwicklungszyklus (eine Iteration) dauert zwischen 1 und 3 Wochen<br />
[Beck00, 91]. Eine Übersicht über den Verlauf typischer XP-Projekte gibt Abb. 8.<br />
Abb. 8: Übersicht über ein XP-Projekt [WWW2].<br />
Wichtige Rollen in XP-Projekten sind [ASRW02, 21f]:<br />
• <strong>Software</strong>entwickler: entwickelt Programme und Unit-Tests.<br />
• Kunde: beschreibt Anwendungsfälle (mit Story Cards) und entscheidet, wann eine<br />
Anforderung implementiert ist.<br />
16 Stories werden auf Story Cards während des Planungsspiels fest gehalten. Später werden die Stories in mehrere Programmieraufgaben<br />
(engl. tasks) zerlegt. Daraus entstehen Task Cards [Beck00, 91].
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 12<br />
• Tester: hilft dem Kunden, Testfälle zu schreiben, testet regelmäßig das System und informiert<br />
die Produktinteressenten über die Testergebnisse.<br />
• Tracker: sammelt Daten und gibt <strong>Software</strong>entwicklern und Managern Feedback zum<br />
Projektfortschritt.<br />
• Coach: verantwortlich für den Gesamtprozess und die Einhaltung der XP-Regeln.<br />
• Technik-Berater: bringt spezielles technisches Know-how in die Projektgruppe.<br />
• Manager: trifft finale Entscheidungen und koordiniert sich dazu mit der Projektgruppe.<br />
Scrum [K.Schwaber, J.Sutherland, M.Beedle, 1996 18 ]<br />
Quellen: [High02] [ScBe02] [ASRW02]<br />
<strong>Software</strong>entwicklung ist kein definierbarer Prozess sondern ein auf Erfahrung beruhender und nur mit<br />
dem Wachsen der Erfahrung sich verbessernder Prozess (mit den Worten von K.Schwaber: ein empirischer<br />
Prozess) [High02, 241]. Jedes Projekt ist einmalig: Technology, Anforderungen und Mitarbeiter<br />
variieren von Projekt zu Projekt und oft auch während der Abwicklung eines Projekts [ScBe02, 23].<br />
Detaillierte Vorschriften zu Phasen, Aktivitäten und Aufgaben und überladene (schwergewichtige)<br />
<strong>Prozessmodelle</strong> können die Entwicklung eines <strong>Software</strong>produkts in dynamischen Umgebungen nicht<br />
beschreiben, da ein definierter Prozess das Verständnis jedes einzelnen Schrittes voraussetzt [ScBe02,<br />
25]. Unter dynamischen, z.T. nicht vorhersehbaren Umständen können jedoch weder das Ergebnis<br />
noch einzelne Schritte oder deren Folge zur Erzielung des Ergebnisses genau vorgeschrieben (geplant)<br />
werden.<br />
Scrum 19 geht davon aus, dass solche Prozesse „am Rande des Chaos“ kontinuierlich überwacht<br />
und mit Feedback-Techniken gesteuert werden. Das Management konzentriert sich dabei auf der<br />
Verbesserung der Umstände eines Projekts, um optimale Rahmenbedingungen für die Entwicklungstätigkeiten<br />
(Analysieren, Entwerfen, Implementieren und Testen) und damit für die <strong>Software</strong>entwickler<br />
zu schaffen. Innerhalb dieser Rahmenbedingungen können <strong>Software</strong>entwickler selbständig geeignete<br />
<strong>Prozessmodelle</strong> für die <strong>Software</strong>entwicklung (im engeren Sinn) auswählen und einsetzen, z. B.<br />
XP und RUP [High02, 242-243] [ScBe02, 128]. Einen Überblick über Scrum gibt Abb. 9.<br />
Scrum besteht aus drei Phasen, die wiederholt (iterativ) angewendet werden:<br />
1. Pre-Sprint: Planung (Vorwärtsregelung, Steuerung, Feedforward).<br />
2. Sprint: <strong>Software</strong>entwicklung und Überwachung der <strong>Software</strong>entwicklung.<br />
3. Post-Sprint: Review (Rückkopplung, Feedback).<br />
In der Pre-Sprint-Phase wird das <strong>Software</strong>produkt geplant [High02, 244] [ASRW02, 29]:<br />
• Festlegung von Ziel und Zweck (engl. sprint goal, business purpose) der nächsten Iteration.<br />
• Extrahierung der Anforderungen aus der Auftragbestandsliste (siehe folgenden Absatz) in die<br />
Produktfreigabeliste (siehe folgenden Absatz).<br />
• Ableitung einer Aufgabenliste (siehe folgenden Absatz) zur Realisierung der Anforderungen in<br />
der Produktfreigabeliste.<br />
• Entwurf und Review einer Produktarchitektur, die zur Realisierung der Anforderungen in der<br />
Produktfreigabeliste geeignet ist.<br />
17 Ein Stakeholder ist eine Person, die ein berechtigtes Interesse an einem (<strong>Software</strong>-) Produkt hat, z. B. ein Kunde, ein<br />
<strong>Software</strong>entwickler, ein Manager. Verschiedene Stakeholder haben i. Allg. verschiedene Interessen.<br />
18 [ScBe02, 2]<br />
19 “Scrum refers to the strategy used in rugby for getting an out-of-play ball back into play. The name Scrum stuck because<br />
of the similarities between the game of rugby and the type of of product development proscribed by Scrum. Both are<br />
adaptive, quick, self-organizing, and have few rests” [ScBe02, 1].
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 13<br />
Abb. 9: Überblick über Scrum [High02, 243].<br />
Die Auftragbestandsliste (engl. product backlog) enthält alle Anforderungen an das <strong>Software</strong>produkt<br />
(funktionale A., nichtfunktionale A. / Anforderungen an die Technologie). Die Anforderungen<br />
stammen z. B. von Kunden, Verkäufern, der Marketing-Abteilung, dem Kunden-Support oder von den<br />
<strong>Software</strong>entwicklern und können zu einem beliebigen Zeitpunkt während der Projektabwicklung<br />
eingebracht werden. Die Produktfreigabeliste (engl. release backlog) enthält jenen Teil von Anforderungen<br />
der Auftragbestandsliste, der im nächsten Zyklus entwickelt werden soll. Aus der Produktfreigabeliste<br />
wird unter Berücksichtigung der Wichtigkeit (Priorität) der Anforderungen und für die<br />
Entwicklung zur Verfügung stehenden Ressourcen eine Aufgabenliste (engl. sprint backlog) erstellt,<br />
möglicherweise in mehreren Iterationen. Die Aufgabenliste übersetzt Anforderungen an das Produkt<br />
in Aufgaben für die <strong>Software</strong>entwickler.<br />
Für die Sprint-Phase schreibt Scrum keine speziellen Entwicklungspläne vor [High02, 245f].<br />
Scrum sichert lediglich, dass die Anforderungen (in der Produktfreigabeliste) und die daraus<br />
abgeleiteten Aufgaben (in der Aufgabenliste) während eines Sprints (ca. 30 Tage) unverändert<br />
bleiben. 20 Das soll die Fragmentierung der Arbeitszeit verringern und sich häufig ändernde Prioritäten<br />
verhindern. Die <strong>Software</strong>entwickler verpflichten sich für die Dauer eines Sprints, Aufgaben aus der<br />
Aufgaben-Liste zu realisieren. Dabei koordinieren sie ihre Arbeit ihrem Wissen, ihrer Erfahrung und<br />
ihren Talenten entsprechend u.U. auf der Grundlage eines anderen Prozessmodells [ScBe02, 128].<br />
Die <strong>Software</strong>entwickler können tun, was sie für nötig halten, um das Ziel des Sprints zu erreichen<br />
[ScBe02, 45]. Der Kunde (oder Produkteigentümer / Produktmanager, siehe unten) kann erst am Ende<br />
eines Sprints<br />
• die Ergebnisse übernehmen,<br />
• im nächsten Sprint überarbeiten lassen oder<br />
• auf die Ergebnisse vollständig verzichten.<br />
Während eines Sprints nehmen alle Projektmitarbeiter an täglichen Treffen (engl. Scrum meetings)<br />
von ca. 15 Minuten teil. In diesen Treffen nehmen die Projektmitarbeiter kurz zu folgenden Fragen<br />
Stellung [ScBe02, 40]:<br />
• Was wurde seit dem letzten Treffen erreicht (welche Aufgaben wurden erledigt)?<br />
20 Die Auftragbestandliste kann in dieser Zeit weiterentwicklet werden.
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 14<br />
• Was (welche Aufgabe) soll bis zum nächsten Treffen erreicht (bearbeitet) werden?<br />
• Welche Probleme gilt es bis dahin (bis zum nächsten Treffen) zu überwinden?<br />
Die täglichen Treffen sind informativer, nicht fachlicher Natur. Sie dienen der Überwachung (engl.<br />
monitoring) des Projektes und geben dem Management die Möglichkeit, Probleme schnell zu erkennen<br />
und Maßnahmen zur Überwindung der Probleme zu ergreifen. Komplexes fachliche Aufgaben<br />
werden in gesonderten Fachtreffen (engl. follow-up meetings [ScBe02, 46]) zwischen betroffenen<br />
Projektmitarbeitern erörtert. Diese täglichen, rein informativen Gruppentreffen sind für alle Projektmitarbeiter<br />
wenig aufwendig und nützlicher als (diskontinuierliche weil nicht interaktive) Kommunikation<br />
durch Schreiben und Lesen von missverständlichen Reports [ScBe02, 40]. Erledigte Aufgaben<br />
der Aufgabenliste können für alle sichtbar in Hinsicht auf noch offene Aufgaben visualisiert werden<br />
(engl. sprint backlog graph). Die Treffen finden zur selben Zeit im selben Raum statt; das beseitigt<br />
Koordinationsaufwand und macht die Treffen zu einer Selbstverständlichkeit. Auch andere Produktinteressenten<br />
können an diesen Treffen als Zuhörer teilnehmen. Sprints dauern sehr kurz, können aber<br />
in außergewöhnlichen Fällen (gravierende Änderung von Projektumständen) vorzeitig beendet werden<br />
[ScBe02, 53].<br />
In der Post-Sprint-Phase, am Ende einer Projektiteration, werden in einem informativen<br />
Arbeitstreffen [High02,247] [ScBe02, 54-56]<br />
• der Projektfortschritt analysiert,<br />
• Ergebnisse dem Kunden präsentiert und<br />
• ein Review des Projekts (und Produkts) aus technischer Sicht durchgeführt.<br />
Ergebnisse dieses Treffens fließen in die nächste Projektiteration ein.<br />
Wichtige Rollen in Scrum-Projekten sind [ASRW02, 30f]:<br />
• Scrum-Master: Methoden-Berater und Coach; ist verantwortlich dafür, dass das Projekt nach<br />
den Scrum-Regeln abläuft und sorgt für optimale Arbeitsbedingungen für das Scrum-Team.<br />
• Produkteigentümer (Produktmanager): Ist für das (nach den Scrum-Regeln) zu erstellende<br />
<strong>Software</strong>produkt verantwortlich, z. B. für die Pflege der Auftragbestandsliste, für die<br />
Umwandlung von Produktfreigabelisten in Aufgabenlisten, für Schätzung von Aufwänden und<br />
für die Dokumentation des Projektforschritts (engl. sprint backlog graph).<br />
• Projektmitarbeiter (Scrum-Team): <strong>Software</strong>entwickler, die sich den gegebenen Rahmenbedingungen<br />
entsprechend selbst organisieren.<br />
• Kunde<br />
• Management: Nimmt an der Zielsetzung und Anforderungsdefinition teil und trifft finale<br />
Entscheidungen in Übereinstimmung mit den grundlegenden Scrum-Praktiken.<br />
Mit Scrum kann nicht nur die Arbeit einzelner Projektgruppen mit bis zu ca. 10 Mitarbeitern<br />
organisiert werden⎯wie im Fall von XP⎯sondern auch die Arbeit mehrerer, zusammenhängender<br />
Projektgruppen, die z. B. verantwortlich sind für<br />
• gemeinsam benutzte Ressourcen (wiederverwendbare Komponenten und<br />
Entwicklungswerkzeuge),<br />
• für die Sicherung der Qualität (Testen) des gemeinsam erstellten Produkts oder<br />
• für die Unterstützung von Produktvarianten, die bereits produktiv eingesetzt werden.<br />
Wenn mit Scrum mehrere Projekte organisiert werden, dann treffen sich während eines Sprints die<br />
Scrum-Master der Teilprojekte; die Treffen müssen nicht mehr täglich stattfinden. Statt dessen finden<br />
in größeren Abständen aber regelmäßig statt (engl. scrum of scrums meetings) [ScBe02, 128].
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 15<br />
MSF [Microsoft, v1:1991, v2:1998, v3:2003]<br />
Quellen: [Luka03] [Stat99] [Micr99] [Micr03a] [Micr03b] [Micr03c]<br />
Entwicklung und Einsatz (Deployment) von <strong>Software</strong>produkten sind komplex und damit schwer zu<br />
beherrschen. Der Einsatz fortschrittlicher Technologien alleine sichert nicht den Erfolg eines <strong>Software</strong>projektes.<br />
Die entscheidenden Erfolgsfaktoren sind Produktinteressenten (engl. stakeholer) und<br />
Prozesse. Werden diese nicht genügend berücksichtigt, dann kranken Projekte an folgenden Symptomen<br />
[Micr03a]:<br />
• Unkoordinierte Produktinteressenten.<br />
• Unzureichend beschriebene, zufällige Anforderungen; für den Projekterfolg kritische<br />
Anforderungen werden nicht gebührend und nicht rechtzeitig berücksichtigt.<br />
• Projektgruppen, die gestellte Aufgaben und Anwendungsbereiche nicht verstehen.<br />
• Anforderungen, die die Wünsche der Kunden nicht widerspiegeln.<br />
• Anforderungen, die (unter gegebenen Rahmenbedingungen) nicht implementierbar sind.<br />
• Entwicklungsprozesse, die nicht verstanden und nicht beherrscht werden und damit unter den<br />
Beteiligten zu Verwirrung, zu doppelter Arbeit und zu Versäumnissen führen.<br />
• Mangelhafter Übergang eines Projekts von der Entwicklungsphase in die Einsatzphase. Das<br />
kann zu nachträglichem Flickwerk (engl. workarounds) führen, um doch noch die Anforderungen<br />
des Kunden zu erfüllen, oder zu Zeitverzögerungen.<br />
Projekte scheitern, wenn Produktinteressenten einander nicht verstehen und sich auf einen Entwicklungsprozess<br />
nicht einigen kann.<br />
Zur Überwindung der Probleme setzt MSF (Microsoft Solution Framework) auf ein Prozess-<br />
Framework, dessen Elemente (Prinzipien, Prozess- und Teammodelle, Praktiken etc.) situationsbedingt<br />
eingesetzt und angepasst werden können [Luka03, 8]. Ausgangspunkt für MSF sind folgende<br />
bewährten Praktiken (engl. best practices) [Stat99, 3ff]:<br />
1. Integriere <strong>Software</strong> täglich (engl. build software daily).<br />
2. Stelle jedem Entwickler einen Tester bei (engl. use buddy testers).<br />
3. Bilde kleine Projektgruppen mit funktionalen Schwerpunkten (engl. form feature teams).<br />
4. Entwickle <strong>Software</strong> iterativ, plane Zeitpuffer ein (engl. use multiple cycles, with buffers).<br />
5. Fixiere die Produktfreigabe zu Projektbeginn, um sicher zu stellen, dass sich die Projektgruppe<br />
auf die Entwicklung der wesentlichen Produktfähigkeiten (engl. features) konzentriert (engl.<br />
constrain resources and schedule at the start of a project).<br />
6. Entwickle <strong>Software</strong> inkrementell (engl. grow software by prototyping and evolving a feature).<br />
7. Tauche Projekterfahrungen mit Anderen aus (engl. share lessons learned by project postmortems,<br />
process audits etc.)<br />
Microsoft setzt nicht auf ein alle Einzelheiten vorschreibendes Prozessmodell, da keine Organisationsstruktur<br />
und kein Entwicklungsprozess die Anforderungen aller Projekte unter allen Bedingungen<br />
erfüllen kann [Micr03a] 24 . Trotzdem sind gewisse, grundlegende Richtlinien für die Abwicklung von<br />
Projekten verschiedener Typen notwendig [Micr03a]. MSF unterstützt insbesondere die Abwicklung<br />
folgender Projekttypen [Micr03a]:<br />
• Neuentwicklungen (engl. software development projects), u. a. von mobilen, Web- und<br />
E-Commerce Programmen.<br />
21 [Meye96, 59] Ich konnte nicht eindeutig die erste Nennung des Cluster-Modells ermitteln.<br />
22 Die Zeit hat für eine Ausformulierung des Cluster-Modells nicht ganz gereicht. Sorry!<br />
23 Deployment ist wesentlich mehr als die Installation von Produkten (oder Produktkomponenten). Deployment umfasst in<br />
etwa folgende Aktivitäten: Verpacken, ankündigen, konfigurieren, hinzufügen (installieren), aktivieren, deaktivieren,<br />
entfernen (deinstallieren) [CFH+98, 5]<br />
24 “The MSF philosophy holds that there is no single structure or process that optimally applies to the requirements and<br />
environments for all projects.” [http://msdn.microsoft.com/vstudio/productinfo/enterprise/msf/, zitiert am 20.1.2004]
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 16<br />
• Projekte zum Deployment 25 von Infrastruktur (engl. infrastruktur deployment projects), z. B.<br />
Deployment von Desktop-<strong>Software</strong> und Aktualisierungen (engl. updates) von Betriebssystemen.<br />
• Projekte zur Integration von <strong>Software</strong>pakten (engl. packaged application integration projects),<br />
z. B. zur Integration von Komponenten (Paketen) von Warenwirtschaftssystemen.<br />
• Kombinationen der oben genannten Projekttypen.<br />
MSF ist abgestimmt mit MOF (Microsoft Operations Framework). MSF und MOF unterstützen verschiedene<br />
Tätigkeiten in Bezug auf die Entwickung (MSF) und den Einsatz (MOF) eines <strong>Software</strong>produkts<br />
(einer auf <strong>Software</strong> basierenden Dienstleistung) [Micr03b]:<br />
• MSF unterstützt die Bedarfs-, Anwendungsbereich- und Problemanalyse und die Entwicklung<br />
einer Problemlösung (die Entwicklung eines <strong>Software</strong>produkts bzw. einer Dienstleistung)<br />
• MOF unterstützt den Einsatz eines anpassbaren <strong>Software</strong>produkts in verschiedenen, sich<br />
ändernden Umgebungen.<br />
MOF unterstützt insbesondere den Betrieb (Anwendung und Hilfeleistung), die Änderung und die<br />
Optimierung von <strong>Software</strong>produkten in verschiedenen Einsatzumgebungen, um vereinbarte Dienstleistungsniveaus<br />
(engl. service-level agreements, SLAs) zu gewährleisten. Gemeinsam decken MSF<br />
und MOF den gesamten Produkt-Lebenszyklus ab von der Ideenfindung, über Auslieferung und<br />
Einsatz bis zum Auslaufen eines <strong>Software</strong>produkts [Micr03a] (siehe Abb. 12).<br />
Einsatzsicht<br />
Einsetzen<br />
MOF<br />
Planen<br />
Produkt<br />
Deployment<br />
Entwickeln<br />
MSF<br />
Entwicklungssicht<br />
Abb. 12: IT Lifecycle und dessen Abdeckung durch MSF (Microsoft Solutions Framework) und MOF<br />
(Microsofts Operation Framework) [Luka03, 5].<br />
Dieser Aufsatz konzentriert sich im Folgenden auf MSF 27 . MSF enthält folgende Komponenten, die<br />
einzeln angewendet oder situationsbedingt kombiniert 28 werden können:<br />
A. Prinzipien: Grundlegende Werte und Standards, auf denen das gesamte Framework beruht 29 :<br />
1. Fördere die offene Kommunikation (engl. foster open communications)<br />
2. Konzentriere Arbeiten auf eine gemeinsame Vision (engl. work toward a shared vision)<br />
3. Fördere Gruppenmitglieder (engl. empower team members)<br />
25 Deployment ist wesentlich mehr als die Installation von Produkten (oder Produktkomponenten). Deployment umfasst in<br />
etwa folgende Aktivitäten: Verpacken, ankündigen, konfigurieren, hinzufügen (installieren), aktivieren, deaktivieren,<br />
entfernen (deinstallieren) [CFH+98, 5]<br />
26 <strong>Software</strong>produkte können relativ zur sich vor allem technologisch weiter entwickelnden Umgebung altern.<br />
27 MOF setzt das Prozessmodell von Microsoft deutlich ab von anderen <strong>Prozessmodelle</strong>n. Dieser Aufsatz konzentriert sich<br />
jedoch auf den klassischen Teil von <strong>Prozessmodelle</strong>n⎯auf den Analyse- und Entwicklungsprozess aus der Sicht der Produktentwicklung⎯und<br />
daher auf MSF.<br />
28 “As a framework, MSF contains multiple components that can be used individually or adopted as an integrated whole”<br />
[Micr03a]. Dass die Komponenten des Prozess-Frameworks auch einzeln angewendet werden können deutet an, dass<br />
Microsoft den Begriff Framework in diesem Kontext (Prozessmodellierung) gebraucht im Sinne einer Sammlung lose<br />
gekoppelter (Prozess-) Komponenten, etwa in Form einer Checkliste. Im Kontext der <strong>Software</strong>entwicklung macht ein<br />
Framework jedoch das definierte Zusammenspiel von stark gekoppelten, anpassbaren Komponenten aus.<br />
29 Interpretierbar als die Microsoft-Philosophie oder Verfassung.
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 17<br />
4. Etabliere die Pflicht zur Rechenschaft gegenüber Kunden und Kollegen [Micr03c] und ein<br />
gemeinsames Verantwortungsgefühl für das gesamte Produkt (engl. establish clear<br />
accountability and shared responsibility)<br />
5. Bewahre Flexibilität, sei bereit für Veränderungen (engl. stay agile, expect change)<br />
6. Investiere in Qualität (engl. invest in quality)<br />
7. Lerne aus Erfahrungen (engl. learn from all experiences)<br />
B. Modelle: Schematische Beschreibungen der Struktur von Projektgruppen und von Prozessen:<br />
das (B1) Teammodell und das (B2) Prozessmodell.<br />
C. Disziplinen: Die Projektabwicklung unterstützende Prozesse: (C1) Projekt-Management, (C2)<br />
Risiko-Management, (C3) Readiness-Management.<br />
D. Konzepte: Ideen, die den grundlegenden Prinzipien (A) folgen, Modelle (B) oder Disziplinen<br />
(C) unterstützen und sich in Form von bewährten Verfahren (E) äußern.<br />
E. Praktiken: Bewährte Verfahren, die sich als nützlich für die Abwicklung von Projekten herausgestellt<br />
haben.<br />
F. Empfehlungen: Optionale Verfahren und Richtlinien zur Unterstützung des Einsatzes der<br />
Modelle (B) und Disziplinen (C).<br />
Die folgende Tabelle zeigt an 2 Beispielen, wie die MSF-Komponenten zusammenhängen:<br />
Bsp A: Prinzipien B: Modelle /<br />
C: Disziplinen<br />
1 Lerne aus<br />
B1: Prozess-<br />
Erfahrungen modell<br />
2 Bleib flexibel, er- C2: Risikowarte<br />
Veränderungen Management<br />
MSF Komponenten<br />
D: Konzepte E: Praktiken F: Empfehlungen<br />
Bereitschaft<br />
zum Lernen<br />
Kontinuierliches<br />
Risiko-<br />
Management<br />
Reviews nach Externe Person mo-<br />
Meilensteinen deriert ein Review<br />
Definiere und Erstelle eine<br />
überwache Ri- unternehmensweite<br />
sikoauslöser Risiken-Datenbank<br />
Das erste Beispiel ist etwa wie folgt zu lesen: Um aus Erfahrungen lernen zu können, muss die Bereitschaft<br />
zum Lernen vorhanden sein. MSF empfiehlt dazu im Rahmen des Prozessmodells, abgeschlossene<br />
Phasen oder Entwicklungszyklen einem Review zu unterziehen. Es wird empfohlen, dass externe<br />
(an dem Entwicklungsabschnitt unbeteiligte) Personen die Reviews moderieren.<br />
MSF-Modelle<br />
Teammodell (B1) und Prozessmodell (B2) sind die Schlüsselkomponenten des MSF. Sie wenden die<br />
grundlegenden Prinzipien (A) auf die entscheidenden Erfolgsfaktoren eines Projekts an: auf Produktinteressenten<br />
und Prozesse. Die Modelle beschreiben die Organisation einer Projektgruppe anhand<br />
von Rollen und Aktivitäten.<br />
Teammodell<br />
Abb. 13 zeigt Rollen(gruppen) innerhalb eines vollständigen Teams und ordnet ihnen die jeweiligen<br />
Qualitätsziele im Rahmen eines Projektes zu.
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 18<br />
Zufriedene Kunden.<br />
Kunde kann die Lösung<br />
effektiv nutzen.<br />
Lösungen innerhalb der Rahmenbedingungen eines Projektes.<br />
Produkt<br />
Manager<br />
Anwender<br />
Programm<br />
Manager<br />
Kommunikation<br />
Release<br />
Manager<br />
Entwickler<br />
Tester<br />
Einfaches Deployment und kontrollierter Einsatz der Lösungen.<br />
Abb. 13: Die Rollen(gruppen) des MSF Teammodell und deren Qualitätsziele.<br />
Lösungen auf der Grundlage<br />
einer Spezifikation.<br />
Bereitschaft zur Produktfreigabe<br />
nachdem alle<br />
Qualitätsanforderungen<br />
identifiziert und behandelt<br />
wurden.<br />
Jede Rolle ist gleichwertig (engl. team of peers). Wichtige Entscheidungen werden gemeinsam getroffen.<br />
Die Rollen vertreten dabei die Interessen verschiedener Produktinteressenten und bringen deren<br />
speziellen Anforderungen an die Produktqualität ein, weil die Entwicklung von <strong>Software</strong>produkten<br />
nicht auf die Programmierung beschränkt ist.<br />
MSF ist skalierbar, indem entweder<br />
• funktionsorientierte Projektgruppen (engl. functional teams) oder<br />
• produktorientierte Projektgruppen (engl. feature teams)<br />
gebildet werden. In funktionsorientierte Projektgruppen übernehmen mehrere Personen eine Rolle, z.<br />
B. bilden mehrere Entwickler eine Entwicklergruppe und mehrere Release Manager bilden eine Release<br />
Management Gruppe. In produktorientierten Projektgruppen erstellen Projektgruppen gemeinsam<br />
komplette Produktfunktionen. Diese Projektgruppen besetzen mehrere, im Idealfall alle Rollen, z.<br />
B. eine Projektgruppe aus Entwicklern, Testern, Release Managern für separate Betriebssystem- und<br />
Infrastruktur-Komponenten (die Gruppe „Betriebsyssteme“), eine andere Projektgruppe realisiert die<br />
Kreditkarten-Funktionen eines Online-Warenhauses. Grundsätzlich kann eine Person mehrere Rollen<br />
übernehmen. Rollen mit gegensätzlichen Interessen sollten jedoch nicht von einer Person besetzt werden,<br />
z.B. Programm Management und Produkt Management. Mit der Entwicklerrolle sollte keine andere<br />
Rolle kombiniert werden.<br />
Prozessmodell<br />
MSF kombiniert die Phasen- und Meilenstein-basierte Vorgehensweise des Wasserfall-Modells mit<br />
der iterativen Vorgehensweise des Spiralmodells [Micr03a] [Micr99, 2] (siehe Abb. 14).<br />
Deploymentphase (diszipliniert)<br />
Bereitschaft des Produktes<br />
zur Freigabe ist bestätigt<br />
Stabilisierungsphase (zielstrebig)<br />
Implementation deckt Reichweite<br />
des Produktes ab<br />
Deployment des Produktes ist abgeschlossen<br />
Prozessmodell<br />
Ideenphase (erforschend)<br />
Vision und Reichweite des<br />
Produktes sind bestätigt<br />
Planungsphase (klärend)<br />
Projektpläne sind bestätigt<br />
Entwicklungsphase (kreativ)<br />
Abb. 14: Phasen und Meilensteine des MSF-Prozessmodells. Unterschiedliche Phasen haben den<br />
phasentypischen Aktivitäten entsprechendend unterschiedlichen Charakter (erforschend, klärend etc.).
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 19<br />
Entwicklungsphasen bündeln Aktivitäten mit dem Ziel, zu den Meilensteinen geforderte Ergebnisse<br />
(im geforderten Zustand) vorzulegen. Von Phase zu Phase ändert sich die Sicht auf das Produkt und<br />
die Art (Charakter) der Tätigkeiten, z. B. überwiegen in der Entwicklungsphase kreative Tätigkeiten<br />
(kreative, ausgewogene Problemlösungen entwickeln) und in der Stabilisierungsphase überwiegen<br />
zielstrebige Tätigkeiten (zielstrebiges Finden und Beseitigen von Fehlern).<br />
Meilensteine dienen der Synchronisation und Überprüfung von Arbeitsergebnissen. Meilensteine<br />
sind Kontaktpunkte mit dem Auftraggeber: In Meilensteinsitzungen kann die Reichweite bzw. Ausrichtung<br />
(engl. scope) des Produkts an geänderte Kunden- oder Geschäfts- oder Technologieanforderungen<br />
angepasst werden. Meilensteine müssen vor einem Übergang zur nächsten Phase erfolgreich<br />
abgeschlossen sein. Ein Meilenstein ist erfolgreich absolviert, wenn greifbare Ergebnisse vorliegen<br />
und Produktinteressenten Einigkeit über das Qualitätsniveau der Ergebnisse erzielt haben. Meilensteine<br />
sind keine punktuellen Ereignisse sondern erstrecken sich über eine gewisse Zeitspanne. Die<br />
folgende Tabelle vermittelt einen Eindruck davon, welche Ergebnisse zu welchen Meilensteinen am<br />
Ende von Phasen vorliegen sollen:<br />
Phase Meilenstein Ergebnisse {Zustand}<br />
Ideen Vision und Produktvision, Risikoeinschätzung, Projektstruktur<br />
Umfang bestätigt<br />
Planung Projektpläne Spezifikation {baseline<br />
bestätigt<br />
30 }, Risikoeinschätzung {verfeinert},<br />
Projektablauf<br />
Entwicklung Produkt<br />
implementiert<br />
Spezifikation {fixiert}, Umgang mit Risiken, Programmtexte,<br />
Ausführbare Programme, Performanz Support Elemente 31 ,<br />
Testspezifikation und Testfälle, Produkt- und Projektlebenszyklus-Plan<br />
(engl. product / project master plan)<br />
Stabilisierung Freigabebereit- Auslieferbare Produktversion (engl. golden release), Freigabeschaft<br />
bestätigt dokument (engl. release notes), Performanz Support Elemente,<br />
Testdokumentation und Testwerkzeuge, die übrigen Projektdokumente,<br />
Meilenstein-Nachbetrachtung<br />
Deployment Deployment<br />
abgeschlossen<br />
⎯<br />
Zur Sicherung der Qualität werden <strong>Software</strong>produkte kontinuierlich entwickelt, integriert, getestet und<br />
stabilisiert (Fehler beseitigt). Dazu werden während der Entwicklungs- und Stabilisierungsphasen neben<br />
externen (d. h. für den Auftraggeber oder Kunden sichtbaren) Meilensteinen auch interne Meilensteine<br />
zum Zweck der Ergebnisüberprüfung und -synchronisation gesetzt (siehe Abb. 15 [Luka03,<br />
19]).<br />
30 Eine Baseline ist eine geprüfte (engl. reviewed) und angenomme Freigabe eines Artifaktes. Eine Baseline bildet den<br />
Ausgangspunkt für die weitere Entwicklung des Artifaktes. Das Artifakt kann nur kontrolliert weiter entwickelt werden; es<br />
steht für gewöhnlich unter Veränderungs- und Konfigurationskontrolle.<br />
31 Performance Support Elements sind Werkzeuge, z. B. Experten (engl. wizards), Assistenten und (online) Trainingsunterlagen<br />
[Mari03]. Diese Werkzeuge realisieren keine Hauptfunktionen (oder Schritte von Geschäftsrozessen) sondern<br />
erleichtern Anwendern den Umgang mit einem <strong>Software</strong>produkt und verbessern damit die Benutzbarkeit (engl. usability,<br />
ein Qualitätsmerkmal).
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 20<br />
Implementation deckt Reichweite des Produktes ab<br />
Testrelevante Ergebnisse: Testspezifikation u. Testfälle<br />
Alphas<br />
Markt- oder Kunden-Freigabe (RTM)<br />
Kandiaten für öffentliche Freigabe<br />
Nullfehler Freigabe<br />
interne Freigabe n (Pilot)<br />
interne Freigabe ...<br />
interne Freigabe2<br />
interne Freigabe1<br />
Bereitschaft des Produktes zur Freigabe ist bestätigt<br />
Testrelevantes Ergebnis: Produktfreigabe<br />
Betas<br />
Abb. 15: Qualitätssicherung in MSF.<br />
Stabilisierungsphase<br />
Produktstabilität<br />
Entwicklungsphase<br />
Projektpläne sind bestätigt<br />
Testrelevantes Ergebnis: Testplan<br />
Während der Entwicklungsphase wiederholen sich in Miniterationen Entwicklungs- und Stabilisierungsaktivitäten.<br />
Tägliche Integrationen (engl. daily builds) zusammen mit automatisierten Tests fördern<br />
diese Arbeitsweise (siehe Abb.16).<br />
interne<br />
Freigabe i<br />
tägliche Integration:<br />
Entwickeln von<br />
Produktfunktionen<br />
aktualisiere lokal: fremder Code<br />
reserviere lokal: eigener Code<br />
integriere und teste global: komplette<br />
Codebasis (eigener u. fremder Code)<br />
aktualisiere global: eigener Code<br />
Testen und<br />
Stabilisieren von<br />
Produktfunktionen<br />
Puffer<br />
entwickle/stabilisiere und<br />
teste lokal: eigener Code<br />
interne<br />
Freigabe i+1<br />
Abb. 16: Tägliche Integration (daily builds) und Miniiterationen von Entwicklungs- und Testaktiviäten<br />
während der Entwicklungsphase. Lokal bedeutet: auf der Maschine eines Entwicklers, global bedeutet: auf<br />
einer zentralen Maschine (Build-Maschine).<br />
MSF-Disziplinen<br />
Projektmanagement, Riskomanagement und Readiness Management unterstützen die Kerndisziplinen<br />
von MSF: das Teammodell und das Prozessmodell. Da MSF—und gleichermaßen MOF—Management-Disziplinen<br />
hauptsächlich (mit ein paar Anpassungen) wiederverwenden [Micr03a], werden die<br />
Disziplinen im Folgenden nur kurz vorgestellt. In der Zukunft könnten zusätzliche Disziplinen hinzukommen<br />
[Micr03a] (z. B. Technologie-Management [A.d.V.]).
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 21<br />
Projektmanagement<br />
Das Projektmanagement soll die Erbringung abrechenbarer Leistungen (Rechenschaftspflicht) fördern<br />
und das Management verschieden großer (verschieden komplexer) Projekte ermöglichen. Dafür<br />
empfiehlt MSF Methoden des PMIBOK (Akronym für Project Management Institute Body of Knowledge)<br />
32 und Prince2 (Akronym für Projects in controlled environments) 33 an. Besonderheiten des<br />
Projekt-Managements (im weiteren abgekürzt mit PM) in MSF [Micr03a]:<br />
A. PM-Aktivitäten erstrecken sich i. Allg. auf eine Reihe von Gebieten und Tätigkeiten und sind<br />
daher nicht beschränkt auf eine Rolle.<br />
B. Alle Rollen sind gleichberechtigt und daher auch gleichberechtigt am PM beteiligt. Insbesondere<br />
treffen alle Rollen PM-relevante Entscheidungen gemeinsam.<br />
C. Die Rolle des Programm Managers nimmt die meisten PM-relevanten Aktivitäten und die<br />
meiste Verantwortung wahr.<br />
D. In großen Projekten findet PM auf verschiedenen Ebenen statt; u. U. ist eine eigene funktionsorientierte<br />
Projektgruppe (siehe MSF-Teammodell) für das PM zuständig.<br />
Das Projekt-Management folgt den weiter oben erwähnten Prinzipien insbesondere den Prinzipien A2<br />
(Konzentriere Arbeiten auf eine gemeinsame Vision) und A4 (Etabliere die Pflicht zur Rechenschaft<br />
und ein gemeinsames Verantwortungsgefühl).<br />
Risikomanagement<br />
Das Risikomanagement soll einen kontrollierten Umgang mit Risiken und Unsicherheiten ermöglichen.<br />
Die Entwicklung von komplexen <strong>Software</strong>produkten für verschiedenen, oft wenig bekannte<br />
Einsatzumgebungen führt zu hohen Risiken und Unsicherheiten. MSF versucht Risiken durch aktives<br />
(statt reaktives) Management als Chancen zu begreifen, indem z. B. aus Risiken und dem Umgang mit<br />
ihnen in der Vergangenheit Rückschlüsse für das Management zukünftiger Iterationen, Phasen oder<br />
Projekte gezogen werden. Aktives Management von Risiken ist notwendig für fundierte Entscheidungsprozesse.<br />
Dazu sind Projektrisiken kontinuierlich zu<br />
1. identifizieren, analysieren und priorisieren: Unsicherheiten, die den Erfolg des Projektes<br />
gefährden können, sollen erkannt und, durch die Projektdynamik kontinuierlich neu bewertet<br />
werden in Bezug auf das Projekt selbst und seine Umgebung.<br />
2. planen: Ausweichende, abschwächende oder korrigierende Maßnahmen zum Umgang mit<br />
Risiken sollen vorausschauend festgelegt werden.<br />
3. überwachen: Installation eines Frühwarnsystems, z. B. auf der Grundlage von Maßzahlen wie<br />
etwa offene, neue, korrigierte Fehler bestimmter Kategorien pro Komponente und Teilsystem,<br />
Anzahl und Änderungsraten von Anforderungen und Überstunden.<br />
4. steuern: Einleiten korrigierender Maßnahmen beim Eintreten von Risiken.<br />
5. protokollieren: Verwalten von Informationen über Risiken in einer Datenbank.<br />
Das Risiko-Management folgt den weiter oben erwähnten Prinzipien insbesondere den Prinzipien A5<br />
(Bewahre Flexibilität), A6 (Investiere in Qualität) und A7 (Lerne aus Erfahrungen).<br />
Readiness Management<br />
Das Readiness Management soll sicher stellen, dass jeder Mitarbeiter einer Projektgruppe in der Lage<br />
ist, Tätigkeiten seiner Rolle(n) entsprechend fachgerecht auszuführen. Readiness (Bereitschaft oder<br />
Qualifikation) bezeichnet im Kontext von MSF den Unterschied zwischen gewünschtem und tatsächlichem<br />
Zuständen von Personen, Projektgruppen oder größeren Organisationseinheiten bezüglich<br />
Wissen, Fähigkeiten und Fertigkeiten (engl. KSA, Akronym für Knowledge, Skills and Abilities) zu<br />
verschieden Zeitpunkten während der Abwicklung von <strong>Software</strong>projekten [Micr03a]. Defizite sollen<br />
rechtzeitig beseitigt werden insbesondere auf der Grundlage der weiter oben erwähnten Prinzipien A1<br />
32 Siehe www.pmi.org<br />
33 Siehe www.prince2.com
Kurzcharakteristik ausgewählter <strong>Software</strong>-<strong>Prozessmodelle</strong> [JHF, 20.1.2004] 22<br />
(Fördere die offene Kommunikation), A3 (Fördere Gruppenmitglieder), A6 (Investiere in Qualität)<br />
und A7 (Lerne aus Erfahrungen).<br />
Referenzen<br />
[Ambl98] S.W.Ambler: Process Patterns: Building Large-Scale Systems Using Object Technology.<br />
Sigs BooksCambridge, 1998.<br />
[Ambl99] S.W.Ambler: More Process Patterns: Delivering Large-Scale Systems Using Object<br />
Technology. Sigs BooksCambridge, 1999.<br />
[ASRW02] P.Abrahamson, O.Salo, J.Rankainen, J.Warsta: Agile <strong>Software</strong> Development Methods.<br />
VIT, 2002.<br />
[Beck00] K.Beck: Extreme Programming explained. Addison-Wesley, 2000.<br />
[CFH+98] A.Carzaniga, A.Fuggetta, R.S.Hall, D.Heimbigner, A.Hoek, A.Wolf: A Characterization<br />
Framework for <strong>Software</strong> Deployment Technologies. University of Colorado, DCS,<br />
Technical Report CU-CS-857-98, 1998.<br />
[GrHY98] I.Graham, B.Henderson-Sellers, H.Younessi: The OPEN Process Specification. Addison-<br />
Wesley, 1998.<br />
[HaNe01] H.R.Hansen, G.Neumann: Wirtschaftsinformatik I. UTB, 2001.<br />
[High02] J.Highsmith: Agile <strong>Software</strong> Development Ecosystems. Addison-Wesley, 2002.<br />
[Jaco00] I.Jacobson: The Road to the Unified <strong>Software</strong> Development Process. SIGS Reference<br />
Series, Cambridge University, 2000.<br />
[Kruc00] P.Kruchten: The Rational Unified Process. An Introduction. Addison-Wesley, 2000.<br />
[Luka03] R.Lukawiecki: A-to-Z of MSF v3 (Microsoft Solution Framework). DEV238, TechEd,<br />
Barcelona, 2003.<br />
[Micr99] Microsoft: Process Model for Application Development. Principles of Application Development<br />
Ressource Kit, 1999.<br />
[Micr03a] Microsoft TechNet: Microsoft Solutions Framework Version 3.0 Overview.<br />
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/tandp/inns<br />
ol/msfrl/msfovrvw.asp, zitiert am 15.9.2003.<br />
[Micr03b] Microsoft TechNet: MOF Executive Overview.<br />
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/tandp/ope<br />
x/mofrl/mofeo.asp, zitiert am 19.9.2003.<br />
[Micr03c] Microsoft TechNet: Microsoft Solutions Framework: MSF Project Management<br />
Discipline v1.1.<br />
http://www.microsoft.com/technet/treeview/default.asp?url=/technet/itsolutions/tandp/inns<br />
ol/msfrl/MSFPMD11.asp, zitiert am 17.9.2003.<br />
[OTC97] Object Technology Center, IBM: Developing Object-Oriented <strong>Software</strong>: An Experience-<br />
Based Approach. Prentice Hall, 1997.<br />
[PaFe02] S.R.Palmer, J.M.Felsing: A Practical Guide to Feature-Driven Development. Prentice<br />
Hall, 2002.<br />
[Pauli02] D.J.Paulish: Architecture-Centric <strong>Software</strong> Project Management: A Practical Guide.<br />
Addison-Wesley, 2002.<br />
[ScBe02] K.Schwaber, M.Beedle: Agile <strong>Software</strong> Development with Scrum. Prentice Hall, 2002.<br />
[Stat99] J. Statz: Microsoft’s Solution Framework and the Capabilty Maturity Model. Principles of<br />
Application Development Ressource Kit, 1999.<br />
[Stra03] S.Strahringer: Wirtschaftsinformatik 3: <strong>Software</strong>prozess-Modelle.<br />
http://wwwfl.ebs.de/Lehrstuehle/Wirtschaftsinformatik/NEW/Courses/Semester3/BIS3/WI<br />
3Teil2.pdf, zitiert am 25.6.2003.<br />
[Vers00] G.Versteegen (Hrsg.): Das V-Modell in der Praxis. dpunkt 2000.<br />
[WWW1] http://www.informatik.uni-bremen.de/uniform/gdpa/vmodel/sd3_5.htm, zitiert am<br />
25.6.2003<br />
[WWW2] http://www.extremeprogramming.org/, zitiert am 26.6.2003