SE1 20061115 Vorgehensmodelle - Software Engineering Kassel
SE1 20061115 Vorgehensmodelle - Software Engineering Kassel
SE1 20061115 Vorgehensmodelle - Software Engineering Kassel
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
Einführung <strong>Software</strong> <strong>Engineering</strong><br />
! Motivation<br />
! <strong>Software</strong>technik<br />
! Beispiel<br />
! Kernaussagen des PMs und der QS<br />
! <strong>Vorgehensmodelle</strong><br />
– Wasserfall-Modell<br />
– V-Modell<br />
– Rational Unified Process<br />
! Requirements <strong>Engineering</strong><br />
! Um 2000:<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Motivation<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
1<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
– Leistungsfähige PCs und Server, 1GB Hauptspeicher, 1GHz CPU, 1TB<br />
Platten, … (Faktor 10^6 in 30 Jahren)<br />
– Multi-User, Multi-Tasking, LANs, Internet, GUIs, …<br />
– Eiffel, Java, …<br />
– Programmgrößen bis 1.000.000 LOC klappt<br />
– 10.000.000 – 30.000.000 LOC 50/50 Chance<br />
– mehr als 50.000.000 LOC nur im Glücksfall<br />
– der „Markt“ will Programme > 100.000.000 LOC (Faktor 10^3 in 30 Jahren)<br />
! Voraussichtlich wird sich die zu beherrschende Problemgröße alle<br />
3 Jahre verdoppeln<br />
! Bemerkung: Die „Produktivität“ der Entwickler ist nicht wesentlich<br />
gewachsen: 50 – 100 LOC pro Tag<br />
3<br />
Leif Geiger<br />
Es begab sich:<br />
! Ende der 60er Jahre<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Motivation<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
– zentrale (Stickstoff gekühlte) Großrechner, 3kB Hauptspeicher, 1kHz CPU,<br />
Magnetbänder, …<br />
– closed-shop Betrieb mit Lochkarten, evtl. ASCII Terminals<br />
– Assembler, Fortran, Cobal, C, …<br />
– Programmgrößen bis 1000 LOC (Lines of Code) klappt<br />
– 10.000 – 30.000 LOC 50/50 Chance<br />
– mehr als 50.000 LOC klappt nur im Glücksfall<br />
– der „Markt“ wollte Programme > 100.000 LOC<br />
– einige große Firmen hatten gerade einige große Projekte in den Sand gesetzt<br />
– keiner wusste wie man so was macht<br />
! 1972 Konferenz in Garmischpartenkirchen ruft „<strong>Software</strong>krise“ aus<br />
! Idee: Ingeniersmäßige <strong>Software</strong>entwicklung ! <strong>Software</strong>technik<br />
Leif Geiger<br />
! Nach Laprie 1999:<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Motivation<br />
– 1/3 der Projekte wird zur Zufriedenheit der<br />
Kunden und des Anbieters durchgeführt<br />
2<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
– 1/3 der Projekte überzieht Zeit und Kosten, liefert<br />
nur Teilfunktionalität, Programme instabil<br />
– 1/3 der Projekte scheitert ganz<br />
4
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
Lösungsansätze der <strong>Software</strong>technik<br />
! bessere <strong>Software</strong>-Ingenieure<br />
! bessere Programmiersprachen<br />
! Objektorientierte Entwurfsmethoden<br />
! Bessere Werkzeuge<br />
! Formale Methoden<br />
! Wiederverwendung<br />
! Reengineering<br />
! besseres Projektmanagement ! Prozessmodelle,<br />
<strong>Vorgehensmodelle</strong>, Konfigurationsmanagement<br />
! aber: „No silver bullet“ F.Brooks, IEEE Computer 1987<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Fortsetzung Beispiel<br />
! Die Firma führt eine explizite Abschlusskontrolle aller Geräte vor<br />
Auslieferung ein.<br />
! Eine eigene Testabteilung prüft alle Geräte und führt gegebenenfalls<br />
Reparaturen durch.<br />
! Bei 14 % der Geräte ersetzt die neue Testabteilung kaputte Birnen.<br />
! Die Fehlerrate bei Kunden sinkt auf 2%.<br />
! Die Kundendienstabteilung kann um 87,5 % verkleinert werden.<br />
! Alle sind glücklich und zufrieden.<br />
! Nur der Absatz geht immer noch zurück.<br />
! Die Projektoren kosten ungefähr 50 % mehr als vergleichbare Geräte<br />
der Konkurrenz<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
5<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
! Man wirbt zu horrenden Kosten einen Mitarbeiter der Konkurrenz ab und<br />
stellt fest, dass die eigene Test- und Reparaturabteilung 33 % der<br />
Mitarbeiter beschäftigt, bei der Konkurrenz sind es nur 5 %.<br />
! Die meiste Zeit geht für’s Birnenwechseln drauf.<br />
7<br />
Leif Geiger<br />
Ein an den Haaren herbeigezogenes<br />
Beispiel aus der Fertigungstechnik<br />
(siehe [Klaus Pohl, erstes Kapitel])<br />
! Eine Firma stellt Diaprojektoren her.<br />
! Wenn ein Kunde an einem Gerät einen Defekt feststellt,<br />
dann kann er das Gerät innerhalb von 14 Tagen<br />
anstandslos umtauschen oder reparieren lassen.<br />
! Die Firma ist für Kulanz und guten Kundendienst berühmt.<br />
! Alle sind glücklich und zufrieden.<br />
! Eines Tages stellt das Controlling fest, dass der Absatz<br />
zurückgeht.<br />
! Die Projektoren kosten ungefähr das Doppelte wie<br />
vergleichbare Geräte der Konkurrenz.<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
! Man stellt fest, dass fast die Hälfte der Kosten vom<br />
Kundendienst verursacht werden. Der häufigste Defekt sind<br />
kaputte Birnen bei 16 % der neu ausgelieferten Geräte. Ein<br />
Techniker fährt zum Kunden und ersetzt die Birne.<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Fortsetzung Beispiel<br />
! Die Firma überprüft den Mitarbeiter, der die Birnen in der Fertigung<br />
einbaut.<br />
! Direkt nach dem Einbau sind nur 1 % der Birnen defekt.<br />
6<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
! Weitere Überprüfungen ergeben, dass die Birnen auf dem Weg von der<br />
Vormontage zur Gehäusemontage kaputt gehen:<br />
! Die Stufe im Förderband wird ausgebaut.<br />
! Die Fehlerrate bei der Testabteilung sinkt auf 1 %.<br />
! Die Testabteilung kann auf 7 % ihrer Größe verkleinert werden.<br />
! Alle sind glücklich und zufrieden, nur . . .<br />
8
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
Kernaussagen des Projektmanagements<br />
und der Qualitätssicherung<br />
! Wartung und Fehlerbehebung sind die<br />
Hauptkostenpunkte<br />
! Qualitätsverbesserung senkt die Kosten<br />
! Qualitätsverbesserung muss am<br />
Herstellungsprozess ansetzen<br />
(! Qualitätssicherung und Projektmanagement<br />
sind eigentlich das gleiche)<br />
! Grundlagen für die Prozessverbesserung sind:<br />
– Messungen, Metriken, Controlling, Prüfungen, . . .<br />
– klar definierte Prozesse => projektübergreifende<br />
Vergleichbarkeit (formale Prozessdefinition)<br />
– Planung und Überwachung der Prozessausführung<br />
– Management Commitment<br />
– …<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
V-Modell<br />
! Submodule<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
9<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
– Projektmanagement<br />
– Qualitätssicherung<br />
– <strong>Software</strong>entwicklung<br />
– Konfigurations-<br />
Management<br />
! definiert Rollen<br />
! beschreibt Aktivitäten<br />
und Produkte<br />
! definiert Werkzeuge<br />
11<br />
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
! OO <strong>Software</strong>entwicklung<br />
– inkrementell<br />
– prototypisch<br />
– iterativ<br />
– Use-Cases driven<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Wasserfallmodell<br />
SE im V-Modell<br />
– Architekturbeschreibung durch Klassendiagramme<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
10<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
12
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
! objektorientiert<br />
Der Unified Process [JBR]<br />
! benutzt die UML<br />
! Use-Case driven<br />
! inkrementell und iterativ<br />
! Architektur basiert<br />
! Phasen<br />
– Konzeptionsphase (englisch Inception)<br />
– Entwurfsphase (englisch Elaboration)<br />
– Konstruktionsphase (englisch Construction)<br />
– Übergabephase (englisch Transition)<br />
! Arbeitsschritte ähnlich dem Wasserfallmodell<br />
! beschreibt Rollen / Aktivitäten / Dokumente / Produkte<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Requirements Capturing<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
13<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
15<br />
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
Der Unified Process<br />
Die Produkte des Requirements Capturing<br />
! Domain Model<br />
– "Klassendiagramme" der Subject-, Usage- und System-World<br />
! oder besser Business Model<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
14<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
– vollständige Modellierung (Klassendiagramme plus<br />
Verhaltensspezifikationen) der Subject-, Usage- und System-World<br />
! Feature List<br />
– funktionale Anforderungen (meist textuell):<br />
– Was soll die neue <strong>Software</strong> in unseren Business Abläufen<br />
automatisieren?<br />
! Supplementary Requirements<br />
– nichtfunktionale Anforderungen<br />
– Antwortzeiten, Verfügbarkeit, Resourcenbedarf, . . .<br />
16
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Requirements Refinement<br />
Die Probleme des Requirements<br />
<strong>Engineering</strong><br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
17<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
! Der Kunde weiß im allgemeinen nicht was er<br />
will<br />
! "Den Kunden" gibt es eigentlich nicht,<br />
unterschiedliche Interessensgruppen auf<br />
Kundenseite<br />
! Business Model meist nicht vorhanden<br />
! Einzelne Kundenvertreter kennen oft nur<br />
Ausschnitt des eigenen Business Models<br />
! Das Business Model ist ein "Moving Target"<br />
19<br />
Leif Geiger<br />
Die vier Welten des Requirements<br />
<strong>Engineering</strong><br />
! Subject World<br />
– Modell der Anwendungsdomäne<br />
– die Daten / Vorgänge die verwaltet / bearbeitet werden sollen<br />
! Usage World<br />
– Wer sind die Anwender des geplanten <strong>Software</strong>systems<br />
– Was sind die Aufgaben, die die Anwender bearbeiten<br />
! System World:<br />
– bestehende <strong>Software</strong> und ihre Doku und ihre Entwicklungsgeschichte<br />
! Development World:<br />
– "Entwicklunswelt". Hier wird die neue <strong>Software</strong> entwickelt<br />
– fertige Produkte wandern aus der Entwicklungswelt in die Systemwelt<br />
Aufgabe des Requirements <strong>Engineering</strong> ist die präzise Modellierung<br />
aller 4 Welten.<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Leif Geiger<br />
! Berater / Consultants vor<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
Lösungsansätze<br />
– Experten in der Erstellung von Business Models<br />
– das alleine ist früher oft gescheitert<br />
! Vertreter vor<br />
– dem Kunden passendes Problem zum eigenen Produkt einreden<br />
! Iterative Prozesse<br />
– erste Teilfunktionalitäten werden früh vom Kunden evaluiert<br />
! eXtreme Programming<br />
– Kunde definiert Anforderungen selbst<br />
– Kunde formalisiert Anforderungen mittels Tests<br />
– Kunde priorisiert Anforderungen<br />
– Kunde evaluiert jede Teilfunktionalität sofort<br />
– Kunde hat im Zweifel selber Schuld<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
18<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
20
Leif Geiger<br />
Literatur zu <strong>Vorgehensmodelle</strong>n<br />
! Grady Booch, James Rumbaugh, Ivar Jacobson:<br />
The Unified <strong>Software</strong> Development Process,<br />
Addison Wesley 1999 (relativ wichtiges<br />
Standardwerk)<br />
! Jochen Seemann, Jürgen Wolff von Gudenberg:<br />
<strong>Software</strong> Entwurf mit UML; Springer 2000 (finde<br />
ich ziemlich gut)<br />
! Klaus Pohl: Process Centered Requirements<br />
<strong>Engineering</strong>; Wiley, 1996, ISBN 0 86380 193 5<br />
<strong>Software</strong> <strong>Engineering</strong> I<br />
FG <strong>Software</strong> <strong>Engineering</strong><br />
! Watts Humphrey: The Personel <strong>Software</strong> Process<br />
! Kent Beck: Extreme Programming Explained<br />
21