Basiswissen Softwarearchitektur - Verstehen, entwerfen, wiederverwenden
von: Torsten Posch, Klaus Birken, Michael Gerdom
dpunkt, 2012
ISBN: 9783864910432
Sprache: Deutsch
380 Seiten, Download: 5856 KB
Format: EPUB, PDF, auch als Online-Lesen
Geleitworte | 6 | ||
Vorwort | 8 | ||
Danksagung | 10 | ||
Hinweise fu¨r den Leser | 12 | ||
Inhaltsverzeichnis | 14 | ||
1 Grundlagen | 22 | ||
1.1 Warum Softwarearchitektur? | 23 | ||
1.2 Was ist Softwarearchitektur? | 25 | ||
1.2.1 Definition von Softwarearchitektur | 25 | ||
1.2.2 Ziele und Aufgaben von Softwarearchitektur | 32 | ||
1.2.3 Wodurch wird Softwarearchitektur beeinflusst? | 37 | ||
1.3 Bedeutung von Softwarearchitektur | 39 | ||
1.3.1 Symptome bei fehlender Softwarearchitektur | 41 | ||
1.4 Zusammenfassung | 42 | ||
2 Softwarearchitektur in der Organisationsstruktur | 44 | ||
2.1 Wechselwirkungen zwischen Architektur und Unternehmen | 44 | ||
2.2 Die Rolle des Softwarearchitekten | 46 | ||
2.2.1 Allgemeine Eigenschaften und Aufgaben | 48 | ||
2.2.2 Aufgaben im Entwicklungsprojekt | 50 | ||
2.2.3 Das Architekturteam | 58 | ||
2.3 Zusammenspiel von Softwarearchitektur und Projektmanagement | 62 | ||
2.3.1 Bedeutung von Softwarearchitektur für das Projektmanagement | 62 | ||
2.3.2 Das Führungsteam aus Projektleiter und Softwarearchitekt | 69 | ||
2.4 Zusammenfassung | 72 | ||
3 Vorgehen | 76 | ||
3.1 Überblick | 77 | ||
3.2 Vorbereitungen für den Entwurf | 79 | ||
3.2.1 Anforderungsanalyse | 80 | ||
3.2.2 Einflussfaktoren | 83 | ||
3.3 Iterativ, inkrementeller Entwurf, Dokumentation und Bewertung | 84 | ||
3.3.1 Der erste Architekturentwurf | 85 | ||
3.3.2 Iterativ, inkrementelles Ausbauen des Entwurfs | 87 | ||
3.4 Die Umsetzung der Architektur | 88 | ||
3.5 Zusammenfassung | 89 | ||
4 Einflussfaktoren | 90 | ||
4.1 Bedeutung von Einflussfaktoren | 90 | ||
4.2 Arten von Einflussfaktoren | 93 | ||
4.2.1 Organisatorische Faktoren | 93 | ||
4.2.2 Technologische Faktoren | 94 | ||
4.2.3 Produktfaktoren | 95 | ||
4.2.4 Flexibilität, Veränderbarkeit und Einfluss | 98 | ||
4.3 Spezifikation von Einflussfaktoren | 98 | ||
4.3.1 Identifizieren und Präzisieren der Faktoren | 99 | ||
4.3.2 Analyse der Faktoren | 103 | ||
4.3.3 Identifizieren von Architekturthemen und Entwickeln von Strategien | 105 | ||
4.4 Zusammenfassung | 108 | ||
5 Entwurf von Softwarearchitekturen | 110 | ||
5.1 Entwurfsumfeld und wichtige Begriffe | 111 | ||
5.1.1 Entwurfsziele | 111 | ||
5.1.2 Entwurf und Komplexität | 113 | ||
5.1.3 Vorleistungen | 114 | ||
5.1.4 Allgemeine Aktivitäten beim Entwurf | 116 | ||
5.1.5 Fünf Kriterien für einen korrekten Entwurf | 118 | ||
5.2 Fundamentale Entwurfsprinzipien | 121 | ||
5.2.1 Abstraktion | 122 | ||
5.2.2 Kapselung | 123 | ||
5.2.3 Modularität | 124 | ||
5.2.4 Hierarchie | 125 | ||
5.2.5 Konzeptuelle Integrität | 126 | ||
5.3 Komponenten und Schnittstellen | 127 | ||
5.3.1 Komponenten - Grundbausteine der Architektur | 127 | ||
5.3.2 Schnittstellen - Vertragswerk der Softwarearchitektur | 131 | ||
5.3.3 Techniken zur Adaption von Komponenten | 132 | ||
5.4 Entwurfsschritte und Heuristiken | 133 | ||
5.4.1 Konkrete Entwurfsschritte | 134 | ||
5.4.2 Heuristiken | 139 | ||
5.5 Zusammenfassung | 144 | ||
6 Dokumentation | 146 | ||
6.1 Bedeutung der Dokumentation | 147 | ||
6.2 Anforderungen an eine Dokumentation | 148 | ||
6.2.1 Allgemeine Anforderungen an eine Projektdokumentation | 149 | ||
6.2.2 Anforderungen an Architekturbeschreibungen | 151 | ||
6.3 Bestandteile einer Architekturdokumentation | 153 | ||
6.3.1 Sichten eines Systems | 153 | ||
6.3.2 Zusammenspiel der Sichten | 155 | ||
6.3.3 Beschreibung des Aufbaus und Hilfestellungen | 155 | ||
6.3.4 Zusammenfassung | 156 | ||
6.4 Architektursichten | 156 | ||
6.4.1 Kontextsicht | 158 | ||
6.4.2 Struktursicht | 159 | ||
6.4.3 Verhaltenssicht | 160 | ||
6.4.4 Abbildungssicht | 160 | ||
6.4.5 Sichten in der Literatur | 161 | ||
6.5 UML 2 als Notation für Architektursichten | 164 | ||
6.5.1 UML-Überblick | 164 | ||
6.5.2 Darstellungsmöglichkeiten für die Kontextsicht | 167 | ||
6.5.3 Darstellungsmöglichkeiten für die Struktursicht | 172 | ||
6.5.4 Darstellungsmöglichkeiten für die Verhaltenssicht | 175 | ||
6.5.5 Darstellungsmöglichkeiten für die Abbildungssicht | 185 | ||
6.5.6 Beschreibungsmöglichkeiten für weitere Architekturaspekte | 187 | ||
6.5.7 UML Erweiterungsmechanismen zur Konsistenzsicherung | 191 | ||
6.6 Zusammenfassung | 193 | ||
7 Bewertung | 194 | ||
7.1 Grundlagen der Architekturbewertung | 194 | ||
7.1.1 Allgemeines Vorgehen und Ergebnis | 196 | ||
7.1.2 Arten von Bewertungen und Zeitpunkt | 197 | ||
7.1.3 Der Faktor Erfahrung | 199 | ||
7.2 Bewertungsmethoden | 200 | ||
7.2.1 Fragetechniken | 201 | ||
7.2.2 Messtechniken | 202 | ||
7.2.3 Auf Erfahrung basierende Argumentation | 203 | ||
7.2.4 Kategorisierung der Bewertungsmethoden | 203 | ||
7.3 Szenariobasierte Bewertung | 205 | ||
7.3.1 ATAM | 205 | ||
7.3.2 ATAM-Phasen | 206 | ||
7.3.3 ATAM-Schritte | 211 | ||
7.4 Kosten und Nutzen | 216 | ||
7.4.1 Kosten | 217 | ||
7.4.2 Nutzen | 218 | ||
7.5 Zusammenfassung | 220 | ||
8 Die Toolbox des Softwarearchitekten | 222 | ||
8.1 Einführung | 222 | ||
8.1.1 Historie und derzeitiger Stand | 223 | ||
8.1.2 Vorteile und Aufbau unserer Toolbox | 224 | ||
8.1.3 Wie erwirbt der Architekt sein Wissen? | 226 | ||
8.2 Lösungsvorlagen und Methoden | 226 | ||
8.2.1 Anwendung von Architekturstilen | 227 | ||
8.2.2 Anwendung von Architekturmustern | 232 | ||
8.2.3 Anwendung von Entwurfsmustern | 238 | ||
8.3 Technologien und Werkzeuge | 246 | ||
8.3.1 Betriebssysteme und Programmiersprachen | 247 | ||
8.3.2 Bibliotheken, Komponenten und Frameworks | 248 | ||
8.3.3 Modellierung und Generierung | 251 | ||
8.3.4 Analyse und Rekonstruktion | 253 | ||
8.4 Zusammenfassung | 255 | ||
9 Fallbeispiel | 258 | ||
9.1 Projektbeschreibung | 258 | ||
9.2 Schrittweises Vorgehen zur Erstellung der Architektur | 259 | ||
9.3 Ausgangssituation | 261 | ||
9.4 Anforderungen und Use Cases | 262 | ||
9.5 Analysemodell | 264 | ||
9.6 Aufbau der Architekturdokumentation | 265 | ||
9.7 Architekturerstellung | 266 | ||
9.7.1 Spezifikation der Einflussfaktoren | 266 | ||
9.7.2 Entwurf und Dokumentation | 272 | ||
9.7.3 Umfangreiches Assessment | 279 | ||
9.8 Umsetzung der Architektur | 281 | ||
9.9 Zusammenfassung | 282 | ||
10 Softwarearchitektur im industriellen Maßstab | 286 | ||
10.1 Chronische Probleme der heutigen Softwareentwicklung | 287 | ||
10.1.1 Unnötige Freiheitsgrade bei Sprachen und Tools | 287 | ||
10.1.2 Schwerpunkt auf Einzelprojekten | 289 | ||
10.1.3 Ungenügendes Zusammenspiel von Komponenten | 289 | ||
10.2 Bahnbrechende Innovationen | 292 | ||
10.2.1 Innovationsfeld 1: Systematische Wiederverwendung | 292 | ||
10.2.2 Innovationsfeld 2: Modellgetriebene Entwicklung | 293 | ||
10.3 Komplexität und die Abstraktionslücke | 295 | ||
10.3.1 Arten von Komplexität in der Softwareentwicklung | 295 | ||
10.3.2 Die Abstraktionslücke | 296 | ||
10.3.3 Verkleinern der Abstraktionslücke | 297 | ||
10.4 Zusammenfassung | 298 | ||
11 Produktlinien für Software | 300 | ||
11.1 Was sind Produktlinien? | 300 | ||
11.1.1 Vom Softwaresystem zur Standardplattform | 301 | ||
11.1.2 Grundlegende Begriffe | 303 | ||
11.1.3 Wann sind Softwareproduktlinien sinnvoll? | 306 | ||
11.1.4 Softwareproduktlinien in drei Dimensionen | 312 | ||
11.1.5 Wiederverwendung als treibende Kraft | 313 | ||
11.2 Aktivitäten und Vorgehen | 316 | ||
11.2.1 Wesentliche Aktivitäten zum Betrieb einer Produktlinie | 316 | ||
11.2.2 Tätigkeiten des Softwarearchitekten | 318 | ||
11.2.3 Allgemeine Schritte zum Produktlinienentwurf | 320 | ||
11.2.4 Softwarebezogene Schritte zur Einführung | 321 | ||
11.3 Architektur und Software Engineering | 322 | ||
11.3.1 Aufgaben für Architekt und Softwareingenieur | 322 | ||
11.3.2 Komponenten - Grundbausteine der Produktlinie | 326 | ||
11.3.3 Objektorientierte Frameworks | 328 | ||
11.4 Technische und organisatorische Aufgaben | 331 | ||
11.4.1 Technische Aufgaben | 331 | ||
11.4.2 Organisatorische Aufgaben | 333 | ||
11.5 Zusammenfassung | 333 | ||
12 Modellbasierte Entwicklung mit MDA und DSLs | 336 | ||
12.1 Grundidee von MDA | 337 | ||
12.2 Konzepte | 339 | ||
12.2.1 Modelle | 339 | ||
12.2.2 Transformationen | 342 | ||
12.3 Metamodellierung | 344 | ||
12.3.1 Vier-Schichten-Modell der Metamodellierung | 345 | ||
12.4 Fallstudie | 347 | ||
12.4.1 Plattformunabhängiges Modell (PIM) | 347 | ||
12.4.2 Technische Lösung und Markierungen | 348 | ||
12.4.3 Transformation PIM zu PSM | 349 | ||
12.4.4 Plattformabhängiges Modell (PSM) | 350 | ||
12.4.5 Transformation PSM zu Code | 351 | ||
12.5 Alternative: Domänenspezifische Sprachen | 353 | ||
12.5.1 Grundidee der domänenspezifischen Sprachen | 353 | ||
12.5.2 Werkzeugunterstützung für DSLs | 355 | ||
12.5.3 Anwendungsfelder | 357 | ||
12.6 Zusammenfassung | 358 | ||
Literatur | 362 | ||
Index | 368 |