3. Auflage. — Heidelberg: dpunkt.verlag, 2013. — 855 s.
Software Engineering – Grundlagen, Menschen, Prozesse, Techniken2., ü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 umgeben1.2 Modelltheorie
1.3 Ziele beim Einsatz von Modellen1.4 Entwicklung und Validierung von Modellen1.5 Modelle im Software Engineering
1.6 Theoriebildung
1.7 Modellierung durch Graphen und Grafiken1.8 Modellierung durch Zahlen: Skalen und Skalentypen1.9 Übergänge zwischen verschiedenen Skalentypen
2 Grundbegriffe2.1 Kosten2.2 Engineering und Ingenieur
2.3 Software
2.4 Arbeiten, die an Software ausgeführt werden2.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 Klienten6.2 Rollen und Verantwortlichkeiten6.3 Die Produktivität des Projekts
6.4 Motivation und Qualifikation6.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 Projekttypen7.4 Formen der Teamorganisation7.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, Risiken8.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 Lehman9.4 Prototyping
9.5 Nichtlineare Vorgehensmodelle
9.6 Das Spiralmodell
10 Prozessmodelle10.1 Begriffe und Definitionen10.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 Dokumentation12.3 Taxonomie der Dokumente
12.4 Die Benutzungsdokumentation12.5 Die Qualität der Dokumente
12.6 Die Form der Dokumente, Normen12.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üfungen13.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 Pseudometriken14.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 Werkzeugen15.2 Computer-Aided Software Engineering
15.3 Offene integrierte Software-Engineering-Umgebungen15.4 Code-Generierung aus Modellen15.5 Die Auswahl eines Werkzeugs
15.6 Ein Blick in die Praxis
16 Analyze und Spezifikation16.1 Die Bedeutung der Spezifikation im Entwicklungsprozess
16.2 Die Analyze
16.3 Begriffslexikon und Begriffsmodell
16.4 Anforderungen16.5 Die Spezifikation im Überblick
16.6 Die Darstellung der Spezifikation16.6 Konzepte und Komponenten der Spezifikation16.7 Spezifikation und Entwurf - Probleme der Abgrenzung
16.8 Muster und Normen für die Spezifikation16.9 Regeln für Analyze 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 Architekturen17.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 Zufallsdaten19.8 Beispiele zum Test
19.9 Ausblick
20 Integration20.1 Einbettung der Integration in die Software-Entwicklung
20.2 Integrationsstrategien20.3 Probleme der Integration20.4 Planung und Dokumentation der Integration20.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-Einheiten21.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-Evolution23.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