1 / 27

Effiziente Codegenerierung aus UML2 Strukturdiagrammen

Effiziente Codegenerierung aus UML2 Strukturdiagrammen. Zwischenvortrag Mathias Funk. Motivation. Eingebettete Systeme Zeit- und sicherheitskritische Abläufe Eingeschränkte Ressourcen (Speicher, Prozessor- und Controllerleistung) Hardwarenahe Programmierung in C erforderlich

nishi
Download Presentation

Effiziente Codegenerierung aus UML2 Strukturdiagrammen

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Effiziente Codegenerierung aus UML2 Strukturdiagrammen Zwischenvortrag Mathias Funk

  2. 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. 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. 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. 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. 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. 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. 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. 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 Vorteile der Lösungsansätze RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

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

  11. 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. 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. Realisierung RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

  19. 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. 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. 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. 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. 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

More Related