Einführung in modellgetriebene Softwareentwicklung 24. Oktober 2012
Überblick Was sind die Grundprinzipien der modellgetriebenen Softwareentwicklung? Entwicklung einer MDD-Infrastruktur Modellgetriebene Anwendungsentwicklung Welche Voraussetzungen müssen für die modellgetriebene Entwicklung von Anwendungssoftware erfüllt sein? Wann lohnt sich die Entwicklung einer Infrastruktur für modellgetriebenes Entwickeln in einer Domäne? Meinungen über modellgetriebene SW-Entwicklung Taentzer Modellgetriebene Softwareentwicklung 39
Rollen in der modellgetriebenen Softwareentwicklung Werkzeugentwickler entwickelt eine MDD-Infrastruktur: Modellierungssprache Werkzeuge, wie z.b. Editor, Generator, etc. hat im Wesentlichen Technologiewissen Anwendungsentwickler nutzt eine MDD-Infrastruktur entwickelt eine konkrete Applikation mit dieser Infrastruktur hat im Wesentlichen Domänenwissen Taentzer Modellgetriebene Softwareentwicklung 40
Was kann modellgetriebene Entwicklung von Anwendungssoftware leisten? verkürzte Entwicklungszeiten weniger technisches Wissen leichtere Umstellung auf neue Technologien stärkere Entkoppelung von Anwendungswissen und Technologiewissen Kohärenz von Modell und Code wohldefinierte Softwarearchitektur, besserer Code... Voraussetzung: eine existierende MDD-Infrastruktur, die es erlaubt, große Teile der Anwendung modellgetrieben zu entwickeln. flexibel genug für eventuelle Anwendungserweiterungen ist. Taentzer Modellgetriebene Softwareentwicklung 41
Wann sollten Anwendungsentwickler eine MDD-Infrastruktur benutzen? adäquate Modellierungssprache vorhanden genügend Domänenwissen behandelt ein genügend ausgereifter Codegenerator vorhanden ideal: ausgereifte Frameworks mit standardisierter Benutzung vorhanden Referenzanwendungen zum Vergleich vorhanden Entwicklungsumgebung zur modellgetriebenen Softwareentwicklung vorhanden Editoren für die Modellierungssprache, Generator, Debugger, Versionsverwaltung, Taentzer Modellgetriebene Softwareentwicklung 42
Iterative Softwareentwicklung Vorbereitung Nachbereitung Analyse (Anforderungsmodell) Test (Evaluierung) Design (Lösungsmodell) visuell MDD Implementierung (Lösung) textuell Taentzer Modellgetriebene Softwareentwicklung 43
Die MDA-Idee von der Object Management Group (OMG) entwickelt Motto: Model once, run anywhere. Mögliche Zielplattformen: CORBA /C++ J2EE / Java XML Beziehungen zwischen Modellen: Modell-zu-Modell-Tr. (M2M) Modell-zu-Code-Tr. (M2C) Computer Independent Model M2M Plattform Independent Model M2M Plattform Plattform Specific Specific Model Model M2C Plattform Taentzer Modellgetriebene Softwareentwicklung 44
Beispiel für eine MDD-Infrastruktur: AndroMDA für Webanwendungen Domäne: Datenintensive Anwendungen, speziell Webanwendungen Modellierungssprache: UML mit domänenspezifischen Erweiterungen Modelle enthalten Domänenwissen über Datenstrukturen, Services, Web-Oberfläche Codegenerator enthält Wissen über die Benutzung unterliegender Plattformen (z.b. OO- Konzepte, OR-Mapping, etc) Architektur von Web-Anwendungen Frameworks und Bibliotheken: Java-Plattform: Hibernate, Spring, Struts, etc..net-plattform: C#, NHibernate, ASP, etc. Taentzer Modellgetriebene Softwareentwicklung 45
Wann lohnt es sich MDD- Infrastrukturen zu entwickeln? Viele ähnliche Anwendungen in derselben Domäne Anwendungen enthalten einen großen Teil von schematisch wiederkehrendem Code. Es ist zu erwarten, dass die Anwendung auf eine höhere Abstraktionsebene gehoben werden kann. Domänenspezifische Modellierungssprache ist vorhanden oder lässt sich aus vorhandenen Anwendungen ableiten. Technologieänderungen sind wahrscheinlich. Optional: Anwendungsentwickler verfügen über begrenztes Technologiewissen. Taentzer Modellgetriebene Softwareentwicklung 46
Entwicklung einer MDD-Infrastruktur Voraussetzung: Meta-Infrastruktur Definitionsmöglichkeit für die Modellierungssprache: Metamodellierung Definitionsmöglichkeit für die Generatoren: Template- Sprachen Frameworks für (verschiedene) Plattformen Definition der Modellierungssprache: Domänenanalyse: Welche syntaktischen Elemente? Definition der Generatoren: Domänenanalyse: Welche Semantiken? Weitere MDD-Infrastrukturkomponenten Taentzer Modellgetriebene Softwareentwicklung 47
Beispiel für eine MDD-Infrastruktur: AndroMDA Domäne: Datenintensive Anwendungen, speziell Webanwendungen Modellierungssprache: UML mit domänenspezifischen Erweiterungen Syntaxdefinition der Modellierungssprache: Metamodellierung, speziell Meta Object Facilities (MOF) Semantikdefinition durch Codegenerierung: Template-Sprache: Velocity Frameworks und Bibliotheken: Java-Plattform: Hibernate, Spring, Struts, etc..net-plattform: C#, NHibernate, ASP, etc. Taentzer Modellgetriebene Softwareentwicklung 48
Entwicklung einer MDD-Infrastruktur anhand einer Referenzapplikation Zweigleisige Softwareentwicklung: eine konkrete Applikation MDD-Infrastruktur für die Entwicklung von Softwarefamilien MDD-Infrastruktur: Modellierungssprache (Metamodell, konkrete Syntax) Generator Zielplattformen Henne-oder-Ei -Problem Infrastruktur und Applikation werden verschränkt entwickelt Taentzer Modellgetriebene Softwareentwicklung 49
MDD-Infrastruktur- Entwicklungsprozess Iterative Softwareentwicklung verschränkte Entwicklung einzelner Applikationen und der MDD- Infrastruktur Entwicklung von ein oder mehreren konkreten Applikationen ohne MDD Bestimmung allgemeiner und spezifischer Anforderungen Entwicklung der MDD-Infrastruktur Entwicklung derselben Applikationen mit der MDD-Infrastruktur Analyse des Applikationscodes generischer Code (für alle Applikationen gleich) schematisch wiederkehrender Code ( bis auf wenige Information gleiche Codeteile) individueller Code (anwendungsspezifischer Teil) MDD generiert schematische Codeteile aus dem Applikationsmodell Taentzer Modellgetriebene Softwareentwicklung 50
Analyse von Applikationscode Code einer Referenzanwendung analysieren individueller Code schematisch wiederkehrender Code separieren generischer Code Anwendungsmodell individueller Code schematisch wiederkehrender Code Plattform Taentzer Modellgetriebene Softwareentwicklung 51
Welche MDD-Infrastruktur wird extrahiert? Für eine generative Softwareentwicklung wird von einer oder mehreren Applikationen extrahiert: Metamodell für domänenspezifische Modellierungssprache Modelltransformationen: Transformationen zu Zwischenmodellen Generatoren: Model-zu-Code-Transformer Templates definieren Codefragmente aus der Applikation Benutzung von Plattformen Taentzer Modellgetriebene Softwareentwicklung 52
Generative Softwareentwicklung Applikation Domänenspezif. Design-Modell transformiert in Infrastruktur-Code modelliert mit Generator MDD-Infrastruktur Domänenspezifische Modellierungssprache Generator Templates (Modell-zu-Code Tr. ) Anwendungsspez.- Code Infrastrukturkomponenten (Plattform) Taentzer Modellgetriebene Softwareentwicklung 53
Meinungen über MDD Mit MDD kann man schneller Software entwickeln. wenn die passende MDD-Infrastruktur vorhanden ist Modellgetrieben entwickelte Software ist qualitativ besser. Qualität hängt vom Generator und den unterliegenden Plattformen ab. Er muss mit genügend Technologiewissen entwickelt worden sein. Für die Anwendungsentwicklung muss genügend Domänenwissen vorhanden sein. Taentzer Modellgetriebene Softwareentwicklung 54
Meinungen über MDD Mit MDD kann Software auch ohne oder mit nur geringen Programmierkenntnissen erstellt werden. Die domänenspezifische Modellierungssprache muss beherrscht werden. Der generierte Code kann ohne Programmierkenntnisse nicht mehr erweitert werden. MDD ist für große Projekte nicht einsetzbar. Es gibt bisher wenige Referenzen. Es spricht prinzipiell nichts dagegen. Taentzer Modellgetriebene Softwareentwicklung 55
Meinungen über MDD MDD wird in vielen Firmen nicht eingesetzt, weil die Entwickler keine oder nur geringe Kenntnisse im Modellieren haben. Die domänenspezifische Modellierungssprache muss erlernt werden. MDD macht die SW-Entwicklung nicht leichter. Es werden nur andere Sprachen benutzt. Domänenspezifische Modelle sind technologieunabhängiger. Ein Modell ist viel kompakter als der entsprechende Code. Viele Detaillösungen werden standardmäßig generiert. Es ist weniger plattformspezifisches Wissen nötig. Taentzer Modellgetriebene Softwareentwicklung 56
Meinungen über MDD MDD läßt sich real nicht einsetzen, weil es keine adäquaten Entwicklungsumgebungen gibt. Die MDD-Infrastruktur muss zu einer umfassenden Entwicklungsumgebung ausgebaut werden. MDD hilft nicht wirklich. Es ist genauso schwierig, gute Modelle zu entwickeln wie gute Programme zu schreiben. Der Generator enthält Technologiewissen, das nicht im Modell steht, also vom Applikationswissen getrennt ist. Aber: Modellieren ist wie Programmieren ein kreativer Akt. Taentzer Modellgetriebene Softwareentwicklung 57
Zusammenfassung Modellgetriebene Entwicklung bedeutet zweierlei: Entwicklung einer MDD-Infrastruktur Entwicklung einer Anwendung mit der MDD-Infrastruktur Entwicklung einer MDD-Infrastruktur: Entwicklung von Referenzapplikationen Analyse des Applikationscodes: Separierung in generischen, schematisch wiederkehrenden und individuellen Code Definition einer Modellierungssprache Definition von Generatoren Taentzer Modellgetriebene Softwareentwicklung 58