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 |
6.5.3 Call&Return | 172 |
6.5.4 Virtuelle Maschine | 173 |
6.5.5 Unabhängige Komponenten | 174 |
6.5.6 Vor- und Nachteile der Architekturmuster | 175 |
6.6 Analyse von Software-Architekturen | 175 |
6.6.1 Die Software-Architektur-Analyse-Methode (SAAM) | 175 |
6.6.2 Beispiel einer Anwendung der SAAM | 180 |
6.6.3 Was ist bei einer Anwendung der SAAM zu beachten? Was sind die Vorteile und Risiken? | 185 |
6.7 Mehrdimensionale Modularisierung durch Aspektorientierte Programmierung (AOP) | 186 |
6.7.1 Das Problem einer einzigen, statischen Modularisierung | 187 |
6.7.2 Grundlegende Sprachkonzepte und -konstrukte von AOP | 189 |
6.8 Zusammenfassung wichtiger Modularisierungsprinzipien | 193 |
Teil III Ausgewählte Gebiete und Fallbeispiele | 194 |
7 Transformationsorientierte Software1 | 196 |
7.1 Grundlegende Konzepte | 196 |
7.1.1 Kontextfreie Grammatiken | 197 |
7.1.2 Konstruktion eines Sprachanalysators (Scanner und Parser) | 199 |
7.1.3 Attributierte Grammatiken | 205 |
7.2 Fallbeispiel: Transformation strukturierter Texte | 209 |
7.2.1 Entwurf einer attributierten Grammatik mit Coco/R | 212 |
7.3 Zusammenfassung | 228 |
8 Web-Service-basierte Software1 | 230 |
8.1 Was sind Web-Services | 230 |
8.2 Vergleich mit anderen Technologien | 232 |
8.2.1 CORBA | 233 |
8.2.2 Java RMI | 235 |
8.2.3 .NET Remoting Framework | 235 |
8.3 Entwicklungsprozess für Web-Service-basierte Software | 236 |
8.4 Grundlegende Konzepte und Standards | 237 |
8.4.1 SOAP | 237 |
8.4.2 Web-Service Description Language (WSDL) | 239 |
8.5 Fallbeispiel: Elektronisches Telefonbuch | 242 |
8.5.1 Ausgangssituation im Fallbeispiel | 242 |
8.5.2 Beteiligte Komponenten | 243 |
8.5.3 Schnittstelle des Web-Services | 243 |
8.5.4 Implementierung des Web-Services mit Microsoft Visual Studio | 244 |
8.5.5 Implementierung der Anwendungssoftware | 245 |
8.5.6 Interaktionen zwischen Anwendungssoftware und Web-Service | 247 |
8.6 Zusammenfassung | 249 |
9 Eingebettete Echtzeitsoftware | 250 |
9.1 Grundlegende Konzepte und Voraussetzungen | 250 |
9.1.1 Charakteristika von Echtzeitsoftware | 251 |
9.1.2 Logische versus tatsächliche Ausführungszeiten von Echtzeitsoftware | 252 |
9.2 Fallbeispiel: Echtzeitsoftware eines autonom fliegenden Helikopters | 254 |
9.2.1 Das OLGA-System | 256 |
9.2.2 Die TDL-Spezifikation des Zeit- und Kommunikationsverhaltens | 257 |
9.2.3 Die Übersetzung der TDL-Spezifikation in ein ausführbares Programm | 260 |
9.2.4 Simulation eines TDL-basierten Regelungssystems | 261 |
9.3 Zusammenfassung | 263 |
Literaturverzeichnis | 264 |
Stichwortverzeichnis | 268 |