19.02.2013 Aufrufe

Methodische Softwareentwicklung - Software Engineering Kassel

Methodische Softwareentwicklung - Software Engineering Kassel

Methodische Softwareentwicklung - Software Engineering Kassel

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Albert Zündorf<br />

Albert Zündorf<br />

<strong>Methodische</strong> <strong><strong>Software</strong>entwicklung</strong><br />

(Programmiermethodik)<br />

Vorlesung im Wintersemester 2003/2004<br />

Prof. Albert Zündorf<br />

Fachgebiet für <strong>Software</strong> <strong>Engineering</strong><br />

Wilhelmshöher Allee 71-73<br />

34121 <strong>Kassel</strong><br />

(Raum 0630 im Neubau)<br />

Organisatorisches:<br />

Umfang: 4 SWS teils Vorlesungen teils Übungen<br />

Übungsbetreuung: Ira Diethelm, Carsten Reckord und Tutoren<br />

Ort und Zeit:<br />

Vorlesung: Dienstags 14:00 - 15:30 Raum 0446<br />

(Erste Vorlesung: 19.10.04)<br />

Übung: Donnerstags 11:00 - ... , Raum 0425 (CIP Pool unter der Mensa)<br />

(Erste Übung: Donnerstag, den 28.10.2003)<br />

Prüfung:<br />

• Projektarbeit (geeignet am Anfang der Ferien)<br />

• Wiederholung in der ersten Woche des Folgesemesters<br />

Folienskript:<br />

• http://www.uni-kassel.de/fb16/se/<br />

• meist am Wochende vorher.<br />

MSEInhalt.fm,1<br />

MSEInhalt.fm,2


Albert Zündorf<br />

Literatur:<br />

Grundlegend:<br />

• Helmut Balzert: Lehrbuch der <strong>Software</strong>-Technik (Bd.\ 1 und 2), Spektrum Akademischer<br />

Verlag 1996 (viele Details, sehr umfassend, eher ein Nachschlagewerk)<br />

Unified Modeling Language:<br />

• Grady Booch, James Rumbaugh, Ivar Jacobson: The Unified Modeling Language - User<br />

Guide, Addison Wesley 1999 (die haben das erfunden)<br />

• Grady Booch, James Rumbaugh, Ivar Jacobson: The Unified Modeling Language - Reference<br />

Manual, Addison Wesley 1999 (eher zum Nachschlagen)<br />

• Grady Booch, James Rumbaugh, Ivar Jacobson: The Unified <strong>Software</strong> Development Process,<br />

Addison Wesley 1999 (relativ wichtiges Standardwerk)<br />

• Jochen Seemann, Jürgen Wolff von Gudenberg: <strong>Software</strong> Entwurf mit UML; Springer<br />

2000 (finde ich ziemlich gut)<br />

• Martin Hitz, Gerti Kappel: UML @ Work, dpunkt.verlag 1999 (ziemlich gut)<br />

• Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns, Addison Wesley<br />

1995 (wichtiger Trendsetter, siehe auch Vorlesung Design Pattern im Hauptstudium)<br />

• Albert Zündorf: Rigorous <strong>Software</strong> Development with UML, Draft, Fachgebietsseiten<br />

Albert Zündorf<br />

Hintergrund:<br />

MSEInhalt.fm,3<br />

• Frederick P.\ Brooks: The Mythical Man Month, Addison Wesley 1975 (ist nur kurz<br />

aber ziemlich witzig, unbedingt mal lesen)<br />

MSEInhalt.fm,4


Albert Zündorf<br />

Gliederung:<br />

1. Einführung<br />

2. Anforderungsdefinition<br />

3. Analyse<br />

4. Design<br />

5. Implementierung<br />

6. Zusammenfassung<br />

Albert Zündorf<br />

1. Einführung<br />

Was ist <strong>Software</strong> <strong>Engineering</strong>:<br />

D. Parnas (1987)<br />

<strong>Software</strong> engineering = multi-person construction of multi-version software<br />

MSEInhalt.fm,5<br />

Standard Glossary of <strong>Software</strong> <strong>Engineering</strong>, ANSI, IEEE (1990)<br />

The application of a sytematic, disciplined, quantifiable approach to the development,<br />

operation, and maintenance of software;<br />

that is, the application of engineering to software<br />

A. Zündorf (2003)<br />

Hacken ist, wenn der Mensch schwitzt, damit das Programm (effizient) läuft<br />

<strong>Software</strong>technik ist, wenn der Entwickler es leicht hat,<br />

der Rechner kann ruhig schwitzen.<br />

MSEInhalt.fm,6


Albert Zündorf University of <strong>Kassel</strong><br />

Motivation:<br />

• Bau einer Garage:<br />

- ein paar Handwerker<br />

- Steine, Balken, ...<br />

- Mischer, ...<br />

- auf geht’s<br />

• Bau eines Mehrfamilienhauses<br />

- viele Handwerker<br />

- Steine, Balken, ...<br />

- Verschalungen, Beton, ...<br />

- Kran, Mischer, ...<br />

- Architekt, Bauleiter, ...<br />

- Verträge, Baupläne, ...<br />

- Zeitpläne, ...<br />

• Programm bis 10.000 LOC:<br />

- ein paar Programmierer<br />

- Programmiersprache, ...<br />

- Rechner, Compiler, ...<br />

- auf geht’s<br />

• Programm um 500.000 LOC<br />

- viele Programmierer<br />

- Programmiersprache, ...<br />

- Objektorientierung, ...<br />

- Rechner, Compiler, ...<br />

- Architekt, Bauleiter, ...<br />

- Verträge, Baupläne, ...<br />

- Schnittstellenabsprachen, ...<br />

- Zeitpläne, ...<br />

Albert Zündorf University of <strong>Kassel</strong><br />

• Bau eines Wolkenkratzers<br />

- sehr viele Handwerker<br />

- Steine, Balken, ...<br />

- Verschalungen, Beton, ...<br />

- Stahlträger, ...<br />

- Kran, Mischer, ...<br />

- Architekt, Bauleiter, ...<br />

- Verträge, Baupläne, ...<br />

- Konstruktionsskizzen, Prinzipstudien, ...<br />

- Zeitpläne<br />

- Logistikstudien und -pläne<br />

- Unterkünfte, Großküche, Shuttle-Service,<br />

...<br />

• System um 2.500.000<br />

- sehr viele Programmierer<br />

- Programmiersprache, ...<br />

- Objektorientierung, ...<br />

- Modellierungssprachen (UML)<br />

MSEInhalt.fm,7<br />

- Rechner, Compiler, CASE Tools, ...<br />

- Architekt, Bauleiter, ...<br />

- Verträge, Baupläne, ...<br />

- Konstruktionsskizzen, Prinzipstudien, ...<br />

- Zeitpläne<br />

- Logistikstudien und -pläne<br />

- Internet, Groupware, ...<br />

MSEInhalt.fm,8


Albert Zündorf<br />

Probleme im Bereich <strong>Software</strong>:<br />

• Nach Laprie 1999:<br />

Albert Zündorf<br />

- 1/3 der Projekte wird zur Zufriedenheit der Kunden und des Anbieters durchgeführt<br />

- 1/3 der Projekte überzieht Zeit und Kosten, liefert nur Teilfunktionalität,<br />

Programme instabil<br />

- 1/3 der Projekte scheitert ganz.<br />

• Beispiele für prominente Probleme und Katastrophen:<br />

- Windows 9x<br />

- Ausfall Leitrechner Hamburger Bahnhof bei Neueröffnung (1995)<br />

- Explosion Ariane 5 Rakete (1996)<br />

- Airbus Absturz in Moskau<br />

- Ausfall des Londoner Ambulanz-Systems bei Einführung<br />

MSEInhalt.fm,9<br />

- wochenlange Schließung des Airports Chicago wegen neuem Flugkontrollsystem<br />

- Lieferverzögerungen bei Audi TT<br />

- ...<br />

- siehe auch http://catless.ncl.ac.uk/Risks<br />

MSEInhalt.fm,10


Albert Zündorf<br />

Hauptproblemquellen:<br />

• die schiere Größe der Systeme:<br />

- Handy circa 2 MLOC<br />

- SAP 1994 circa 7 MLOC, 100.000 Methoden, etwa 1000 <strong>Software</strong>entwickler<br />

- ...<br />

• viel zu viele Bugs:<br />

Albert Zündorf<br />

- 1977 circa 7 bis 20 Fehler pro 1000 LOC "gefunden"<br />

- 1994 circa 0,2 bis 0,5 Fehler pro 1000 LOC "gefunden"<br />

- voraussichtlich weiter alle 5 bis 10 Jahre 1/10 Fehlerrate<br />

aber aktuelle Fehlerrate entspricht wöchtlich<br />

- 6 ausfallende Herzschrittmacher<br />

- circa 120 Flugzeugabstürze<br />

- in kritischen Systemen sind Fehlerraten von 10 -9 vorgeschrieben<br />

MSEInhalt.fm,11<br />

• schlechter Ausbildungsstand<br />

- in den 60er und 70er Jahren "umgeschulte Buchhalter" als Cobol-Programmierer<br />

- Heute viele "Umsteiger", Autodidakten, Umschüler, ...<br />

- hohe Personalfluktation<br />

• mangelnde Vorstands- und Managementpräsenz<br />

- Vorstände und Manager unterschätzen <strong>Software</strong>probleme<br />

- zu gering angesetzte Resourcen führen zu Fehlern und Verzögerungen<br />

- "unzuverlässige Softis" kommen nicht in die Vorstände und ins Management<br />

• <strong>Software</strong> hat den "schwarzen Peter" bei Änderungen der Anforderungen<br />

- <strong>Software</strong> gilt als flexibel und leicht änderbar<br />

- <strong>Software</strong> muss oft Planungsfehler aus anderen Bereichen "last minute" ausbügeln<br />

• mangelhaftes Projektmanagement<br />

- keine ausreichende Aufwandsschätzung<br />

- keine ausreichende Personalplanung<br />

- miserable Teamkoordination<br />

- lächerliche Qualitätssicherung<br />

MSEInhalt.fm,12


Albert Zündorf<br />

Entstehung der <strong>Software</strong>technik<br />

• Ende der 60er Jahre<br />

- zentrale (Stickstoff gekühlte) Großrechner 3KB Hauptspeicher, 1 KHz CPU, Magnetbänder, ...<br />

- Assembler, Fortran, Cobol, C, ...<br />

- Programmgrößen bis 1000 LOC (Lines of Code) klappt<br />

• 1972 Konferenz in Garmischpartenkirchen ruft "<strong>Software</strong>krise" aus<br />

Lösungsidee: Ingenieurmäßige <strong><strong>Software</strong>entwicklung</strong> => <strong>Software</strong>technik<br />

• Um 2000:<br />

- Leistungsfähige PCs und Server, 1GB Hauptspeicher, 1 GHz CPU, 1 TB Platten, ...<br />

(Faktor 10 ^6 in 30 Jahren)<br />

- Eiffel, Java, ...<br />

- Programmgrößen bis 1 000 000 LOC (Lines of Code) klappt<br />

(Faktor 10 ^3 in 30 Jahren)<br />

• Voraussichtlich wird sich die zu beherrschende Problemgröße alle 3 Jahre verdoppeln<br />

Bemerkung: Die "Produktivität" der Entwickler ist nicht wesentlich gewachsen<br />

50 -100 LOC pro Tag (=> eine LOC kostet circa 10 Euro)<br />

Albert Zündorf<br />

MSEInhalt.fm,13<br />

<strong>Software</strong>qualität<br />

Ziel der <strong>Software</strong>technik ist eine Steigerung der <strong>Software</strong>qualität (und eine Senkung der Kosten)<br />

Das beinhaltet die Begriffe:<br />

• Funktionalität<br />

Funktionale Anforderungen werden erfüllt.<br />

• Zuverlässigkeit<br />

Das Programm läuft bei normaler Benutzung ohne Absturz.<br />

• Robustheit<br />

Das Programm fängt fehlerhafte Benutzung und andere Fehlersituationen gut ab.<br />

• Benutzbarkeit<br />

Auch von Studenten, Laien, Professoren und Vorständen bedienbar.<br />

Wichtige Dinge sind einfach auslösbar.<br />

MSEInhalt.fm,14


Albert Zündorf<br />

• Effizienz<br />

Gutes Verhältnis von Ergebnis und Aufwand an Rechenzeit und Speicherbedarf<br />

(verliert stark an Bedeutung)<br />

• Wartbarkeit<br />

auch später (nach Auslieferung) können neue Anforderungen leicht umgesetzt werden.<br />

• Wiederverwendbarkeit<br />

Einmal erstellte (und getestete) Bausteine können möglichst ohne Modifikationen in<br />

anderen Programmen verwendet werden<br />

(Heute Components, Product-Line-Architectures)<br />

• . . .<br />

Albert Zündorf<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<br />

=> Prozess- / Vorgehensmodelle, Konfigurationsmanagement<br />

aber<br />

• "No silver bullet" F. Brooks, IEEE Computer 1987<br />

MSEInhalt.fm,15<br />

MSEInhalt.fm,16


Albert Zündorf<br />

Das Wasserfallmodell<br />

Albert Zündorf<br />

Anforderungsdefinition<br />

technisch, inhaltlicher Bereich => <strong>Methodische</strong> <strong><strong>Software</strong>entwicklung</strong><br />

Analyse<br />

Projektmanagement<br />

Design<br />

Implementierung<br />

<strong>Methodische</strong> <strong><strong>Software</strong>entwicklung</strong> (Programmiermethodik)<br />

1. Systematische Erfassung von Anforderungen<br />

2. <strong>Methodische</strong> Ableitung von objektorientierten Szenario-Beschreibungen<br />

plus Domänen-Modell / -Klassendiagramm<br />

3. <strong>Methodische</strong> Ableitung von automatischen Tests<br />

Qualitätssicherung<br />

4. <strong>Methodische</strong> Ableitung von Verhaltensspezifikationen / grafischen Programmen<br />

plus Design-Modell / -Klassendiagramm<br />

5. Automatische Code-Generierung<br />

6. Systematisches Testen<br />

Noch nicht erfasst:<br />

• Grafical User Interface<br />

• Wartung<br />

Test<br />

Wartung<br />

MSEInhalt.fm,17<br />

MSEInhalt.fm,18

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!