Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Effiziente Codegenerierung aus UML2 Strukturdiagrammen

Ähnliche Präsentationen


Präsentation zum Thema: "Effiziente Codegenerierung aus UML2 Strukturdiagrammen"—  Präsentation transkript:

1 Effiziente Codegenerierung aus UML2 Strukturdiagrammen
Zwischenvortrag Mathias Funk

2 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Motivation Eingebettete Systeme Zeit- und sicherheitskritische Abläufe Eingeschränkte Ressourcen (Speicher, Prozessor- und Controllerleistung) Hardwarenahe Programmierung in C erforderlich Einsatz von UML bei eingebetteten Systemen Einheitliche Modellierung z.B. mit UML Wiederverwendung, Erweiterung, Anpassung Durchgängiger Methoden- und Werkzeugeinsatz RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

3 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Aufgabenstellung Konzeptioneller Teil Wie können UML2 Strukturdiagramme in ANSI C übertragen werden? Wie kann effizienter Code erzeugt werden? Technischer Teil Entwicklung eines Eclipse-Plugins Einlesen von UML-Modellen aus ViPER Implementierung der konzeptionellen Ergebnisse Generierung von lauffähigem ANSI C-Code RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

4 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Inhalt Vorgaben UML2-Standard (Strukturdiagramme) ANSI C-Standard Lösungskonzeption Transformationskonzept Umsetzung in ANSI C Technische Lösung Eingesetzte Frameworks Realisierung Optimierungsmöglichkeiten Demo des Werkzeugs RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

5 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
UML2 Standard Universelle Modellierungssprache OMG-Standard UML2 ab 2004 Komplexitätsreduzierung, erneuertes Metamodell Neue Anwendungsbereiche (J2EE, Echtzeitanwendungen) Bessere Unterstützung der hierarchischen Modellierung Einführung von zusätzlichen Strukturdiagrammen Kompositionsstrukturdiagramme Funktionsweise eines Systems, Verhaltensmuster Komponentendiagramme Physische Struktur eines Systems Gemeinsames Verhalten in öffentlichen Schnittstellen bereitstellen RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

6 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
ANSI C Standard Standardisierung des ANSI von 1988 Erstmalige Festlegung des Sprachstandards Wichtige Eigenschaften Keine Laufzeitabhängigkeit, Overhead Weite Verbreitung, Compiler-Support Hohe Performanz, Hardware-nah Skalierbarkeit Einfache Lesbarkeit, Benutzung RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

7 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Inhalt Vorgaben UML2-Standard (Strukturdiagramme) ANSI C-Standard Lösungskonzeption Transformationskonzept Umsetzung in ANSI C Technische Lösung Eingesetzte Frameworks Realisierung Optimierungsmöglichkeiten Demo des Werkzeugs RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

8 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Lösungskonzeption Direkte Generierung des Codes aus UML2-Modell Modelltransformation in ANSI C-Modell, dann Codegenerierung ANSI C-Modell (abstrakter Syntaxbaum) als Zielmodell Transformation zwischen UML2- und ANSI C-Modell Modellüberprüfung vor und nach Transformation Codegenerierung aus ANSI C Modell RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

9 Vorteile der Lösungsansätze
Direkte Generierung Weniger benutzte Frameworks Weniger Code 2. Transformation, dann Generierung Gezielte Optimierung der Einzelschritte möglich Relativ einfache Anpassung an andere Sprachen, Systeme, Modelle Entwicklung und Fehlersuche einfacher RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

10 Lösungskonzeption: Schema
RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

11 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Umsetzung in ANSI C Modellierung von Modulen durch Übersetzungseinheiten Datenkapselung mit Hilfe von structs Vorwärtsdeklaration in Headerdatei Methoden als Pointer auf Funktionen Eindeutige Signatur Implizites this als *void-Zeiger Methoden zusätzlich als Fassade per Makro RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

12 Umsetzung in ANSI C: Beispiel
RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

13 Umsetzung: Components
RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

14 Umsetzung: Delegation-Connector
RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

15 Umsetzung: Assembly-Connector
RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

16 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Inhalt Vorgaben UML2-Standard (Strukturdiagramme) ANSI C-Standard Lösungskonzeption Transformationskonzept Umsetzung in ANSI C Technische Lösung Eingesetzte Frameworks Realisierung Optimierungsmöglichkeiten Demo des Werkzeugs RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

17 Eingesetzte Frameworks
Eclipse Eclipse Modelling Framework (EMF) Vereinigt UML, XML und JAVA Persistenz-API, Generierung, Validation openArchitectureWare Komponentenbasiertes Rahmenwerk Modelltransformation Codetransformation (XML, JAVA, HTML, …) Schnittstellen zu EMF und anderen Modellierungstools RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

18 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Realisierung RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

19 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
ANSI C-Metamodell ANSI C-Metamodell analog zum abstrakten Syntaxbaum RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

20 ANSI C-Metamodell: Erweiterung
Erweiterung um AST-fremde Elemente Containerstruktur oberhalb der TranslationUnit (Code-Organisation) CodeAnnotations, Syntaxrepräsentation von Kommentaren (Dokumentation) RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

21 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Modellvalidierung Funktionale Überprüfungssprache Check Einsatz zur Überprüfung von UML2- und ANSI C-Modellen Jedes Modellelement direkt prüfbar Verschiedene Prioritäten möglich RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

22 Modelltransformation
Funktionale Transformationssprache xTend Chaining, Syntaxcheck automatische Abhängigkeiten RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

23 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Codegenerierung Funktionale Generierungssprache xPand Generierungsschablonen für Metamodellelemente Schablonen als Klassenstruktur entsprechend dem ANSI C-AST RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

24 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Inhalt Vorgaben UML2-Standard (Strukturdiagramme) ANSI C-Standard Lösungskonzeption Transformationskonzept Umsetzung in ANSI C Technische Lösung Eingesetzte Frameworks Realisierung Optimierungsmöglichkeiten Demo des Werkzeugs RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

25 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk
Optimierung Singletons Objekte, die nur einmal im System existieren Potenzial: this-Zeiger fallen weg Direkte Connector-Verbindung Delegation Connectors über mehrere Ebenen werden „eingedampft“ Potenzial: Nicht mehr benutzte Connectors fallen weg RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

26 Demo time!

27 Ende + Preview Vielen Dank für die Aufmerksamkeit! Endvortrag:
Multiplizität von Elementen Protected Regions bei der Generierung Evaluation des Werkzeugs RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk


Herunterladen ppt "Effiziente Codegenerierung aus UML2 Strukturdiagrammen"

Ähnliche Präsentationen


Google-Anzeigen