Jens Trompeter (Hrsg.), Georg Pietrek (Hrsg.), Juan Carlos Flores Beitran, Boris Holzer, Thorsten Kamann, Michael Kloss, Steffen A. Mork, Benedikt Niehues, Karsten Thoms Modellgetriebene Softwareentwicklung MDA und MDSD in der Praxis ntwickier.press
1 Einleitung 1.1 Zielgruppe und Aufbau dieses Buches IT-Verantwortliche, Manager und Projektleiter Analysten und Software-Architekten Software-Entwickler, Test- und Build-Manager 1.2 Motivation 1.3 Begriffe Modellgetriebene Softwareentwicklung Model Driven Architecture (MDA) 1.4 Vorteile im Überblick 1.5 Bedeutung von MDA in der Praxis 1.6 Einführung in das Beispiel 2 Etablierung von MDSD in der Softwareentwicklung 2.1 MDSD im objektorientierten Entwicklungsprozess 2.2 MDSD und Vorgehensmodelle V-Modell XT Rational Unified Process (RUP) Generative Development Process (GDP) Agile Softwareentwicklung 2.3 Projektvorgehen Entwicklung des Generators Parallele Entwicklung von Generator und Anwendun 3 Modellierung 3.1 Modellierung im Sinne der MDA 3.2 Abstraktion 3.3 Agile Modellierung 3.4 Modellierungssprachen Definition von Modellierungssprachen Beispiele für Modellierungssprachen 3.5 Metamodellierung Modellgetriebene Softwareentwicklung
3.6 Domänenspezifische Modellierung 56 Domänenspezifische Sprachen 57 Erfolgsfaktor domänenspezifische Modellierung 59 DSLs im Projekt 60 Anhaltspunkte auf dem Weg zu einer geeigneten DSL 62 Frameworks zur Definition von Modellierungssprachen 64 3.7 Modellvalidierung 67 Validierungstechnologien 68 Beispiel 69 3.8 Modelltransformationen 70 Transformationsarten 71 Transformationstechnologien 71 3.9 Werkzeugunterstützung 72 Anforderungen an ein Modellierungswerkzeug 72 Werkzeuganpassung/-erstellung 75 4 Domänenspezifische Sprachen in der Praxis 85 4.1 WebML 85 Motivation 85 Modelle 87 Der WebML-Entwicklungsprozess 100 4.2 Der Entwurf einer DSL für Tests mit FIT und FitNesse 102 Einleitung 102 Was ist FIT? 103 Erarbeitung der DSL 111 5 Best Practices 119 5.1 Entwicklung von Cartridges 119 Was sind Generatoren? 119 Was sind Cartridges? 121 Aufbau einer Cartridge 122 Entwicklung einer Cartridge 125 Erweiterte Konzepte im openarchitectureware Framework 127 Integration in den Entwicklungsprozess 132 Versionierung 133 Deployment und Distribution 134 Integration in die Entwicklungsumgebung 136 5.2 Integration in den Buildprozess 136 Build-Automatisierung / -Management 136 Ant 138 Maven 147 Continuous Integration 155 5.3 Dokumentation 159 Verschiedene Arten der Dokumentation 160 Technische Dokumentation 160 Architekturdokumentation 165 Generatordokumentation 172
5.4 Handgeschriebener Code 173 Bedarf für handgeschriebene Ergänzungen 173 Anforderungen für den Umgang mit generiertem Code 174 Ansatz 1: Getrennte Dateien 175 Ansatz 2: Geschützte Bereiche 177 Eine Zukunftsvision 180 5.5 Wiederverwendung und Austausch über die Fornax-Plattform 181 6 MDSD-Anwendunqsbeispiel 183 6.1 Erstellung des Anwendungsmodells 184 Definition des Profils 184 Geschäftsobjektmodell 187 Business-Fassade 190 Präsentationsschicht 191 6.2 openarchitectureware 4 192 Generator Workflow 193 Das openarchitectureware Expressions Framework und das interne Typsystem 194 xpand 194 Xtend 196 Check 197 6.3 Entwicklungs- und Laufzeitumgebung des Beispielprojekts 198 Projektstruktur 198 Struktur des Projekts fornax-cartridges-uml2-ejb3-generator 200 Struktur des Projekts librarygenerator 200 6.4 Entwicklung der Generator Cartridge 201 Workflow 201 Extensions 203 Templates 204 6.5 Vom Generierungsergebnis zur lauffähigen Anwendung 230 Manuelle Anteile an den JSPs 230 Implementierung der Handler-Methoden 231 Implementierung der Session Bean 232 Weitere manuelle Implementierungen 234 6.6 Benutzung des Anwendungsbeispiels 234 Installationsanweisung 234 Starten der Applikation 234 Die Anwendung 238 7 Fazit und Ausblick 241 7.1 Zusammenfassung 241 7.2 Wo steht MDSD heute? 243 Modellierung - mehr als ein anerkanntes Hilfsmittel 243 Hype oder nicht? 244 Modellgetriebene Softwareentwicklung 7
7.3 Wohin bewegt sich MDSD? 244 Modellierung - mehr als UML 244 Weitere Anwendungsbereiche des modellgetriebenen Vorgehens 247 Trends bei MDSD-Werkzeugen und -Frameworks 249 Stichwortverzeichnis 251 8