| Inhaltsverzeichnis | 6 |
---|
| Vorwort | 10 |
---|
| Dank | 12 |
---|
| 1 Gegenstandsbestimmung – Einführung und Überblick | 14 |
---|
| 1.1 Was ist Software? | 14 |
| 1.2 Was ist Software Engineering? | 16 |
| 1.3 Inhalt und Aufbau des Buches | 18 |
| Teil I Prozessorientierte Sicht – Organisation von Software-Projekten | 22 |
---|
| 2 Prozessmodelle | 24 |
| 2.1 Das klassische sequenzielle Phasenmodell | 24 |
| 2.2 Das V-Modell | 31 |
| 2.3 Das Prototyping-orientierte Prozessmodell | 39 |
| 2.3.1 Begriffe und Abgrenzung | 39 |
| 2.3.2 Prozessmodell | 42 |
| 2.4 Das Spiralmodell | 45 |
| 2.4.1 Das Spiralmodell von Boehm | 45 |
| 2.4.2 Das Spiralmodell von Pomberger und Pree | 48 |
| 2.5 Der Unified Process | 52 |
| 2.6 Ein objektorientiertes Phasenmodell | 55 |
| 2.7 Leichtgewichtige (agile) Prozessmodelle | 58 |
| 3 Software-Qualitätsmanagement | 64 |
| 3.1 Was ist Softwarequalität? | 64 |
| 3.2 Wo und wie entstehen Softwarequalität bzw. Qualitätsmängel | 68 |
| 3.3 Grundzüge des Software- Qualitätsmanagements | 70 |
| 3.3.1 Hauptaufgaben des Qualitätsmanagements | 71 |
| 3.3.2 Objekte und Sichten des Qualitätsmanagements | 71 |
| 3.3.3 Prinzipien des Qualitätsmanagements | 73 |
| 3.3.4 Konstruktive und analytische Qualitätsmaßnahmen | 74 |
| Teil II Konstruktions- und Architektur-orientierte Sicht | 78 |
---|
| 4 Elementare Konzepte und Konstrukte | 80 |
| 4.1 Der Algorithmenbegriff | 80 |
| 4.2 Datenobjekte, Datentypen und elementare Aktionen | 81 |
| 4.3 Schnittstellen und Aktivierung von Algorithmen | 83 |
| 4.4 Systematischer Entwurf von Algorithmen | 85 |
| 4.5 Grundlegende Konzepte der objektorientierten Programmierung | 89 |
| 4.5.1 Klassen, Objekte (= Instanzen von Klassen), Instanzvariablen, Methoden | 90 |
| 4.5.2 Vererbung, Polymorphismus, statischer Variablentyp, dynamischer Variablentyp und dynamische Bindung | 92 |
| 5 Konstruktion anpassbarer Software | 98 |
| 5.1 Konfigurationsparameter als Basis für anpassbare Software | 98 |
| 5.1.1 Parametereinstellungen über globale, statische Variable | 98 |
| 5.1.2 Callback-Style of Programming – Funktionen und Prozeduren als Parameter | 100 |
| 5.2 Konzepte und Konstruktionsprinzipien für anpassbare, objektorientierte Produktfamilien | 102 |
| 5.2.1 Das Konzept der abstrakten Kopplung | 104 |
| 5.2.2 Das Konzept der Template- und Hook-Methoden | 110 |
| 5.2.3 Das Hook-Method-Konstruktionsprinzip | 113 |
| 5.2.4 Das Hook-Object-Konstruktionsprinzip | 116 |
| 5.2.5 Das Composite-Konstruktionsprinzip | 122 |
| 5.2.6 Das Decorator-Konstruktionsprinzip | 129 |
| 5.2.7 Zusammenfassung der Merkmale der Konstruktionsprinzipien | 138 |
| 5.3 Konstruktionsprinzipien und Entwurfsmuster | 138 |
| 6 Modularisierung und Software-Architekturen | 144 |
| 6.1 Software-Module | 145 |
| 6.2 Erwünschte Eigenschaften von Modulen | 147 |
| 6.2.1 Stabile und verständliche Modulschnittstellen durch Information Hiding | 148 |
| 6.2.2 Balance zwischen Kopplung und Kohäsion | 150 |
| 6.3 Ausprägungen von Modulen | 153 |
| 6.3.1 Modul als Abstrakte Datenstruktur (ADS) | 153 |
| 6.3.2 Modul als Abstrakter Datentyp (ADT) | 154 |
| 6.3.3 Module und Komponentenstandards | 158 |
| 6.4 Beispiele für ausgewogene Modularisierungen | 160 |
| 6.4.1 Kohäsionsverbesserung durch Aufteilung von Modulen | 160 |
| 6.4.2 Module für die Simulation diskreter Ereignisse | 162 |
| 6.5 Beschreibung von Software-Architekturen | 169 |
| 6.5.1 Datenzentrierung | 170 |
| 6.5.2 Datenflussorientierung | 171 |
<