3. Auflage. — Heidelberg: dpunkt.verlag, 2013. — 855 s.
Software Engineering – Grundlagen, Menschen, Prozesse, Techniken
2., überarbeitete, aktualisierte u. ergänzte Auflage
Das Buch vermittelt die Grundlagen, Erfahrungen und Techniken, die den Kern des Software Engineerings bilden. Es ist als Material zu einer Vorlesung über Software Engineering konzipiert. Darum wurde besonderes Gewicht auf die Darstellung und Vermittlung der Einsichten und Erkenntnisse gelegt, die von Forschern und Praktikern gewonnen, formuliert und angewendet wurden und der Kritik standgehalten haben. Auch für Praktiker, die mit der Software-Entwicklung und -Bearbeitung und den dabei auftretenden Problemen vertraut sind, ist das Buch sehr gut geeignet, um die Kenntnisse im Selbststudium zu ergänzen und zu vertiefen.
Die 2. Auflage ist bei unveränderter Grundstruktur in vielen Details überarbeitet, an einigen Stellen ergänzt und generell aktualisiert.
► Inhalt1 Modelle und Modellierung1.1 Modelle, die uns umgeben
1.2 Modelltheorie
1.3 Ziele beim Einsatz von Modellen
1.4 Entwicklung und Validierung von Modellen
1.5 Modelle im Software Engineering
1.6 Theoriebildung
1.7 Modellierung durch Graphen und Grafiken
1.8 Modellierung durch Zahlen: Skalen und Skalentypen
1.9 Übergänge zwischen verschiedenen Skalentypen
2 Grundbegriffe2.1 Kosten
2.2 Engineering und Ingenieur
2.3 Software
2.4 Arbeiten, die an Software ausgeführt werden
2.5 Weitere Grundbegriffe
3 Software Engineering3.1 Fortschritte in Hardware und Software
3.2 Grundideen des Software Engineerings
3.3 Probleme und Chancen des Software Engineerings
3.4 Lehrbücher und andere Basisliteratur
4 Software-Nutzen und -Kosten4.1 Die Kosten eines Software-Projekts
4.2 Der Aufwand in den einzelnen Phasen des Software-Projekts und in der Wartung
4.3 Risiken durch Qualitätsmängel
4.5 Die Beziehung zwischen Fehlerentstehung und -entdeckung
5 Software-Qualität5.1 Qualität
5.2 Taxonomie der Software-Qualitäten
6 Menschen im Software Engineering6.1 Software-Leute und Klienten
6.2 Rollen und Verantwortlichkeiten
6.3 Die Produktivität des Projekts
6.4 Motivation und Qualifikation
6.5 The Personal Software Process
6.6 Moralische und ethische Aspekte
7 Das Software-Projekt – Begriffe und Organisation7.1 Begriffsbildung
7.2 Software-Projekte
7.3 Projekttypen
7.4 Formen der Teamorganisation
7.5 Die interne Organisation der Software-Herstellers
8 Projektleitung und Projektleiter8.1 Ziele und Schwerpunkte des Projektmanagements
8.2 Das Vorprojekt
8.3 Start des Projekts, Planung
8.4 Aufwand, Kosten, Risiken
8.5 Projektkontrolle und -Steuerung
8.6 Der Projektabschluss
8.7 Projektmanagement als Führungsaufgabe
9 Vorgehensmodelle9.1 Code and Fix und der Software Life Cycle
9.2 Schwierigkeiten mit dem Wasserfallmodell
9.3 Die Klassifikation der Programme nach Lehman
9.4 Prototyping
9.5 Nichtlineare Vorgehensmodelle
9.6 Das Spiralmodell
10 Prozessmodelle10.1 Begriffe und Definitionen
10.2 Das Phasenmodell
10.3 Das V-Modell
10.4 Der Unified Process
10.5 Cleanroom Development
10.6 Agile Prozesse
11 Bewertung und Verbesserung des Software-Prozesses11.1 Voraussetzungen hoher Software-Qualität
11.2 CMMI, das Reifegradmodell für Software-Prozesse
11.3 SPICE / ISO 15504
11.4 Prozessverbesserung
12 Dokumentation in der Software-Entwicklung12.1 Begriff und Einordnung
12.2 Ziele und Wirtschaftlichkeit der Dokumentation
12.3 Taxonomie der Dokumente
12.4 Die Benutzungsdokumentation
12.5 Die Qualität der Dokumente
12.6 Die Form der Dokumente, Normen
12.7 Dokumentation in der Praxis
12.8 Die gefälschte Entstehungsgeschichte
13 Software-Qualitätssicherung und -Prüfung13.1 Software-Qualitätssicherung
13.2 Prüfungen
13.3 Mängel und Fehler
13.4 Prüfungen im Überblick
13.5 Reviews
13.6 Varianten der Software-Inspektion
14 Metriken und Bewertungen14.1 Metriken, Begriff und Taxonomie
14.2 Objektive Metriken, Messung
14.3 Subjektive Metriken, Beurteilung
14.4 Pseudometriken
14.5 Die Suche nach der geeigneten Metrik
14.6 Ein Beispiel für die Entwicklung einer Metrik
14.7 Hinweise für die praktische Arbeit
15 Werkzeuge und Entwicklungsumgebungen15.1 Bewertung von Methoden und Werkzeugen
15.2 Computer-Aided Software Engineering
15.3 Offene integrierte Software-Engineering-Umgebungen
15.4 Code-Generierung aus Modellen
15.5 Die Auswahl eines Werkzeugs
15.6 Ein Blick in die Praxis
16 Analyse und Spezifikation16.1 Die Bedeutung der Spezifikation im Entwicklungsprozess
16.2 Die Analyse
16.3 Begriffslexikon und Begriffsmodell
16.4 Anforderungen
16.5 Die Spezifikation im Überblick
16.6 Die Darstellung der Spezifikation
16.6 Konzepte und Komponenten der Spezifikation
16.7 Spezifikation und Entwurf - Probleme der Abgrenzung
16.8 Muster und Normen für die Spezifikation
16.9 Regeln für Analyse und Spezifikation
17 Entwurf17.1 Ziele und Bedeutung des Entwurfs
17.2 Begriffe
17.3 Prinzipien des Architekturentwurfs
17.4 Der objektorientierten Entwurf
17.5 Wiederverwendung von Architekturen
17.6 Die Qualität der Architektur
18 Codierung18.1 Programmiersprachen als Werkstoffe
18.2 Regeln für die Codierung
18.3 Die Dokumentation des Codes
18.4 Realisierungen des Information Hiding
18.5 Robuste Programme
18.6 Das Vertragsmodell
18.7 Werkzeuge zur Codierung
19 Programmtest19.1 Begriffe und Grundlagen des Tests
19.2 Einige spezielle Testbegriffe
19.3 Die Testdurchführung
19.4 Die Auswahl der Testfälle
19.5 Der Black-Box-Test
19.6 Der Glass-Box-Test
19.7 Testen mit Zufallsdaten
19.8 Beispiele zum Test
19.9 Ausblick
20 Integration20.1 Einbettung der Integration in die Software-Entwicklung
20.2 Integrationsstrategien
20.3 Probleme der Integration
20.4 Planung und Dokumentation der Integration
20.5 Grundsätze für die Integration
21 Konfigurationsverwaltung21.1 Grundlagen der Konfigurationsverwaltung
21.2 Die Aufgaben der Konfigurationsverwaltung
21.3 Identifikation und Benennung von Software-Einheiten
21.4 Arbeitsbereiche für die Software-Verwaltung
22 Software-Wartung22.1 Begriff und Taxonomie der Software-Wartung
22.2 Inhalt und Ablauf der Wartung
22.3 Risiken, Probleme und Grundsätze der Wartung
22.4 Die Wartungsorganisation
23 Reengineering
23.1 Software-Evolution
23.2 Reengineering
23.3 Refactoring
23.4 Erblasten, Legacy Software
24 Wiederverwendung24.1 Die alltägliche Wiederverwendung
24.2 Terminologie und Taxonomie der Wiederverwendung
24.3 Kosten und Nutzen der Wiederverwendung
24.4 Chancen und Probleme der Wiederverwendung
24.5 Rahmenbedingungen für die Wiederverwendung
24.6 Entwicklungstechniken für die Wiederverwendung
24.7 Von der Codierung zur Komposition