Literatur Gliederung Software Engineering Herbert Kuchen Universität Münster Di+Fr 14:15-15:45, M2 Wintersemester 2009/2010 1
Literatur Gliederung Basis-Literatur H. Balzert: Lehrbuch der Software-Technik, Bd. 1+2+3, Spektrum Akademischer Verlag, 2009/2010?/2008. 2
Literatur Gliederung Ergänzende Literatur B. Poensgen, B. Bock: Function-Point-Analyse, dpunkt, 2005. G. Booch, J. Rumbaugh, I. Jacobson: The Unified Modeling Language User Guide, Addison Wesley, 2005. H. Störrle: UML 2 erfolgreich einsetzen, Addison-Wesley, 2005. E. Gamma et al.: Entwurfsmuster: Elemente wiederverwendbarer objektorientierter Software, Addison-Wesley, 2009. P. Liggesmeyer: Software-Qualität, Spektrum Akad. Verlag, 2009. I. Jacobson, G. Booch, J. Rumbaugh: The Unified Software Development Process, Addison Wesley, 1999. H. Wolf, St. Roock, M. Lippert: extreme Programming: Eine Einführung..., dpunkt, 2005. 3
Literatur Gliederung 1. Einführung Gliederung 2. Planung 3. Basiskonzepte 4. Definition 5. Entwurf 6. Implementierung 7. Qualitätssicherung 8. Prozessmodelle für die Software-Entwicklung?. Model-Driven Architecture, Wiederverwendung,... Übungen: alle 14 Tage 4
Teil I Einführung 5
Software-Engineering Reaktion auf Software-Krise ab Ende 60er Jahre ingenieurmäßiges Vorgehen statt ad-hoc-programmierung und Tricks Prinzipien, Modelle, Techniken und Verfahren zur Erstellung und Wartung großer Software-Systeme Ziel: Reduktion der Entwicklungs- und Wartungskosten (oft 80 %) Einhaltung von Terminen hohe Zuverlässigkeit und Qualität ausreichende Effizienz 6
Software-Krise kaum änderbare Programme keine oder veraltete Dokumentation Überschreitung von Kosten und Terminen 7
Rahmenbedingungen heute durch bessere Hardware: Entwicklungs- und Wartungskosten oft wichtiger als Effizienz der Programme; Softwarekosten, Hardwarekosten komplexere Systeme möglich Teamarbeit ( Teilaufgaben, Schnittstellen) 8
Programm vs. Softwaresystem Programm: löst isolierte Aufgabe von Einzelperson erstellbar Softwaresystem: besteht aus mehreren Komponenten von Team erstellt 9
Programmieren im Kleinen Entwicklung eines Programms bzw. einer Komponente oft hoher algorithmischer Anteil Vorgehen: Schrittweise Verfeinerung, strukturierte Programmierung nur strukturierte Kontrollstrukturen (if-then-else, for,... ; kein goto) prozedurale Zerlegung, top-down kein Geheimnis-Prinzip (auch globale Variablen) 10
Programmieren im Großen Entwicklung eines Softwaresystems mit: langer Lebensdauer (daher) hoher Änderungswahrscheinlichkeit (wegen Alterung durch sich ändernde Einsatzbedingungen) Anforderungen zunächst unklar Kommunikationsprobleme Anwender Entwickler Zerlegung in Komponenten (für Programmieren im Kleinen) Geheimnisprinzip rein funktionale Zerlegung führt zu schlechter Wartbarkeit daher besser Objektorientierung 11
Das klassische Wasserfallmodell der Software-Entwicklung Planung Definition Entwurf Implementierung Testen Einsatz und Wartung moderne Prozessmodelle (Kap. 8) durchlaufen Entwicklungsschritte iterativ 12
Planung Durchführbarkeitsstudie Kosten/Nutzen-Analyse Ergebnis: Entscheidung über Projektfortsetzung erstellte Dokumente: Lastenheft Projektkalkulation Projektplan 13
Definition Ausgangspunkt: vage, unvollständige, widersprüchliche Anforderungen Ergebnis: vollständige, konsistente, eindeutige, erfüllbare Anforderungen erstellte Dokumente: Pflichtenheft Produkt-Modell (z.b. OOA, notwendig zur Ermittlung der Anforderungen) GUI-Modell 14
Gegenstand und Gestaltung der Produktdefinition betrifft nur Außenverhalten des Systems Anforderungsanalyse umfasst: Ermittlung von Produktanforderungen Anforderungsspezifikation (Pflichtenheft) fixiert Leistungsumfang Vertragsbasis zwischen Auftraggeber und -nehmer Grundlage für Endabnahme 15
Pflichtenheft fixiert Funktionsumfang Benutzerschnittstelle Schnittstellen zu anderen Systemen (z.b. DBMS) Leistungsverhalten (Antwortzeit, Platzbedarf) vorgeschriebene Hard- und Software Dokumentationsrichtlinien Terminplanung 16
Entwurf Ergebnis: Softwarearchitektur, d.h. System von Komponenten und deren Beziehungen ausgehend von Pflichtenheft / Produktmodell fixiert Außenverhalten jeder Einzelkomponente 17
Implementierung und Test Umsetzung der Komponentenspezifikationen in Programmiersprache Übersetzung in Maschinensprache Modul-, Integrations- und Systemtest Ergebnis: lauffähiges Programmsystem, Testfälle und Testprotokolle 18
Software-Qualität Äußere Qualität: Korrektheit Zuverlässigkeit Robustheit Effizienz Benutzerfreundlichkeit Innere Qualität: Wartbarkeit Wiederverwendbarkeit 19
Softwarequalität aus Sicht verschiedener Rollen Benutzer: äußere Qualität Wartungspersonal: innere Qualität Auftraggeber: geringe Kosten durch innere und äußere Qualität 20