Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Rainer Stremel Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.