METHODEN DES P RO J E K T M A NAG E M E N T S I N MODERNER S O F T WA R E E N T W I C K LU N G am Beispiel eines plattformübergreifenden elektronischen Tagebuchs
Am IT-Center Dortmund
Prüfer:
erstellte Thesis
Prof. Dr. K. Zeppenfeld
im Studiengang IT-Bachelor
Prof. Dr. F. M. Thiesing
zur Erlangung des akademischen Grades »Bachelor in Information Technology« von Florian Alexander Michalik, geboren am 11. Januar 1981
Dortmund, den 3. Juni 2007
Methoden des Projektmanagements in moderner Softwareentwicklung
INHALTSVERZEICHNIS TEIL I VORWORT ........................................................................................................7 1 „Auf den Schultern von Giganten” ................................................................................. 7 2 Sprachliche Besonderheiten .......................................................................................... 7 3 Dank................................................................................................................................8 TEIL II EINLEITUNG ................................................................................................... 9 4 Motivation ..................................................................................................................... 9 5 Überblick ...................................................................................................................... 10 TEIL III PROJEKTMANAGEMENT IN DER SOFTWAREENTWICKLUNG .................................... 11 6 Wirtschaftlichkeitsaspekte ........................................................................................... 11 6.1 Kosten- und Nutzenbegriff .................................................................................... 11 6.2 Kostenminimierung .............................................................................................. 12 7 Rollen und Teams .........................................................................................................15 7.1 Modell der Motivation .......................................................................................... 15 7.1.1 Charakterisierung von Leistungstypen........................................................... 16 7.1.2 Managementstrategie zur Motivationserhöhung ......................................... 17 7.2 Rollen und Verantwortlichkeiten......................................................................... 18 7.2.1 Auftraggeber.................................................................................................... 18 7.2.2 Auftragnehmer ............................................................................................... 18 7.2.3 Fachreferent .................................................................................................... 18 7.2.4 Benutzer.......................................................................................................... 19 7.2.5 Projektleitung ................................................................................................. 19 7.2.5.1 Charakterisierung und Bedeutung .......................................................... 19 7.2.5.2 Aufgaben .................................................................................................. 20 7.2.6 Softwareentwickler ........................................................................................24 7.3 Teamstrukturen .................................................................................................... 25 7.3.1 Teamorganisation ........................................................................................... 25 7.3.1.1 Einzelpersonen und kleine Gruppen ....................................................... 25 7.3.1.2 Anarchische Teamstruktur ...................................................................... 26 7.3.1.3 Demokratische Teamstruktur.................................................................. 27 7.3.1.4 Hierarchische Teamstruktur ................................................................... 28 7.3.1.5 Chief-Programmer- Teamstruktur .......................................................... 28 7.3.2 Entwicklergruppen ........................................................................................ 29 7.3.2.1 Kreative Teams ......................................................................................... 29 7.3.2.2 Feature Teams .......................................................................................... 30 Seite 2
Methoden des Projektmanagements in moderner Softwareentwicklung
7.3.2.3 Tiger Teams .............................................................................................. 30 8 Softwareentwicklungsprozesse .................................................................................... 31 8.1 Vorgehensmodelle ................................................................................................. 31 8.1.1 Code and Fix .................................................................................................... 31 8.1.2 Wasserfallmodell ............................................................................................ 32 8.1.3 Iterativ-inkrementelle Entwicklung .............................................................. 35 8.1.4 Spiralmodell ....................................................................................................36 8.1.5 Model Driven Architecture ............................................................................ 38 8.2 Prozessmodelle .................................................................................................... 40 8.2.1 Phasenmodell ................................................................................................. 40 8.2.2 Unified Software Development Process........................................................42 8.2.2.1 Generischer Unified Process.................................................................... 42 8.2.2.2 IBM Rational Software Development Process .......................................44 8.2.3 V-Modell XT ...................................................................................................45 8.2.4 Agile Prozessmodelle .................................................................................... 48 8.2.4.1 Extreme Programming ........................................................................... 49 8.2.4.2 Crystal ...................................................................................................... 52 8.2.5 Cleanroom Development Process .................................................................54 9 Projektdurchführung und Projektsteuerung.............................................................. 57 9.1 Projektplanung und -überwachung .....................................................................58 9.2 Schätzungen und Messungen ..............................................................................59 9.3 Risikomanagement .............................................................................................. 60 9.4 Dokumentation ................................................................................................... 64 TEIL IV ENTWICKLUNG EINES PLATTFORMÜBERGREIFENDEN ELEKTRONISCHEN TAGEBUCHS .......................................................................................................... 66 10 Anforderungsdefinition ............................................................................................ 66 11 Bestimmung der Projektparameter ............................................................................ 67 11.1 Kostenminimierung des Projekts .........................................................................67 11.2 „Rollen und Teams“ im Projekt ...........................................................................67 11.3 Festlegen des Softwareentwicklungsprozesses .................................................. 68 11.3.1 Einsatz von Code and Fix .............................................................................. 68 11.3.2 Einsatz des Wasserfallmodells ..................................................................... 68 11.3.3 Einsatz der iterativ-inkrementellen Entwicklung ....................................... 68 11.3.4 Einsatz des Spiralmodells ............................................................................. 69 11.3.5 Einsatz der Model Driven Achritecture ....................................................... 69 11.3.6 Einsatz des Phasenmodells .......................................................................... 69 Seite 3
Methoden des Projektmanagements in moderner Softwareentwicklung
11.3.7 Einsatz des Unified Process ...........................................................................70 11.3.8 Einsatz des V-Modell XT ...............................................................................70 11.3.9 Einsatz agiler Prozessmodelle .......................................................................70 11.3.10 Einsatz des Cleanroom Development Process ............................................70 11.3.11 Entscheidung 체ber den Einsatz eines Softwareentwicklungsprozesses ..... 71 12 Realisierung ..................................................................................................................71 12.1 Projektplanung ..................................................................................................... 71 12.1.1 Vorkonzeption ................................................................................................ 71 12.1.2 Risikomanagement im Projekt ...................................................................... 73 12.1.2.1 Unbekannte Technologie: Flash-Video-Format..................................... 73 12.1.2.2 Design-Probleme: Unentdeckte Fehler durch mangelndes Feedback ........................................................................................................... 74 12.1.2.3 Qualit채tsproblem: Entwicklerpr채gung .................................................. 74 12.1.3 Arbeitspakete ................................................................................................. 75 12.1.4 Abh채ngigkeiten..............................................................................................76 12.1.5 Iterationsplan ................................................................................................ 79 12.1.5.1 Spiralmodell Umlauf 1 ............................................................................. 79 12.1.5.2 Spiralmodell Umlauf 2 ............................................................................ 79 12.1.5.3 Spiralmodell Umlauf 3 ........................................................................... 80 12.1.5.4 Spiralmodell Umlauf 4 ........................................................................... 80 12.1.5.5 Weitere Iterationen................................................................................ 80 12.2 Umsetzung des Projektplans .............................................................................. 80 12.2.1 Machbarkeitsstudie ...................................................................................... 80 12.2.1.1 Flash-Video-Format Konverter ............................................................... 81 12.2.1.2 Webserverkonfiguration ......................................................................... 81 12.2.1.3 Flash-Video-Player .................................................................................. 85 12.2.1.4 Ergebnis .................................................................................................. 86 12.2.1.5 Schlussfolgerung .................................................................................... 86 12.2.2 Realisierung der verbindlichen Merkmale.................................................. 86 12.2.2.1 Objektorientierter Entwurf .................................................................... 87 12.2.2.2 Datenhaltung ......................................................................................... 88 12.2.2.3 Implementierung ................................................................................... 90 12.2.3 Abschluss der Implementierung und Freigabe .......................................... 94 12.2.3.1 Unbekannte Technologie: Flash-Video-Format .................................... 95 12.2.3.2 Design-Probleme: Unentdeckte Fehler durch mangelndes Feedback ........................................................................................................... 95 Seite 4
Methoden des Projektmanagements in moderner Softwareentwicklung
12.2.3.3 Qualitätsproblem: Entwicklerprägung .................................................. 95 12.2.4 Lauffähiges Programm..................................................................................95 TEIL V RESÜMEE UND AUSBLICK ................................................................................. 97 TEIL VI ABKÜRZUNGSVERZEICHNIS ............................................................................ 99 TEIL VII ANHÄNGE ................................................................................................. 100 13 Anhang A: Pflichtenheft des plattformübergreifenden elektronischen Tagebuchs .................................................................................................................. 100 13.1 Zielbestimmung .................................................................................................. 100 13.1.1 Verbindliche Merkmale................................................................................ 100 13.1.2 Optionale Merkmale ..................................................................................... 101 13.1.3 Abgrenzungskriterien ................................................................................... 101 13.2 Einsatz ................................................................................................................. 101 13.2.1 Anwendungsbereich ..................................................................................... 101 13.2.2 Zielgruppen .................................................................................................. 101 13.2.3 Betriebsbedingungen ................................................................................... 101 13.3Umgebungsanforderungen................................................................................. 102 13.3.1 Software ........................................................................................................ 102 13.3.1.1 Entwicklungsrechner ............................................................................. 102 13.3.1.2 Clientrechner ......................................................................................... 102 13.3.1.3 Serverrechner......................................................................................... 102 13.3.2 Hardware ..................................................................................................... 103 13.3.2.1 Entwicklungs- und Serverrechner .........................................................103 13.3.2.2 Clientrechner .........................................................................................103 13.3.3 Organisatorisches ........................................................................................ 103 13.4 Funktionalität .................................................................................................... 103 13.4.1 Verbindliche Merkmale ............................................................................... 103 13.4.1.1 Pflege und Ansicht der Inhalte ..............................................................103 13.4.1.2 Plattformübergreifende Nutzung......................................................... 104 13.4.2 Optionale Merkmale ................................................................................... 105 13.4.2.1 Passwortschutz für den Einzelbenutzer (Singleuser) ......................... 105 13.4.2.2 Veröffentlichung von multimedialen Inhalten über Mobiltelefone ................................................................................................. 105 13.4.2.3 Export der Inhalte auf einen Datenträger ........................................... 105 13.5 Daten .................................................................................................................. 105 13.6 Performanz......................................................................................................... 105 13.7 Grafische Benutzungsoberfläche ...................................................................... 106 Seite 5
Methoden des Projektmanagements in moderner Softwareentwicklung
13.8 Qualitätsziele ..................................................................................................... 109 14 Anhang B: Bildschirmfotos der Anwendung ............................................................ 110 14.1 Anzeige der Einträge ........................................................................................... 110 14.2 Neuanlegen eines Audioeintrags ....................................................................... 112 14.3 Editieren eines Texteintrags............................................................................... 114 14.4 Editieren eines Videoeintrags ............................................................................ 116 TEIL VIII QUELLENVERZEICHNIS ............................................................................... 118 15 Literatur...................................................................................................................... 118 16 Internet-Quellen ........................................................................................................ 119 TEIL IX ERKLÄRUNG ............................................................................................... 120
Seite 6
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL I VORWORT 1 „AUF
DEN
SCHULTERN
VON
GIGANTEN”
Mit dem Gleichnis „Auf den Schultern von Giganten“ 1 bezeichnete der Soziologe Robert K. Melton das Prinzip des wissenschaftlichen Arbeitens. Es drückte metaphorisch aus, dass neue Arbeiten auf den wissenschaftlichen Erkenntnissen früherer Generationen aufbauen können und sollten.
2 SPRACHLICHE BESONDERHEITEN In der deutschsprachigen Fachliteratur wird heterogen mit fremd-, zumeist englischsprachigen, Fachbegriffen umgegangen. Einige Autoren vermeiden deren Anwendung fast durchgehend. Sie sprechen dann von Wanzen (engl. „Bug“) für Softwarefehler oder von Programmcode-Übersetzern (engl. „Compiler“). Eine andere Gruppe von Autoren verhält sich gegenteilig und verwendet auch englischsprachige Ausdrücke außerhalb von Fachbegriffen. In der vorliegenden Thesis werden allgemein anerkannte deutsche Fachwörter im deutschen belassen und fremdsprachliche Fachbegriffe zwar erklärt (bzw. übersetzt), jedoch anschließend konsequent in ihrer Originalsprache verwendet. Fremdsprachliche Fachwörter, die noch keinen Einzug in deutsche Wörterbücher gehalten haben werden bewusst nicht eingedeutscht. So wird beispielsweise auf das typische Präfix „s“ bzw. „es“ der Flexion im Genitivus Subjektivus verzichtet (z. B. „Eingenschaften des Component Model“, jedoch „Vorteile des Managements“). Abkürzungen werden nur bei ihrer ersten Verwendung kurz erläutert und danach in ihrer
Kurzform
verwendet.
Eine
Übersicht
bietet
der
Abschnitt
„Teil
VI
Abkürzungsverzeichnis“ am Ende dieser Thesis. Rollenbezeichnungen werden grundsätzlich in ihrer geschlechtsneutralen Grundform verwendet. Dies soll keineswegs Präferenz einer männlichen Besetzung suggerieren, sondern die Lesbarkeit erhöhen. Ausnahmslos jede Rolle kann sowohl von Frauen als auch von Männern verkörpert werden.
1
Robert K. Merton, „On the Shoulders of Giants “, OTSOG, 1965 Seite 7
Methoden des Projektmanagements in moderner Softwareentwicklung
3 DANK Mein besonderer Dank gilt Herrn Prof. Dr. Zeppenfeld für die Unterstützung während des Studiums am IT-Center Dortmund und die Betreuung während der Erstellung dieser Thesis. Außerdem bedanke ich mich bei Sylvia Fähling, die durch das Lektorat dieser, für sie fachfremden Thesis die formale Qualität verbessert hat. Schließlich danke ich Georg Petzinka und dem gesamten Team der Firma „medomus Technologien & Services“ in Dortmund und Köln, bei der ich mein Wissen in den letzten sieben Jahren mit praktischen Erkenntnissen und neuen Perspektiven bereichern durfte.
Seite 8
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL II EINLEITUNG 4 MOTIVATION Seit die ersten Programme in der Mitte des 20. Jahrhunderts erstellt wurden, nahm der Einsatz von immer komplexer werdender Hardware und Software stetig zu. In den 1970er Jahren stellte George Moore, Chef der Firma Intel, fest, dass die Leistungsfähigkeit der Hardware exponentiell wuchs. Er bemerkte, dass sie sich etwa alle 18 Monate verdoppelt 2 . Durch diesen Umstand wuchsen gleichsam die Einsatzmöglichkeiten von Datenverarbeitungssystemen und somit der Bedarf an Software. Einzelne Softwareprojekte wurden immer größer und realisierten ständig komplexere Funktionalität. Software gilt heute als eines der komplexesten Gebilde, die der Mensch jemals zustande gebracht hat (vgl. [OES01]). Große und / oder komplexe Softwareprojekte sind von einem einzelnen Menschen nicht mehr überschau- oder lösbar. Erst das Mitwirken vieler Menschen macht die Entstehung solcher Software realisierbar. Ein einzelner Mitarbeiter muss bzw. kann inzwischen nicht mehr alle Details eines Projekts kennen. Aus diesem Grunde ist es notwendig einem Projekt eine übergeordnete Organisation, ein „Projektmanagement“, zu geben, um nach dem Prinzip „Teile und herrsche!“
eine Lösung arbeitsteilig
realisieren zu können. Durch moderne Instrumente und Techniken des Projektmanagements lassen sich selbst hochkomplexe Softwareprojekte ökonomisch und qualitativ hochwertig realisieren, die Risiken minimieren und der Entwicklungsprozess optimieren. Die
vorliegende
Thesis
Projektmanagements Veröffentlichungen
in der
beleuchtet der
aktuelle
Erkenntnisse
Softwareentwicklung.
Bereiche
Sie
Software-Engineering,
Architekturen, IT-Sicherheit und IT-Recht.
2
In der Literatur wird dieser Zusammenhang als „Moore’s Law“ bezeichnet. Seite 9
und
Modelle des
stützt
sich
auf
objektorientierter
Methoden des Projektmanagements in moderner Softwareentwicklung
5 ÜBERBLICK Im folgenden Teil „Teil III Projektmanagement in der Softwareentwicklung“ werden verschiedene Lösungsansätze und wichtige Gesichtspunkte für Softwareprojekte betrachtet. Besonders die Gedanken von Ludewig und Lichter ([LUD07]) sowie Oesterreich et al. ([OES01]) werden vorgestellt und in Zusammenhang zu anderen modernen Projektmanagement-Methoden gestellt. Im
Teil „Teil IV
Entwicklung eines
plattformübergreifenden elektronischen
Tagebuchs“ werden die gesammelten Erkenntnisse praktisch auf ein Projekt angewandt und analysiert. Zum Abschluss dieser Arbeit werden im Teil „Teil V Resümee und Ausblick“ ein kritisches Fazit gezogen und neue Tendenzen im Projektmanagement vorgestellt.
Seite 10
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL III PROJEKTMANAGEMENT IN DER SOFTWAREENTWICKLUNG 6 WIRTSCHAFTLICHKEITSASPEKTE 6 .1 Ko ste n - un d N ut ze n be gr i ff Große Softwareprojekte werden in der heutigen Zeit teilweise mit dutzenden bis hunderten Entwicklern und über viele Monate bis Jahre durchgeführt. Noch vor dem Start eines solchen Projekts müssen viele Parameter der Umsetzung, wie der Funktionsumfang, die erzielte Qualität, die eingesetzten Werkzeuge oder der Umfang und die Qualifikation des eingesetzten Personals beschlossen werden. Sowohl Auftraggeber als auch Auftragnehmer müssen die Kosten dieser Parameter mit dem Nutzen der Umsetzung des Projekts in Verbindung bringen. Der Begriff der Kosten kann hierbei in laufende und projektbezogene Kosten auf Seiten des Auftragnehmers unterteilt werden (siehe Abbildung 1). Laufende Kosten beziehen sich unter anderem auf Gehälter, Management, Werbung, Räumlichkeiten, Rechner, Netzwerke oder Software als Teil der Infrastruktur. Projektbezogene Kosten sind unter anderem die Kosten des Zeitpersonals, Vertragskosten, Spesen oder Hardund Software als Teile des Produkts (vgl. [LUD07]).
Abbildung 1 – Beispiel für die Unterteilung der Kosten
Auf Seiten des Auftraggebers fallen die beim Auftragnehmer entstandenen Kosten und zusätzliche Kosten für eigenen Personal- und Administrationsbedarf für das Produkt an. Kosten können jedoch auf beiden Seiten auch in Form von nicht oder nicht direkt geldwerten nachteiligen Eigenschaften entstehen. Beispiele hierfür sind eine Seite 11
Methoden des Projektmanagements in moderner Softwareentwicklung
verringerte Qualität des Produkts, ein späterer Fertigstellungstermin oder eine fehlende Produkteigenschaft. Der Nutzen des Produkts ist dagegen jeder Ăśkonomische oder nicht geldwerte Vorteil, den die Realisierung des Projekts bietet. Als Beispiele sind der Primärnutzen des Produkts (Ăœbereinstimmung zwischen Produkt und tatsächlichen Anforderungen), ein Erfahrungsgewinn des Auftragnehmers (durch die ProjektdurchfĂźhrung), ein Marktvorteil des Auftraggebers bzw. der Umsatz aus der Vermarktung des Produkts zu nennen. Nutzen lässt sich als negativer Kostenbeitrag definieren. Die Summe aus den Kosten und den negativen Kosten (also dem Nutzen) bildet die Gesamtkosten (siehe Formel 1). Diese sollten in einem Ăśkonomischen Projekt so gering wie mĂśglich sein. đ?‘ž
đ?‘”đ?‘˜ =
r
đ?‘˜đ?‘– + i=1
đ?‘›j j=1
Formel 1 - Gesamtkosten eines Software-Produkts
Die Kosten ergeben sich aus der Summe aus den einzelnen Teilkosten đ?‘˜1 bis k q des Produkts und der Nutzen aus der Summe der einzelnen (negativen) Teilnutzen đ?‘›1 bis nr . Die Gesamtkosten đ?‘”đ?‘˜ sind die Summe der Kosten und des Nutzens. Diese kĂśnnen fĂźr den Auftraggeben und Auftragnehmer oder beide zusammen betrachtet werden.
6 .2 Ko s t e nm i ni m i er ung Ziel wirtschaftlichen Projektmanagements ist es, die Gesamtkosten eines Produkts mĂśglichst gering zu halten. Besonders hohe und in vielen Fällen unerwartete Kosten gehen von unentdeckten oder ignorierten Risiken, Fehlern im Produkt oder mangelnder Qualität aus. Als Risiken in einem Projekt werden alle Einflussfaktoren bezeichnet, deren Erscheinen ungewiss und deren Schaden im Falle des Auftretens signifikant ist. Risiken lassen sich arithmetisch quantifizieren. Der Risikowert đ?‘… eines Risikos mit der Eintrittswahrscheinlichkeit p und den im Schadensfall entstehenden Kosten đ??ž lässt sich Ăźber das Produkt aus đ?‘? und đ??ž quantifizieren (siehe Formel 2).
Seite 12
Methoden des Projektmanagements in moderner Softwareentwicklung
đ?‘… = đ?‘? ∙đ??ž Formel 2 - Quantifizierung eines Risikos
Dabei gelten Risiken mit sehr groĂ&#x;en Kosten đ??ž als extreme Risiken und Risiken mit groĂ&#x;er Eintrittswahrscheinlichkeit đ?‘? als inakzeptable Risiken. Die kritischen Werte fĂźr đ?‘? und đ??ž variieren dabei je nach Projektumfang. Risiken kĂśnnen beispielsweise die mĂśgliche KĂźndigung eines erfahrenen Mitarbeiters, technische HĂźrden oder auch fehlende oder mangelhafte Anforderungen an das Produkt sein. Feyl ([FEY04]) demonstriert die praktische Quantifizierung von Projektrisiken mittels Checklisten, die viele der bekannten Risiken enthalten. Diese Risiken kĂśnnen durch geeignete GegenmaĂ&#x;nahmen minimiert werden. Dazu sei an dieser Stelle auf den Abschnitt „9.3 Risikomanagement“ verwiesen. Bekannt werdende Fehler während der Software-Entwicklung sind eine besondere Ausprägung eines Risikos. Grundsätzlich kann von der Existenz von Fehlern im Laufe eines Software-Projekts stets ausgegangen werden. Fehler kĂśnnen je nach Schweregrad und Zeitpunkt ihrer Entdeckung und Beseitigung unterschiedlich gravierende Auswirkungen auf die Wirtschaftlichkeit eines solchen Projekts haben. Die Entdeckung eines Fehlers direkt oder kurz nach seiner Entstehung gilt allgemein als unkritisch. Denn zu diesem Zeitpunkt basieren noch keine oder nur sehr wenige weitere Aktivitäten auf dem fehlerhaften Arbeitsergebnis. So entstehen zwar Kosten fĂźr die Korrektur des Fehlers, jedoch ist der Schaden auf den Bereich des Auftretens begrenzt. Doch Fehler werden häufig erst auf derselben Abstraktionsebene entdeckt, auf der sie entstanden sind (siehe Abbildung 2). Ein Fehler in der Analyse (z. B. in der Definition der benĂśtigten Programmeigenschaften) wird dann beispielsweise erst im Betrieb als fehlende Funktion entdeckt.
Seite 13
Methoden des Projektmanagements in moderner Softwareentwicklung
t
Fehlerentdeckung
Analyse
Betrieb
Fehlerentdeckung
Spezifikation
Installation
Fehlerentdeckung
Entwurf
Fehlerentdeckung
Codierung
Eingabe
Fehlerentdeckung
Integration
Modultest
Übersetzung
Abbildung 2 - Entdeckung von Fehlern auf derselben Abstraktionsebene (vgl. [LUD07])
Das Ausmaß, sprich die Kosten für die Beseitigung eines solchen Fehlers sind unverhältnismäßig höher, da alle Aktivitäten zwischen der Entstehung des Fehlers und seiner Entdeckung und Beseitigung auf dem fehlerhaften Zwischenergebnis aufgebaut haben und somit ebenfalls nicht mehr korrekt sind. So müssen im o. g. Beispiel eines Analysefehlers, der im Betrieb entdeckt wird, neben der Korrektur der Analyse auch die Spezifikation, der Entwurf, die Codierung, die Eingabe, die Übersetzung, die dazugehörigen Modultests, die Integration und Installation entsprechend überarbeitet oder neu durchgeführt werden. Durch die Fehlerbeseitigung können jedoch neue Fehler (in den reparierten Bereichen) entstehen oder zuvor funktionierende Module negativ beeinflusst werden und dort ebenfalls Änderungen indizieren. Die Kosten der Fehlerbeseitigung steigen exponentiell zwischen dem Entstehen und der Beseitigung des Fehlers. Aus diesem Grunde sind dringend entsprechende Gegenmaßnahmen zu treffen um die Identifikation von Fehlern an einem möglichst frühen Zeitpunkt im Projektverlauf
zu verlagern. Methoden zur Erreichung dieses Ziels werden im
Abschnitt „9.3 Risikomanagement“ dargestellt. Im
Bezug
auf
Kostenminimierung
spielt
mangelnde
Qualität
eines
Softwareprodukts besonders im Bezug auf Änderbarkeit und Wartbarkeit eine besondere Rolle. Ludewig und Lichter stellen 2007 fest, dass der Aufwand für die Wartung eines Softwareprodukts, d. h. Anpassung an aktuelle Rahmenbedingungen, Verbesserungen und Korrekturen, ebenso hoch bis doppelt so hoch ist, wie die Entwicklung selbst (vgl. [LUD07], siehe Abbildung 3). Platz ging 1983 sogar davon aus Seite 14
Methoden des Projektmanagements in moderner Softwareentwicklung
(vgl. [PLA83]), dass diese Kosten zwischen den doppelten und vierfachen Entwicklungskosten liegen. Die Reduzierung dieser Schätzung in der heutigen Zeit ist durch moderne Wartbarkeit
Entwicklungsprozesse zu begründen, die die Änderbarkeit und
von
Software
Softwareentwicklungsprozesse“),
stark da
begünstigen
diese
Faktoren
(siehe sich
Abschnitt direkt
auf
„8 den
Wartungsaufwand auswirken.
Entwicklung Wartung
Abbildung 3 - Mögliche Kostenverhältnisse zwischen Entwicklung und Wartung (vgl. [LUD07])
7 ROLLEN
UND
TEAMS
7.1 Mo de l l de r Mo ti va ti o n Die Produktivität einzelner Softwareentwickler schwankt sehr stark. In der Literatur werden diese Schwankungen mit einem Faktor von 10 bis 12 angegeben. Das heißt, dass ein sehr guter Entwickler eine Aufgabe in einem Tag löst, für die ein sehr schlechter Entwickler mehr als zwei Wochen benötigt (vlg. [OES01] und [LUD07]). Die Leistungsbereitschaft eines Mitarbeiters hat direkten Einfluss auf die Produktivität und lässt sich durch ein mengentheoretisches Modell der Motivation beschreiben. Jedes Element einer Menge sei eine spezielle Tätigkeit.
Seite 15
Methoden des Projektmanagements in moderner Softwareentwicklung
A Fähigkeiten des Mitarbeiters B Handlungsbereitschaft des Mitarbeiters
C Hohe Motivation des Mitarbeiters
D Anerkennung und Honorierung durch die Umgebung
Abbildung 4 - Modell der Motivation (vgl. [LUD07])
Die Fähigkeiten eines Projektmitarbeiters seien durch die Menge đ??´ beschrieben (siehe Abbildung 4). Ihr gehĂśren alle Aktivitäten an, zu denen dieser Mensch in der Lage ist. Alle Aufgaben auĂ&#x;erhalb der Menge đ??´ beherrscht der Mitarbeiter nicht oder nicht gut. Aufgaben, die der Mitarbeiter auch tatsächlich bereit ist zu tun, sind Bestandteil der Menge đ??ľ. Alle Tätigkeiten auĂ&#x;erhalb von đ??ľ wird er somit oftmals nicht durchfĂźhren, da er sie nur ungern tut. In einer Menge đ??ś sind alle Aufgaben der Person enthalten, die er mit hoher Motivation, sprich mit Freude lĂśst. In der Regel gilt đ??ś ⊆ đ??ľ ⊆ đ??´, d. h. ein Mitarbeiter widmet sich den Tätigkeiten gern, die er beherrscht. SchlieĂ&#x;lich befinden sich in der Menge đ??ˇ Aktivitäten, die von der Umgebung durch Anerkennung honoriert werden. Im Arbeitsalltag wird ein Mitarbeiter sich stets auf jene Arbeiten konzentrieren, die ihm SpaĂ&#x; machen, oder die er zu tun bereit ist und die gleichzeitig anerkannt werden. So definieren sich die tatsächlichen
Tätigkeiten
eines Menschen im
Unternehmen als đ??ś âˆŞ (đ??ľ ∊ đ??ˇ). 7.1.1 Charakterisierung von Leistungstypen Ein arbeitssĂźchtiger Mitarbeiter (engl. Workaholic) weist in diesem Modell eine sehr groĂ&#x;e Schnittmenge zwischen đ??ś und đ??ˇ auf. Aufgaben, die er mit Freude erfĂźllt bescheren ihm zusätzlich Anerkennung. Es gibt fĂźr diesen Menschen keinen Grund etwas anderes zu tun. Seite 16
Methoden des Projektmanagements in moderner Softwareentwicklung
Ein nur leistungsschwacher oder gar unfähiger Mitarbeiter weist grundsätzlich entweder eine nur sehr kleine Menge đ??ľ auf und/oder die Schnittmenge zwischen đ??ľ und đ??ˇ ist nur sehr gering. Ein Mensch bei dem, anders als in diesem Modellbeispiel, dem đ??ľ oder đ??ś auĂ&#x;erhalb von đ??´ liegt, gibt sich einer Selbsttäuschung hin und erfĂźllt zum Teil mit Freude Aufgaben, zu denen er nicht qualifiziert ist. Als Beispiel kann ein Entwickler genannt werden der sehr gerne, jedoch auch schlecht programmiert. 7.1.2 Managementstrategie zur MotivationserhĂśhung Die o. g. Schnittmenge der tatsächlichen Tätigkeiten eines Mitarbeiters đ??ś âˆŞ đ??ľ ∊ đ??ˇ sollte grundsätzlich mĂśglichst gut mit den Erfordernissen des Unternehmens in Deckung gebracht werden. Um dieses Ziel zu erreichen gibt es einige Ansätze, die vom Management konsequent verfolgt werden sollten. Zunächst ist es wichtig, die Menge đ??ˇ, der anerkannten Tätigkeiten mĂśglichst nah an die tatsächlichen BedĂźrfnisse des Unternehmens anzugleichen. Ludewig und Lichter ([LUD07]) geben das Beispiel eines Projektleiters, der sein Projekt schlecht leitet und es fast scheitern lässt, ehe er es in letzter Sekunde rettet. Die Anerkennung der Kollegen ist groĂ&#x;, obwohl der Verlauf des Projekts nicht im Sinne der Unternehmung sein kann. Um dieses Ziel zu erreichen kĂśnnen besondere Auszeichnungen (z. B. der Titel „Mitarbeiter des Monats“) oder die Anerkennung des Managements helfen. AuĂ&#x;erdem sollte jedem Mitarbeiter klar gemacht werden, welche Erfordernisse das Unternehmen stellt und welches Verhalten erwĂźnscht ist. Dies macht es den Mitarbeitern auch untereinander einfacher zu erkennen welche Aktivtäten anerkennungswĂźrdig sind. Eine weitere MĂśglichkeit die tatsächlichen Aktivitäten eines Mitarbeiters an die UnternehmensansprĂźche anzupassen besteht darin die Mitarbeiter gezielt zu Schulen und damit zu versuchen, das Selbstvertrauen des Menschen zu stärken, so dass er das neu Erlerne auch gerne umsetzt.
Seite 17
Methoden des Projektmanagements in moderner Softwareentwicklung
7. 2 R o l l e n un d V er a nt w or tl i chk ei te n An der Umsetzung eines Softwareprojekts sind verschiedene Organisationseinheiten und Personen beteiligt. Die wichtigsten werden in den folgenden Teilabschnitten charakterisiert (siehe Abbildung 5).
Abbildung 5 - Rollen und Verantwortlichkeiten
7.2.1 Auftraggeber Eine Person oder Organisation, die die Konstruktion eines Softwareprodukts veranlasst, wird hier als Auftraggeber bezeichnet. Der Auftraggeber muss nicht zum Kreis der Benutzer gehören. 7.2.2 Auftragnehmer Als Auftragnehmer wird die Person oder Organisation, die mit der Entwicklung des Produkts betraut wird, bezeichnet. In speziellen Fällen können Auftraggeber und Auftragnehmer auch derselben Organisation angehören. Dies ist der Fall, wenn eine organisationsinterne Software entwickelt werden soll. 7.2.3 Fachreferent Bei der Softwareentwicklung werden regelmäßig Systeme für verschiedene fachliche Abläufe (z. B. medizinische Software oder Buchhaltungssoftware) von fachfremden Softwareentwicklern konstruiert. Der Auftragnehmer überschaut häufig anfänglich die Seite 18
Methoden des Projektmanagements in moderner Softwareentwicklung
fachlichen Erfordernisse nicht oder ist Laie. Daher ist es wichtig die fachlichen Anforderungen gezielt zum Entwicklerteam des Auftragnehmers zu transferieren. Der sog. Fachreferent (engl. „Key-User“) definiert, stellvertretend für die Benutzer des Produkts, die fachlichen Anforderungen zusammen mit dem Auftragnehmer. Es kann sich
dabei
um
einen
fachkundigen
Mitarbeiter
des
Auftraggebers,
einen
Sachverständigen oder auch um einen Vertreter der Benutzer handeln. Er steht dem Auftragnehmer sowohl zu Anfang des Projekts, als auch während der gesamten Realisierungsphase für fachliche Fragen und Probleme bereit. Je nach Projektgröße können auch mehrere Fachreferenten bestellt werden. 7.2.4 Benutzer Die Gruppe der Benutzer stellt die Zielgruppe des Softwareprodukts dar. Ein Benutzer gehört organisatorisch nicht zwingend zum Auftraggeber. So kann ein Unternehmen beispielsweise eine Software für Marketingzwecke zur Akquise neuer Kunden des Auftraggebers (Benutzer) beauftragen. 7.2.5 Projektleitung 7.2.5.1 Charakterisierung und Bedeutung Der Projektleiter hat die volle Verantwortung für die Umsetzung eines Projekts inne. Er ist verantwortlich für die Mitarbeiter und ihre Leistungen, die zum Projekt gehörigen Termine, die Kosten und die Qualität des Produkts. Durch sein Handeln beeinflusst er direkt, ob das Projekt erfolgreich endet oder nicht. Ein Projektleiter kann auch Weisungsbefugnis haben, die jedoch in der Regel zeitlich begrenzt und projektbezogen ist. In der Literatur werden dem Projektleiter auch gewisse psychologische oder soziologische Fertigkeiten abverlangt. Er ist in der schwierigen Situation, mit dem zu entwickelnden Softwareprodukt bei den Benutzern nicht immer auf Akzeptanz zu stoßen, denn die Einführung eines solchen Produkts hat immer mit Veränderungen in den beim Benutzer bekannten Abläufen und nicht selten auch mit betrieblichen Rationalisierungsmaßnahmen und Stellenstreichungen zu tun. Der Auftraggeber, der Auftragnehmer, der Fachreferent, die Benutzer und das Entwicklerteam haben zum Teil höchst unterschiedliche Auffassungen der Ziele des Seite 19
Methoden des Projektmanagements in moderner Softwareentwicklung
Projekts. Die Aufgabe des Projektleiters ist, es die Interessen aller Beteiligen zu erfassen und in einem Projekt zu vereinen. 7.2.5.2 Aufgaben Der Projektleiter ist während des gesamten Projekts mit verschiedenartigen Aufgaben betraut. Allen gemeinsam ist es zu versuchen, das Projekt möglichst kosteneffizient und erfolgreich zu beenden. Dieses Ziel sollte konstant und durchgängig angestrebt werden, um Situationen zu vermeiden, in denen der erfolgreiche Projektausgang ungewiss ist. Zu Anfang eines jeden Softwareprojekts ist es die Aufgabe des Projektleiters, das Projekt im Vorfeld zu planen. Zunächst werden grobe Aufgabenblöcke geplant, die die wichtigsten Aufgaben des Projekts bezeichnen. Diese werden in einem nächsten Schritt in weitere Teilaufgaben aufgeteilt. Dieses Vorgehen wird dann wiederholt, bis die Granularität auf die Ebene von Arbeitspaketen verfeinert wurde. Ein Arbeitspaket
kann
durchgängig
bearbeitet
werden,
ist
in
sich
frei
von
Koordinationszwängen, hat einen definierten Anfangs- und Endpunkt und kann außerdem in Bezug auf Aufwand und Fertigstellungstermin abgeschätzt werden. Zwischen Arbeitspaketen können verschiedene Arten von Abhängigkeiten bestehen (siehe Abbildung 6), die der Projektleiter zuweist. Eine sogenannte Ende-AnfangBeziehung zwischen
zwei Arbeitspaketen liegt vor, wenn die Bearbeitung des
zweiten Arbeitspakets erst nach der vollständigen Beendigung des Ersten begonnen werden kann. Dagegen kennzeichnet eine Anfang-Anfang-Beziehung den gleichzeitigen Beginn und eine Ende-Ende-Beziehung den gleichzeitigen Abschluss zweier Arbeitspakete.
Seite 20
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 6 - Grafische Darstellung von Abhängigkeiten Zwischen Arbeitspaketen in Form eines sog. „GanttCharts“
Außerdem werden jedem Arbeitspaket Mitarbeiter zugewiesen, die es bearbeiten und Prioritäten und Meilensteine gesetzt. Ein Meilenstein wird zur Projektplanung und Überwachung genutzt. Er besitzt zwei Zustände: nicht erreicht oder erreicht. Seine Erreichung hängt von der Fertigstellung eines oder mehrerer Arbeitspakte ab. Auch das sog. „Release“ (Veröffentlichung des Produkts) kann als Meilenstein betrachtet werden, der sämtliche Arbeitspakete, die zur Erstellung des Produkts benötigt werden, voraussetzt. Arbeitspakete können jedoch auch durch eine der o. g. Beziehungen von Meilensteinen
abhängen.
Dabei
können
auch
externe
Meilensteine,
d.
h.
Rahmenbedingungen, auf die der Projektleiter keinen direkten Einfluss nimmt, eine Rolle spielen. So kann beispielsweise mit der Lokalisierung (mehrsprachige Realisierung) der Anwendung erst begonnen werden, wenn ein Übersetzungsbüro die dazu notwendigen Texte liefert. Als „kritischen Pfad“ bezeichnet man alle Arbeitspakete, deren Verzögerung sich direkt auf einen Meilenstein auswirkt und dessen Erreichen ebenfalls verzögert. Projektleiter sollten darauf achten, kritische Pfade in der Planung der Projekte zu vermeiden. Dies kann z. B. durch Pufferzeiten zwischen den Arbeitspaketen oder Parallelisierung von Arbeitspaketen erfolgen. Sämtliche, auf diese Weise geplanten Aufgaben, werden in einen Projektplan eingetragen und dienen als Grundlage der Berechnung der Releases und des Seite 21
Methoden des Projektmanagements in moderner Softwareentwicklung
Projektaufwands. Als Projektaufwand werden in diesem Zusammenhang die benötigten Ressourcen (Mitarbeiter, Hard- und Software) und die entstehenden Kosten bezeichnet. Der
Projektplan wird während der gesamten Projektlaufzeit vom Projektleiter
regelmäßig aktualisiert und den aktuellen Gegebenheiten angepasst. Dabei sollte grundsätzlich die kurzfristige Planung einen
hohen Detaillierungsgrad aufweisen,
während die langfristige Planung eine gröbere Granularität erlaubt. Der Projektleiter überwacht und kontrolliert das Projekt beständig. Dabei achtet er darauf, ob kritische Pfade entstehen, ob Meilensteine fristgerecht eingehalten werden und ob es zu Verzögerungen kommt. Grundlage für diese Projektüberwachung sind jedoch aktuelle Daten über die der Projektfortschritt objektiv erfasst werden kann. In der Praxis sind die Mitarbeiter oft dafür verantwortlich, die von ihnen geleisteten Arbeiten selbst quantifizierbar zu dokumentieren. Der Projektleiter sichtet diese Daten und steuert das Projekt entsprechend. Die Kommunikation zwischen dem Auftraggeber, dem höheren Management des Auftragnehmers und den Projektmitarbeitern erfolgt in der Regel über den Projektleiter. Er vermittelt und versucht, das Projekt in für alle Beteiligten akzeptable Bahnen zu steuern. Dabei sollte der Projektleiter jeden einzelnen anhören und im Sinne des Projekts Entscheidungen treffen. Der
Projektleiter
schafft
und
erhält
während
der
Projektlaufzeit
günstige
Rahmenbedingungen für die Entwickler. Er achtet darauf, dass ein konzentriertes und ungestörtes Arbeiten in einem guten Arbeitsklima möglich ist und schirmt die Projektmitarbeiter weitestgehend vom übrigen Alltagsgeschäft ab, damit sie sich voll auf das Projekt konzentrieren können. Ferner fördert er die Offenheit der Mitarbeiter, damit Schwierigkeiten schnell kommuniziert werden. Schließlich nimmt der Projektleiter dem Entwicklerteam die Angst vor Fehlschlägen, die es möglicherweise daran hindert Entscheidungen zu treffen. Um den Entwicklern ein zielorientiertes Arbeiten zu ermöglichen sollte der Projektleiter die Projektziele klar definieren und kommunizieren. Implizite, unausgesprochene Erwartungen der Projektleitung oder unklare, häufig wechselnde Ziele verunsichern das Entwicklerteam und behindern das Arbeiten. In einer Seite 22
Methoden des Projektmanagements in moderner Softwareentwicklung
Untersuchung (vgl. [OES01]) wurden fünf Entwicklerteams damit betraut, dieselbe Aufgabe zu lösen. Jedem Team wurde jedoch ein anderes Ziel (etwa eine kurze Entwicklungszeit, geringer Speicherverbrauch usw.) genannt, welches bei der Lösung Priorität haben sollte. Vier der fünf Teams erreichten jeweils ihr wichtigstes Ziel. Jedoch war keines der Entwicklerteams in der Lage, mehr als zwei Ziele gleichzeitig erfolgreich zu verfolgen. Daraus lässt sich schließen, dass Entwicklerteams mit klar definierten Zielen diese zu erreichen in der Lage sind. Definierte und bekannte Projektziele steigern die Produktivität und Motivation der Mitarbeiter. Die Projektleitung sollte dabei für sich selbst Ziel der Fertigstellung des Produkts jedoch vor Detailziele der Realisierung setzen. Von einem Projektleiter wird erwartet, Entscheidungen zu treffen. Für ihn gilt genau so wie für seine Mitarbeiter, dass Entscheidungen nicht hinausgezögert werden sollten, sondern mit Mut getroffen werden müssen. Ein Projektleiter sollte seinem Team nichts befehlen, sondern dessen Meinungen einholen, respektieren und abwägen eher er sich entscheidet. Es ist in der Praxis nicht selten der Fall, dass Projektmitarbeiter besonders zu Beginn eines Projekts, wenn der Leistungsdruck noch gering und der Release-Termin noch weit entfernt zu sein scheint, tageweise aus dem Projekt abgezogen und mit anderen Aufgaben betraut werden. Dies passiert besonders bei guten, erfahrenen Entwicklern, die sich auch mit älteren Systemen aus früheren Projekten gut auskennen. Der temporäre Verlust eines erfahrenen Mitarbeiters ist für das Projekt jedoch zu jeder Zeit schädlich und es sollte erwogen werden in diesem Fall einen neuen Mitarbeiter mit der Wartung des früheren Projekts zu betrauen, selbst wenn er länger brauchen würde. Der Projektleiter sollte überdies vom Anfang des Projekts an ein Gefühl der Dringlichkeit, z. B. durch zu erreichende Meilensteine in naher Zukunft bei den Mitarbeitern wecken. Dies erhöht die Produktivität und Motivation der Mitarbeiter aus dem Gefühl heraus, Teiletappen bald gemeistert zu haben.
Seite 23
Methoden des Projektmanagements in moderner Softwareentwicklung
Tabelle 1 - Beispiel einer Risikoliste (fingiert)
Die Identifikation und Bekämpfung von Risiken im Projekt sind ebenfalls Tätigkeiten, denen der Projektleiter während der gesamten Projektlaufzeit nachgeht. Dazu gehört jede Art von denkbaren Problemen und Verzögerungen im Projektablauf. So werden in der Praxis z. T. regelmäßig Listen der zehn größten Projektrisiken (größter Risikowert) erstellt (siehe Tabelle 1) und deren Eintreten unter hoher Priorität durch die Projektleitung und das Entwicklerteam verhindert. Maßnahmen zur Bewältigung von Projektrisiken sind im Abschnitt „9.3 Risikomanagement“ beschrieben. 7.2.6 Softwareentwickler Für industrielle Fertigungsanlagen werden Maschinen oder Herstellungsverfahren entwickelt, mit denen nach ihrer Fertigstellung die tatsächlichen Produkte produziert werden können. Bei der Erstellung von Software ist diese Unterscheidung nicht möglich. Die „Produktion“, sprich die Vervielfältigung, ist nun mit sehr geringem Aufwand verbunden. Dagegen stellt die Entwicklung eines Softwareprodukts selbst bereits das Produkt dar. Dieses kann jedoch jederzeit weiter modifiziert werden. Daher Seite 24
Methoden des Projektmanagements in moderner Softwareentwicklung
wird im Allgemeinen häufiger von Softwareentwicklung statt Softwarekonstruktion oder –produktion gesprochen. Menschen die an der technischen Realisierung dieser Softwareentwicklung beteiligt sind werden als Softwareentwickler bezeichnet. Sie erarbeiten die Softwarearchitektur, definieren Schnittstellen und implementieren Klassen und Komponenten der Software. Die Entwickler gehören dem Projektteam unter der Führung des Projektleiters an. Durch die beschriebene Komplexität der Projekte und die übliche Bearbeitung in Gruppen gehört die Teamfähigkeit in der heutigen Zeit bei Softwareentwicklern zu den in der Praxis häufig geforderten Eigenschaften.
7.3 Te a m str ukt ur e n Die passende Zusammensetzung des Entwicklerteams und die geeignete Verteilung der Aufgaben an die Mitarbeiter sowie die Zusammenarbeit der Menschen im Team gelten als ausgesprochen wichtig für den Erfolg eines Softwareprojekts. In der Praxis werden die Projektmitarbeiter oft nicht vom Projektleiter selbst, sondern vom Management des Auftragnehmers ernannt. Dem Projektleiter obliegt daher die Aufgabe sein Team in sich zu organisieren, um den Projekterfolg zu gewährleisten. Dabei kann zwischen der eigentlichen soziologischen Organisation des gesamten Teams und speziellen Entwicklergruppen, die mit der Lösung bestimmter Aufgaben betraut sind, innerhalb dieser Organisation unterschieden werden. 7.3.1 Teamorganisation Zur Erarbeitung einer Lösung eines großen und komplexen Softwareprojekts kann es sinnvoll sein, das Projektteam in mehrere Teams zu unterteilen. Jedes Team sollte bestimmte Arbeitspakete bearbeiten und aus ca. fünf bis sieben Personen zusammengesetzt sein. Ein solches Team kann wiederum einen Verantwortlichen, einen sog. Teilprojektleiter, besitzen. 7.3.1.1 Einzelpersonen und kleine Gruppen In der Praxis arbeiten nicht selten einzelne Mitarbeiter an einem Problem (siehe Abbildung 7). Dies passiert insbesondere bei Arbeitspaketen die sich nicht sinnvoll auf mehrere Personen verteilen lassen. Der Vorteil dieser Praxis ist, dass ein einzelner Seite 25
Methoden des Projektmanagements in moderner Softwareentwicklung
Mitarbeiter keinerlei Mehraufwand durch Kommunikation verursacht. Dies impliziert jedoch auch einen direkten Nachteil, denn der Mangel an Kommunikation verhindert die Besprechung des vom Entwickler gewählten Lösungsweges und macht so Kritik in Bezug
auf
Verbesserungsvorschläge,
Mängel
und
Fehler
unmöglich.
Das
Arbeitsergebnis ist stark vom Entwickler geprägt und für Dritte oft nur schwer verständlich. Auf diese Weise können unnötige Folgekosten bei der späteren Wartung entstehen. Es ist empfehlenswert auch bei Arbeiten von einzelnen Entwicklern regelmäßige Reviews (Durchsichten, Prüfungen und Kritiken) der Ergebnisse durch andere Entwickler einzuführen.
Abbildung 7 - Kleine Entwicklergruppe
Arbeiten zwei Entwickler an einer Lösung so kann dies in sich drei verschieden Ausprägungen der Zusammenarbeit haben. Erstens kann dem Entwickler ein Assistent für die Delegation von Aufgaben zur Verfügung gestellt werden. Dabei obliegt die Führung der zweiköpfigen Gruppe dem Entwickler, während der Assistent ausschließlich zuarbeitet. Zweitens ist eine Konstellation zum Wissensaustausch möglich, wobei der erfahrene Entwickler dem weniger erfahrenen Entwickler seine Kenntnisse übermittelt. Dies kann insbesondere zur Entlastung des erfahrenen Entwicklers im Anschluss an den Wissenstransfer dienen. Drittens können zwei Softwareentwickler auch als gleichberechtigtes Team auftreten und die Bearbeitung der Arbeitspakete gemeinsam und einvernehmlich durchführen. Dieses Vorgehen wird unter anderem beim sog. „Pair Programming“ im „Extreme Programming“ eingesetzt. Der Abschnitt „8.2.4.1 Extreme Programming“ enthält eine Beschreibung dieses Prozessmodells. 7.3.1.2 Anarchische Teamstruktur Die Mitarbeiter eines anarchischen Teams arbeiten oftmals als eine Gruppe von Einzelpersonen zusammen (siehe Abbildung 8). Jeder einzelne bearbeitet das Projekt autonom nach seinen eigenen Vorstellungen. Hierarchische Beziehungen sind dabei nicht vorhanden oder werden missachtet. Seite 26
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 8 - Anarchische Teamstruktur
Da die Entwickler selbstbestimmt arbeiten gibt es weder Hierarchie-Probleme, noch gibt es nennenswerte bürokratische Hürden. Normierungen und Standards lassen sich bei diesen praktisch nicht organisierten Teams nicht durchsetzen. Die Existenz und Qualität der notwendigen Arbeitsergebnisse ist mehr dem Zufall und der Stimmung im Team überlassen. Ebenso ist die Einführung neuer Methoden oder Werkzeuge vom Willen der einzelnen Mitarbeiter abhängig. Eine solche Teamstruktur findet sich in Organisationen mit sehr flacher Hierarchie oder schwacher Führungsstruktur wieder und gilt insgesamt als nicht lernfähig. 7.3.1.3 Demokratische Teamstruktur Die demokratische ähnelt der anarchischen Teamstruktur ihrem Aufbau nach, jedoch legen die Mitglieder solcher Teams ein diszipliniertes Verhalten an den Tag, indem sie sich gemeinsam auf die Ziele des Projekts verständigen. Falls kein gemeinsamer Konsens gefunden werden kann gibt es im Team eine ausgezeichnete Person die eine Entscheidung fällt oder die Ziele festlegt (siehe Abbildung 9).
Abbildung 9 - Demokratische Teamstruktur
Das Wissen und die Erfahrungen der Teammitglieder fließt in jede Entscheidung ein wobei ein Klima der Offenheit entsteht. Dies hat den Vorteil, dass Risiken frühzeitig besprochen und gemeinsam bekämpft werden. Der Kommunikationsaufwand in
Seite 27
Methoden des Projektmanagements in moderner Softwareentwicklung
solchen Teams ist jedoch verhältnismäßig hoch, da zahlreiche Diskussionen geführt werden müssen und alle Mitglieder an den Entscheidungsprozessen beteiligt sind. 7.3.1.4 Hierarchische Teamstruktur In hierarchisch organisierten Teams werden von einem Projektleiter Entscheidungen gefällt und Ziele des Projekts festgelegt. Er steht an der Spitze des Teams und plant, koordiniert, kontrolliert und steuert das Projekt (siehe Abschnitt „7.2.5 Projektleitung“, siehe Abbildung 10). Die Kommunikationsstrukturen bei dieser Teamstruktur sind einfach und es entsteht wenig zusätzlicher Kommunikationsaufwand.
Abbildung 10 - Hierarchische Teamstruktur
Jeder Mitarbeiter erhält vom Projektleiter klare Aufgaben und kann bei Bedarf leicht ausgetauscht werden. Das Mitspracherecht der Entwickler ist eingeschränkt, was sich negativ auf Motivation und Leistungsbereitschaft auswirken kann. Die gesamte Verantwortung für die Entwicklung hängt an dem Projektleiter. 7.3.1.5 Chief-Programmer- Teamstruktur Die Chief-Programmer-Teamstruktur kann als Sonderform der hierarchischen Teamstruktur verstanden werden. Der Chief-Programmer (Chefentwickler) nimmt die Rolle eines Projektleiters mit deutlich stärkerer Einbindung in technisch-konstruktive Abläufe im Projekt ein. Er ist in der Regel ein sehr erfahrener Entwickler, der in die technische Entwicklung zentral eingebunden ist. Er ist zusätzlich verantwortlich für die Architektur des Produkts und setzt besonders wichtige Teile des Systems selbst Seite 28
Methoden des Projektmanagements in moderner Softwareentwicklung
um. Er prüft beständig die Implementierungen der anderen Teammitglieder und transferiert dabei sein Wissen an das Team. Dem Chief-Programmer können, je nach Projektgröße, ein Stellvertreter (engl. Backup-Programmer), der ihn bei Bedarf unterstützt und ein Verwaltungsassistent (engl. Librarian), der administrative Verwaltungsfunktionen teilweise übernimmt, zur Seite stehen (siehe Abbildung 11).
Abbildung 11 - Chief-Programmer- Teamstruktur
Der Chief-Programmer fungiert dabei als gutes Vorbild für das Team und ist, da er in die technischen Projektdetails tief involviert ist, außerordentlich fachkompetent, was den Kommunikationsaufwand mindert und Entscheidungswege verkürzt. Jedoch muss der Chief-Programmer hohen Ansprüchen genügen, um seiner sehr umfangreiche Aufgabe Herr zu werden. Mit einem fähigen Chief-Programmer kann ein Team hervorragende Leistungen erzielen, während ein überforderter Chefentwickler das Projekt stark gefährdet (vgl. [LUD07]). 7.3.2 Entwicklergruppen Zur Lösung besonderer Problemstellungen innerhalb eines Projekts kann es sinnvoll sein, Entwickler in besonderen Einsatzgruppen zu organisieren, die die Aufgabe haben eine Lösung des Problems zu erarbeiten. Oersterreich et al. beschreiben drei besondere Formen von Entwicklergruppen: die kreativen Teams, die Feature Teams und die Tiger Teams (vgl. [OES01]). 7.3.2.1 Kreative Teams Kreative Teams werden einberufen um moderne Lösungen zu erarbeiten. Dabei kann es beispielsweise um neuartige Anwendungen oder Algorithmen oder auch um unkonventionelle Design-Alternativen gehen. Ideen, Theorien, Prototypen und Machbarkeitsstudien sind der zentrale Gegenstand der Arbeit dieser Gruppen. Die Seite 29
Methoden des Projektmanagements in moderner Softwareentwicklung
Mitglieder arbeiten kreativ, motiviert und autonom und verfolgen ihr Ziel hartnäckig. Es sollte den kreativen Teams eine Umgebung geschaffen werden, in der sie Ihre Ideen ungestört, von äußeren Einflüssen, abgeschirmt ausprobieren können. Bürokratie und der Entwicklungsprozess des restlichen Projekts sollten bei der Arbeit dieses Teams so wenig Einfluss wie möglich haben. Die Ergebnisse der Aktivitäten der Gruppe werden im Anschluss in die normalen Abläufe des Projekts integriert. 7.3.2.2 Feature Teams Sogenannte Feature Teams werden für die Realisierung bestimmter Produktmerkmale eingesetzt, deren Anforderungen noch nicht klar spezifiziert und deren Realisierung noch nicht geklärt ist. Die Mitglieder kommen aus allen wichtigen Bereichen, wie Entwicklung, Marketing, Qualitätssicherung und Management. Dies befähigt das Team ein Produktmerkmal selbstständig zu realisieren und dabei Entscheidungen nach außen zu vertreten. Da die übrige Architektur des Produkts nicht durch die selbstständigen Aktivitäten des Feature Teams gestört werden darf, eignet sich die Aufbietung einer solchen Gruppe besonders bei der Erweiterung eines Produkts um neue Merkmale. Insbesondere beim Einsatz mehrerer, gleichzeitig arbeitender Feature Teams besteht die Gefahr von Schwierigkeiten während der Integration der unabhängig von einander entwickelten Produktmerkmale in das Gesamtprodukt. Sie eignen sich jedoch sehr gut, um zu vage Anforderungen eines Produktmerkmals vorerst aus der Gesamtentwicklung herauszuhalten, um diese nicht zu destabilisieren. 7.3.2.3 Tiger Teams Aufgetretene Schwierigkeiten oder Risiken im Projekt können von sog. Tiger Teams angegangen werden, die sich als Spezialeinsatzgruppen verstehen. Sie bestehen oft nur aus zwei bis fünf Personen, deren Aufgabe es ist, in möglichst kurzer Zeit (ein bis zwei Wochen) eine Lösung für ein aktuelles Problem des Projekts zu finden. Dabei sind diese Gruppen frei vom übrigen Entwicklungsprozess, da die von ihnen gefundene tragfähige
Lösungsalternative
später
mit
den
normalen
Mitteln
im
Entwicklungsprozess umgesetzt wird. Der Einsatz in Tiger Teams kann als besonderes Mittel der Motivation und Anerkennung für einen Mitarbeiter eingesetzt werden, da er dadurch seine gewohnten Tätigkeiten kurzfristig verlässt und das volle Vertrauen der Projektleitung genießt. Seite 30
Methoden des Projektmanagements in moderner Softwareentwicklung
8 SOFTWAREENTWICKLUNGSPROZESSE Einfache Arbeiten müssen, im Gegensatz zu komplexen Aufgaben, nicht als sequenzielle oder parallele Abfolge von einzelnen Aktionen definiert werden. In den 1950er Jahren galt die Erstellung von Programmen für Fachleute als trivial (vgl. [LUD07]). Die Programme wurden von einem Programmierer erdacht und sofort kodiert. Ab den 1960er Jahren jedoch wurden die Ansprüche an die Programmierer komplexer und eine direkte Kodierung erschien mehr und mehr als ungünstig (siehe Abschnitt „8.1.1 Code and Fix“). Dijkstra forderte 1972 die Softwareerstellung so zu verändern, dass die vom Menschen intellektuell besser erfasst und gesteuert werden kann (vgl. [DIJ72]). Es wurden seit den 1960er Jahren Vorgehens- und Prozessmodelle definiert und eingeführt, die die Erstellung von Software in organisatorische Schritte unterteilt und so die Umsetzung größerer und unübersichtlicherer Softwareprojekte arbeitsteilig ermöglichen. Diese Modelle werden in der Literatur häufig als Softwareentwicklungsprozesse bezeichnet. Die folgenden Abschnitte differenzieren zwischen Vorgehens- und Prozessmodellen und stellen die bekanntesten Vertreter vor.
8 .1 V or ge he nsm ode l l e Ein Vorgehensmodell ist ein Muster, aus dem sich ein konkreter Projektablauf, d .h. die zur Erstellung des Produkts notwendigen Schritte,
ableiten lässt. Ein
Vorgehensmodell hat im Allgemeinen keine Ansprüche an die Projektorganisation (vgl. Abschnitt „8.2 Prozessmodelle“). 8.1.1 Code and Fix Das Vorgehen des „Code and Fix“ kann nicht als Entwicklungsprozess betrachtet werden, da es bar jeder Ordnung verläuft. Es wird dabei der Schwerpunkt darauf gelegt, möglichst rasch mit dem Kodieren zu beginnen um schnellstmöglich ein lauffähiges Programm zu erhalten. Dabei wird so lange programmiert, getestet und korrigiert, bis das Produkt das gewünschte Verhalten aufweist. Dieses Vorgehen gilt als sehr einfach, da kein Entwicklungsprozess beherrscht werden muss und Vorkenntnisse nicht erforderlich sind. Seite 31
Methoden des Projektmanagements in moderner Softwareentwicklung
Auf die Ausarbeitung einer Architektur und des Designs, die Erstellung einer Dokumentation, qualitätssichernde Maßnahmen und das Einhalten von Standards wird dabei verzichtet. Daher entsteht für diese Tätigkeiten keinerlei Mehraufwand. Projekte die mit diesem Vorgehen bearbeitet werden sind weder planbar, noch lässt sich der aktuelle Projektstand ermitteln (siehe Abschnitt „9.1 Projektplanung und überwachung“). Risiken bleiben grundsätzlich unerkannt und können daher nicht vermieden werden, sondern treten spontan im Projektverlauf auf und werden erst dann ad-hoc beseitigt. Es ist kaum möglich mehr als einen Entwickler ein solches Projekt bearbeiten zu lassen, da der Code für Dritte oft nicht nachvollziehbar ist. Der Aufwand für die Beseitigung von Mängeln ist unangemessen hoch, da diese erst im Einsatz entdeckt werden können. Auch die Wartung eines so entwickelten Projekts ist sehr aufwendig, da die unstrukturierte Umsetzung und das Fehlen einer Dokumentation
die
nachträgliche
Bearbeitung
des
Softwareprodukts
massiv
erschweren. Dieses Verfahren eignet sich ausschließlich zur Erstellung von Programmen, die nicht produktiv eingesetzt werden, wie „Wegwerfprototypen“ oder Machbarkeitsstudien, da die Qualität und Wartbarkeit dieser Anwendungen keine Rolle spielen. Für umfangreiche Projekte ist dieses Vorgehen aufgrund der gravierenden Kosten für die Fehlerbeseitigung und Wartung sowie die gravierenden Qualitätsmängel nicht geeignet. 8.1.2 Wasserfallmodell Rosove erkannte 1967, dass die Entwicklung eines Softwareprodukts in bestimmten aufeinanderfolgenden Schritten abzubilden ist. Er definierte den sog. „Software Lifecycle“, der die Zeitspanne von der Idee eines Produkts bis zu seiner Außerdienststellung
beschreibt.
Er
erkannte
Tätigkeiten: Anforderungsdefinition Strukturierung der Lösung Erstellung und Integration des Produkts Seite 32
eine
sequenzielle
Abfolge
von
Methoden des Projektmanagements in moderner Softwareentwicklung
Prüfung des Produkts Inbetriebnahme Betrieb und Wartung Royce verhalf 1970 dem Software Lifecycle in Form des sog. Wasserfallmodells zu großer Popularität. Das Wasserfallmodell kann als Beschreibung der Tätigkeiten zur Softwareentwicklung verstanden werden. Seine schematische Darstellung (siehe Abbildung 12) erinnert an einen Wasserfall und gibt dem Modell seinen Namen. In dem Modell wird mit der Tätigkeit oben links im Schema begonnen und nach deren Abschluss die Aktivität direkt darunter ausgeführt. Wird ein Mangel oder ein Fehler erkannt wird zu einer der vorherigen Arbeiten zurückgekehrt, in der er aufgetreten ist. An dieser Stelle wird der Mangel oder Fehler korrigiert und danach alle darauf folgenden Tätigkeiten angepasst. Der Weg zurück zu früheren Tätigkeiten wird in der Literatur als Zyklus bezeichnet. Jede der Aktivitäten erzeugt ein Ergebnis oder eine Anzahl von Teilergebnissen, die in Form von Dokumenten, wozu auch der ausführbare Programmcode zählt. Die nachfolgenden Arbeiten basieren auf dem Resultat der vorherigen Aktivitäten. Die Tätigkeiten werden dabei jeweils, wie beim gewöhnlichen Software Lifecycle sequenziell ausgeführt. Schon
1965,
Jahre
vor
der
Veröffentlichung
des
Wasserfallmodells
als
Vorgehensmodell, kritisierte Dijkstra das blinde Vertrauen auf scheinbar komplett spezifizierte Programmteile (vgl. [DIJ65]). Er bemerkte, dass auch wenn alle Programmteile einzeln komplett analysiert zu sein scheinen, die Gefahr einer Selbsttäuschung über die praktische Qualität der Spezifikationen besteht. In den 1980er Jahren erkannte man, dass das Wasserfallmodell große Schwächen in der Praxis aufwies (vgl. [LUD07]). Bei diesem Modell wird angenommen, das Produkt bereits in der Anforderungsphase bis zum Ende durchdenken zu können. Eventuell erst während der Spezifikation, während oder nach der Kodierung auftretende Änderungen können dabei nur über Zyklen in früheren Tätigkeiten erfasst werden. Weil dabei jedoch alle darauffolgenden Aktivitäten erneut bearbeitet werden müssen, sind derartige Änderungen extrem aufwändig (vgl [OES01]). Dieser Umstand macht Seite 33
Methoden des Projektmanagements in moderner Softwareentwicklung
das Produkt zu jedem Zeitpunkt der Entwicklung extrem unflexibel und nur schwer änderbar. Insbesondere die späte Kodierung des Projekts lässt Probleme erst spät erkennen. Durch den Gebrauch von Zyklen kann der Projektfortschritt nur schwer ermittelt werden, da die aktuelle Aktivität keinen Aufschluss über den tatsächlichen Fertigstellungsgrad des Produkts liefern kann.
Systemanalyse
k rre Ko tu r
Softwarespezifikation
k rre Ko tu r
Architekturentwurf
k rre Ko tu r
Feinentwurf und Kodierung
k rre Ko tu r
Integration und Test
k rre Ko tu r
Installation und Abnahme
Betrieb und Wartung Abbildung 12 - Wasserfallmodell (vgl. [LUD07])
Da heute Neuentwicklungen von Software im Vorfeld nur schwer bis in jedes Detail definiert werden können und nicht alle Risiken schon vor Projektbeginn bekannt sind, eignet sich dieses Vorgehensmodell dafür nicht. Bei Projekten mit bekannten und stabilen Rahmenbedingungen, der Portierungen von Software auf ein anderes System oder der Weiterentwicklung eines vorhandenen Produkts kann das Wasserfallmodell jedoch gut eingesetzt werden, insbesondere da es nur geringen organisatorischen Mehraufwand verursacht (vgl. sonstige Vorgehens- und Prozessmodelle).
Seite 34
Methoden des Projektmanagements in moderner Softwareentwicklung
8.1.3 Iterativ-inkrementelle Entwicklung Die iterativ-inkrementelle Softwareentwicklung wirkt den Schwierigkeiten des Wasserfallmodells entgegen. Bei diesem Vorgehensmodell werden die grundsätzlichen Annahmen vertreten, dass ein zu erstellendes Softwaresystem nicht in einem einzigen Arbeitsprozess anfertiget werden kann und dass die Anforderungen nicht vollständig und unveränderlich definiert sind. Das Softwareprodukt wird in Form mehrerer Teilprodukte entwickelt. Jedes einzelne davon ist dabei ein lauffähiges Programm und ist eine Weiterentwicklung des vorherigen. Bei einem inkrementellen Vorgehen wächst die Funktionalität jedes Teilprodukts (Inkrements). Das erste Inkrement stellt den Kern der Anwendung dar, während jedes weitere die Produktmerkmale in Form von Ausbaustufen erweitert. Durch dieses Vorgehen ist bereits eine frühe Auslieferung eines Softwareprodukts mit zunächst noch eingeschränkter Funktionalität möglich. Das iterative Vorgehen bezeichnet die Entwicklung eines Softwareprodukts in mehreren Durchgängen (Iterationen). Dabei weist das Produkt bereits nach der ersten Iteration viele Produktmerkmale auf, welche zunächst erst teilweise funktionsfähig sind. Mit jedem Durchgang wird die Software weiter verfeinert. So ist es beispielsweise möglich, in frühen Iterationen die Programmoberfläche zu erstellen, während Fachlogik und Datenhaltung erst in späteren Durchgängen realisiert werden. Das iterative Vorgehen kann als die Erstellung einer Software in der Breite verstanden werden, während das inkrementelle Vorgehen die Bearbeitung der einzelnen Funktionen des Produkts in der Tiefe beschreibt. Sowohl in der Literatur, als auch in der Praxis werden das iterative und inkrementelle Vorgehensmodell vermischt und als iterativ-inkrementelle Softwareentwicklung bezeichnet. Jede Iteration beginnt mit einer Entwurfsphase, in der die Erkenntnisse der vorherigen Iterationen analysiert und die Anforderungen sowie die Softwarearchitektur aktualisiert bzw. erweitert werden. Im Anschluss wird mit der Implementierung für den aktuellen Durchlauf begonnen, bevor ein lauffähiges Programm durch Integration und Test entsteht. Seite 35
Methoden des Projektmanagements in moderner Softwareentwicklung
Die Bearbeitung einzelner Iterationen kann sich durchaus überlappen. So kann mit der Entwurfsphase der nächsten bereits während des Tests der aktuellen Iteration begonnen werden. Der aktuelle Projektstand lässt sich aus dem lauffähigen Produkt und Indikatoren, wie Einbau neuer Funktionen oder Verbesserung der Architektur, ableiten. Die
iterativ-inkrementelle
Softwareentwicklung
gilt
als
risikoorientierte
Vorgehensweise, da durch die früh zur Verfügung stehenden lauffähigen Programme mangelnde Anforderungen und Probleme frühzeitig erkannt werden können. Auch Fachreferenten und Benutzer haben die Möglichkeit sich dabei durch die Bewertung der lauffähigen Programme direkt zu beteiligen. Durch die kontinuierliche Integration jedes Iterationsergebnisses bleiben Probleme nicht bis kurz vor der Auslieferung verschleiert sondern werden v0n Projektbeginn an bekämpft. Der Testaufwand für das Produkt wird bei iterativ-inkrementellem Vorgehen auf alle Iterationen verteilt. Am Ende jeder Iteration steht eine Testphase, ehe die Iteration als abgeschlossen gilt. Dies hat den Vorteil, dass schwerwiegende Fehler früh erkannt werden und sich der Testaufwand nicht auf die Abschlussphase des Projekts konzentriert, in der der Termindruck häufig am größten ist. Dies ermöglicht zudem eine gleichmäßige Auslastung des Testteams im Projekt. Die Dauer der einzelnen Durchläufe ist jeweils etwa gleich. Auf diese Weise entsteht im Entwicklerteam ein Gefühl der Dringlichkeit und der Fortschritt ist für jeden einzelnen
direkt
sichtbar
(siehe
Abschnitt
„7.1.2
Managementstrategie
zur
Motivationserhöhung“). 8.1.4 Spiralmodell Das Spiralmodell wurde 1988 von Boehm entwickelt und versteht sich als ein iteratives Verfahren. Bei dem Spiralmodell handelt es sich um ein generisches Vorgehensmodell, ein sogenanntes Metamodell, bei dem die schnelle Minimierung von Projektrisiken im Vordergrund steht. Bei dem Modell, das seinen Namen seiner schematischen, spiralförmigen Darstellung (siehe Abbildung 13) verdankt, entspricht jede Umdrehung der Spirale einer Iteration. Seite 36
Methoden des Projektmanagements in moderner Softwareentwicklung
Begonnen wird dabei in der Mitte der Spirale. Das Spiralmodell folgt dem Paradigma, in jeder Iteration das jeweils größte verbleibende Projektrisiko zu bekämpfen. Eine Iteration gilt als abgeschlossen, wenn das Risiko behoben und ein lauffähiger Prototyp erstellt wurde.
Abbildung 13 - Spiralmodell nach Boehm (1988) (GNU-Lizenz für freie Dokumentation vgl. [GNU12])
Typisch an diesem Modell ist die Tatsache, dass alle großen Projektrisiken nach einigen Iterationen neutralisiert wurden und das Projekt ab diesem Zeitpunkt konstant und sicher in weiteren Durchläufen abgeschlossen werden kann. Die Anzahl der Iterationen hängt dabei von der jeweiligen Komplexität des Projekts und den zu bewältigenden Risiken ab. Da es sich bei dem Spiralmodell um ein Metamodell handelt, kann die inhaltliche Ausprägung andere Vorgehensmodelle abbilden. So kann jede Iteration als eine Aktivität des Wasserfallmodells modelliert werden, was bedeutet, dass zunächst die Risiken der Spezifikation, dann diese des Entwurfs und der Implementierung Seite 37
Methoden des Projektmanagements in moderner Softwareentwicklung
angegangen werden, während schließlich Integrationsprobleme gelöst werden. Es ist auch möglich ein komplettes Wasserfallmodell in jeder Iteration zu wiederholen oder die Ansätze iterativ-inkrementeller Entwicklung mit dem Spiralmodell abzubilden. Der entscheidende Punkt ist die vordergründige Risikoorientierung der Iterationen. 8.1.5 Model Driven Architecture Die Model Driven Architekture, kurz MDA, ist ein konkreter Ansatz modellgetriebener Softwareentwicklung (Model Driven Development). Das zu erstellende System wird in der MDA unter Verwendung von Modellen und Generatoren aus der formalen Spezifikation teilweise generiert. Ziel des Modells ist die Entwicklungsgeschwindigkeit des Projekts und die Qualität des Produkts zu steigern. Urheber der MDA ist die Object
Management
Group,
ein
1989
gegründetes,
Konsortium,
dass
die
Standardisierung objektorientierter Softwareentwicklung international vorantreibt. Zu den bekanntesten Standards gehören neben der MDA auch die CORBA (Common Object Request Broker Architecture), die die Verteilung objektorientierter Software in heterogenen Systemen vereinheitlicht sowie die UML (Unified Modeling Language), die als formale Notation objektorientierer Modellierung dient. Alle Modelle der MDA sind maschinenlesbar und können somit neben der Codegenerierung auch der automatisierten Integration dienen. Durch die Äquivalenz zwischen dem generierten Produkt und den Modellen der MDA werden sowohl die Wartung als auch das Testen der Modelle gegen die Spezifikationen zusätzlich erleichtert. Aus diesem Grunde kann der Test des generierten Codes gegen die Spezifikation im Vergleich zu konventionellen Modellen mehr in den Hintergrund rücken. Die formalen Modelle der MDA, die sich der UML als Modellierungssprache bedienen, sind in verschiedene Abstraktionsgrade unterteilt (vgl. [ZEP06]): Computation Independent Model (CIM) Platform Independent Model (PIM) Platform Specific Model (PSM) Implementation Specific Model (ISM) / Quellcode
Seite 38
Methoden des Projektmanagements in moderner Softwareentwicklung
Das Computation Independent Model beschreibt die Anforderungen an das zu erstellende System als Geschäftsmodell (Business Model). Die Darstellung des CIM abstrahiert dabei von der tatsächlichen Implementierung und dient dabei zur Klärung der Anwendungsfälle. Das Platform Independent Model ist ein detaillierteres, plattformunabhängiges Modell der nächsten Abstraktionsstufe. Es beschreibt die Struktur und die Funktionalität des Systems, ohne eine konkrete technische Realisierung zu berücksichtigen (vgl. [AND04]). Eine die Zieltechnologie der Umsetzung berücksichtigende Abstraktionssicht, die wiederum mehr Spezifikationsdetails aufweist, ist das Platform Specific Model. Es werden
beispielsweise
Programmiersprachenspezifika,
spezielle
Client-Server-
Technologien oder konkrete Datenbanken in der Spezifikation benutzt. Das Implementation Specific Model repräsentiert den (generierten) Quelltext der Software und weist damit den geringsten Abstraktionsgrad auf. Das Ziel das Softwaresystem teilweise zu generieren, wird über automatisierte Transformationen der verschiedenen Abstraktionsmodelle erreicht. Dabei werden die Modelle höheren Abstraktionsgrades in Modelle geringerer Abstraktion umgewandelt. Die durch diese Transformation gewonnenen Modelle müssen in der Praxis anschließend manuell verfeinert werden, da sie noch nicht vollständig sind und Lücken enthalten können (vgl. [ZEP06]). Die Modelle in der MDA müssen strengen formalen Ansprüchen genügen, da sie für die Generierung maschinenlesbar sein müssen. Dies verlangt den beteiligten Entwickler eine hohe Disziplin bei der Spezifikation ab, da auch für Menschen intuitiv verständliche Gegebenheiten, etwa eine Methode BerechneAlterInJahren(Geburtsdatum : DateTime)
im Modell exakt algorithmisch festgelegt werden muss. Durch die relativ bequeme Möglichkeit der Codegenerierung werden die Entwickler jedoch auch angehalten eine saubere und vollständige Spezifikation zu erstellen. Dabei wirkt die MDA der unwillkommenen Praxis entgegen, dass die Inhalte der Seite 39
Methoden des Projektmanagements in moderner Softwareentwicklung
ursprünglichen Spezifikation und der Implementierung im Laufe eines Projekts immer weiter auseinanderdriften, denn in der MDA sind die Spezifikation und die Implementierung während der gesamten Projektlaufzeit direkt und eng miteinander verbunden. So kann sich der Mehraufwand für die Spezifikation der Modelle in der MDA besonders bei größeren Projekten durch eine höhere Qualität, eine verbesserte Wartbarkeit und durch die Generierung des Codes positiv auf die Gesamtkosten des Projekts auswirken.
8 .2 P r o ze s sm o de l l e Ein Prozessmodell ist ein Muster, aus dem sich ein konkretes Softwareprojekt, d. h. die Abfolge von Schritten, um ein bestimmtes Softwareprodukt zu erzeugen, ableiten lässt. Ein Prozessmodell beinhaltet im Kern häufig ein Vorgehensmodell zur Projektdurchführung und zusätzlich die notwendigen Organisationsstrukturen, welche Vorgaben
für
Projektmanagement,
Qualitätssicherung,
Dokumentation
und
Konfigurationsverwaltung enthalten (vgl. [LUD07]). Prozessmodelle bilden ein Gerüst für Softwareprojekte, die jedoch sehr heterogen ausgeprägt sein können. Aus diesem Grunde kann es in der Praxis notwendig werden das jeweilige Modell auf ein konkretes Softwareprojekt oder eine Gruppe heterogener Softwareprojekte anzupassen. Dieser Vorgang, der in der Literatur als „Tailoring“ bezeichnet wird, ist insbesondere in allen Fragen vonnöten, in denen das Modell keine oder keine konkreten Vorgaben liefert. 8.2.1 Phasenmodell Dem sog. Phasenmodell liegt die Annahme zugrunde, dass sich ein Softwareprojekt in einzelne Abschnitte, sogenannte Phasen unterteilen lässt. Jede einzelne besitzt einen definierten Anfang und ein definiertes Ende und überlappt niemals mit einer anderen Phase (siehe Abbildung 14). Meilensteine stehen bei diesem Vorgang an den Anfangs- und Endpunkten einer jeden Phase und trennen sie so deutlich voneinander. An jeden Meilenstein sind klare Bedingungen und Voraussetzungen geknüpft, die kritisch überprüft werden müssen, bevor er als erreicht gilt. Es können dabei zwar Seite 40
Methoden des Projektmanagements in moderner Softwareentwicklung
Termine für einen Meilenstein festgelegt werden, doch seine Erreichung hängt ausschließlich von den definierten Kriterien ab.
Phase 1
Phase 2
Phase 3
Phase 4 t
M0
M1
M2
M3
M4
Abbildung 14 - Zusammenhang von Phasen und Meilensteinen
Zu Beginn des SoftwareProjekts erfolgt die Einteilung der Phasen, wobei jeder Phase ein festes Budget und ein geplanter Fertigstellungtermin zugeteilt wird. Die einzelnen Phasen werden während der Projektdurchführung streng sequenziell durchlaufen. Eine Rückkehr zu einer vorherigen Phase ist im Modell nicht vorgesehen. Tritt ein Fehler einer vorangegangenen Phase auf, wird er zunächst dokumentiert. Der Projektleiter entscheidet über die Beseitigung des Fehlers, die jedoch im Budget der aktuellen Phase stattfindet. Nach der Behebung des Fehlers werden die Bedingungen des Meilensteins, der am Ende der Phase der Fehlerursache stand, erneut geprüft. Gleiches geschieht mit jeder beeinflussten nachfolgenden Phase, da diese von der Änderung ebenso betroffen sein kann. Die Änderung eines bereits geprüften Dokuments ist somit wesentlich aufwändiger als im Wasserfallmodell (vgl. [LUD07]). Mit dem Phasenmodell geplante Projekte weisen eine präzise Planung und Organisation auf. Diese Planung erlaubt es frühzeitig die Kosten und den Personalbedarf festzulegen. Durch Budget- oder Terminüberschreitungen werden negative Abweichungen von der Planung schnell erkannt, während das Erreichen einer Phase den Projektfortschritt objektiv messbar macht. Das Phasenmodell selbst besitzt jedoch kein eigenes Vorgehensmodell zur Softwareerstellung. Die Definition des Begriffes der Phase ist sehr allgemein gehalten und Vorgaben zu konkreten Aktivitäten der Entwicklung sind nicht vorhanden. Dies macht das Modell einerseits flexibel für verschiedenartige Projekte, andererseits jedoch Tailoring notwendig, um das Phasenmodell auf die Erfordernisse des Projekts anzupassen.
Seite 41
Methoden des Projektmanagements in moderner Softwareentwicklung
8.2.2 Unified Software Development Process Der Unified Software Development Process, kurz Unified Process genannt, wurde 1999 von den Begründern der Unified Modeling Language (UML) Jacobson, Booch und Rumbaugh erstmals vorgestellt. Es handelt sich dabei um einen generischen Softwareentwicklungsprozess, dessen konkrete Ausprägung im kommerziellen IBM Rational Software Development Process verkörpert ist. Zunächst wird auf das frei verfügbare, generische Prozessmodell eingegangen, bevor der kommerzielle Prozess vorgestellt wird. 8.2.2.1 Generischer Unified Process Der generische Unified Software Development Process (Unified Process) ging aus den zunächst parallelen Bemühungen von Jacobson, Booch und Rumbaugh hervor, einen besonders für objektorientierte Softwareentwicklung geeigneten Entwicklungsprozess zu definieren. Der Prozess untergliedert sich in (vlg. [OES01]): Phasen und Iterationen Prozesse (Workflows) und Aktivitäten Rollen (Worker) Modelle und Produkte (Artefacts) Die technische Realisierung des Programms unterteilt sich in Iterationen, während sich die organisatorische Sicht in Phasen unterteilt. Jede Phase kann aus mehreren Iterationen bestehen und endet mit einem Artefact (einem Modell oder einem Produkt). Jede Iteration wird von einem definierten Meilenstein abgeschlossen. Ein
Worker
bezeichnet
Verantwortlichkeiten.
Einige
im
Unified
Beispiele
Process für
bestimmte
Worker
sind
Aufgaben
und
Softwarearchitekt,
Anwendungsfall-Ingenieur oder auch System-Integrator. Workflows sind in dem gleichen Zusammenhang die Aktivitäten und Arbeitsabläufe, die als zusammenhängende Tätigkeit verstanden werden. Einem Workflow wird ein
Seite 42
Methoden des Projektmanagements in moderner Softwareentwicklung
Worker zugeordnet, der ihn bearbeitet. Dabei ist es auf dieser Abstraktionsebene unerheblich, welcher konkrete Mitarbeiter die Tätigkeit ausführt. Typisch wird ein Projekt in mindestens vier organisatorische Phasen unterteilt: Konzeptions- und Vorbereitungsphase (Inception Phase) Entwurfsphase (Elaboration Phase) Konstruktionsphase (Construction Phase) Übergangsphase (Transition) In der Konzeptions- und Vorbereitungsphase wird das Produkt definiert und die grundsätzliche Wirtschaftlichkeit überprüft. Diese Phase wird außerdem dazu benutzt einen ersten, noch unvollständigen Grobentwurf der Softwarearchitektur und des Projektplans zu erstellen, die offensichtlichen Risiken des Projekts zu bewerten und Machbarkeitsstudien durchzuführen. Am Ende dieser Phase steht ein erstes Analysemodell des Produkts zur Verfügung, dass die Ergebnisse dieser Phase beinhaltet. Die Entwurfsphase dient der Identifikation der noch fehlenden Anforderungen und der größten Projektrisiken. Für jedes Risiko werden Gegenmaßnahmen geplant. Die Phase dient außerdem dazu Architekturentscheidungen zu treffen, die zu einem validen und ausführbaren Modell der Systemarchitektur am Ende dieser Phase führen. In der Konstruktionsphase wird das System implementiert, integriert und getestet. Beiläufigen Tätigkeiten, wie der Dokumentation, werden fortgesetzt und vervollständigt. Am Ende dieser Phase steht ein stabiles, ausführbares und vor allem auslieferbares System zur Verfügung. Die abschließende Übergangsphase dient der Übergabe des Produkts an die Anwenderschaft. Beta-Tests der Software sowie letzte Verbesserungen kennzeichnen diese Phase. Schritte zur Markteinführung und zum Vertrieb werden getroffen. Dazu gehören
beispielsweise
die
Vervollständigung
der
Benutzerdokumentation
(Handbuch), das Einrichten einer Support-Hotline (Telefonnummer für Fragen zur Software), die Erstellung der Verpackung und die Produktion der Datenträger. Wie bereits erwähnt kann jede Phase aus einer oder mehreren Iterationen bestehen. Die Hauptgehalte eines Durchlaufs sind unterschiedlich und hängen von der aktuellen Seite 43
Methoden des Projektmanagements in moderner Softwareentwicklung
Phase und dem Projektfortschritt ab. Die ersten Iterationen beschäftigen sich beispielsweise sich vordergründig mit der Klärung der Anforderungen und der Architektur der Software, während sich Durchläufe in der Konstruktionsphase stärker mit der Kodierung beschäftigen. Das Testen des Produkts verteilt sich, wie beim iterativ-inkrementellen Vorgehensmodell, auf den gesamten Projektverlauf. 8.2.2.2 IBM Rational Software Development Process Der IBM Rational Unified Process (RUP) prägt den generischen Unified Process zu einem vollwertigen, konkreten Prozessmodell aus (vgl. [LUD07]). Da es sich beim RUP um ein kommerzielles Produkt handelt, ist für die Anwendung des Prozesses eine Lizenzgebühr zu entrichten. Die einzelnen Arbeitsabläufe, wie z. B. Projektmanagement, Anforderungsanalyse oder Konfigurations- und Änderungsmanagement werden im RUP konkretisiert und genau spezifiziert (siehe Abbildung 15).
Seite 44
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 15 - Aktivitäten im IBM Rational Unified Process, vereinfacht (Bearbeitung)
Der RUP ist in HTML und Textform erhältlich und weist einen hohen Detaillierungsgrad und klare Prozessdarstellungen auf. Dies führt jedoch zu einem unvermeidlichen und nicht zu unterschätzenden Aufwand für das Tailoring des Prozesses. Der IBM Rational Unified Process vereint jedoch verschiedene Vorzüge anderer Modelle in sich, wobei besonders die iterativ-inkrementelle Vorgehensweise und das Phasenmodell zu nennen sind, so dass der Prozess, an die Bedürfnisse eines Projekts
angepasst,
ein
modernes,
flexibles
und
adäquates
Modell
der
Projektdurchführung darstellt. 8.2.3 V-Modell XT Das V-Modell XT versteht sich als Leitfaden zur Planung und Durchführung von Softwareprojekten.
Dabei
werden
sowohl
die
Produkte,
die
während
der
Projektlaufzeit erzeugt werden sollen, als auch die konkreten Vorgehensweisen, die zu den Produkten führen, definiert (vgl. [WWW01]).
Seite 45
Methoden des Projektmanagements in moderner Softwareentwicklung
Das V-Modell wurde vom Bundesministerium für Verteidigung entwickelt und ist dort seit 1992 verbindlich für die Entwicklung von Software vorgeschrieben. Seit 1996 ist es auch bei der Softwareentwicklung in und für zivile Bundesbehörden empfohlen und häufig auch verbindlich vorgeschrieben. Die aktuelle Version des V-Modells, das VModell XT (XT steht für Extreme Tailoring) ist der Nachfolger des 1997 veröffentlichten V-Modell 97, dass auch die Hardwareentwicklung einschloss, und somit die dritte Version des Modells. Das V-Modell XT kann, anders als sein Vorgänger, für folgende Projektarten genutzt werden (vgl. [LUD07]): Konkrete Softwareentwicklungsprojekte Konkrete Hardwareentwicklungsprojekte Metaprojekte, die ein Vorgehensmodell in eine Organisation einführen oder es pflegen Da das Prozessmodell öffentlich zur Verfügung steht und auch in Unternehmen, die Software für Bundesbehörden erstellen eingesetzt wird, hat es in Deutschland in den vergangenen 15 Jahren einen erheblichen Stellenwert eingenommen. Produkte und Aktivitäten sind in diesem Modell in einem Netz eng miteinander verknüpft, das dessen Kern bildet. Aktivitäten werden von Rollen ausgeführt, die Fähigkeiten und Aufgaben bezeichnen und von realen Mitarbeitern abstrahieren. Ähnlich wie das Phasenmodell gliedert sich das V-Modell XT in Phasen, sog. Projektabschnitte,
die
durch
einen
Meilenstein,
einen
sogenannten
Entscheidungspunkt, abgeschlossen werden. An jedem Entscheidungspunkt wird von der Projektleitung über die Fortsetzung oder den Abbruch des Projekts neu entschieden, um kein zum Scheitern verurteiltes Projekt unnötig lange fortzusetzen. Das Ergebnis wird in einem Schriftstück, einer sog. Projektfortschrittsentscheidung, dokumentiert. Als Prozessmodell deckt das V-Modell XT neben der technischen Realisierung eines Projekts auch Projektmanagement, Qualitätssicherung, Konfigurationsverwaltung und Problem- und Änderungsmanagement ab, die als sog. Vorgehensbausteine bezeichnet werden. Einem Vorgehensbaustein sind Rollen, Aktivitäten und Produkte zugeordnet. Seite 46
Methoden des Projektmanagements in moderner Softwareentwicklung
Je nach Projekttyp können im Zuge des Tailoring auch weitere Vorgehensbausteine hinzugefügt werden. Die einzelnen Vorgehensbausteine bauen aufeinander auf und sind voneinander abhängig. Das
Modell
unterstützt
inkrementelle,
komponentenbasierte
sowie
agile
Entwicklungsprozesse und lässt sich auf die konkreten Projektbedürfnisse anpassen oder für diese erweitern. Bei den Projekten unterscheidet das Modell ferner zwischen Auftraggeber- und Auftragnehmerprojekten, wobei ein Projekt auch beide Sichten beinhalten kann. Eine sog. Projektdurchführungsstrategie ordnet die benötigten Entscheidungspunkte und legt deren zeitliche Reihenfolge fest. Das V-Modell XT kennt mehrere Projektdurchführungsstrategien,
die
von
der
Sicht
(Auftraggeber-
und
Auftragnehmerprojekten), der Projektart und dem gewählten Entwicklungsprozess (inkrementell, komponentenbasiert oder agil) abhängen. Seinen Namen hat das V-Modell einerseits von dem Wort Vorgehensmodell, andererseits jedoch auch von dem typischen Ablauf der Prüfungen während der Systemerstellung, die schematisch V-förmig dargestellt wird (siehe Abbildung 16). Dabei findet die Verifizierung und Validierung zweier Ergebnisse stets auf derselben Abstraktionsebene statt.
Seite 47
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 16 - Entscheidungspunkte in der Struktur der Systemerstellung im V-Modell XT (vgl. [WWW01])
Auch wenn das V-Modell XT als extrem anpassungsfähig einzustufen ist, ist die Beschränkung
auf
inkrementelle,
komponentenbasierte
oder
agile
Entwicklungsprozesse eine unnötige Einschränkung. Ein großer Vorteil des Modells ist neben der hohen Generizität der hohe Stellenwert der projektbegleitenden Aktivitäten, die auf gleicher Stufe mit der technischen Umsetzung (Entwurf und Implementierung) stehen. Der hohe Formalismus und Tailoring-Aufwand lässt die Eignung für kleine oder mittlere Projekte bezweifeln. Durch die breite Nutzung des lizenzkostenfreien Prozessmodells für Entwicklungsprojekte der Bundesbehörden steht jedoch in Deutschland mit dem V-Modell XT ein einheitlicher und vergleichbar stabiler Entwicklungsprozess
zur
Verfügung,
der
die
Qualität
der
Softwareentwicklungsprozesse auf ein gemeinsames Niveau anhebt. 8.2.4 Agile Prozessmodelle Der Ansatz sog. agiler Prozessmodelle kann als Bewegung gegen die Installation streng formalisierter und bürokratischer Softwareentwicklungsprozesse betrachtet werden. Bei Ansätzen agiler Softwareentwicklung werden die Abschaffung von Bürokratie, die Konzentration auf die Konstruktion der Software, die völlige Bereitschaft auf Wünsche des Kunden oder des Marktes auch während der Projektlaufzeit rasch reagieren zu können und der Faktor Mensch in den Vordergrund gerückt.
Seite 48
Methoden des Projektmanagements in moderner Softwareentwicklung
Im Februar 2001 fand in den USA ein Treffen wichtiger Protagonisten der agilen Bewegung statt, bei dem das sog. Manifest der agilen Softwareentwicklung verabschiedet wurde (vgl. [ZEP06] und [COC03a] (Zitat)): „Durch das Entwickeln von Software und indem wir anderen bei der Entwicklung helfen, erschließen wir bessere Wege der Softwareentwicklung. Durch diese Arbeit haben wir folgende Werte zu schätzen gelernt: Individuen
und
Interaktionen
sind wichtiger als Prozesse und
Werkzeuge. Funktionierende Software ist wichtiger als umfassende Dokumentation. Kundenzusammenarbeit ist wichtiger als Vertragsverhandlungen. Auf Änderungen reagieren ist wichtiger als einem Plan zu folgen. Wir schätzen die Punkte auf der rechten Seite, aber wir bewerten die Punkte auf der linken Seite höher“ 8.2.4.1 Extreme Programming Kommunikation, Einfachheit, Testen mit anschließender Rückmeldung (Feedback) und Mut sind die definierten Grundwerte des Extreme Programming, kurz XP genannt. Kommunikation steht dabei für die persönliche und direkte Verständigung aller Projektbeteiligten, d. h. zwischen den Anwendern, dem Kunden und den Entwicklern. Der Begriff Einfachheit bezeichnet die Bemühungen, stets möglichst einfache Lösungen zu entwickeln, die leicht verständlich sind. Der Kunde, die Anwender und auch die Kollegen des Entwicklerteams testen die Software und geben einander beständig Feedback zu den Ergebnissen, um einen hohen Qualitätsstandard der Software zu gewährleisten. Der Begriff Mut soll die Beteiligten encouragieren das System beständig zu verbessern und den Weg der agilen Entwicklung während des Projekts beizubehalten. In konventionellen Prozessmodellen steigen die Kosten für den nachträglichen Einbau von Änderungen in das Projekt mit der Projektlaufzeit. Eine neue Anforderung, die beispielsweise erst zum Zeitpunkt der Implementierung in das Projekt eingebracht wird, muss bei konventionellen Modellen zunächst eine Anforderungsanalyse und eine Änderung der Spezifikation bzw. des Designs durchlaufen, ehe sie implementiert wird. Seite 49
Methoden des Projektmanagements in moderner Softwareentwicklung
Daher verursacht eine Änderung zu einem späteren Zeitpunkt deutlich höhere Kosten als zu Beginn des Projekts, während der Anforderungsdefinition. XP verfolgt jedoch den Ansatz, die Kosten für den Einbau von Änderungen in ein Projekt möglichst während der gesamten Projektlaufzeit konstant zu halten (siehe Abbildung 17).
Abbildung 17 - Kosten für Änderungen während der Projektdurchführung (GNU-Lizenz für freie Dokumentation vgl. [GNU12])
Im XP werden gewöhnlich drei bis zehn Programmierer beschäftigt, die von einem oder mehreren Kunden, die als Fachreferenten geeignet sind und die notwendige Entscheidungsbevollmächtigung besitzen, vor Ort täglich unterstützt werden. Alle genannten Projektbeteiligten halten sich in einem, oder in direkt benachbarten Räumen auf, um die Kommunikationswege auch räumlich kurz zu halten. Entwickelt wird in Iterationen die nur wenige Wochen andauern und jeweils zu einem funktionierenden, getesteten, ausführbaren Programm führen, dass dem Kunden sofort zur Durchsicht und Beurteilung zur Verfügung steht. Nach ca. zwei bis fünf Iterationen wird das Programm an die Endkunden (Benutzer) ausgeliefert. Die Anforderungen des Projekts werden in sog. User Stories (sing. User Story) erfasst. Eine User Strory beschreibt eine Funktionalität aus Benutzersicht, die in einer Iteration entwickelt werden kann, möglichst kurz auf einer Karteikarte. Die Entwickler schätzen dabei den Zeitaufwand für die Umsetzung einer User Story, während der Kunde die Prioritäten der Umsetzungsreihenfolge der User Stories setzt und ihre genauen Inhalte festlegt. Vor der Realisierung einer User Stroy besprechen die
Seite 50
Methoden des Projektmanagements in moderner Softwareentwicklung
Entwickler die Inhalte noch einmal mit dem Kunden. Auf diese Weise müssen die Anforderungen nicht ausführlich dokumentiert werden. Im Extreme Programming wird der Ansatz des Pair Programming, bei dem stets zwei gleichberechtigte Mitarbeiter gemeinsam an einem Arbeitsplatzrechner arbeiten (vgl. Abschnitt
„7.3.1.1
Einzelpersonen
und
kleine
Gruppen“).
Jedes
zweiköpfige
Entwicklerteam ist berechtigt jede Stelle des Quellcodes ungefragt zu verändern. Damit wird persönlichen Besitzansprüchen am Code (sog. „Ownership of Code“) entgegengewirkt. Dieser Ansatz wird in der Literatur als Egoless Programming bezeichnet. Die Aufgabe jedes Paares ist es die neuen User Stories einzuarbeiten, wobei zuerst Testfälle implementiert werden, mit denen der hinzugefügte Quellcode validiert und verifiziert werden kann. Ferner
refaktorisieren (Refactoring) die
Entwicklerpaare den vorhandenen Quelltext beständig so, dass er so einfach und übersichtlich wie möglich ist. Die Zusammensetzung der Zweierteams rotiert täglich und wird vom sog. Coach, einem Mitarbeiter des Teams, der einige organisatorische Aufgaben erfüllt und die Entwickler zur Einhaltung der XP Prinzipien ermutigt, bestimmt. Täglich besprechen die Projektmitglieder in einer etwa fünfzehn minütigen Besprechung, die bewusst im Stehen stattfindet (um die langen Diskussionen vorzubeugen) den aktuellen Projektstand und eventuelle Probleme. Der Kunde kommuniziert beständig mit den Entwicklern, um Ideen zu vermitteln und Entwicklungsalternativen auszuloten, prüft die Software in Form von Akzeptanztests und erarbeitet neue User Stories für die nächste Iteration. XP spart, im Sinne der agilen Prozessmodelle, an unnötigem Ballast, insbesondere an Dokumenten und bürokratischen Strukturen. Dies wird durch die kurzen und direkten Kommunikationswege untereinander und zum Kunden, sowie die Verbreitung des Projektwissens durch das Pair Programming möglich. So ist es im XP beispielsweise nicht nötig detaillierte Anforderungsdokumente zu erstellen, da der Kunde direkt vor der Erstellung der Funktionen zu deren Beschaffenheit befragt wird. Die Anwendung des Extreme Programming erfordert jedoch ein hohes Maß an Disziplin von allen Projektbeteiligten und die Bereitschaft des Kunden aktiv am Entwicklungsprozess teilzunehmen. XP ist nicht skalierbar, d. h. nur auf relativ kleine Seite 51
Methoden des Projektmanagements in moderner Softwareentwicklung
Teams anwendbar, da bei größeren Gruppen der Kommunikationsaufwand deutlich steigt. In Projekten mit stark fluktuierenden Anforderungen und kleinen, disziplinierten Teams kann das XP deutliche Vorteile gegenüber konventionellen Prozessen in Bezug auf Kosten und Projektlaufzeit erzielen. 8.2.4.2 Crystal Cockburn hat eine Reihe von agilen Prozessmodellen entwickelt, die unter dem Namen Crystal bekannt sind. Die einzelnen Prozessmodelle sind durch Namen von Farben indiziert und werden abhängig von der Zahl der Projektentwickler verwendet: Crystal Clear
(1-6 Mitarbeiter)
Crystal Yellow
(7-20 Mitarbeiter)
Crystal Orange
(21-40 Mitarbeiter)
Crystal Rew
(41-100 Mitarbeiter)
Crystal Maroon
(101-200 Mitarbeiter)
Crystal Blue
(201-500 Mitarbeiter)
Crystal Violet
(501 und mehr Mitarbeiter)
Die Modelle werden ferner nach dem im ungünstigsten Fehlerfall entstehenden Schaden gruppiert. So entstehen bei sieben Projektgrößenordnungen und vier Schadenseinstufungen insgesamt 28 Modelle (siehe Tabelle 2). Davon wurden von Cockburn die Modelle mit mehr als 100 Mitarbeitern oder mit dem Risiko der Lebensgefahr im Schadensfall nicht, oder nicht näher betrachtet. Crystal Clear ist bislang das am besten dokumentierte Modell, welches Cockburn 2004 in einem Buch detailliert präsentierte.
Seite 52
Methoden des Projektmanagements in moderner Softwareentwicklung
Fehler verursachen
Anzahl der Mitarbeiter im Projekt 1-6 6-20 20-40
40-60
60-100
100-200
200-500
Lebensgefahr (Life)
L6
L20
L40
L60
L100
L200
L500
Hohe Kosten (Essential Money)
E6
E20
E40
E60
E100
E200
E500
D6 Unbequemlichkeit (Comfort) C6
D20
D40
D60
D100
D200
D500
C20
C40
C60
C100
C200
C500
Crystal Red
Crystal Maroon Crystal Blue
Begrenzte Kosten (Discretionary Money)
Crystal Clear
Crystal Yellow Crystal Orange Crystal Red
Tabelle 2 – Übersicht der Crystal Modelle
In Crystal stehen die Managementsicht, sowie die Prozessverbesserung im Vordergrund. Die Entwicklung der Projekte erfolgt in regelmäßigen Inkrementen, wobei Meilensteine durch Entscheidungen und Auslieferungstermine bestimmt sind. Der
Benutzer
ist
im
Entwicklungsprozess
direkt
involviert.
Bestimmte
Vorgehensweisen während des Projekts (u. A. die Kodierung) wird durch Muster (Templates) definiert. Der Qualitätssicherung wird in Crystal durch automatisierte Regressionstests und Tests
der
Software
durch
mindestens
zwei
Benutzer
beigetragen.
Die
Anforderungsdefinition wird durch Besprechungen, die zu Anfang und in der Mitte jedes Auslieferungszyklus stattfinden, gewährleistet. Crystal unterscheidet zwischen vier Personengruppen (vgl. [COC03a]): Geldgeber (Sponsor, Auftraggeber) Leitender Programmierer und Designer Programmierer und Designer im Team Benutzer Ferner
existieren
beispielsweise
der
in
Crystal
verschiedene
Spezialistenrollen.
Benutzeroberflächendesigner,
der
Dazu
gehören
Systemarchitekt,
der
Datenbankdesigner oder ein Spezialist, der die Wiederverwendung von Komponenten regelt. Die skalierten Ausführungen des Crystal-Modells haben das Ziel die Anwendung zu erleichtern und keine zu hohen Tailoring-Aufwände zu generieren (siehe als negatives Beispiel dafür den Abschnitt „8.2.3 V-Modell XT“). Da jedoch viele der Modelle bislang Seite 53
Methoden des Projektmanagements in moderner Softwareentwicklung
noch nicht oder nur grob definiert wurden, ist die jetzige Eignung in der Praxis fragwürdig. Es wirkt das Vorhandene wie „eine Vorübung zu dem, was noch kommen soll“ (vgl. [LUD07]). Ludewig und Lichter urteilen (vgl. [LUD07]): „Insgesamt handelt es sich eher um einen konzeptionellen Rahmen als um konkrete Prozessmodelle. […] Erfahrungen (mit Crystal) scheint es kaum zu geben.“ 8.2.5 Cleanroom Development Process Die Produktion hochintegrierter Schaltkreise, wie Prozessoren oder Speicherchips, ist ein Verfahren, dass keinerlei Fehler erlaubt. Insbesondere Verunreinigungen der Rohstoffe während des Produktionsprozesses führen schnell dazu, dass ein Produkt fehlerhaft ist, was in der Praxis dazu führt, dass das entsprechende Bauteil unbrauchbar wird. Da die Kosten für den Ausschuss an solcherart Produkten bei häufigen Verunreinigungen inakzeptabel hoch wäre, haben sich in der Chipindustrie Reinräume (Cleanrooms) etabliert, die mit angemessenem Aufwand annähernd frei von Staub oder sonstigen Verunreinigungsquellen gehalten werden (siehe Abbildung 18).
Seite 54
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 18 - Industrieller Reinraum (vlg. [GNU12])
Forscher der IBM Federal Systems Devision haben dieses System auf einen Softwareentwicklungsprozess übertragen, den sog. Cleanroom Development Process, kurz CDP. Durch diesen Prozess wird ebenfalls versucht, Fehler vom Softwareprojekt möglichst fern zu halten, anstatt aufwändige Reparaturen der Software, die selbst wiederum Fehler nach sich ziehen können, zu akzeptieren. Der Prozess existiert in drei Ausprägungen, der Basisimplementierung (introductory), die die Grundideen des CDP verwirklicht, der vollständigen (full)
und der
fortgeschrittenen (advanced) Implementierung, welche die Adaption strenger, formaler Verfahren fordert, die über die vollständige Implementierung hinausgehen (vgl. [LUD07]). Im Folgenden wird die mittlere, vollständige Implementierung näher dargestellt. Die Spezifikation der zu erstellenden Software erfolgt auf drei Abstraktionsebenen. Die sog.
Black-Box-Spezifikation
beschreibt
für
eine
Softwareeinheit
(das
Gesamtsystem, ein Inkrement, ein Modul, eine Komponente oder Funktion) den Zusammenhang zwischen Ein- und Ausgaben. Dies geschieht in der Praxis durch präzise natürlich sprachliche Definitionen oder Ein- und Ausgabetabellen. Die StateBox-Spezifikation betrachtet die Softwareeinheit als Zustandsautomat und Seite 55
Methoden des Projektmanagements in moderner Softwareentwicklung
beschreibt den Zusammenhang
zwischen
den Zuständen.
Die
Clear-Box-
Spezifikation schließlich abstrahiert direkt vom Quellcode der Softwareeinheit. Sie beschreibt den Feinentwurf in Form von Daten- und Ablaufstrukturen. Um die Korrektheit der beiden letzten Spezifikationsarten zu gewährleisten, werden sie gegen die jeweils höhere Spezifikation validiert, d. h. die Clear-Box-Spezifikation wird gegen die State-Box-Spezifikation geprüft und diese wiederum gegen die Black-BoxSpezifikation. Da die Erfolgschancen von Projekten geringer Größe und Laufzeit als höher gelten, als die von ausgedehnten Großprojekten, wird ein großes Projekt im CDP zunächst in mehrere Inkremente, also kleinere Teilprojekte, aufgeteilt. Jedes Inkrement sollte mit etwa fünf bis acht Entwicklern in einigen Monaten durchgeführt werden können. Für die Analyse und Spezifikation steht im CDP weit mehr Zeit zur Verfügung als in konventionellen Prozessen. „Die Spezifikationen werden sehr gründlich inspiziert“ (vgl. [LUD07]). Auch bei der Codierung hat die Fehlerfreiheit einen extrem hohen Stellenwert. Die Programmierer erstellen den Quellcode ohne Hilfe eines Compilers, der sie auf syntaktische Fehler hinweisen könnte, die es zu reparieren gilt. Stattdessen wird von jedem Entwickler erwartet, einen Code zu liefern, der semantisch und syntaktisch fehlerfrei ist. Modultests für die fertigen Komponenten werden nicht durchgeführt. Stattdessen werden alle Komponenten integriert und das gesamte System getestet. Dies hat den Vorteil, dass Fehler die bei einem einzelnen Modultest nicht erkannt worden wären, die also aus dem Zusammenspiel verschiedener Komponenten resultieren, erkannt werden. Fehler werden nur in sehr geringem Maße akzeptiert. Ist die Fehlerrate zu hoch, wird der Code der entsprechenden Komponente verworfen und die komplett neu implementiert. Getestet wird im CDP bevorzugt mit einer sehr großen Menge an Testdaten, wobei es sich zumeist um Zufallsdaten handelt. Die jeweils erwarteten Resultate müssen bei diesen Tests ebenfalls bekannt sein. Nach diesen Tests kann eine statistische Auswertung eine Aussage über die Zuverlässigkeit der Software treffen und es kann geprüft werden, ob das Resultat akzeptiert werden kann. Seite 56
Methoden des Projektmanagements in moderner Softwareentwicklung
Durch dieses Vorgehen kann eine Fehlerrate von drei bis vier Fehlern pro tausend Codezeilen gegenüber ca. 25 Fehlern pro tausend Codezeilen bei konventionellen Verfahren erreicht werden (vgl. [LUD07]). Die Management-, Spezifikations-, Entwicklungs- und Zertifizierungsprozesse sind im Cleanroom Developement Process engmaschig miteinander vernetzt und rigide geregelt, was jedoch insgesamt zu einem relativ starren und streng sequenziellen Prozess führt. Die Anforderungen an die Entwickler sind sehr hoch. Insbesondere benötigen sie ein stabiles Arbeitsumfeld, d. h. möglichst bekannte Werkzeuge und Technologien, und ausreichende
Erfahrung
um
dem
Anspruch
der
möglichst
fehlerfreien
Softwareentwicklung gerecht zu werden. Auf äußere Einflüsse, wie z. B. häufige Änderungswünsche
des
Kunden
oder
wechselnde
Rahmenbedingungen
zur
Projektlaufzeit kann im CDP nur schwerfällig reagiert werden. Daher gilt dieses Prozessmodell besonders für Projekte mit relativ fixiertem Umfeld, klaren Anforderungen und stabilen technischen Rahmenbedingungen, wie z. B. die Portierung bestehender Systeme oder eingebettete Systeme, etwa Gerätesoftware, und für Systeme die eine hohe Zuverlässigkeit erfordern, als besonders geeignet. In der Literatur wird von positiven, praktischen Erfahrungen mit dem CDP berichtet (vgl. [LUD07]). Die Ersparnis des hohen Aufwands der ständigen Fehlerkorrektur und die hohe Qualität des fertigen Softwareprodukts können den zusätzlichen Aufwand dieses qualitätsorientierten Prozessmodells in geeigneten Projekten rechtfertigen.
9 PROJEKTDURCHFÜHRUNG
UND
PROJEKTSTEUERUNG
Unabhängig vom Softwareentwicklungsprozess gibt es im Projekt Aufgaben und Methoden, die während der Entwicklungszeit durchgehend bearbeitet werden müssen. In den folgenden Abschnitten wird ein kurzer Überblick über aktuelle Erkenntnisse in der Projektdurchführung und –steuerung gegeben, die in der Literatur primär als praktische Erfahrungswerte gelten. Umfangreichere Handlungsempfehlungen finden sich in der Literatur (vgl. [FEY04], [LUD07] und [OES01]) wieder.
Seite 57
Methoden des Projektmanagements in moderner Softwareentwicklung
9 .1 Pr oj ekt pl a nung un d -Ăź be r wa chu ng Projektplanung basiert auf Planungsdaten, die Aussagen Ăźber Laufzeit und Ressourcenaufwand eines Projekts liefern. Oestereich et al. fordern Planungen mindestens zu diesen Punkten (vgl. [OES01]): ďƒ˜ Zeitplanung ďƒ˜ Ressourcenplanung ďƒ˜ Auswahl eines geeigneten Entwicklungsprozesses ďƒ˜ Teamstruktur ďƒ˜ Strategie zum Risikomanagement Verschiedene Entwicklungsprozesse und Teamstrukturen wurden bereits in den Abschnitten „8 Softwareentwicklungsprozesse“ und „7.3 Teamstrukturen“ vorgestellt. Die Zeit- und Ressourcenplanung wird im folgenden Abschnitt („9.2 Schätzungen und Messungen“) diskutiert. Der Umgang mit Risiken in Softwareentwicklungsprojekten wird im Abschnitt „9.3 Risikomanagement“ erĂśrtert. Die Ăœberwachung eines Projekts kann neben der ständigen ĂœberprĂźfung der geplanten
Strukturen
(siehe
oben)
insbesondere
eine
Beobachtung
des
Fertigstellungsgrades des Softwareprodukts beinhalten. Der Fertigstellungsgrad kann durch eine Formel zu jedem Zeitpunkt der Projektlaufzeit ermittelt werden (vgl. [LUD07], siehe Formel 3).
đ??šđ?‘’đ?‘&#x;đ?‘Ąđ?‘–đ?‘”đ?‘ đ?‘Ąđ?‘’đ?‘™đ?‘™đ?‘˘đ?‘›đ?‘”đ?‘ đ?‘”đ?‘&#x;đ?‘Žđ?‘‘ =
đ??źđ?‘ đ?‘Ą-đ??´đ?‘˘đ?‘“đ?‘¤đ?‘Žđ?‘›đ?‘‘ đ??źđ?‘ đ?‘Ą--đ??´đ?‘˘đ?‘“đ?‘¤đ?‘Žđ?‘›đ?‘‘ + đ?‘…đ?‘’đ?‘ đ?‘Ąđ?‘Žđ?‘˘đ?‘“đ?‘¤đ?‘Žđ?‘›đ?‘‘
Formel 3 - Fertigstellungsgrad eines Softwareprodukts zu einem Zeitpunkt während der Projektlaufzeit
Neben der Berechnung des Fertigstellungsgrades kann die Erfassung von zuvor geplanten Meilensteinen, die nur die Zustände „nicht-erfĂźllt“ und „erfĂźllt“ besitzen, einen realistischen Eindruck des Projektfortschritts auf Phasenebene (siehe Abschnitt „8.2.1 Phasenmodell“) vermitteln. Jedoch gibt dieses Verfahren keinen Aufschluss Ăźber Schwierigkeiten im gesamten Projekt, sondern liefert nur Informationen Ăźber die Fertigungsgeschwindigkeit einer Phase zwischen zwei Meilensteinen. Tiefsitzendere Probleme, wie z. B. ein sehr unerfahrenes Team oder extrem fluktuierende Anforderungen, werden nicht direkt erkannt. Seite 58
Methoden des Projektmanagements in moderner Softwareentwicklung
Die Änderungshäufigkeit im Produkt, d. h. Anpassung bereits erstellter Teile, gibt Aufschluss über dessen Stabilität und somit indirekt auch über dessen Reifegrad. Ein Softwareprodukt, dass z. B. kurz vor seiner Auslieferung noch immer häufiger Änderungen der Spezifikation oder Architektur bedarf, wird nicht als fertiggestellt betrachtet. Die Erfassung von Fehlerraten während des Tests einer Software gibt zusätzliche Informationen über die Qualität des Systems. Software, in der noch viele Fehler gefunden werden, sollte nicht ausgeliefert werden.
9 .2 S chä t zu ng e n un d M e s s u ng e n Messungen dienen jeder Schätzung als Basis. Soll der Aufwand für die Erstellung einer Softwareeinheit (Projekt, Teilprojekt oder Projektteil) geschätzt werden, so wird zunächst versucht von bekannten Größen auf den unbekannten Aufwand der zu erstellenden Softwareeinheit zu schließen. Dazu muss zunächst eine bereits umgesetzte Softwareeinheit mit etwa derselben Größe (z. B. derselben Projektgröße) und denselben Rahmenbedingungen3 gefunden werden. Hierbei wird der Umfang der zu erstellenden Softwarereinheit geschätzt. Es
gibt
grundsätzlich
zwei
Methoden
um
die
Größe
einer
unbekannten
Softwareeinheit zu schätzen. Die erste Möglichkeit ist die Expertenschätzung, die auch als Makroschätzung bezeichnet wird. Dabei wird die unbekannte Softwareeinheit von erfahrenen Entwicklern mit bekannten Softwareeinheiten verglichen und so auf die Größe geschlossen ohne diese im Detail zu planen. Die zweite Möglichkeit ist die algorithmische Schätzung 4, die auch Mikroschätzung genannt wird, bei der die Softwareeinheit in eine Vielzahl kleiner, gut schätzbarer Teile zerlegt wird. Beispielsweise könnte eine neu zu entwickelnde Benutzerverwaltung der eines ähnlichen Projekts gleichen. In einer Makroschätzung werden die Unterschiede bewertet und aus Erfahrung auf den Aufwand der neuen Komponente geschlossen. In einer Mikroschätzung wird die zu entwickelnde Komponente zerlegt und jedes
3
D. h. ähnliche Teamgröße, ähnliche Projektlaufzeit und ähnliche Komplexität Ludewig und Lichter ([LUD07]) und Oestereich et. al. ([OES01]) beschreiben in ihren Büchern Methoden der algorithmischen Schätzung, wie Funktionspunkte oder Widget Points 4
Seite 59
Methoden des Projektmanagements in moderner Softwareentwicklung
Einzelteil einzeln bewertet, wobei schließlich ein Mehraufwand für die Integration der Teile addiert wird.
9 .3 Ri si k om a na gem e nt Risiken können, werden sie falsch eingeschätzt, zu spät erkannt oder ignoriert, aufgrund der im Schadensfall entstehenden Kosten den erfolgreichen Projektverlauf gefährden.
Im
Abschnitt
„6.2
Kostenminimierung“
wurde
bereits
auf
die
Quantifizierung von Projektrisiken eingegangen. Vielen Risiken kann begegnet werden, indem geeignete Teamstrukturen und Softwareentwicklungsprozesse gewählt werden, die den Risiken entgegenwirken. Das Risikomanagement besteht aus zwei grundsätzlichen Schritten pro bestehendem Risiko. Erstens muss eine Risikobewertung durchgeführt und zweitens im Anschluss eine Risikosteuerung etabliert werden. Für die Risikobewertung müssen Risiken zunächst identifiziert werden, was eine strukturierte Suche nach möglichen Risiken einschließt. Ist ein Risiko bekannt, wird es quantifiziert (siehe Abschnitt „6.2 Kostenminimierung“) und anschließend priorisiert um den Stellenwert der späteren Risikosteuerung festzulegen. Die folgende Tabelle zitiert eine Liste typischer Projektrisiken nach Oestereich et al. (vgl. [OES01], siehe Tabelle 3).
Seite 60
Methoden des Projektmanagements in moderner Softwareentwicklung
Risiko Feature Creep Optimistische Planung Unerfahrenes Team Neue Technologien Design-Probleme Qualitätsprobleme Silver Bullet Syndrom Managementprobleme Geldprobleme Kostenschätzungen Entwicklungsprozess Ungenaue Metriken Produktivität
Beschreibung Es werden laufend neue Features eingebracht, die „unbedingt“ noch in das laufende Projekt integriert werden müssen. Der Zeitplan ist unrealistisch und kann nicht eingehalten werden. Das Team hat nicht genügend Erfahrungen gesammelt für das geplante Projekt. Es werden neue Technologien verwendet, für die noch nicht genügend Erfahrung gesammelt werden konnten. Der Entwurf ist unzureichend und die Softwarearchitektur ist instabil. Die Qualität des Projekts ist unzureichend. Es wird blind auf die Vorteile eines neuen Werkzeuges oder einer neuen Technologie vertraut. Die Manager sind unfähig oder nicht genügend mit der Materie vertraut, um vernünftige Entscheidungen treffen zu können. Es ist unklar, ob die Firma genügend Finanzspielraum hat, um das Projekt bis zum Ende zu finanzieren. Die Kostenschätzungen reflektieren nicht die realen Kosten des Projekts, weil wichtige Faktoren übersehen wurden. Es wird ein Entwicklungsprozess eingesetzt, der dem Projekt nicht angepasst ist oder der vom Team nicht befolgt wird. Der Projektfortschritt wird falsch eingeschätzt, da keine genauen Messwerte vorliegen. Die Produktivität ist unzureichend, da das Team unerfahren ist oder die falschen Hilfsmittel verwendet.
Tabelle 3 - Liste typischer Projektrisiken (vgl. [OES01])
Es gibt verschiedene Strategien der Risikosteuerung, um einen erfolgreichen Projektabschluss zu erreichen. Die Wahl der jeweiligen Verfahren, die im Folgenden kurz vorgestellt werden, hängt vom Risiko selbst ab. Das Risiko zu vermeiden ist in vielen Fällen die kostengünstigste und zugleich sicherste Variante. In der Praxis können jedoch Projektanforderungen oder fixe Rahmenbedingungen dieser Strategie im Wege stehen. Es ist beispielsweise nur möglich, auf eine notwendige, jedoch unbekannte, risikobehaftete Technologie zu verzichten, wenn eine geeignete Alternative existiert. Die genauere Untersuchung eines Risikos, etwa durch Machbarkeitsstudien oder die Erstellung von Prototypen kann die Risikoeinschätzung erleichtern oder sogar zeigen, dass das Risiko minimal ist. Ein Prototyp, in dem eine unbekannte Technologie eingesetzt wird, kann z. B. zeigen, dass diese einfacher zu handhaben ist als angenommen. Die Beseitigung der Ursache des Risikos bietet einen stabilen Schutz vor dem Auftreten. So kann z. B. ein unerfahrenes Team geschult werden. Seite 61
Methoden des Projektmanagements in moderner Softwareentwicklung
Das Akzeptieren eines Risikos kann, sofern die Risikoanalyse das Risiko als minimal oder unkritisch eingestuft hat, in der Praxis durchaus eine geeignete Variante sein den Aufwand des Risikomanagements zu reduzieren. Das direkte Gegensteuern ist eine Alternative, die das tatsächliche Auftreten des Risikos a priori annimmt und daher schon im Vorfeld Gegenmaßnahmen einleitet, die die Kosten des Auftretens oder die Auftrittswahrscheinlichkeit reduzieren. Die folgende Tabelle zitiert eine Liste von Gegenmaßnahmen typischer Projektrisiken nach Oestereich et al. (vgl. [OES01], siehe Tabelle 4).
Seite 62
Methoden des Projektmanagements in moderner Softwareentwicklung
Risiko Feature Creep
Optimistische Planung
Unerfahrenes Team Neue Technologien
Design-Probleme
Qualitätsprobleme Silver Bullet Syndrom Managementprobleme
Geldprobleme
Kostenschätzungen Entwicklungsprozess
Ungenaue Metriken
Produktivität
Gegenmaßnahmen Einführung eines formalen Komitees, das Änderungen beschließt Flexible Softwarearchitektur, welche die einfache Integration neuer Features erlaubt Iterativer Entwicklungsprozess, um Änderungen kontrolliert einzubringen Verwendung unterschiedlicher Schätzmethoden, um mehrere Schätzungen zu erhalten Iterativer Entwicklungsprozess, um mehr Messpunkte für die Verfeinerung der Planung zu erhalten Iterationen so planen, dass zur Not eine frühere Version der Software geliefert werden kann Hinzuziehen externer Berater Schulungen Schulungen in allen neuen Technologien Hinzuziehen externer Berater Erstellen von Prototypen, um Design-Alternativen zu untersuchen Iterativer Entwicklungsprozess, um Probleme frühzeitig zu erkennen Design-Reviews mit Fachleuten durchführen Zeit zum Testen einplanen Design- und Code-Reviews durchführen Realistische Erfahrungen von anderen Anwendern einholen Systemteile sauber kapseln, um sie bei Bedarf ersetzen zu können Ausbildung der Manager verbessern Iterativer Entwicklungsprozess erzwingt regelmäßige Entscheidungen Zusätzliche Geldgeber finden Produkt auf die wesentlichen Funktionen beschränken, um früher fertig zu werden Planungen verfeinern und mit Referenzmodellen vergleichen. Entwicklungsprozess anhand des Projekttyps auswählen Team bei Prozesseinführung einbeziehen Mit einfachem Basisprozess starten, der von allen verstanden und akzeptiert wird Messwerterfassung automatisieren Iterativer Entwicklungsprozess, um mehrere Messpunkte zu erhalten Schulungen durchführen, Coaching vereinbaren Erhältliche Werkzeuge evaluieren und miteinander vergleichen Wiederkehrende Vorgänge automatisieren
Tabelle 4 - Gegenmaßnahmen typischer Projektrisiken (vgl. [OES01])
Da die Projektrisiken nicht nur zu Anfang der Projektlaufzeit relevant sind, muss das Risikomanagement kontinuierlich bis zum Ende des Projekts fortgeführt werden. Eine Behandlung aller Risiken zur gleichen Zeit ist in der Praxis durch begrenzte Kapazitäten nicht möglich. Daher ist es empfehlenswert, während der ganzen Projektlaufzeit eine nach Prioritäten sortierte Risikoliste zu pflegen und jedem Projektbeteiligen zur Verfügung zu stellen, die auch entsprechende Gegenmaßnahmen Seite 63
Methoden des Projektmanagements in moderner Softwareentwicklung
enthält. Den größten Risiken sollte dabei direkt entgegengewirkt werden. Grundsätzlich sollten alle Projektrisiken und deren Behandlung in den Projektplan aufgenommen werden. Konsequentes Risikomanagement begünstigt den erfolgreichen Ausgang eines Softwareentwicklungsprojekts und wirkt sich günstig auf die Projektkosten aus.
9 . 4 D o k um e nta tio n In der Praxis gehört die Dokumentation eines Softwareprojekts zu den häufig vernachlässigten Teilen der Systemerstellung. Dadurch, dass sie scheinbar nicht direkt zur Produktion der Software dient, wird ihr Wert gering geschätzt oder es wird versucht Budgetüberschreitungen durch verkürzte Dokumentation zu kompensieren. Dieses Vorgehen unterliegt jedoch bei näherer Betrachtung einem Trugschluss. Sowohl Ludewig und Lichter (vgl. [LUD07]) als auch Oestereich et al. (vgl. [OES01]) führen verschiedene wichtige Argumente an, wie die Dokumentation direkt und indirekt mit der Qualität der Software und der Softwareentwicklung zusammenhängt, die im Folgenden vorgestellt werden. Die Dokumentation ist, als eine Form der Kommunikation, ein direkter Weg des
Wissenstransfers
innerhalb
der
Entwicklerteams,
zwischen
Entwicklungsabteilungen und zwischen Auftraggeber, Auftragnehmer und ggf. auch dem Benutzer. Das Wissen wird außerdem personen- und abteilungsunabhängig persistent konserviert, so dass das Wissen über die Software nicht mit einem Mitarbeiter den Auftragnehmer verlässt. Die entstehenden Dokumente können genutzt werden um Teilprodukte verschiedener Abstraktionsstufen miteinander zu vergleichen, d. h. zu prüfen und somit Fehler frühzeitig zu erkennen . Der Projektfortschritt kann anhand der entstandenen Dokumente objektiv nachvollzogen werden, da klar ist, welche Bestandteile bereits fertiggestellt wurden und welche Qualität sie bieten.
Seite 64
Methoden des Projektmanagements in moderner Softwareentwicklung
Dokumentation verbessert die Wartbarkeit und Änderbarkeit von Software, denn sie hilft Fehler im Nachhinein besser finden zu können und verschafft schneller Klarheit über die Struktur des Softwareprodukts, um es erweitern zu können. In der Literatur werden zahlreiche verschiedene Dokumentationsvarianten vorgestellt, deren Inhalt stark von der Zielgruppe, d. h. den Adressaten der Dokumente und der Bedeutung der Dokumente als Teilprodukte im Entwicklungsprozess abhängt. Einige Softwareentwicklungsprozesse fordern eigene Dokumente, die als Bestandteile des Prozesses Teilprodukte bilden. Dokumentation gilt als aufwändig. Ludewig und Lichter (vgl. [LUD07]) schätzen die Produktivität eines Entwicklers auf zwei bis vier Seiten pro Tag. Ein vierzigseitiges Dokument kann somit einen Bearbeiter zwischen zwei und vier Wochen beschäftigen und so die Projektlaufzeit signifikant erhöhen. Daher ist es in der Praxis von Bedeutung, Dokumentation besonnen einzusetzen und, je nach Projektausprägung, den Dokumentationsgrad so gering wie möglich, jedoch so detailiert wie nötig zu gestalten.
Seite 65
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL IV ENTWICKLUNG EINES PLATTFORMÜBERGREIFENDEN ELEKTRONISCHEN TAGEB UCHS Die
im
Teil
„Teil
III
Projektmanagement
in
der
Softwareentwicklung“
zusammengestellten Erkenntnisse moderner Projektorganisation finden in den folgenden Abschnitten beispielhafte und praktische Verwendung bei der Erstellung eines realen Softwareprodukts. An dieser Stelle sei auf den beiliegenden Datenträger verwiesen, der einen plastischen Eindruck der entwickelten Software vermittelt.
10 ANFORDERUNGSDEFINITION Ziel ist die Erstellung der ersten Version eines elektronischen Tagebuchs für den privaten Gebrauch. Dieses plattformübergreifende elektronische Tagebuch, kurz „Pet“, soll mehrere Hard- und Softwareumgebungen abdecken und neben den Texten eines klassischen Tagebuchs auch Multimediaelemente wie Videos, Tondokumente oder Bilder plattformübergreifend verfügbar machen. In seiner ersten Version soll das plattformübergreifende elektronische Tagebuch zunächst sämtliche Grundfunktionen abdecken. Das Projekt soll es jedoch ermöglichen, das Produkt nach der ersten Version sukzessive weiterzuentwickeln, um in folgenden Versionen die Funktionalität weiter zu erhöhen. Eine
ausführliche
Beschreibung
der
gestellten
Anforderungen
und
Rahmenbedingungen des Produkts liegt in Form eines Pflichtenheftes vor (siehe „13 Anhang A: Pflichtenheft des plattformübergreifenden elektronischen Tagebuchs“). Pet unterscheidet sich von sog. Weblog-Anwendungen5 (auch Blogs genannt) durch das Einsatzgebiet. Pet wird, anders als ein Blog, weder im Internet veröffentlicht, noch im Internet für die breite Öffentlichkeit zur Benutzung zur Verfügung gestellt. Die Anwendung wird vorwiegend auf einem Rechner des Benutzers installiert und nur von ihm genutzt. Typische Weblogs unterstützen zurzeit Multimediainhalte nur indirekt über manuelle Anpassungen. Eine relativ neue Bewegung stellen die sog. Vlogs (VideoWeblogs) dar. Unter einem Vlog wird ein Blog verstanden, der überwiegend aus audiovisuellen Inhalten besteht. In Zukunft ist ein Aufschwung der Vlogs zu erwarten. 5
Anwendung für ein digitales Tagebuch, dass im Internet ausgeführt wird und dessen Einträge von einem breiten Publikum im Internet gelesen werden können. Seite 66
Methoden des Projektmanagements in moderner Softwareentwicklung
Ferner grenzt sich Pet von Standardsoftware zur Blog-Administration ab, da es sich bei Pet um eine erweiterungsfähige Individualsoftware handelt, die die Anforderungen maßgeschneidert erfüllt.
11 BESTIMMUNG
DER
PROJEKTPARAMETER
1 1 .1 Ko ste nm i ni m i er ung de s Pr oj e kt s Die
Entwicklung
der
Software
„Pet“
(plattformübergreifendes
elektronisches
Tagebuch) geht nach typischen Kostenminimierungsstrategien vor (siehe Abschnitt „6.2 Kostenminimierung“). Wie bereits erwähnt, spielen dabei besonders die Möglichkeit kosteneffizienter Fehlerbehandlung, ein solides Risikomanagement und Anforderungen an das Qualitätsmanagement eine Rolle. Im Abschnitt „11.2 „Rollen und Teams“ im Projekt“ wird ein Vorgehens- bzw. Prozessmodell gewählt, dass die Einhaltung des definierten Qualitätsfaktors „Änderbarkeit und Wartbarkeit“ und die wirtschaftliche Fehlerbehandlung zur Projektlaufzeit ermöglicht. Die projektbezogenen Risiken werden im Abschnitt „12.1.2 Risikomanagement “ bewertet und gesteuert.
1 1 .2 „ Rol l e n un d Tea m s “ i m Pr oj ek t Die Umsetzung der Individualsoftware für den Eigenbedarf erfolgt durch nur eine einige Person. In Bezug auf das Projektmanagement erleichtert eine Umsetzung dieser Art verschiedene Faktoren im Projekt (siehe auch Abschnitt „7.3.1.1 Einzelpersonen und kleine Gruppen“): Kein Mehraufwand für Kommunikation Kein Mehraufwand für etwaige Teamorganisation Klarheit der Projektanforderungen Keine Ressourcenkonflikte bei Abhängigkeiten von Arbeitspaketen Diesen Vorteilen stehen jedoch auch Nachteile gegenüber, die im Projektverlauf besonders überwacht werden müssen:
Seite 67
Methoden des Projektmanagements in moderner Softwareentwicklung
Die
Personalunion
sämtlicher
Rollen
im
Projekt
(Auftraggeber
und
Auftragnehmer sowie Projektleiter und Entwickler) begünstigt unentdeckte Fehler aufgrund fehlender Fremdprüfungen (durch einen anderen Entwickler, Projektleiter oder den Kunden). Das
Arbeitsergebnis
droht
entwicklergeprägt
und
für
außenstehende
unübersichtlich oder schwer verständlich zu werden. Die Vernachlässigung einer technischen Dokumentation der Entwicklung wird durch einen Einzelentwickler begünstigt.
1 1 .3 F e stl eg e n de s So ft wa r e e nt wi ckl ung s pr o ze s s e s Die
Eignung
der
vorgestellten
Entwicklungsprozesse
(siehe
Abschnitt
„8
Softwareentwicklungsprozesse“) für das vorliegende Projekt wird nacheinander überprüft, ehe das Vorgehen für die Umsetzung des Pet festgelegt wird. 11.3.1 Einsatz von Code and Fix Aufgrund der Forderung nach Änderbarkeit und Wartbarkeit der Anwendung sowie nach Dokumentation schließt sich dieses Vorgehensmodell für die Umsetzung des Gesamtprojekts aus. Ein Prototyp im Sinne einer Machbarkeitsstudie zur Risikobewertung und –steuerung kann jedoch sinnvoll per Code and Fix realisiert werden. 11.3.2 Einsatz des Wasserfallmodells Die klar definierten und für die erste Version stabilen Anforderungen an das Pet lassen das Wasserfallmodell augenscheinlich als ein geeignetes Vorgehensmodell für die Umsetzung des Projekts wirken. Die Begünstigung zunächst unentdeckter Fehler, die eventuell erst im Projektverlauf identifiziert werden können und auch die beschriebene Anforderung an das System in mehreren
Ausbaustufen
mit
steigender
Funktionalität,
die
teilweise
noch
unspezifiziert ist, spricht klar gegen das Wasserfallmodell. 11.3.3 Einsatz der iterativ-inkrementellen Entwicklung Das
iterativ-inkrementelle
Projektparameter
nach
Vorgehensmodell
Risikoorientierung, Seite 68
unterstützt stufenweiser
die
geforderten
Entwicklung
und
Methoden des Projektmanagements in moderner Softwareentwicklung
Inbetriebnahme,
Toleranz
der
Fehlerkorrektur
zur
Projektlaufzeit
und
der
Anforderung der Änderbarkeit und Wartbarkeit. Nachteil dieser Vorgehensweise im Projekt ist die relativ ungenaue Definition der Abläufe innerhalb einer Iteration und der zu erstellenden Produkte, da der iterativinkrementelle Entwicklungsprozess zwar in der Literatur weit verbreitet, jedoch nicht formal und standardisiert festgelegt wurde. Da es sich um Individualsoftware für den Eigenbedarf handelt könnten das Modell nach tatsächlichen Erfordernissen ausgelegt werden,
was
jedoch
bar
jeder
Verifikationsmöglichkeit
geschähe,
da
kein
Referenzmodell vorliegt. 11.3.4 Einsatz des Spiralmodells Das Spiralmodell eignet sich besonders für Projekte mit zahlreichen unbekannten Faktoren und vielen Risiken. Als Metamodell bietet es die Möglichkeit selbst beliebige Vorgehensmodelle aufzunehmen. Insbesondere der risikoorientierte Charakter des Modells und seine iterativen Züge lassen das Modell für den Einsatz im vorliegenden Projekt geeignet erscheinen. 11.3.5 Einsatz der Model Driven Achritecture Obwohl die MDA eine Erhöhung der Qualität und eine Verbesserung der Wartbarkeit ermöglicht, eignet sie sich besonders für größere Projekte (siehe Abschnitt „8.1.5 Model Driven Architecture“). Insbesondere die einzuhaltenden strengen Formalismen für die verschiedenen Modelle stehen in kleineren Projekten wie diesem in keinem günstigen Verhältnis zu der Zeitersparnis durch die Codegenerierung. Ebenso stellt die plattformunabhängige Modellierung in diesem speziellen Projekt, das eine klar definierte Zielplattform ausweist, einen unnötigen Zwischenschritt dar. 11.3.6 Einsatz des Phasenmodells Das vorliegende Projekt kann nicht sinnvoll budgetiert werden, da für die Produktion im Rahmen dieser Arbeit keine finanziellen Grenzen erhoben wurden. Die Einteilung in Phasen, die von Meilensteinen mit festen Erfüllungsbedingungen begrenzt werden, ist in einem Projekt mit einem einzigen Entwickler nur bedingt sinnvoll, da der Entwickler seine eigene Arbeit zur Erreichung eines Meilensteins validieren müsste. Da ein Entwickler keine absichtlichen Fehler macht, wird er eigene Versäumnisse und Seite 69
Methoden des Projektmanagements in moderner Softwareentwicklung
Mängel möglicherweise nicht vor Abschluss einer Phase identifizieren können. Dies führt in der Folge zu ständigen Korrekturen vergangener Phasen, was den Sinn des Einsatzes eines Phasenmodells für einzelne Entwickler mehr als in Frage stellt. 11.3.7 Einsatz des Unified Process Der Unified Process, bzw. auch der RUP, bieten sehr gute Mechanismen um in größeren Projekten iterativ-inkrementell Software zu entwickeln. Da sich der Prozess jedoch mit vielen Bereichen des Projektmanagements, mehreren Entwicklern und getrennten Rollen auseinandersetzt, ist der Prozess für dieses Projekt zu gewichtig, d.h. es ist überskaliert. 11.3.8 Einsatz des V-Modell XT Als überskaliert kann für dieses Projekt auch der Prozess des V-Modell XT gesehen werden, da umfassendes Tailoring und hier unnötige Vorgehensweisen die Kosteneffizienz des Pet durch stark erhöhten Projektmanagementaufwand und Bürokratie sabotieren. 11.3.9 Einsatz agiler Prozessmodelle Die Grundsätze der agilen Softwareentwicklung wirken insbesondere positiv auf die Kommunikation innerhalb der Entwicklerschaft und mit dem Kunden sowie der Behandlung von Anforderungsfluktuationen. In einem Projekt zur Erstellung von Individualsoftware für den Eigenbedarf durch einen Entwickler sind diese Konzepte nicht relevant. Der Einsatz agiler Modelle in diesem speziellen Projekt würde insbesondere durch die deutliche Reduktion von Dokumentationen und die fehlende Rückmeldung (Feedback) von anderen Entwicklern oder einem Projektleiter leicht im Vorgehen von Code and Fix enden. 11.3.10 Einsatz des Cleanroom Development Process Die Entwicklung des Pet mit dem CDP ist durch das Fehlen eines objektiven Prüfers ebenfalls nicht möglich. Ferner sind der Mehraufwand und die damit verbundenen Kosten für das vorliegende Projekt, das keinen Anspruch auf exorbitante Fehlerfreiheit legt, unbegründet und daher nicht wirtschaftlich.
Seite 70
Methoden des Projektmanagements in moderner Softwareentwicklung
11.3.11 Entscheidung über den Einsatz eines Softwareentwicklungsprozess es Für das umzusetzende Projekt erscheint der Einsatz eines vereinfachten Spiralmodells, das die Projektrisiken behandelt, am sinnvollsten zu sein. Dabei werden im Vorfeld nötige Prototypen (Wegwerfprototypen) in einem oder mehreren „Umläufen der Spirale“ mittels Code and Fix erstellt und anschließend in weiteren Umläufen für die Realisierung der verbindlichen Produktmerkmale (siehe „13 Anhang A: Pflichtenheft des
plattformübergreifenden elektronischen Tagebuchs“) auf das risikoorientierte
iterativ-inkrementelle Entwicklungsmodell gewechselt. Die Umsetzung der optionalen Merkmale kann im Anschluss nach demselben Schema durchgeführt werden. Auf diese Weise können sämtliche Projektanforderungen erfüllt und das Projekt erfolgreich realisiert werden.
12 REALISIERUNG Die
im
Folgenden
beschriebene
Realisierung
des
plattformübergreifenden
elektronischen Tagebuchs „Pet“ konzentriert sich primär auf die Projektdurchführung und beschreibt die inzwischen aus zahlreichen Quellen bekannten Abläufe der objektorientierten
Softwareentwicklung,
wie
objektorientierte
Analyse
und
objektorientiertes Design, nur sekundär. Im Fokus liegen daher die Tätigkeiten und Dokumente, die den sicheren und erfolgreichen Ablauf des Softwareprojekts darstellen.
1 2.1 Pr oj ekt pl a nung 12.1.1 Vorkonzeption Die Vorkonzeption dient der Identifizierung von Projektrisiken und hilft bei der Bestimmung der Arbeitspakete für die Umsetzung. In dieser Konzeption werden auch die optionalen Produktmerkmale betrachtet, deren Umsetzung in der ersten Version des Produkts nicht zwingend erforderlich ist. Die Forderung eines plattformübergreifenden Einsatzes im Heimbereich spricht für eine Lösung als Anwendung im Intra- oder Internet. Die Anwendung kann über die standardisierten Internetbrowser (HTML 4.01 mit Adobe Flash 8 und JavaScript 1.5) auch auf ansonsten heterogenen Systemen problemlos eingesetzt werden. Eine
Seite 71
Methoden des Projektmanagements in moderner Softwareentwicklung
Installation des Pet ist ausschließlich auf dem Anwendungsserver, und nicht auf den Clientrechnern, notwendig. Der Einsatz im Intranet ermöglicht zudem auch den Einsatz auf Videokonsolen, die die Anforderungen an den Internetbrowser erfüllen, wie z. B. die Konsole „Wii“ der Firma Nintendo. Auch mobile Geräte, wie Laptops, Tablet PCs, PDAs oder Smartphones (siehe Abbildung 19), die diese Anforderung erfüllen, können als Clientrechner eingesetzt werden.
Abbildung 19 - Laptop und Tablet PC (oben) sowie PDA und Smartphone (unten) (vgl. [GNU12])
Mobiltelefone bieten heute meist die Möglichkeit multimediale Inhalte wie Videos, Tondokumente
oder
Bilder
aufzuzeichnen,
beinhalten
jedoch
meist
keinen
Internetbrowser, der die Softwarevoraussetzungen erfüllt. Um dennoch von den Vorteilen der mobilen Aufzeichnung von Inhalten partizipieren zu können, ist es möglich Mobiltelefone über den Einsatz eines E-Mail-Servers zum Einpflegen neuer Inhalte zu nutzen (optionales Merkmal). Dabei wird eine MMS mit der entsprechenden Bild-, Video-, Ton- oder Textdatei an eine E-Mail-Adresse gesendet, die vom Anwendungsserver abgerufen werden kann. Der Anwendungsserver pflegt den Multimediainhalt anschließend in das Pet ein. Um Unbefugten den Missbrauch der ESeite 72
Methoden des Projektmanagements in moderner Softwareentwicklung
Mail-Adresse zu verweigern, muss im Text einer validen E-Mail ein zuvor definiertes Kennwort enthalten sein. Plattformübergreifendes elektronisches Tagebuch „Pet“
POP3 empfangen
Datenbank Lesen und Text einpflegen
E-Mail-Server (Internet)
Anwendungsserver (Intra- oder Internet)
Lesen und einpflegen aller Inhaltsarten
Linux
Windows
Mobile Geräte
Macintosh
POP3 versenden (Inhalte einpflegen, nicht lesefähig)
Videokonsole
Mobiltelefon
(z. B. Tablet PC)
Benutzer
Abbildung 20 - Schematische Darstellung des Aufbaus und Einsatzes des Pet
Auf diese Weise stehen dem Benutzer eine Vielzahl von Möglichkeiten der Betrachtung und Pflege der Inhalte des Pet zur Verfügung (siehe Abbildung 20). 12.1.2 Risikomanagement im Projekt Die folgenden drei Projektrisiken wurden identifiziert und werden während der Realisierung ständig überwacht, wobei Gegenmaßnahmen das Risikopotenzial minimieren sollen. 12.1.2.1 Unbekannte Technologie: Flash-Video-Format Die Wiedergabe von Multimediainhalten auf heterogenen Plattformen ist schwierig, da Webbrowser zu deren Wiedergabe (von derartigen Inhalten) oft systemeigene Wiedergabekomponenten einsetzen. So kann zur Entwicklungszeit oft nicht vorhergesagt werden mit welcher Wiedergabekomponente, kurz „Player“, ein Medium abgespielt wird. Dies hat insbesondere zur Folge, dass ein Player auf einzelnen Seite 73
Methoden des Projektmanagements in moderner Softwareentwicklung
Systemen nicht verfügbar ist oder dass ein Player einzelne Codecs (Audio- oder Videoformate) nicht unterstützt und daher die Wiedergabe verhindert. Das Problem lässt sich durch eine plattformübergreifende und standardisierte Komponente, die fähig ist Multimediainhalte abzuspielen, umgehen. Diese Komponente stellt das Adobe Flash Plug-In dar, dass heute in zahlreichen Browsern integriert und für viele Internetbrowser verfügbar ist. Zum Abspielen von Multimediainhalten eines Benutzers, wie Videos oder Audiodokumente, muss das Medium in das sog. FlashVideo-Format konvertiert und mit einem speziellen Flash-Media-Player abgespielt werden. Diese Technologien gelten im Projekt zum jetzigen Stand als unbekannt und müssen daher als besonderes Projektrisiko näher untersucht werden. Können die beschriebenen Technologien nicht eingesetzt werden, besteht die Gefahr des Scheiterns des Projekts, sofern keine alternative Methode der plattformübergreifenden Wiedergabe gefunden werden kann. Dieses
Risiko
sollte
Wegwerfprototypen,
durch der
einen, als
dem
restlichen
Machbarkeitsstudie
Projekt
vorgeschalteten,
die
technologischen
Rahmenbedingungen klärt, bewertet werden. So kann festgestellt werden, ob eine alternative Lösung gefunden werden muss und ob die Risiken mangelnder Erfahrung oder eines Silver Bullet Syntroms (siehe Abschnitt „9.3 Risikomanagement“) bestehen. 12.1.2.2 Design-Probleme: Unentdeckte Fehler durch mangelndes Feedback Durch die Entwicklung mit einem einzigen Entwickler ist, wie oben bereits erwähnt, das Risiko unentdeckter Fehler, insbesondere im Software-Design, in Ermangelung einer prüfenden Instanz im Projekt, erhöht. Der gewählte Entwicklungsprozess wirkt diesem Risiko passiv entgegen, da er eine relativ ökonomische Fehlerkorrektur zu jeder Zeit des Projekts gestattet. Die Erstellung notwendiger technischer Dokumentationen begünstigt zusätzlich aktiv das Aufspüren von Mängeln und Fehlern im Projekt. 12.1.2.3 Qualitätsproblem: Entwicklerprägung Die starke Prägung auf einen einzelnen Entwickler kann die kostengünstige Änderbarkeit und Wartbarkeit des Produkts verhindern. Durch mangelndes Feedback kann ein Entwickler allein diesen Zustand nur schwer erkennen. Die technische Dokumentation des Projekts (Planung wie Durchführung) hilft jedoch, die Seite 74
Methoden des Projektmanagements in moderner Softwareentwicklung
Änderbarkeit und Wartbarkeit wiederum zu erhöhen und standardisierte Software zu entwickeln, da dem Vorgehen des Code and Fix entgegengewirkt wird. 12.1.3 Arbeitspakete Die Umsetzung des Projekts sollte zunächst in sinnvolle Arbeitspakete unterteilt werden. Dazu wird das Projektmanagementwerkzeug „Project“ der Firma Microsoft eingesetzt. Das Programm bietet umfangreiche Möglichkeiten der Projektplanung, Projektsteuerung und Projektüberwachung, wobei es hier lediglich für die Planung der Arbeitspakete und deren Abhängigkeiten eingesetzt wird. Project eignet sich insbesondere für mittlere und große Projekte, da die Pflege der Daten einen signifikanten Mehraufwand im Projektmanagement bedeuten können. Nach der o. g. Definition des Kosten- und Nutzenbegriffs (siehe Abschnitt „6.2 Kostenminimierung“) ist der Einsatz in kleinen Projekten nur bedingt möglich. Die Arbeitspakete werden zunächst ungeordnet definiert, ehe sie in Abhängigkeit zueinander gesetzt werden und ein Iterationsplan erstellt wird (siehe Tabelle 5).
Seite 75
Methoden des Projektmanagements in moderner Softwareentwicklung
Nr.
Vorgänger
Vorgangsname
Dauer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
Plattformübergreifendes elektonisches Tagebuch 32,75 Tage? Def inition der Anf orderungen 0,88 Tage? 2 Projektplanung 0,38 Tage? 3 Machbarkeitsstudien 2 Tage? Umwandlung Medien in Flash-Videos 0,63 Tage? 5 Abspielen v on Flash-Videos im Browser 0,63 Tage? 6 Webserv erkonf iguration zum Streamen v on Flash-Videos0,75 Tage? 4 Realisierung verbindlicher Inhalte (Version 1.0) 14 Tage? Analyse und Design 3,5 Tage? Vorkonzeption der Anwendungsrealisierung (schematisch) 0,5 Tage? Objektorientierter Entwurf der Klassen 2 Tage? Datenbankentwurf 1 Tag? 10 Datenbank 1,75 Tage? Datenbank und Tabellen auf setzen 0,63 Tage? Kommunikationskomponente f ür Datenbankanf ragen1,13 erstellen Tage? 9 Implementierung (Klassen und Fachlogik) 7,75 Tage? Erstellen der Klassen laut Entwurf 3 Tage? Einbau der Fachlogik 1,5 Tage? Oberfläche und Events 4 Tage? 17EE Anzeige des Tagebuchs (ASP.NET-Seite) 2,25 Tage? 17EE Eingabemaske f ür Text (ASP.NET-Seite) 1 Tag? 17EE Eingabemaske f ür Bilder und Medien (ASP.NET-Seite) 1 Tag? 9;13;16;19 Integration und Test 1 Tag 4;8 Realisierung optionaler Inhalte (Version 1.1) 15,5 Tage? Analyse und Design 6,38 Tage? Objektorientierter Entwurf der Klassen der optionalen Inhalte 2,5 Tage? Erweiterung des Datenbankentwurf s um optionale Inhalte 0,75 Tage? 9 Datenbank 2,13 Tage? Neue Tabellen auf setzen, bestehende ggf . erweitern 0,5 Tage? Kommunikationskomponente f ür Datenbankanf ragen0,88 erweitern Tage? 9 Implementierung (Klassen und Fachlogik) 12 Tage? Erstellen der Klassen laut Entwurf 3,5 Tage? Einbau der Fachlogik 2,25 Tage? Oberfläche und Events 4,5 Tage? 32EE Konf iguration (ASP.NET-Seite) 1 Tag? 32EE Login (ASP.NET-Seite) 1,13 Tage? 32EE POP3-Import (ASP.NET-Seite) 0,88 Tage? 32EE Tagebuch-Export (ASP.NET-Seite) 1,5 Tage? 25;28;31;34 Integration und Test 1,38 Tage Meilensteine 15,5 Tage 23 [Fertigstellung Version 1.0] 0 Tage 39 [Fertigstellung Version 1.1] 0 Tage
Tabelle 5 - Definition der Arbeitspakete für das plattformübergreifende elektronische Tagebuch „Pet“
12.1.4 Abhängigkeiten Die Abhängigkeiten der einzelnen Komponenten werden in Form eines GanttDiagramms dargestellt. Die Spalte „Vorgänger“ bezeichnet die Vorgangsnummer des Vorgangs, zu dem eine Abhängigkeit besteht. Eine Ziffernfolge in dieser Spalte bedeutet, dass eine Ende-Anfang-Beziehung besteht. Ende-Ende- werden durch das Suffix „EE“ und Anfang-Anfang-Beziehungen durch die Endung „AA“ gekennzeichnet.
Seite 76
Methoden des Projektmanagements in moderner Softwareentwicklung
Microsoft Project setzt aufgrund dieser Daten die Umsetzung in eine mögliche Reihenfolge (siehe Tabelle 6). Zur besseren Übersicht wurden die Bezeichnungen in Tabelle 6 abgekürzt (abgeschnitten). Die vollständigen Vorgangsbezeichnungen sind Tabelle 5 zu entnehmen.
Seite 77
Methoden des Projektmanagements in moderner Softwareentwicklung
Tabelle 6 - Abh채ngigkeiten der Arbeitspakete in einem Gantt-Diagramm
Seite 78
Methoden des Projektmanagements in moderner Softwareentwicklung
12.1.5 Iterationsplan Die Realisierung des Pet kann, wie beschrieben durch das Spiralmodell mit eingebetteten Vorgehensmodellen erfolgen. Es entstehen für die beschriebenen Merkmale vier Umläufe der Spirale, in denen jeweils das größte aktuelle Projektrisiko zuerst behandelt wird (siehe Tabelle 7).
Spiralmodell Umlauf 1
Iteration
Größtes Risiko
Inhalt der Iteration
Machbarkeitsstudie
2
3
4
Neue Technologie: Adobe Flash Video Design-Problem: Unentdeckte Fehler Qualitätsproblem: Entwicklerprägung Silver-Bullet-Syndrom: Vertrauen auf E-MailFunktion Design-Problem: Unentdeckte Fehler Qualitätsproblem: Entwicklerprägung Design-Problem: Unentdeckte Fehler Qualitätsproblem: Entwicklerprägung
Mehrere weitere
Realisierung der verbindlichen Merkmale
Optionales Merkmal: Import von Multimediaeinträgen von Mobiltelefonen über einen Mailserver Optionales Merkmal: Benutzerauthentifizierung
Optionales Merkmal: Tagebuch-Export
Mehrere weitere
Merkmale späterer Versionen
Tabelle 7 - Iterationsplan des Pet
12.1.5.1 Spiralmodell Umlauf 1 Machbarkeitsstudien zum Einsatz von Adobe Flash-Videos auf dem IIS 7Webserver in Form von Code and Fix Damit wird das größte Projektrisiko noch vor Beginn der Realisierung der Anwendung beherrschbar. 12.1.5.2 Spiralmodell Umlauf 2 Iterativ-inkrementelle
Realisierung
der
verbindlichen
Merkmale
des
plattformübergreifenden elektronischen Tagebuchs Dabei wird besonderes Augenmerk auf die bekannten Projektrisiken (siehe oben) gerichtet. Die Umsetzung erfolgt in einer einzigen Iteration. Seite 79
Methoden des Projektmanagements in moderner Softwareentwicklung
12.1.5.3 Spiralmodell Umlauf 3 Iterativ-inkrementelle Umsetzung des optionalen Merkmals des Imports von Multimediaeinträgen von Mobiltelefonen über einen Mailserver Dabei sollte besonders dem Risiko des blinden Vertrauens in das gewählte Konzept der Übertragung von Multimediadaten per E-Mail vom Mobiltelefon zum PetServerrechner entgegengewirkt werden (Silver-Bullet-Syndrom). Der Einbau des Merkmals erfolgt in einer weiteren Iteration des inneren, iterativ-inkrementellen Vorgehensmodells. 12.1.5.4 Spiralmodell Umlauf 4 Iterativ-inkrementelle Realisierung der weiteren optionalen Merkmale, d. h. Benutzerauthentifizierung und Tagebuch-Export Dabei wird wiederum besonderes Augenmerk auf die bekannten Projektrisiken (siehe oben) gerichtet. Da jede weitere Version (entspricht hier jeder Iteration) zeitnah ausgeliefert werden soll, werden die beiden Merkmale in je einer Iteration nacheinander implementiert. 12.1.5.5 Weitere Iterationen Die Weiterentwicklung des Pet kann im Anschluss in mehreren Iterationen erfolgen, die die Funktionalität weiter inkrementell hinzufügen.
1 2.2 Um s et zu ng de s P r oj ekt pl a ns 12.2.1 Machbarkeitsstudie In der vorgeschalteten Machbarkeitsstudie wird das größte Projektrisiko (siehe Abschnitt „12.1.2.1 Unbekannte Technologie: Flash-Video-Format“) untersucht und bewertet. Es wird ein Wegwerfprototyp erstellt, der Erkenntnisse über die eingesetzten Technologien hervorbringen und so eine Bewertung des Risikos ermöglichen soll. Die wesentlichen Erkenntnisse werden im Folgenden dokumentiert:
Seite 80
Methoden des Projektmanagements in moderner Softwareentwicklung
12.2.1.1 Flash-Video-Format Konverter Das Flash-Video-Format kann mit Hilfe zweier frei verfügbarer Konverter erstellt werden. Es sind dabei zahlreiche Quellformate für die Konvertierung von Audio-, Video- oder Bild-Dateien möglich. FFMPEG Komponente (Build 2007-02-12) (vgl. [WWW05]) FLVTool Komponente 4.1 (vgl. [WWW06]) Die FFMPEG Komponente konvertiert ein Quellmedium in das Flash-Video-Format, während das FLVTool zusätzliche Metadaten generiert und in das Flash-Video integriert. Eine Dokumentation der Komponenten ist auf den o. g. Internetseiten verfügbar. Eine beispielhafte Anwendung ist über diese Windows-Befehlszeilenaufrufe möglich: ffmpeg.exe -i test.avi test.flv flvtool2.exe -U test.flv
Die Datei „test.avi“ entspricht dabei einem Quellmedium und die Datei „test.flv“ dem konvertierten Flash-Video. 12.2.1.2 Webserverkonfiguration Um den Webserver IIS 7 für das Streaming (siehe Abschnitt „13.1.1 Verbindliche Merkmale“) von Flash-Videos zu konfigurieren sind verschiedene Schritte erforderlich. Zunächst wird im IIS 7 die Handler-Zuordnung, d. h. die Zuweisung einer ScriptAusführung einer Datei oder zu einer Gruppe von Dateien (Dateityp), konfiguriert (siehe Abbildung 21). Dabei soll die Bearbeitung von Flash-Videos (Endung „.flv“) von Microsoft .NET übernommen werden.
Seite 81
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 21 - Handler-Zuordnung im IIS
Nun wird das Webprojekt der Machbarkeitsstudie angelegt, in der eine Klasse f端r das Streaming von Flash-Videos angelegt wird. Solcherlei einfache Klassen sind im Internet frei verf端gbar. Inhalt der Klasse FLVStreaming.cs:
Seite 82
Methoden des Projektmanagements in moderner Softwareentwicklung
using System; using System.IO; using System.Web; public class FLVStreaming : IHttpHandler { // FLV header private static readonly byte[] _flvheader = HexToByte("464C5601010000000900000009"); public FLVStreaming() {} public void ProcessRequest(HttpContext context) { try { int pos; int length; // Check start parameter if present string filename = Path.GetFileName(context.Request.FilePath); using (FileStream fs = new FileStream(context.Server.MapPath(filename), FileMode.Open, FileAccess.Read, FileShare.Read)) { string qs = context.Request.Params["start"]; if (string.IsNullOrEmpty(qs)) { pos = 0; length = Convert.ToInt32(fs.Length); } else { pos = Convert.ToInt32(qs); length = Convert.ToInt32(fs.Length - pos) + _flvheader.Length; } // Add HTTP header stuff: cache, content type and length context.Response.Cache.SetCacheability( HttpCacheability.Public); context.Response.Cache.SetLastModified(DateTime.Now); context.Response.AppendHeader("Content-Type", "video/x-flv"); context.Response.AppendHeader("Content-Length", length.ToString()); // Append FLV header when sending partial file if (pos > 0) { context.Response.OutputStream.Write(_flvheader, 0, _flvheader.Length); fs.Position = pos; } // Read buffer and write stream to the response stream const int buffersize = 16384; Seite 83
Methoden des Projektmanagements in moderner Softwareentwicklung
byte[] buffer = new byte[buffersize]; int count = fs.Read(buffer, 0, buffersize); while (count > 0) { if (context.Response.IsClientConnected) { context.Response.OutputStream.Write(buffer, 0, count); count = fs.Read(buffer, 0, buffersize); } else { count = -1; } } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } public bool IsReusable { get { return true; } } private static byte[] HexToByte(string hexString) { byte[] returnBytes = new byte[hexString.Length / 2]; for (int i = 0; i < returnBytes.Length; i++) returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); return returnBytes; } }
Da Flash-Videos mit dieser Klasse wiedergegeben werden sollen (Streaming), wird in der Datei „web.config“ die Einstellung für den Webserver festgelegt:
Seite 84
Methoden des Projektmanagements in moderner Softwareentwicklung
<?xml version="1.0"?> <configuration> <system.webServer> <handlers> <add name="flv" path="*.flv" verb="GET,POST,HEAD,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework \v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="bitness32"/> </handlers> <validation validateIntegratedModeConfiguration="false"/> </system.webServer> <system.web> <httpHandlers> <add verb="*" path="*.flv" type="FLVStreaming"/> </httpHandlers> <compilation debug="true"/> </system.web> </configuration>
12.2.1.3 Flash-Video-Player Innerhalb einer HTML-Seite, bzw. einer ASPX-Seite mit ASP.NET-Code, wird nun der frei Verfügbare „Flash Media Player 3.5“ eingebunden:
Seite 85
Methoden des Projektmanagements in moderner Softwareentwicklung
<script type="text/javascript" src="ufo.js"></script> <p id="player1"><a href="http://www.macromedia.com/go/getflashplayer">Get the Flash Player</a> to see this player.</p> <script type="text/javascript"> var FO = { movie:"mediaplayer.swf",width:"336",height:"297", majorversion:"7",build:"0",bgcolor:"#FFFFFF", allowfullscreen:"true", flashvars:"file=test.flv&image=preview.jpg" }; UFO.create( FO, "player1"); </script>
12.2.1.4 Ergebnis
Abbildung 22 - Flash Media Player 3.5 mit konvertiertem Video
Ein Medium, etwa ein Video, kann nun konvertiert, mit Metadaten versehen und per Streaming von einem IIS 7-Webserver mittels eines Flash-Wiedergabeprogramms abgespielt werden (siehe Abbildung 22). 12.2.1.5 Schlussfolgerung Aufgrund der erfolgreichen Machbarkeitsstudie kann die neue Technologie nun als beherrschbar und das Risiko der unbekannten Technik als irrelevant eingestuft werden.
Das
Projekt
sollte
dabei
jedoch
auf
den
Erkenntnissen
dieser
Machbarkeitsstudie aufbauen und dieselben Technologien einsetzen. 12.2.2 Realisierung der verbindlic hen Merkmale Den genannten Risiken in diesem Umlauf des Spiralmodells, den möglichen DesignProblemen durch unentdeckte Fehler und den Qualitätsproblemen seitens einer Entwicklerprägung, soll die folgende Dokumentation entgegenwirken. Wie im Seite 86
Methoden des Projektmanagements in moderner Softwareentwicklung
Abschnitt
„9.4
Dokumentation“
beschrieben,
wird
eine
ökonomische
Dokumentationstiefe gewählt. 12.2.2.1 Objektorientierter Entwurf Zunächst wird eine objektorientierte Analyse bzw. ein objektorientierter Entwurf der Problematik erstellt. Da der Einbau der optionalen Merkmale des Produkts in die Diagramme auf dieser Ebene einen relativ geringen Mehraufwand bedeutet, andererseits jedoch die Integration der späteren Merkmale erleichtert, sind die Klassen, Attribute und Methoden dieser Inhalte bereits im Diagramm enthalten (siehe Abbildung 23). Da der Fokus in diesem Schritt auf den verbindlichen Merkmalen liegt, ist eine Änderung des Diagramms im Bezug auf die optionalen Programmeigenschaften in den nächsten Iterationen, die diese realisieren, nicht ausgeschlossen.
Seite 87
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 23 - Objektorientierter Entwurf der Klassen f端r die verbindlichen und optionalen Inhalte
12.2.2.2 Datenhaltung Seite 88
Methoden des Projektmanagements in moderner Softwareentwicklung
Video- und Audioeinträge werden per Streaming über eine C#-Klasse an den Client übertragen. Die Ablage der Quelldateien im Dateisystem des Servers stellte sich in der Praxis gegenüber der Speicherung als BLOB (Binary Large Object) in der Datenbank als
günstiger
heraus.
Daher
werden
lediglich
die
Texteinträge
und
alle
Verwaltungsinformationen der Einträge in einer relationalen Datenbank gespeichert (siehe Abbildung 24).
Abbildung 24 - ER-Diagramm der relationalen SQL-Datenbank
Sämtliche Medien, wie Videos, Bilder oder Audiodateien, werden in einem eigens dafür vorgesehenen Medienordner auf dem Server abgelegt (siehe Abbildung 25). Dabei werden neue, eindeutige Namen vergeben, um Fehlern durch gleiche Benennung unterschiedlicher Dateien vorzubeugen.
Seite 89
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 25 - Ablage der Medien auf dem Server
12.2.2.3 Implementierung Die Implementierung der Fachklassen der Einträge und des Datenbankmanagers war, wie erwartet, vergleichsweise trivial. Bei der Umsetzung wurde hoher Wert auf einen gut nachvollziehbaren und „eleganten“ Code (vgl. [DIJ72]) gelegt und somit ein erhöhtes Maß an Qualität erzielt. Dazu gehören insbesondere die Einhaltung von Kodierungsrichtlinien („Coding-Guidelines“), wie sie auch in ähnlicher Form von der Firma Microsoft bei der Implementierung des .Net-Frameworks selbst angewendet werden. Dies sorgt sowohl projektintern, als auch projektübergreifend für eine einheitliche Semantik im Quellcode. Im Folgenden seien einige Beispiele dieser Coding-Guidelines genannt6: Private Methoden und Attribute werden im sog. „Pascal-Case“ benannt, d. h. der erste Buchstabe wird klein geschrieben und jedes neue Wort beginnt ohne Leerschritt mit einem großen Buchstaben. Beispiel: showFileDialog() Nicht-private Methoden und Attribute werden im sog. „Camel-Case“ benannt, d. h. dass im Gegensatz zum „Pascal-Case“ auch der erste Buchstabe groß geschrieben wird. Beispiel: ClearAllEntries()
6
Die tatsächlichen Kodierungsleitlinien können aus urheberrechtlichen Gründen nicht veröffentlicht werden. Seite 90
Methoden des Projektmanagements in moderner Softwareentwicklung
Die Benennung erfolgt auf englisch und hält sich an die objektorientierten Paradigmen, wie z. B. Substantive für Klassennamen. (vgl. [BAL05]) Nicht-private
Methoden
und
Dokumentationskommentaren
versehen
Attribute ,
die
werden
Aufschluss
über
mit Zweck,
Parameter und mögliche Ausnahmen des Feldes geben (siehe Abbildung 26). Der Code ist frei von Redundanzen, wie einen unnötigem this vor objektinternen Feldern oder unnötiger Weise verwendeten Namespaces oder using-Direktiven.
Abbildung 26 - Dokumentation im Object-Browser von Visual Studio 2005
Sämtliche
natürlichsprachlichen
Zeichenketten
wurden
einer
Lokalisierung
unterzogen. Sie wurden aus dem Quellcode entfernt und sprachneutral durch Platzhalter benannt. Auf diese Weise ergeben sich mehrere Vorteile, die der Qualität des Quelltextes nützen: Alle natürlichsprachlichen Texte des Projekts sind in einer Datei gebündelt und müssen im Falle der Bearbeitung nicht im Quelltext gesucht werden. Ein Lektorat muss ausschließlich in dieser Datei stattfinden. Die Übersetzung der Software in weitere Sprachen ist mit sehr geringem Aufwand möglich. Seite 91
Methoden des Projektmanagements in moderner Softwareentwicklung
Die Texte können leicht, z. B. durch externe Texter, bearbeitet werden. Eine besondere Herausforderung in Bezug auf die Qualität des Quelltextes, waren die besonderen Bedingungen der Web-Anwendungsentwicklung. Der Code kann hier bei der Implementierung der Programmoberfläche an zahlreichen Stellen und in den verschiedensten
Varianten
hinterlegt
werden
und
wird
zur
Laufzeit
zu
unterschiedlichen Zeitpunkten ausgeführt. Beispiele für Hinterlegungsmöglichkeiten von Quelltext für ASP.NET-Seiten und eigene Web-Steuerelemente: „Code-Behind“ Jede Oberfläche, sprich ASP.NET-Seite, hat eine Datei, in der ein zu der Seite gehörender Server-Quellcode, z. B. in C#, abgelegt werden kann. JavaScript Ein Code, der auf dem Client ausgeführt werden soll, kann in Form von JavaScript direkt in den Quellcode der ASP.NET-Seite geschrieben werden. „Code-Block“ Im Code-Behind kann jedoch auch zur Laufzeit JavaScript dynamisch einer ASP.NET-Seite hinzugefügt werden. Im Quelltext der ASP.NET-Seite selbst kann auch direkt ein Server-Quellcode hinterlegt werden. Eine Seite oder ein Web-Steuerelement kann wiederum selbst ein oder mehrere WebSteuerelemente besitzen, deren Quelltext zur Laufzeit ebenfalls hinzugefügt wird. Dies zeigt, dass im Vergleich zur klassischen Programmierung von Fenstersystemoder Dienstprogrammen der Quellcode der Oberfläche bei ASP.NET wesentlich heterogener und somit anfälliger für schlecht lesbaren Code ist. Das folgende Klassendiagramm zeigt die verwendete ASP.NET Seite („_Default“), sowie die verwendeten eigenen Web-Steuerelemente (siehe Abbildung 27).
Seite 92
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 27 - Generiertes Klassendiagramm von Pet.Webserver.Client
Seite 93
Methoden des Projektmanagements in moderner Softwareentwicklung
Die Anwendung läuft komplett auf einer einzigen physischen ASP.NET-Seite ab, die ihren Inhalt vom aktuellen Status der Anwendung des Benutzers, der sog. Session, abhängig macht. So werden zur Laufzeit dynamisch bestehende Einträge angezeigt oder Eingabefelder zum Bearbeiten zur Verfügung gestellt. Da die Anwendung auf dem Server hinterlegt ist, wird mit den meisten Benutzerinteraktionen ein Datentransfer zum Server und zurück, ein sog. „Postback“ ausgelöst, dass dem Server den neuen Status mitteilt und entsprechende Ereignisse („Events“) auslöst. In der ASP.NET-Entwicklung ist es nun wichtig, den Quelltext innerhalb der Methoden, die zu diesen Ereignissen aufgerufen werden, in der korrekten Reihenfolge zu gestalten. So ist beispielsweise zu beachten, dass die EventMethode Page_Load(…)
vor der Event-Methode SaveButton_Click(…)
und diese wiederum vor OnLoadComplete(…)
aufgerufen wird. Dies kann an der Praxis verschiedene Schwierigkeiten aufwerfen, die mit der Reihenfolge der Auslösung der Event-Methoden zusammenhängen. Am Ende der Implementierung ist die mehrmalige selbstkritische Durchsicht und Verbesserung des Quelltextes der gesamten Anwendung wesentlich. Dabei sollten neben Schwachstellen und Ungereimtheiten auch weniger elegant implementierte Quellcodeabschnitte erkannt und überarbeitet werden. 12.2.3 Abschluss der Implementierung und Freigabe Am Ende der Implementierungsphase steht eine letzte kritische Auseinandersetzung mit den o. g. Risiken und Qualitätszielen (siehe „12.1.2 Risikomanagement im Projekt“).
Seite 94
Methoden des Projektmanagements in moderner Softwareentwicklung
12.2.3.1 Unbekannte Technologie: Flash-Video-Format Das Risiko wurde erfolgreich durch eine vorgeschaltete Machbarkeitsstudie minimiert. In der Umsetzung konnte auf die Ergebnisse zurückgegriffen und somit die Lösung ohne weitere Probleme implementiert werden. 12.2.3.2 Design-Probleme: Unentdeckte Fehler durch mangelndes Feedback Sowohl das Design als auch die Programmfunktionalität wurden durch verstärkte kritische Selbstkontrollen und Tests überprüft. Jedoch kann in der Praxis
nicht
ausgeschlossen werden, eigene Fehler mehrfach zu übersehen. Dies stellt einen deutlichen Nachteil bei der Entwicklung in einem Ein-Mann-Team dar. 12.2.3.3 Qualitätsproblem: Entwicklerprägung Der Quellcode wurde durch das Ansetzen eines hohen Qualitätsmaßstabes kontrolliert. Durch die Anwendung von Richtlinien bei der Erstellung wurde ein den allgemeinen Industriestandards nahes Produkt geschaffen, dass auch von Dritten weiterentwickelt werden kann. 12.2.4 Lauffähiges Programm Die Webanwendung ist am Ende der Arbeiten lauffähig und erfüllt die im Pflichtenheft gestellten Anforderungen. Im Abschnitt „
Seite 95
Methoden des Projektmanagements in moderner Softwareentwicklung
14 Anhang B: Bildschirmfotos der Anwendungâ&#x20AC;&#x153; wird die Funktionalität des Programms veranschaulicht.
Seite 96
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL V RESÜMEE UND AUSBLICK Die vorliegende Arbeit analysierte Methoden des Projektmanagements in moderner Softwareentwicklung mit dem Ziel einen Überblick über Möglichkeiten und Wege der erfolgreichen Projektdurchführung zu geben. Es gibt eine Vielzahl von Modellen, von denen nur einige im Rahmen dieser Arbeit vorgestellt werden konnten. Die Modelle unterscheiden sich in ihrer Komplexität, ihren Rahmenbedingungen und der Fähigkeit der Anpassung an eigene Bedürfnisse. In Projekten,
die
eines
dieser
Modelle
erfolgreich
anwenden,
wird
die
Softwareentwicklung grundsätzlich disziplinierter gesteuert und so die Qualität der Software erhöht (siehe Abschnitt „8 Softwareentwicklungsprozesse“). Im praktischen Teil der Arbeit wurden die gewonnenen Erkenntnisse auf ein verhältnismäßig kleines Projekt angewandt, dass von einer Einzelperson umgesetzt wurde. Dabei zeigte sich, dass sich viele der vorgestellten Modelle nicht oder nur unzureichend mit diesen beiden Gegebenheiten vereinbaren lassen. Die behandelten Modelle sind ausschließlich für mittlere bis große Projekte mit einigen bis vielen Projektmitarbeitern ausgelegt. Daraus folgert sich die Forderung nach Modellen, die
besonders
kleine
Projekte
mit
nur
einem
oder
wenigen
Projektmitarbeitern besser unterstützen. Die praktische Arbeit hat zudem gezeigt, dass eine Herausforderung darstellt, ohne entsprechende Richt- oder Leitlinien die nötige Selbstdisziplin aufrecht zu erhalten, um nicht in den Stil des klassischen Code and Fix (siehe Abschnitt „8.1.1 Code and Fix“) zu verfallen. Diese Disziplin kann jedoch nur von erfahrenen Entwicklern erwartet werden. Dieser Umstand wird verschlimmert, sobald der Entwickler auch zugleich Projektleiter ist, also selbst die ausführende, kontrollierende und steuernde Instanz im Projekt darstellt, da eigene Fehler grundsätzlich leichter ignoriert, übersehen oder unterschätzt werden können. Daher kann abschließend die Empfehlung ausgesprochen werden, auch in kleinen Projekten,
die
Kontrollinstanz
von
nur einer
einzuführen
Person und
durchgeführt
sich
Kodierungsrichtlinien) aufzuerlegen. Seite 97
selbst
werden,
Richtlinien
eine (wie
externe z.
B.
Methoden des Projektmanagements in moderner Softwareentwicklung
Solche Kontrollinstanzen können Kollegen oder (wie in dieser Arbeit) Prüfer sein, denen der Quelltext präsentiert wird oder auch fremde Entwickler, die die Implementierung z. B. im Internet diskutieren.
Seite 98
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL VI ABKÜRZUNGSVERZEICHNIS .NET
.NET bezeichnet eine von der Firma Microsoft entwickelte Technologie, deren Kern mehrere Programmiersprachen bilden. Zu der .NET-Technologie gehören neben
einer
umfangreichen
Klassenbibliothek
eines
Vielzahl
von
Softwarewerkzeugen. ASP.NET
Alle Komponenten der .NET-Technologie, die sich mit der Entwicklung von Web-Applikationen
befassen,
werden
unter
dem
Begriff
ASP.NET
zusammengefasst. ASPX
Die Standard-Dateiendung von mit ASP.NET erstellen Seiten lautet „.aspx“.
C#
C# (gesprochen „C Sharp“) ist eine der von .NET zur Verfügung gestellten Programmiersprachen.
CDP
Der Cleanroom Development Process wird mit CDP abgekürzt (siehe Abschnitt „8.2.5 Cleanroom Development Process“).
HTML
Die Abkürzung HTML steht für „Hypertext Markup Language“ und ist als Auszeichnungssprache die Grundlage der Darstellung von Internetseiten.
IIS 7
IIS7 ist die Abkürzung für den Web-Server „Internet Information Server 7“ der Firma Microsoft.
MDA
Die „Model Driven Architecture“ wird mit MDA abgekürzt (siehe Abschnitt „8.1.5 Model Driven Architecture“)
MMS
Die Abkürzung MMS steht für „Multimedia Message Service“. Als MMS wird eine multimediale Nachricht von bzw. an Mobiltelefone bezeichnet, die Bilder, Videos, Töne und Text enthalten kann. Moderne Handys bieten meist die Möglichkeit MMS zu versenden und zu empfangen.
Pet
Abkürzung für das „plattformübergreifende elektronische Tagebuch“ (siehe Abschnitt „Teil IV Entwicklung eines plattformübergreifenden elektronischen Tagebuchs“).
Seite 99
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL VII ANHÄNGE 13 ANHANG A: PFLICHTENHEFT DES PLATTFORMÜBERGREIFENDEN ELEKTRONISCHEN TAGEBUCHS Das folgende Pflichtenheft beschreibt die Anforderungen und Rahmenbedingungen des Produkts und ist strukturell an den Aufbau eines Pflichtenhefts nach Balzert angelehnt (vgl. [BAL05]).
1 3 .1 Zi el be sti m m ung Ziel ist die Erstellung der ersten lauffähigen Version eines elektronischen Tagebuchs für den privaten Gebrauch. Dieses elektronische Tagebuch soll verschiedene Hardund Softwareumgebungen abdecken und neben den Texten eines klassischen Tagebuchs auch Multimediaelemente wie Videos, Tondokumente oder Bilder plattformübergreifend verfügbar machen. In seiner ersten Version, auf die sich das vorliegende Pflichtenheft bezieht, soll das plattformübergreifende elektronische Tagebuch bereits die zur Führung eines multimedialen Tagebuchs wesentlichen Merkmale aufweisen. Es handelt sich um eine Individualsoftware. Das Tagebuch soll nach der ersten Version sukzessive weiter entwickelt werden können, um in folgenden Versionen die Funktionalität weiter zu erhöhen. Ein Einsatz als frei verfügbare Standardsoftware in der Zukunft wird nicht ausgeschlossen. 13.1.1 Verbindliche Merkmale Die folgenden Merkmale sind im Produkt enthalten: Intuitive Bedienbarkeit, ansprechende Benutzungsoberfläche Pflege und Ansicht der Tagebuchinhalte Pflege und Ansicht der verschiedenen multimedialen Inhalten im Tagebuch Streaming von Multimediainhalten7 Navigation für die Ansicht der Tagebuchinhalte, inkl. Kalenderdarstellung Unterstützung durch Automatismen in der Pflege der Inhalte Möglichkeit der plattformübergreifenden Nutzung auf verschiedenen Systemen 7
d. h. Wiedergabe des Multimediainhalts bereits während (vor Beendigung) des Empfangs. Seite 100
Methoden des Projektmanagements in moderner Softwareentwicklung
13.1.2 Optionale Merkmale Die folgenden Merkmale sollen im Produkt enthalten sein, können jedoch auch in einer späteren Version folgen: Passwortschutz für den Einzelbenutzer (Singleuser) Veröffentlichung von multimedialen Inhalten über Mobiltelefone Export der Inhalte auf einen Datenträger 13.1.3 Abgrenzungskriterien Die folgenden Merkmale sind nicht Bestandteil des Produkts: Mehrbenutzer- bzw. Mandantenfähigkeit ist zurzeit nicht vorgesehen; Die Anwendung ist für den Singleuserbetrieb ausgelegt. Eine Veröffentlichung der Tagebucheinträge, wie in einem Weblog (BLOG) ist nicht vorgesehen. Nicht jede Plattform wird unterstützt. Insbesondere an den Serverrechner können besondere Anforderungen gestellt werden. Mobiltelefone können nicht zur Anzeige des Tagebuchs genutzt werden. Die Formatierung der Texteinträge ist nicht vorgesehen. Ein automatisiertes Installationsprogramm ist zurzeit nicht vorgesehen.
1 3 .2 E i nsa t z 13.2.1 Anwendungsbereich Das Produkt wird im Heimbereich als persönliches Tagebuch eingesetzt. 13.2.2 Zielgruppen Das Produkt richtet sich an einen oder wenige einzelne Privatanwender, die es eigenständig einrichten und betreiben. 13.2.3 Betriebsbedingungen Der Betrieb der Anwendung sollte nach der Installation keine regelmäßigen Wartungsarbeiten erfordern.
Seite 101
Methoden des Projektmanagements in moderner Softwareentwicklung
1 3 .3 Um ge bung sa nf or de r ung e n Die Anforderungen an die Umgebung sind in die drei Kategorien „Software“, „Hardware“ und „organisatorisches“ unterteilt. Die Kategorien können sich in die drei folgenden Unterkategorien gliedern (siehe Tabelle 8).
Unterkategorie Entwicklungsrechner Clientrechner Serverrechner
Bedeutung Anforderungen an die Umgebung, um das Produkt herzustellen Anforderungen an die Umgebung des Rechners, den der Benutzer zur Pflege und Ansicht der Tagebucheinträge nutzt Umgebungsanforderungen an den Serverrechner, der die Tagebuchdaten verwaltet
Tabelle 8 - Gliederung der Umgebungsanforderungen
13.3.1 Software Die folgenden Aufstellungen geben Aufschluss über die benötigte Software: 13.3.1.1 Entwicklungsrechner Microsoft Visual Studio 2005 (Express oder Team Suite) Microsoft SQL Server 2005 Express Microsoft Project FFMPEG Komponente (Build 2007-02-12) (vgl. [WWW05]) FLVTool Komponente 4.1 (vgl. [WWW06]) Flash Media Player 3.5 13.3.1.2 Clientrechner Microsoft Windows, Linux mit X-Window-System, Apple MacOS oder eingebettetes Betriebssystem (z. B. Nintendo Wii) Jeder „HTML 4.01“-fähige Internetbrowser mit Adobe Flash Player 8 oder höher und JavaScript 1.5 oder höher8 13.3.1.3 Serverrechner Microsoft Windows XP, 2003 Server oder Vista Microsoft Internet Information Server 7 8
Als Beispiele sind die aktuellen Versionen von Internet Explorer, Opera oder Mozilla-Firefox zu nennen. Seite 102
Methoden des Projektmanagements in moderner Softwareentwicklung
Microsoft SQL Server 2005 Express Microsoft .NET Framework 2.0 13.3.2 Hardware Hardwareseitig sind auf den jeweiligen Rechnern die folgenden Voraussetzungen empfohlen9: 13.3.2.1 Entwicklungs- und Serverrechner Prozessor Athlon XP 1900+ oder höher 512 MB Arbeitsspeicher oder mehr 10-MBit-Lan
oder
Breitbandverbindung
mit
einem
Upstream
(Sendegeschwindigkeit) von mindestens 512 Kbit/s 13.3.2.2 Clientrechner PC mit einem Prozessor Athlon XP 1900+ oder höher und 512 MB Arbeitsspeicher oder mehr Apple Macintosh iMac G5 oder höher Nintendo Wii MMS-fähiges Mobiltelefon10 jeweils eine 10-MBit-Lan oder Breitbandverbindung 13.3.3 Organisatorisches Die freie Verfügbarkeit der Lizenzen der für die Entwicklung eingesetzten Software muss geprüft werden.
1 3 .4 F unk ti o na l i tä t 13.4.1 Verbindliche Merkmale 13.4.1.1 Pflege und Ansicht der Inhalte Mittels des Internetbrowsers wird die grafische Benutzungsoberfläche des Clients (siehe Abschnitt „13.7 Grafische Benutzungsoberfläche“) aufgerufen.
9
Ein Einsatz mit geringerer Ausstattung kann die Performanz des Produkts negativ beeinflussen. MMS steht für Multimedia Messaging Service, d. h. die Versendung von Multimediainhalt mit einem Mobiltelefon. Hier: Mobiltelefon, das Multimediainhalte an E-Mail-Adressen senden kann, siehe Abschnitt „Teil VI Abkürzungsverzeichnis“. 10
Seite 103
Methoden des Projektmanagements in moderner Softwareentwicklung
Es gibt vier verschiedene Arten von Einträgen im plattformübergreifenden elektronischen Tagebuch. Texteinträge bestehen aus einer oder mehreren Zeilen natürlichsprachlichen
Inhalts.
Bildeinträge
beinhalten
Fotos
oder
Grafiken.
Multimediaeinträge lassen sich in Audio- und Videoeinträge untergliedern, die akustische bzw. audio-visuelle Inhalte tragen. Bild- und Multimediaeinträge werden nötigenfalls in eine adäquate Größe verkleinert. Jedem Eintrag ist ein Datum des Eintragstages zugewiesen. Ein Eintragstag kann mehrere Eintragungen enthalten. Über einen Link können Multimediainhalte im Vollbildmodus und Bildinhalte in Originalgröße dargestellt werden. Nach dem Start des Clients werden sofort die bereits verfassten Tagebucheinträge des letzten Eintragstages angezeigt. Dabei werden pro Seite alle Einträge nur eines Tages angezeigt. Über entsprechende Navigationsschaltflächen oder einen Kalender kann tageweise rückwärts und vorwärts navigiert werden. Bei der Verwendung der Navigationsschaltflächen werden Tage, an denen keine Eintragungen stattgefunden haben, übersprungen. Jeder Eintrag hat je eine Schaltfläche zum Bearbeiten oder Löschen des Inhalts. Das Löschen wird vor der Durchführung durch eine Sicherheitsabfrage bestätigt. Eine weitere Schaltfläche erlaubt das Neuanlegen eines Eintrags. Dabei muss zunächst gewählt werden, ob es sich um einen Text-, Bild- oder Multimediaeintrag handelt. Für die Bearbeitung oder Neuanlage eines Eintrags wird eine Eingabemaske angezeigt unter der sich zwei Schaltflächen zum Speichern und zum Abbrechen befinden. Die Eingabemaske für Texteinträge beinhaltet ein Textfeld in dem der Inhalt editiert werden kann. Die Eingabemaske für Bild- und Multimediaeinträge beinhalten einen Dateiauswahldialog um ein (neues) Element festzulegen. 13.4.1.2 Plattformübergreifende Nutzung Die Ansicht, jedoch auch die Erstellung und Bearbeitung von Texteinträgen soll mit den o. g. Browsern auf verschiedenen Plattformen möglich sein.
Seite 104
Methoden des Projektmanagements in moderner Softwareentwicklung
13.4.2 Optionale Merkmale 13.4.2.1 Passwortschutz für den Einzelbenutzer (Singleuser) Durch ein Passwort, das der Benutzer beim Start des Client eingeben muss, werden seine Einträge vor Betrachtung und Veränderung durch Dritte geschützt. Über eine Schaltfläche kann jederzeit eine Konfigurationsseite zur Änderung des Passwortes aufgerufen werden. 13.4.2.2 Veröffentlichung von multimedialen Inhalten über Mobiltelefone Die Anwendung kann für die Veröffentlichung von Bildern und multimedialen Inhalten konfiguriert werden. Dazu werden auf der Konfigurationsseite die Zugangsdaten eines POP3-Servers (Posteingangsserver für E-Mails) und ein Codewort angegeben. Wird von einem MMS-fähigen Mobiltelefon per MMS eine E-Mail mit einem Bild oder Multimediaelement an die konfigurierte Adresse gesendet, wird es entweder automatisch oder per Mausklick mit dem Datum des Versands in das Tagebuch aufgenommen. 13.4.2.3 Export der Inhalte auf einen Datenträger Über eine Export-Schaltfläche kann das gesamte elektronische Tagebuch im HTMLFormat
in
ein
frei
wählbares
Verzeichnis
exportiert
werden.
Bilder
und
Multimediainhalte werden dabei ebenfalls exportiert.
1 3 . 5 Da te n Die Anwendung sollte durchschnittlich ca. einen Texteintrag und einen Bild- oder Multimediaeintrag von ca. 250 kB pro Tag über mindestens drei Jahre Verarbeiten können.
Dies
bedeutet
insgesamt
etwa
2190
Einträge
plus
274
MB
Festplattennettonutzung.
1 3 . 6 P er for m a nz Sämtliche Funktionen und Einträge sollen innerhalb weniger Sekunden verfügbar sein. Durch den Einsatz von Hochgeschwindigkeitsnetzwerken und einem einzigen Benutzer der Anwendung ist die Steigerung der Performanz weniger bedeutsam.
Seite 105
Methoden des Projektmanagements in moderner Softwareentwicklung
1 3 . 7 Gr a fi s che Be nut zu ng s o be r fl 채 che Die folgenden Bilder zeigen den groben Aufbau einiger Anzeigeseiten und Eingabemasken der Anwendung. Dem Produkt dienen diese Abbildungen (siehe Abbildung 28 bis Abbildung 30) als grober Leitfaden:
Seite 106
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 28 - Ansicht der Tagebucheintr채ge
Seite 107
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 29 - Eingabemaske f체r Texteintr채ge
Seite 108
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 30 - Eingabemaske für Bilder- und Multimediaeinträge
1 3 . 8 Q ua l i tä ts zi e l e Die Änderbarkeit und Wartbarkeit des Produkts spielt eine entscheidende Rolle für die Weiterentwicklung folgender Programmversionen. Die Benutzerfreundlichkeit der Anwendung stellt ein weiteres Qualitätsziel dar, da sie die Akzeptanz11 deutlich erhöhen kann. Da das Erzeugnis im Produktiveinsatz sensible Daten enthält, muss es ausreichend stabil sein, um einen anwendungsbedingten Datenverlust zu verhindern.
11
Gemeint ist der Wille des Anwenders, das Produkt tatsächlich kontinuierlich zu benutzen. Seite 109
Methoden des Projektmanagements in moderner Softwareentwicklung
14 ANHANG B: BILDSCHIRMFOTOS
DER
ANWENDUNG
Zusätzlich zu den in diesem Kapitel abgebildeten Bildschirmfotos befinden sich auf der beiliegenden CD-ROM Videos, die das Programm zur Laufzeit zeigen.
1 4 .1 An ze i g e de r E i nträ ge Die folgenden Abbildungen (siehe Abbildung 31 und Abbildung 32) zeigen das plattformübergreifende elektronische Tagebuch, während Einträge dargestellt werden.
Abbildung 31 - Anzeige der Einträge vom 01.01.2008
Seite 110
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 32 - Anzeige der Eintr채ge vom 02.01.2008
Seite 111
Methoden des Projektmanagements in moderner Softwareentwicklung
1 4 .2 N e ua nl ege n ei ne s Au di o ei ntr a gs Um einen neuen Audioeintrag anzulegen, wird die Schaltfläche „Neu“ betätigt, bevor „Neuer Audioeintrag“ gewählt wird (siehe Abbildung 33).
Abbildung 33 - Neuanlegen eines Audioeintrags
In der daraufhin erscheinenden Ansicht (siehe Abbildung 34) kann eine Audiodatei von der Festplatte ausgewählt werden. Das Datum des Eintrags, sowie die Uhrzeit können dabei frei gewählt werden. Mit dem Betätigen der Schaltfläche „Speichern“ wird der Audioeintrag dem Tagebuch hinzugefügt.
Seite 112
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 34 - Auswahl der Audiodatei
Seite 113
Methoden des Projektmanagements in moderner Softwareentwicklung
1 4 .3 E di ti er e n eine s Te xt ei ntr a gs Die Schaltfläche „Bearbeiten“ bietet die Möglichkeit, den Texteintrag zu editieren (siehe Abbildung 35).
Abbildung 35 - Auswahl eines Texteintrages zur Bearbeitung
In der folgenden Ansicht (siehe Abbildung 36) kann der Text sowie der Zeitpunkt des Eintrages beliebig geändert werden. Mit dem Betätigen der Schaltfläche „Speichern“ wird der Texteintrag dem Tagebuch hinzugefügt.
Seite 114
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 36 - Bearbeiten eines Texteintrags
Seite 115
Methoden des Projektmanagements in moderner Softwareentwicklung
1 4 . 4 E di ti er e n eine s V i de o ei ntr a gs Die Schaltfläche „Bearbeiten“ bietet die Möglichkeit, den Videoeintrag zu editieren (siehe Abbildung 37).
Abbildung 37 - Auswahl eines Videoeintrages zur Bearbeitung
In der folgenden Ansicht (siehe Abbildung 38) kann die Datei ersetzt, oder der Zeitpunkt des Eintrages verändert werden. Mit dem Betätigen der Schaltfläche „Speichern“ wird der Videoeintrag dem Tagebuch hinzugefügt.
Seite 116
Methoden des Projektmanagements in moderner Softwareentwicklung
Abbildung 38 - Bearbeiten eines Videoeintrags
Seite 117
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL VIII QUELLENVERZEICHNIS 15 LITERATUR [AND04]
Andressen Andreas, Komponentenbasierte Softwareentwicklung , Carl Hanser Verlag, 2004
[BAL05]
Belzert Heide, Lehrbuch der Objektmodellierung, Elsevier-Spektrum Akademischer Verlag, 2005
[ECK05]
Eckert Claudia, IT-Sicherheit, Oldenbourg Wissenschaftsverlag, 2005
[COC03a]
Cockburn Alistair, Agile Software-Entwicklung, mitp-Verlag, 2003
[COC03b] Cockburn Alistair, Use Cases effektiv erstellen , mitp-Verlag, 2003 [DEM99]
DeMarco Tom, Lister Timothy, Peopleware, Dorset House Publishing, 1999
[DIJ65]
Dijkstra
Edsger Wybe, Programming Considered as a Human
Activity, 1965 [DIJ72]
Dijkstra Edsger Wybe, The humble programmer, Cummun.ACM 15, 1972
[DOC02]
Doctorow Cory et al., Essential Blogging, O'Reilly, 2002
[EVJ06]
Evjen Bill et al., Professional ASP.NET 2.0, Wiley Publishing, 2006
[FEY04]
Feyhl
Achim
W.,
Management
und
Controlling
von
Softwareprojekten, Gabler Verlag, 2004 [LUD07]
Ludewig Jochen, Lichter Horst, Software Engineering, dpunkt.verlag, 2007
[MAC05]
MacDonald Matthew, Beginning ASP.NET 2.0 in C#, APRESS - Springer Verlag, 2005
[OES01]
Oestereich Bernd (Hrsg.) et al., Erfolgreich mit Objekt-Orientierung, Oldenbourg Wissenschaftsverlag, 2001
[PLA83]
Platz Gerhard, Methoden der Software-Entwicklung, Carl Hanser Verlag, 1983 Seite 118
Methoden des Projektmanagements in moderner Softwareentwicklung
[ZAH05]
Zahrnt Christoph, Richtiges Vorgehen bei Verträgen über IT Leistungen, dpunkt.verlag, 2005
[ZEP04]
Zeppenfeld Klaus, Objektorientierte Programmiersprachen, ElsevierSpektrum Akademischer Verlag, 2004
[ZEP06]
Zeppenfeld Klaus, Generative Software-Entwicklung mit der MDA, Elsevier-Spektrum Akademischer Verlag, 2006
16 INTERNET-QUELLEN Sämtliche Internet-Quellen beziehen sich auf den Stand vom 03.06.2007. [WWW01] http://www.v-modell-xt.de [WWW02] http://www.cocoo.de [WWW03] http://hood-group.com [WWW04] http://www.omg.org/mda [WWW05] http://ffmpeg.mplayerhq.hu [WWW06] http://inlet-media.de/flvtool2 [GNU12]
Diese Abbildung wurde unter der GNU-Lizenz für freie Dokumentation (http://www.gnu.org/copyleft/fdl.html) veröffentlicht. Es ist erlaubt, die Datei unter den Bedingungen der GNU-Lizenz für freie Dokumentation, Version 1.2 oder einer späteren Version, veröffentlicht von der Free Software
Foundation,
zu
kopieren,
zu
verbreiten
und/oder
zu
modifizieren. Es gibt keine unveränderlichen Abschnitte, keinen vorderen Umschlagtext und keinen hinteren Umschlagtext.
Seite 119
Methoden des Projektmanagements in moderner Softwareentwicklung
TEIL IX ERKLÄRUNG Dortmund, den 3. Juni 2007 Hiermit erkläre ich, dass die Thesis von mir selbstständig verfasst und angefertigt wurde, nur die angegebenen Quellen und Hilfsmittel benutzt wurden und Zitate kenntlich gemacht wurden.
Florian Alexander Michalik
Seite 120