Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Effiziente Codegenerierung aus UML2 Strukturdiagrammen Zwischenvortrag Mathias Funk.

Ähnliche Präsentationen


Präsentation zum Thema: "Effiziente Codegenerierung aus UML2 Strukturdiagrammen Zwischenvortrag Mathias Funk."—  Präsentation transkript:

1 Effiziente Codegenerierung aus UML2 Strukturdiagrammen Zwischenvortrag Mathias Funk

2 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk2 / 27 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

3 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk3 / 27 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

4 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk4 / 27 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

5 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk5 / 27 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

6 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk6 / 27 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

7 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk7 / 27 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

8 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk8 / 27 Lösungskonzeption 1.Direkte Generierung des Codes aus UML2- Modell 2.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

9 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk9 / 27 Vorteile der Lösungsansätze 1.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

10 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk10 / 27 Lösungskonzeption: Schema

11 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk11 / 27 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

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

13 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk13 / 27 Umsetzung: Components

14 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk14 / 27 Umsetzung: Delegation-Connector

15 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk15 / 27 Umsetzung: Assembly-Connector

16 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk16 / 27 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

17 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk17 / 27 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

18 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk18 / 27 Realisierung

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

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

21 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk21 / 27 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

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

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

24 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk24 / 27 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

25 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk25 / 27 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

26 Demo time!

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


Herunterladen ppt "Effiziente Codegenerierung aus UML2 Strukturdiagrammen Zwischenvortrag Mathias Funk."

Ähnliche Präsentationen


Google-Anzeigen