Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick 7. Februar 2013
Überblick Zusammenfassung: Generell: Konzepte der Softwaretechnik im Kontext der modellgetriebenen Entwicklung Diskussion über ihre Ausprägung in EMF und mit Xtext und Xtend generierten Infrastrukturen: Entwicklungszeiten Softwarequalität Dokumentation Wiederverwendbarkeit Anpassbarkeit
Diskussion: Kritische Fragen zur modellgetriebenen Softwareentwicklung Taentzer
Modellgetriebene Softwareentwicklung
442
Zusammenfassung: Modellgetriebene Softwareentwicklung MDD bedeutet zweierlei: Entwicklung einer MDD-Infrastruktur für eine Anwendungsdomäne Entwicklung einer Anwendung mit der MDD-Infrastruktur
Entwicklung einer MDD-Infrastruktur Entwicklung von Referenzanwendungen Analyse des Anwendungscode: Separierung in generischen, schematisch wiederkehrenden und individuellen Code Entwicklung einer domänenspezifischen Modellierungssprache in Syntax und Semantik (Editoren, Codegeneratoren)
…
MDD-Infrastruktur Referenzanwendung(en) (Prototyp)
Anwendung
Taentzer
generierte Anwendung
… Modellgetriebene Softwareentwicklung
443
Was kann modellgetriebene Softwareentwicklung leisten?
verkürzte Entwicklungszeiten schnelle Erstellung von Prototypen weniger technisches Wissen leichtere Umstellung auf neue Technologien stärkere Entkoppelung von Domänenwissen und Technologiewissen Kohärenz von Modell und Code wohldefinierte Softwarearchitektur, besserer Code aktuelle Dokumentation Unterstützung bei der Erstellung automatischer Tests
Taentzer
Modellgetriebene Softwareentwicklung
444
Entwicklungszeiten bei modellgetriebenem Vorgehen üblicherweise liegt der grösste Aufwand bei der Implementierung bei modellgetriebenen Vorgehen: Analysephase wie üblich Mehraufwand bei der Entwicklung des Entwurfsmodells (warum?) weitgehende oder sogar komplette Automatisierung der Codeerstellung Qualitätssicherung: Testen auf Codeebene Umstrukturierungen (Refactoring) auf Modellebene Entwicklungsaufwand kann bis zu 60 % reduziert werden. Taentzer
Modellgetriebene Softwareentwicklung
445
Softwarequalität wohldefinierte Software-Architektur MDD-Infrastruktur zwingt zur Einhaltung einer gewissen Architektur generierter Code folgt einer vorgegebenen Architektur
konserviertes Expertenwissen Verwendung von verschiedenen Frameworks Generator enthält das Expertenwissen zur richtigen Verwendung dieser Frameworks
stringente Programmierrichtlinien Eventuell manuell erstellter Code wird an bestimmten Stellen in den generierten Code eingefügt und setzt auf klar strukturierten Schnittstellen auf.
Taentzer
Modellgetriebene Softwareentwicklung
446
Softwarequalität Qualität des generierten Codes: Die Qualität des generierten Codes hängt direkt von der Modell-Code-Transformation ab. Manchmal ist der generierte Code schwer lesbar, nicht dokumentiert und nicht effizient genug. Die Qualität von generiertem Code kann ebenso gut wie von manuell erstelltem sein, wenn die Referenzanwendung gut gepflegt wird, die Transformation sorgfältig entwickelt wird. Meist ist generierter Code systematischer und konsistenter. (warum?) Taentzer
Modellgetriebene Softwareentwicklung
447
Dokumentation Das erstellte Modell ist immer aktuell und bietet einen guten Überblick über die Software. sehr kompakte Informationsdarstellung visuelle Elemente zur Darstellung von Strukturen Neben dem Code können auch die Online-Hilfe und weitere Dokumentation aus dem Modell generiert werden. Trotzdem ist weitere Dokumentation nötig. (Welche?)
Taentzer
Modellgetriebene Softwareentwicklung
448
Wiederverwendbarkeit MDD bietet ein hohes Maß an Wiederverwendbarkeit Aufteilung in domänen- und anwendungsspezifischen Code
Infrastruktur für die Erstellung von Software in einem bestimmten Bereich domänenspezifische Modellierungssprache domänenspezifische Plattform mit Generatoren
Die Infrastruktur ist hochgradig wiederverwendbar.
Taentzer
Modellgetriebene Softwareentwicklung
449
Portabilität, Anpassbarkeit aufgrund des MDA-Ansatzes durch plattfomunabhängiges Modell leichte Portabilität auf andere Plattformen, die durch die MDD-Infrastruktur unterstützt werden schnelle Portabilität auf neue oder geänderte Plattformen (durch Transformationsanpassung)
strukturierte Anpassung an neue Domänenanforderungen Anpassung der Modellierungssprache Anpassung der Model-Code-Transformation Anpassung der übrigen Infrastruktur Taentzer
Modellgetriebene Softwareentwicklung
450
Kritische Fragen zu MDD Was ist neu an MDD? Codegenerierung ist nicht neu aber: MDD ist ein neues Entwicklungsparadigma für Software - Softwareentwicklung auf einer höheren Abstraktionsebene
Wenn der Ansatz so brillant ist, warum wird er nicht mehr benutzt? Wichtige Voraussetzungen, wie flexible Werkzeuge und umfangreiches Wissen zu MDD sind noch nicht gegeben. Die Werkzeuge sind häufig noch nicht reif genug. Aber es gibt durchaus schon Erfolgsgeschichten. Taentzer
Modellgetriebene Softwareentwicklung
451
Beispiele für MDA-Anwendungen Auflistung der OMG: MDA-Erfolgsgeschichten http://www.omg.org/mda/products_success.htm Komponentenbasierte Entwicklung auf Basis der "Model Driven Architecture" (BMW) http://ebookbrowse.com/bien-beschorner-os-05-04-pdfd149667715 Modellgetriebene Softwareentwicklung auf Basis von OpenSource-Werkzeugen – reif für die Praxis? http://www.springerlink.com/content/q48225772l75t675/ Vom Geschäftsprozess zur Anwendung: Modellgetriebene Entwicklung betrieblicher Software http://www.sigs.de/publications/os/2005/MDD/ Andres_MDA_OS_2005.pdf Taentzer
Modellgetriebene Softwareentwicklung
452
Kritische Fragen zu MDD Hat MDD nicht negative Auswirkungen auf die Effizienz und Lesbarkeit des Anwendungscodes? Effizienz und Lesbarkeit sind vom Codegenerator abhängig, sind aber meist so hoch wie bei traditioneller Anwendungssoftware.
Sind nicht die heutigen UML-basierten Entwicklungsumgebungen reifer als MDD-Werkzeuge? Mag sein, sie stellen aber eine andere Kategorie von Werkzeugen dar. Diese Werkzeuge haben keine entsprechende Codegenerierung. Taentzer
Modellgetriebene Softwareentwicklung
453
Kritische Fragen zu MDD Stellt MDD nicht eine zu starke Abhängigkeit einer Anwendung von einem spezifischem Werkzeug dar? Abhängigkeit von einer MDD-Infrastruktur existiert Da MDD-Software häufig Open Source ist, können Änderungen selbst durchgeführt werden. Generierter Code kann auch ohne MDD-Infrastruktur traditionell weiterentwickelt werden.
Ist es nicht teilweise einfacher, den Code zu ändern als das Modell und neu zu übersetzen? Das Modell hat meist eine reiche Semantik, d.h. eine Änderung im Modell zieht viele Änderungen im Code nach sich. Codeänderungen sollten so durchgeführt werden, dass eine modellgetriebene Vorgehensweise weiterhin möglich ist. Taentzer
Modellgetriebene Softwareentwicklung
454
Kritische Fragen zu MDD In kritischen Projektphasen kann es passieren, dass Features gebraucht werden, die die Infrastruktur nicht zur Verfügung stellt. Kleine Anpassungen können direkt an der Infrastruktur vorgenommen werden. Größere Unzulänglichkeiten können nur mit der traditionellen Weiterentwicklung der Software beantwortet werden.
Taentzer
Modellgetriebene Softwareentwicklung
455
Kritische Fragen zu MDD MDD in einem größeren Team heisst verteiltes Modellieren. Gibt es dafür überhaupt unterstützende Werkzeuge? Es gibt bereits UML-CASE-Werkzeuge, die verteiltes Modellieren unterstützen. Die Aufteilung in Teilmodelle kann sinnvoll sein.
Ist handgeschriebener Code nicht zuverlässiger als generierter Code? Compilerfehler wurden auch meist genannt, um weiterhin in einer niederen Programmiersprache zu implementieren. Eine Referenzanwendung wird meist noch verbessert, wenn daraus Templates und der Generator entwickelt werden. Taentzer
Modellgetriebene Softwareentwicklung
456
Ausblick Offene Probleme bzgl. MDD: Entwicklung passender domänenspezifischer Modellierungssprachen integrierte Entwicklungsumgebungen für MDD Standardisierung einer Transformationssprache: Modell-zu-Modell Modell-zu-Code modellgetriebenes Testen Versionierung von Modellen, speziell bei verteiltem Arbeiten Refactoring in modellgetriebener Softwareentwicklung MDD und Legacy Code Taentzer
Modellgetriebene Softwareentwicklung
457
Themen für Fortgeschrittenenpraktika und Abschlussarbeiten Entwicklung einer neuen MDD-Infrastruktur für Webanwendungen, auf verschiedenen Plattformen basierend mobilen Anwendungen Auch in Kooperation mit Externen
Modell-Koevolution Automatische Ableitung von Modellmigrationsskripten von beliebigen Metamodellevolutionen
Verteilte modellgetriebene Softwareentwicklung Implementierung von Strategien für das Verteilen von Modellen Erweiterung von Xtext-generierten Editoren um verteiltes Editieren
Modellversionierung Für eine konkrete DSL: Modellversionierung auf einer höheren Abstraktionsstufe zur Verfügung stellen Taentzer
Modellgetriebene Softwareentwicklung
458
Literatur Völter, Stahl: Modellgetriebene Softwareentwicklung, Wiley, 2006 Steimann, Kühne: Are Models the DNA of Software Construction? A Controversal Discussion, http://www.kbs.unihannover.de/~steimann/published/WiSME2004.pdf
Taentzer
Modellgetriebene Softwareentwicklung
459