Softwareprozessmodelle jung@cncgmbh.eu Definition Software Engineering The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (IEEE) 1
Warum Software-Engineering? Die Entwicklung Informationssystemen ist komplex, teuer und mit vielen Risiken behaftet. Systementwicklungen kosten häufig mehr und dauern länger als geplant. Ca. 1/3 aller komplexen Systementwicklungen werden vor Fertigstellung abgebrochen. Viele Systeme funktionieren nicht wie geplant oder werden an den Anforderungen vorbei entwickelt. Beispiele Denver International Airport wurde 18 Monate verspätet eröffnet jeder Tag Verzögerung verursachte ca. eine Mio. US $ Verlust Grund: fehlerhafte Software zur Gepäcktransportsteuerung Berliner Polizei Informationssystem System an den Anforderungen der Polizisten vorbei entwickelt. Maut-System in Deutschland Die verspätete Inbetriebnahme verursachte Einnahmeverluste nahezu in Milliardenhöhe 2
Gründe für das Scheitern von IT- Projekten 1. Nicht ausreichende Präzision der Anforderungen 2. Häufige Änderungen der Anforderungen 3. Entwicklung der falschen Funktionalität 4. Unrealistische Zeit- und Kostenpläne 5. Probleme innerhalb des Projektteams: organisatorische Defizite mangelnde Qualifikation Ausscheiden wichtiger Teammitglieder 6. Qualitätsmängel bei extern vergebenen Aufgaben 7. Verwendung der falschen Technologien 8. Unpassende Benutzerschnittstelle Komponenten des Software Engineerings 3
Methoden der Software-Entwicklung Software-Entwicklungsprozessmodelle dienen zur Steuerung der Softwareentwicklung von der Konzeption bis zum Einsatz im Echtbetrieb Wartung der Software ebenfalls Gegenstand der Betrachtung spalten Entwicklungsprozess in verschiedene Phasen auf, die einmal oder mehrfach durchlaufen werden 4
Das Wasserfallmodell Requirements Engineering Softwareentwurf Programmierung Komponententest Integration Systemtest Installation Einführung Wartung Das modifizierte Wasserfallmodell Requirements Engineering Softwareentwurf Programmierung Komponententest Integration Systemtest Installation Einführung Wartung 5
V-Modell Zustände des V-Modells XT 6
Explorative Programmierung Grobspezifikation Realisierung eines Systems Anwendung des Systems System adäquat? Einsatz des Systems Extreme Programming (XP) 7
Spiralmodell nach Boehm (1988) RUP 8
Verteilung des Arbeitsaufwands I Verteilung des Arbeitsaufwands II 9
Kostenverteilung 1997 hatte Microsoft über eine halbe Milliarde US-Dollar Telefonkosten, um Anfragen von Usern zu beantworten, die Probleme mit der Software hatten. Das war mehr Geld, als für die Entwicklung dieser Software ausgegeben worden ist. Analyse- und Designmethoden Analyse- & Designmethoden Strukturierte, traditionelle Methoden Objektorientierte Methoden Funktionsorientierte Methoden Datenorientierte Methoden 20 10
Zuordnung Methoden Phasen Requirements Engineering EPK Datenflussplan Datenflussdiagramm Fachlicher Entwurf Entscheidungstabelle Data Dictionary Softwareentwurf Datenflussplan Datenflussdiagramm ERM Programmierung Struktogramm PAP Pseudocode UML UML UML UML 11