Software Engineering Vorlesung für Medieninformatik
Gliederung Vorlesung Einführung V-Modell XT Analyse und Anforderungsmanagement Benutzungsoberflächen Architektur Entwurf Entwurfsmuster Persistenz Implementierung Konfigurationsmanagement Testen Abnahme, Einführung, Wartung und Pflege
Literatur Balzert, Helmut: Lehrbuch der Softwaretechnik 1. Basiskonzepte und Requirements Engineering. 3. Auflage. Spektrum 2009. Balzert, Helmut: Lehrbuch der Softwaretechnik. 2. Software-Management. 2. Auflage Spektrum 2008. Balzert, Heide: Lehrbuch der Objektmodellierung. Analyse und Entwurf mit der UML 2. 2. Auflage. Spektrum 2004. Sommerville, Ian: Software Engineering. 8. Auflage. Pearson, 2007.
Beispiel Ariane 5, 1996, Quelle: Lions, J. L. (1996), Report by the Inquiry Board. Paris: ESA. http://sspg1.bnsc.rl.ac.uk/share/istp/ariane5r.htm
Beispiel Was war passiert? Die Software für das Trägheitsnavigationssystem wird unverändert von der Ariane 4 übernommen. Ein Test dieser Software unterbleibt daher. Die übrigen Systeme der Rakete werden komponentenweise gründlich getestet. Ein gemeinsamer Test der gesamten Steuerungssoftware der Rakete unterbleibt aus Kosten- und Machbarkeitsgründen. In der Software für das Trägheitsnavigationssystem gibt es eine Abgleichsfunktion, deren Werte eigentlich nur sinnvoll sind, solange die Rakete noch nicht fliegt. Diese Funktion arbeitet programmgemäß bis ca. 40 s nach H0 weiter, weil das bei der Ariane 4 im Fall eines Countdownabbruchs kurz vor dem Abheben sinnvoll war. Flug 501 startet am 4. Juni 1996. Die Triebwerke zünden um H0= 9: 33: 59 Ortszeit. Die ersten 36 Sekunden des Flugs verlaufen normal. Da die Ariane 5 eine andere Flugbahn hat als die Ariane 4, berechnet die Abgleichsfunktion einen Wert, der wesentlich größer ist als erwartet. Bei der Konvertierung dieses Werts von einer 64 Bit Gleitkommazahl in eine 16- Bit Festkommazahl tritt ein Überlauf ein; der Rechner erzeugt eine Ausnahmebedingung.
Beispiel Die Ausnahmebedingung wird nicht behandelt (obwohl dies in der verwendeten Programmiersprache Ada möglich wäre). Der Trägheitsnavigationsrechner setzt eine Fehlermeldung an den Steuerrechner der Rakete ab und schaltet sich 36,75 s nach H0 ab. Das Trägheitsnavigationssystem ist aus Sicherheitsgründen doppelt ausgelegt. Ein Umschalten auf das zweite System schlägt fehl, da dieses System das gleiche Problem gehabt und sich vor 0,05 s ebenfalls abgeschaltet hat. Die Software des Steuerrechners ist auf den Ausfall beider Trägheitsnavigationssysteme nicht ausgelegt und interpretiert die gemeldeten Fehlercodes als Flugbahndaten. Dies führt zu völlig unsinnigen Berechnungen und als Folge davon zu unsinnigen Stellbefehlen an die Steuerdüsen der Rakete: Diese werden bis zum maximal möglichen Anstellwinkel ausgeschwenkt. Aufgrund der resultierenden Scherkräfte zerbricht die Rakete, worauf der Selbstzerstörungsmechanismus ordnungsgemäß anspricht. Dieser sprengt Rakete und Nutzlast und verhindert damit, dass größere Trümmerteile auf den Boden fallen.
Beispiel Entstandener Schaden: 4 Satelliten verloren: 400-500 Mio Euro 2 Jahre Verzug im Entwicklungsprogramm: > 500 Mio Euro 2 zusätzliche Erprobungsstarts bei Gesamtkosten des Projekts von 1987 bis 1998 von 6700 Mio Euro und vor allem: erheblicher Imageschaden
Veränderungen des Software-Marktes Zunehmende Bedeutung von Software Wachsende Komplexität Zunehmende Vernetzung, Virtualisierung, Zusammenspiel mit Komponenten verschiedener Hersteller Zunehmende Qualitätsanforderungen Mehr Standardsoftware Mehr Außer Haus-Entwicklung Zunehmend Offshore-Entwicklung Open Source-Entwicklung Zunehmend Altlasten
Definition Software Engineering 1. Die Anwendung eines systematischen, disziplinierten quantifizierbaren Ansatzes zur Entwicklung, zum Betrieb und zur Wartung von Software. D. h. Die Anwendung ingenieurwissenschaftlicher Prinzipien auf Software 2. Die Untersuchung und Entwicklung derartiger Ansätze Quelle: www.swebok.org
Software Engineering "Body of Knowledge" Wissensgebiete Software Engineering: Anforderungen Entwurf Implementierung Testen Wartung Konfigurationsmanagement Entwicklungsmanagement Vorgehen der Software-Entwicklung Werkzeuge und Methoden Qualität SWE "Body of Knowledge" der IEEE Computer Society - www.swebok.org
Software Engineering "Body of Knowledge" Verwandte Disziplinen: Computertechnik Informatik Management Mathematik Projekt-Management Qualitätsmanagement Software-Ergonomie Systems Engineering SWE "Body of Knowledge" der IEEE Computer Society - www.swebok.org
Agile Software-Entwicklung Herkömmliche Vorgehensmodell gelten z. T. als schwergewichtig Umfangreich, bürokratisch Trotz vielen Jahren Software Engineering sind viele Projekte nach wie vor nicht besonders erfolgreich Dies war der Ausgangspunkt zur Entwicklung leichtgewichtiger, agiler Methoden Es gibt verschiedene agile Ansätze, z. B. Extreme Programming (XP) Crystal Scrum
Agile Software-Entwicklung Direkte Kommunikation ist die beste Kleine Teams, geeignete Anordnung der Arbeitsplätze Zu schwere Methoden sind teuer Nur so viele Regeln und so viel Dokumentation wie nötig Ersatz von Plänen und Diagrammen durch lauffähigen Teilcode Zwischenergebnisse sind direkt überprüfbar Kurze Releasezyklen Disziplin, Können und Verständnis vs. Vorgehensmodelle, Formalia und Dokumentation Fähigkeiten der Mitarbeiter stärker nutzen Leichter anpassbar