Google Suche
Prof. Dr.-Ing. habil. Armin Zimmermann
Fachgebietsleiter
E-Mail: Armin.Zimmermann@TU-Ilmenau.De
Telefon (Sekretariat): +49 3677 69-2767
Das Model-Driven Engineering (MDE) ist ein allgemeiner Technischer-Ansatz der Modelle als wesentliche Grundlage zur Darstellung bzw. Analyse eines Sachverhalts sowie zur Lösung eines bestimmten Problems verwendet. Die Modelle werden dabei im kompletten Produkt- bzw. Projektzyklus verwendet und bilden die Grundlage zur generativen Erzeugung verschiedener benötigter Artefakte. Das Model-Driven (Software) Development (MDD) bildet einen Schwerpunkt der MDE zur modellgetriebenen und generativen Soft- und Hardwareentwicklung. Die Model-Driven Architecture (MDA) ist der MDD Ansatz der Object Management Group (OMG), der das Ziel verfolgt, die Lücke zwischen Modell und Quelltext zu schließen und den Automatisierungsgrad der Entwicklung zu erhöhen. Dies erfolgt durch eine automatische Generierung von Quellcode aus Domänenspezifischen Modellen, die auf definierten Domänenspezifischen Sprachen (DSL) beruhen. Im Ergebnis sollen die Fehlerquellen während der Entwicklung reduziert werden und die Software schneller, effizienter, kostengünstiger und qualitativ hochwertiger erstellt werden.
Dieser weit verbreitete und erfolgreiche Ansatz wird in verschiedenen Projekten und bei der Entwicklung verschiedener Produkten verwendet. Vorreiter dieser Entwicklung sind Java-basierte Tools und Toolchains wie das Eclipse Modeling Project (EMP). Für andere Sprachen stehen jedoch nur wenige, proprietäre oder rudimentäre Lösungen zur Verfügung. Ein Hauptgrund hierfür liegt darin, dass die benötigten Grundlagen, ein kompilierbares (Meta-) Metamodell, inklusive der notwendigen Reflection für andere Sprachen fehlt.
Das Ziel dieses Projektes ist es die Grundlage für das MDE für die Programmiersprache C++ zu legen.
Das MDE4CPP-Prjekt besteht aus mehreren Teilprojekten, deren gemeinsames Ziel es ist ausschließlich auf Grundlage von verschiedenen Modellen und unter Verwendung verschiedener Generatoren, vollständig lauffähige Applikationen zu generieren. Zu dem Projekt gehören folgende Teilprojekte:
Grundlage dieses Teilprojektes ist es lauffähige Applikationen auf Grundlage von Ecore-Modellen zu erstellen. Grundlegendes Metamodel ist das ecore-Metamodell, das aus dem Eclipse-Modeling Framework. Mit Hilfe des ecore4CPP generators und einem C++Compiler wird aus dem ecore.ecore Modell eine ecore Bibliothek (binary und C++ Headerfiles). Das Metamodell dient ensprechend des Reflection-Pattern als Meta-Ebene für alle weiteren Anwendungen der ecore Modelle. Für alle weiteren Modelle (UML4CPP, fUML4CPP) dient das ecore-Metamodell als Beschreibungsebene (Metaebene). Desweiteren kann man das ecore4CPP-Projekte folgendermaßen anwenden:
Weitere Informationen, eine Installationsanleitung, Beispiele und Tutorials finden Sie hier.
Grundlage dieses Teilprojektes ist es lauffähige Applikationen auf Grundlage von UML-Modellen zu erstellen. Grundlage des Metamodel ist das UML-Metamodell der OMG. Diese ist als uml.ecore-Datei in Eclipse verfügbar. Mit Hilfe des ecore4CPP generators und einem C++Compiler wird aus dem uml.ecore Modell eine UML Bibliothek (binary und C++ Headerfiles). Das UML-Metamodell dient ensprechend des Reflection-Pattern als Meta-Ebene für alle weiteren Anwendungen von UML-Modellen. Da das UML-Metamodell selbst auf ecore beruht, wird die UML entsprechend des Reflection-Pattern mithilfe des ecore-Metamodell zur Laufzeit beschrieben.
Desweiteren kann man das UML4CPP-Projekte folgendermaßen anwenden:
Weitere Informationen, eine Installationsanleitung, Beispiele und Tutorials finden Sie hier.
Grundlage dieses Teilprojektes ist es lauffähige Applikationen auf Grundlage von UML-Aktivitätsdiagrmmen zu erstellen. Die Grundlage ist das fUML-Metamodell der OMG. Die .xmi-Datei der Spezifikation wurde in eine fuml.ecore-Datei transformiert. Die Semantik, also die Java implementierungen der Operationen, wurde durch C++ Implementierungen ersetzt. Mit Hilfe des ecore4CPP generators und einem C++Compiler wird aus dem fUML.ecore Modell eine fUML Bibliothek (binary und C++ Headerfiles). Da das fUML-Metamodell auf ecore beruht, wird die fUML entsprechend des Reflection-Pattern mithilfe des ecore-Metamodell zur Laufzeit beschrieben. Mit Hilfe eines UML-Werkzeugs kann man UML-Anwendungsmodelle erstellen, die Aktivitätsdiagramme enthalten. Mit Hilfe der UML4CPP kann das erstellte UML-Anwendungsmodell eine Anwendungs-Bibliothek erstellt werden. Mit Hilfe des integrierten fUML-Generators werden die executions für die Ausführung der Aktionen bzw. Aktivitäten erstellt. Es wird der Locus als Ausführungsumgebung generiert. Anschließend kann das generierte Aktivitätsdiagramm ausgeführt werden.
Weitere Informationen, eine Installationsanleitung, Beispiele und Tutorials finden Sie hier.
Die Erstellung korrekter Kompositionsstrukturen und somit die Erstellung korrekter Exempalrkonstellationen entspechend der Semanik der PSCS ist Gegenstand dieses Teilprojektes. Die Grundlage ist das PSCS-Metamodell der OMG. Die .xmi-Datei der Spezifikation wurde in eine pscs.ecore-Datei transformiert. Die Semantik wurde in C++ implementiert. Mit Hilfe des ecore4CPP generators und einem C++Compiler wird aus dem pscs.ecore Modell eine PSCS Bibliothek (binary und C++ Headerfiles). Da das PSCS-Metamodell auf ecore beruht, wird die PSCS entsprechend des Reflection-Pattern mithilfe des ecore-Metamodell zur Laufzeit beschrieben. Mit Hilfe eines UML-Werkzeugs kann man UML-Anwendungsmodelle erstellen, in denen Kompositionsstrukturen (Kompositionen, Parts usw.) enthalten sind. Mit Hilfe der UML4CPP kann das erstellte UML-Anwendungsmodell eine Anwendungs-Bibliothek oder eine ausführbare Applikation erstellt werden bei der die Kompositionsstrukturen zur Laufzeit korrekt erstellt werden. Dieses Projekt enthält eine Umfangreiche Testsuite entsprechend der in der PSCS-Spezifikation definierten Testfälle.
Weitere Informationen, eine Installationsanleitung, Beispiele und Tutorials finden Sie hier.
Dieses Teilprojekt reichert alle anderen Projekte mit der Fähigkeit an, Modellabfragen mittels OCL zu spezifizieren und diese zur Laufzeit validieren zu können. Die Grundlage ist die Object Constraint Language (OCL) der OMG. Die definierte Grammatik der OCL wird mittels ANTLR in C++ realisiert. Ausgehend von der MOF-Spezifikation der OCL wurde in eine ocl.ecore-Datei mit den notwendigen Typen und operationen zur Verarbeitung von OCL Ausdrücken realisiert. Mit Hilfe des ecore4CPP generators und einem C++Compiler und aus der erstellten Grammatik wird eine OCL Bibliothek (binary und C++ Headerfiles) zur Valisierung von OCL-Ausdrücken erstellt. Dies kann verwendet werden um:
Auch zu diesem Projekt ist eine umfangreiche Tests und Beispiele verfügbar. Weitere Informationen, Beispiele und Tutorials finden Sie hier.
Zur Erstellung der notwendigen Modelle für MDE4CPP kan prinzipiell jedes Modellierungswerkzeug, dass xmi-Konforme ecore bzw. uml-Diagramme als Speicherformat besitzt verwendet werden. Für die Modellierung spezieller Askekte der Aktivitätsdiagramme wurde ein Fork vom Obeo-UMLDesigner angelegt und um MDE4CPP spezifische Aspekte erweitert (self Pin, Opaque Behavior mit C++, ExpensionRegion/-Node, spezielle UML:Actions: wir Create-, Destroy und Opaque-Action).
Hier finden Sie Informationen zum Download und zur Installation des MDE4CPP Projektes. Es werden die Installationsvoraussetzungen (C++ Comiler, Java, Eclipse, gradle usw. ) beschrieben. Es wird eine Kunrzinstallationsaneitung sowie Links zu den ausführlichen Installationsanleitungen angeboten. Ebenso können Sie Informationen zur Lizenz und zur übermittlung von von Beiträgen zum MDE4CPP Projekt erfahren. Schließlich finden Sie hier den Link zum Download bzw. zur github-Seite.