| |
Inhaltsverzeichnis |
6 |
|
| |
1 Einleitung |
10 |
|
| |
1.1 Zielgruppe und Aufbau dieses Buches |
10 |
|
| |
1.1.1 IT-Verantwortliche, Manager und Projektleiter |
10 |
|
| |
1.1.2 Analysten und Software-Architekten |
10 |
|
| |
1.1.3 Software-Entwickler, Test- und Build-Manager |
10 |
|
| |
1.2 Motivation |
11 |
|
| |
1.3 Begriffe |
12 |
|
| |
1.3.1 Modellgetriebene Softwareentwicklung |
12 |
|
| |
1.3.2 Model Driven Architecture (MDA) |
15 |
|
| |
1.4 Vorteile im Überblick |
16 |
|
| |
1.5 Bedeutung von MDA in der Praxis |
18 |
|
| |
1.6 Einführung in das Beispiel |
20 |
|
| |
2 Etablierung von MDSD in der Softwareentwicklung |
22 |
|
| |
2.1 MDSD im objektorientierten Entwicklungsprozess |
22 |
|
| |
2.2 MDSD und Vorgehensmodelle |
25 |
|
| |
2.2.1 V-Modell XT |
25 |
|
| |
2.2.2 Rational Unified Process (RUP) |
27 |
|
| |
2.2.3 Generative Development Process (GDP) |
29 |
|
| |
2.2.4 Agile Softwareentwicklung |
32 |
|
| |
2.3 Projektvorgehen |
38 |
|
| |
2.3.1 Entwicklung des Generators |
38 |
|
| |
2.3.2 Parallele Entwicklung von Generator und Anwendung in der Praxis |
41 |
|
| |
3 Modellierung |
46 |
|
| |
3.1 Modellierung im Sinne der MDA |
47 |
|
| |
3.2 Abstraktion |
47 |
|
| |
3.3 Agile Modellierung |
48 |
|
| |
3.4 Modellierungssprachen |
50 |
|
| |
3.4.1 Definition von Modellierungssprachen |
50 |
|
| |
3.4.2 Beispiele für Modellierungssprachen |
51 |
|
| |
3.5 Metamodellierung |
53 |
|
| |
3.6 Domänenspezifische Modellierung |
57 |
|
| |
3.6.1 Domänenspezifische Sprachen |
58 |
|
| |
3.6.2 Erfolgsfaktor domänenspezifische Modellierung |
60 |
|
| |
3.6.3 DSLs im Projekt |
61 |
|
| |
3.6.4 Anhaltspunkte auf dem Weg zu einer geeigneten DSL |
63 |
|
| |
3.6.5 Frameworks zur Definition von Modellierungssprachen |
65 |
|
| |
3.7 Modellvalidierung |
68 |
|
| |
3.7.1 Validierungstechnologien |
69 |
|
| |
3.7.2 Beispiel |
70 |
|
| |
3.8 Modelltransformationen |
71 |
|
| |
3.8.1 Transformationsarten |
72 |
|
| |
3.8.2 Transformationstechnologien |
72 |
|
| |
3.9 Werkzeugunterstützung |
73 |
|
| |
3.9.1 Anforderungen an ein Modellierungswerkzeug |
73 |
|
| |
3.9.2 Werkzeuganpassung/-erstellung |
76 |
|
| |
4 Domänenspezifische Sprachen in der Praxis |
86 |
|
| |
4.1 WebML |
86 |
|
| |
4.1.1 Motivation |
86 |
|
| |
4.1.2 Modelle |
88 |
|
| |
4.1.3 Der WebML-Entwicklungsprozess |
101 |
|
| |
4.2 Der Entwurf einer DSL für Tests mit FIT und FitNesse |
103 |
|
| |
4.2.1 Einleitung |
103 |
|
| |
4.2.2 Was ist FIT? |
104 |
|
| |
4.2.3 Erarbeitung der DSL |
112 |
|
| |
5 Best Practices |
120 |
|
| |
5.1 Entwicklung von Cartridges |
120 |
|
| |
5.1.1 Was sind Generatoren? |
120 |
|
| |
5.1.2 Was sind Cartridges? |
122 |
|
| |
5.1.3 Aufbau einer Cartridge |
123 |
|
| |
5.1.4 Entwicklung einer Cartridge |
126 |
|
| |
5.1.5 Erweiterte Konzepte im openArchitectureWare Framework |
128 |
|
| |
5.1.6 Integration in den Entwicklungsprozess |
133 |
|
| |
5.1.7 Versionierung |
134 |
|
| |
5.1.8 Deployment und Distribution |
135 |
|
| |
5.1.9 Integration in die Entwicklungsumgebung |
137 |
|
| |
5.2 Integration in den Buildprozess |
137 |
|
| |
5.2.1 Build-Automatisierung / -Management |
137 |
|
| |
5.2.2 Ant |
139 |
|
| |
5.2.3 Maven |
148 |
|
| |
5.2.4 Continuous Integration |
156 |
|
| |
5.3 Dokumentation |
160 |
|
| |
5.3.1 Verschiedene Arten der Dokumentation |
161 |
|
| |
5.3.2 Technische Dokumentation |
161 |
|
| |
5.3.3 Architekturdokumentation |
166 |
|
| |
5.3.4 Generatordokumentation |
173 |
|
| |
5.4 Handgeschriebener Code |
174 |
|
| |
5.4.1 Bedarf für handgeschriebene Ergänzungen |
174 |
|
| |
5.4.2 Anforderungen für den Umgang mit generiertem Code |
175 |
|
| |
5.4.3 Ansatz 1: Getrennte Dateien |
176 |
|
| |
5.4.4 Ansatz 2: Geschützte Bereiche |
178 |
|
| |
5.4.5 Eine Zukunftsvision |
181 |
|
| |
5.5 Wiederverwendung und Austausch über die Fornax-Plattform |
182 |
|
| |
6 MDSD-Anwendungsbeispiel |
184 |
|
| |
6.1 Erstellung des Anwendungsmodells |
185 |
|
| |
6.1.1 Definition des Profils |
185 |
|
| |
6.1.2 Geschäftsobjektmodell |
188 |
|
| |
6.1.3 Business-Fassade |
191 |
|
| |
6.1.4 Präsentationsschicht |
192 |
|
| |
6.2 openArchitectureWare 4 |
193 |
|
| |
6.2.1 Generator Workflow |
194 |
|
| |
6.2.2 Das openArchitectureWare Expressions Framework und das interne Typsystem |
195 |
|
| |
6.2.3 xPand |
195 |
|
| |
6.2.4 Xtend |
197 |
|
| |
6.2.5 Check |
198 |
|
| |
6.3 Entwicklungs- und Laufzeitumgebung des Beispielprojekts |
199 |
|
| |
6.3.1 Projektstruktur |
199 |
|
| |
6.3.2 Struktur des Projekts fornax-cartridges-uml2-ejb3- generator |
201 |
|
| |
6.3.3 Struktur des Projekts library.generator |
201 |
|
| |
6.4 Entwicklung der Generator Cartridge |
202 |
|
| |
6.4.1 Workflow |
202 |
|
| |
6.4.2 Extensions |
204 |
|
| |
6.4.3 Templates |
205 |
|
| |
6.5 Vom Generierungsergebnis zur lauffähigen Anwendung |
231 |
|
| |
6.5.1 Manuelle Anteile an den JSPs |
231 |
|
| |
6.5.2 Implementierung der Handler-Methoden |
232 |
|
| |
6.5.3 Implementierung der Session Bean |
233 |
|
| |
6.5.4 Weitere manuelle Implementierungen |
235 |
|
| |
6.6 Benutzung des Anwendungsbeispiels |
235 |
|
| |
6.6.1 Installationsanweisung |
235 |
|
| |
6.6.2 Starten der Applikation |
235 |
|
| |
6.6.3 Die Anwendung |
239 |
|
| |
7 Fazit und Ausblick |
242 |
|
| |
7.1 Zusammenfassung |
242 |
|
| |
7.2 Wo steht MDSD heute? |
244 |
|
| |
7.2.1 Modellierung – mehr als ein anerkanntes Hilfsmittel |
244 |
|
| |
7.2.2 Hype oder nicht? |
245 |
|
| |
7.3.1 Modellierung – mehr als UML |
245 |
|
| |
7.3.2 Weitere Anwendungsbereiche des modellgetriebenen Vorgehens |
248 |
|
| |
7.3.3 Trends bei MDSD-Werkzeugen und -Frameworks |
250 |
|
| |
Stichwortverzeichnis |
252 |
|
| |
Über die Autoren |
256 |
|