|
Inhaltsverzeichnis |
6 |
|
|
Teil I Einführung |
18 |
|
|
1 Einleitung |
20 |
|
|
1.1 Das Thema des Buches |
20 |
|
|
1.2 Zielgruppen |
22 |
|
|
1.3 Ziele des Buches |
23 |
|
|
1.4 Abgrenzung |
24 |
|
|
1.5 Struktur des Buches und Leitfaden für den Leser |
24 |
|
|
1.6 Die zweite Auflage |
26 |
|
|
1.7 Webseite zum Buch |
27 |
|
|
1.8 Danksagungen |
27 |
|
|
2 Einführung in MDSD |
28 |
|
|
2.1 Was ist MDSD |
28 |
|
|
2.2 Gründe für MDSD |
30 |
|
|
2.3 Erstes Fallbeispiel: Generator für einfache Webanwendungen |
33 |
|
|
3 Begriffe und Konzepte |
44 |
|
|
3.1 Definitionen |
44 |
|
|
3.2 Verwandte Ansätze |
52 |
|
|
3.3 Vergleich mit anderen Techniken |
60 |
|
|
Teil II Domänenarchitekturen |
70 |
|
|
4 Das Beispiel – eine Versicherungsanwendung |
72 |
|
|
4.1 Das Projekt |
72 |
|
|
4.2 Fachlichkeit |
73 |
|
|
4.3 Architektur |
74 |
|
|
5 Metamodellierung |
76 |
|
|
5.1 Einführung |
76 |
|
|
5.2 Konkrete Technologien |
81 |
|
|
5.3 Best Practices |
92 |
|
|
5.4 Typische Metamodellbestandteile |
95 |
|
|
5.5 Validierung von Metamodellen |
106 |
|
|
5.6 Beispiel |
106 |
|
|
6 Domänenspezifische Sprachen |
114 |
|
|
6.1 Kategorisierung |
115 |
|
|
6.2 Techniken der DSL-Entwicklung |
120 |
|
|
6.3 Best Practices |
130 |
|
|
6.4 Anwendung im Versicherungsbeispiel |
134 |
|
|
7 Konstruktion MDSD-tauglicher Zielarchitekturen |
140 |
|
|
7.1 Softwarearchitektur im Kontext von MDSD |
140 |
|
|
7.2 Was ist eine gute Architektur? |
142 |
|
|
7.3 Wie kommt man zu einer guten Architektur? |
143 |
|
|
7.4 Bausteine für Softwarearchitektur |
144 |
|
|
7.5 Architektur-Referenzmodell |
146 |
|
|
7.6 Ausbalancierung der Plattform |
147 |
|
|
7.7 SOA, BPM und MDSD |
149 |
|
|
8 Codegenerierung |
156 |
|
|
8.1 Workflows und Cartridges |
156 |
|
|
8.2 Codegenerierung – warum? |
158 |
|
|
8.3 Kategorisierung |
160 |
|
|
8.4 Konstruktion von Codegeneratoren |
162 |
|
|
8.5 Best Practices |
174 |
|
|
8.6 Testen von Generatoren |
183 |
|
|
8.7 Versicherungsbeispiel |
185 |
|
|
9 Interpreter |
190 |
|
|
9.1 Interpreter und Generatoren |
191 |
|
|
9.2 MDSD-Terminologie aus Sicht von Interpretern |
192 |
|
|
9.3 Nichtfunktionale Eigenschaften von Interpretern |
194 |
|
|
9.4 Integration eines Interpreters in ein System |
196 |
|
|
9.5 Interpretation von Ausdrücken |
198 |
|
|
9.6 Interpreter und Tests |
205 |
|
|
9.7 Interpreter im Versicherungsbeispiel |
207 |
|
|
10 Modell-zu-Modell-Transformationen |
212 |
|
|
10.1 Wozu Modelltransformationen? |
212 |
|
|
10.2 Kategorisierung |
216 |
|
|
10.3 Herausforderungen |
218 |
|
|
10.4 Konkrete Lösungen |
221 |
|
|
10.5 Testen von Modelltransformationen |
224 |
|
|
10.6 Modelltransformationen im Versicherungsbeispiel |
225 |
|
|
Teil III Prozesse und Engineering |
230 |
|
|
11 MDSD-Prozessbausteine und Best Practices |
232 |
|
|
11.1 Einleitung |
232 |
|
|
11.2 Trennung von Anwendungs- und Domänenarchitekturentwicklung |
232 |
|
|
11.3 Zweigleisig iterative Entwicklung |
242 |
|
|
11.4 Entwicklungsprozess für Zielarchitekturen |
244 |
|
|
11.5 Grundlagen des Product Line Engineering |
254 |
|
|
12 Testen |
264 |
|
|
12.1 Testen von Softwaresystemen |
265 |
|
|
12.2 Testen mit MDSD |
270 |
|
|
12.3 Modellgetriebenes Testen |
273 |
|
|
13 Versionierung |
284 |
|
|
13.1 Was wird versioniert? |
284 |
|
|
13.2 Projekte und Abhängigkeiten |
285 |
|
|
13.3 Struktur von Anwendungsprojekten |
286 |
|
|
13.4 Versionsmanagement und Build-Prozess bei gemischten Dateien |
287 |
|
|
13.5 Modellierung im Team und Versionierung von Teilmodellen |
289 |
|
|
14 Fallstudie: Eingebettete Komponenteninfrastrukturen |
296 |
|
|
14.1 Überblick |
296 |
|
|
14.2 Product Line Engineering |
299 |
|
|
14.3 Modellierung |
307 |
|
|
14.4 Implementierung von Komponenten |
314 |
|
|
14.5 Generatorentwicklung |
316 |
|
|
14.6 Codegenerierung |
322 |
|
|
14.7 Kaskadierte Domänenarchitekturen |
329 |
|
|
Teil VI Management |
334 |
|
|
15 Entscheidungshilfen |
336 |
|
|
15.1 Betriebswirtschaftliches Potenzial |
336 |
|
|
15.2 Automation und Wiederverwendung |
338 |
|
|
15.3 Qualität |
343 |
|
|
15.4 Wiederverwendung |
346 |
|
|
15.5 Portabilität, Änderbarkeit |
347 |
|
|
15.6 Investitionen und erzielbare Gewinne |
348 |
|
|
15.7 Kritische Fragen |
354 |
|
|
15.8 Zusammenfassung |
359 |
|
|
15.9 Weiterführende Literatur |
359 |
|
|
16 Organisatorische Aspekte |
360 |
|
|
16.1 Rollenverteilung |
360 |
|
|
16.2 Teamstruktur |
364 |
|
|
16.3 Software-Produktentwicklungsmodelle |
369 |
|
|
17 Adaptionsstrategien für MDSD |
378 |
|
|
17.1 Voraussetzungen |
378 |
|
|
17.2 Getting Started – MDSD-Pilotierung |
379 |
|
|
17.3 MDSD-Adaptierung bestehender Systeme |
381 |
|
|
17.4 Klassifikation des Software-Inventars |
383 |
|
|
17.5 Bauen, Kaufen oder Open Source |
385 |
|
|
17.6 Entwurf einer Zulieferkette |
386 |
|
|
17.7 Inkrementelle Evolution von Domänenarchitekturen |
387 |
|
|
17.8 Risikomanagement |
388 |
|
|
Anhang |
392 |
|
|
A MDA-Standard |
394 |
|
|
A.1 Ziele |
394 |
|
|
A.2 Kernkonzepte |
395 |
|
|
A.3 Herausforderungen für die MDA |
407 |
|
|
B Queries/Views/Transformations (QVT) |
410 |
|
|
B.1 Historie |
410 |
|
|
B.2 Architektur |
411 |
|
|
B.3 Eine Beispiel-Transformation |
413 |
|
|
B.4 Bewertung |
426 |
|
|
C Quelltext der Modelltransformationen |
430 |
|
|
C.1 Complete QVT Relations alma2db Example |
430 |
|
|
C.2 Complete QVT Operational Mappings alma2db Example |
436 |
|
|
D Literatur |
440 |
|
|
E Autoren |
448 |
|
|
Stichwortverzeichnis |
450 |
|