Einführung in modellgetriebene Softwareentwicklungswt/ws12/mdd/files/Folien… · Die MDA-Idee von...
Transcript of Einführung in modellgetriebene Softwareentwicklungswt/ws12/mdd/files/Folien… · Die MDA-Idee von...
Einführung in modellgetriebene Softwareentwicklung
24. Oktober 2012
Taentzer Modellgetriebene Softwareentwicklung 39
Überblick Was sind die Grundprinzipien der modellgetriebenen
Softwareentwicklung? Entwicklung einer MDD-Infrastruktur Modellgetriebene Anwendungsentwicklung
Welche Voraussetzungen müssen für die modellgetriebene Entwicklung von Anwendungs-software 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 40
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 41
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 42
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 43
Iterative Softwareentwicklung
Design(Lösungsmodell)
Implementierung(Lösung)
Analyse(Anforderungsmodell)
Test(Evaluierung)
Vorbereitung Nachbereitung
MDDvisuell textuell
Taentzer Modellgetriebene Softwareentwicklung 44
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)
ComputerIndependent Model
PlattformIndependent Model
PlattformSpecific Model
PlattformSpecific Model
Plattform
M2M
M2M
M2C
Taentzer Modellgetriebene Softwareentwicklung 45
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.
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
Taentzer Modellgetriebene Softwareentwicklung 47
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 48
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 49
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 50
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 51
Analyse von Applikationscode
Code einer Referenzanwendung
schematischwiederkehrenderCode
individueller Code
generischer Code
Anwendungs-modell
schematischwiederkehrenderCode
individueller Code
Plattform
analysieren separieren
Taentzer Modellgetriebene Softwareentwicklung 52
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 53
Generative Softwareentwicklung
Applikation MDD-Infrastruktur
Generator
Domänenspezif.Design-Modell
Anwendungsspez.-Code
Infrastruktur-Code
DomänenspezifischeModellierungssprache
Generator Templates(Modell-zu-Code Tr. )
Infrastrukturkomponenten(Plattform)
modelliert mit
transformiert in
Taentzer Modellgetriebene Softwareentwicklung 54
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 55
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 56
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 57
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 58
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