Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Generierung von effizientem C-Code aus UML2-Strukturdiagrammen Abschlussvortrag Mathias Funk.

Ähnliche Präsentationen


Präsentation zum Thema: "Generierung von effizientem C-Code aus UML2-Strukturdiagrammen Abschlussvortrag Mathias Funk."—  Präsentation transkript:

1 Generierung von effizientem C-Code aus UML2-Strukturdiagrammen Abschlussvortrag Mathias Funk

2 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk2 / 17 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 UML2-Modellen (aus ViPER) Implementierung der konzeptionellen Ergebnisse Generierung von lauffähigem ANSI C-Code

3 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk3 / 17 Inhalt Motivation / Anforderungen Transformationskonzept –Maximen –Beispiel Realisierung –ANSI C-Modell –Plugin-Architektur Optimierung –Singletons –Evaluation Demo

4 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk4 / 17 Kontext: MDD

5 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk5 / 17 Anforderungen MDD im Umfeld eingebetteter Systeme –MeDUSA Verwendung von UML2-Modellen Zielsprache ANSI C Übergang von Modell zu Code möglichst nahtlos: Codegenerierung!

6 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk6 / 17 Transformationskonzept Konzept der Klasse existiert nicht in C Transformation nach Standardmapping –Zentrale Datenstruktur als C- struct Maximen –Generische Umsetzung aller Classifier Durchgängigkeit, Konsistenz Bessere Akzeptanz durch Entwickler –Unabhängigkeit von späterer Instantiierung Wiederverwendung

7 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk7 / 17 Beispiel: Behavior Port I Port besitzt zwei Interfaces: –Interface1 mit Operation: operation1(param1 : int) : int –Interface2 mit Operation: operation1(param1 : char) : char

8 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk8 / 17 Beispiel: Behavior Port II struct _PortType1 { /* provided interfaces */ void * interface1; int (* fp_interface1_operation1)(void * _self, int param1); /* required interfaces */ void * interface2; int (* fp_interface2_operation1)(void * _self, char param1); } struct _StructuredClass { /* ports */ PortType1 port1; } Umsetzung der Classifier in C-Strukturen:

9 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk9 / 17 Beispiel: Behavior Port III Setzen der Funktions- und Instanzzeiger mittels Registrierungsfunktionen: void REGISTER_PortType1_Interface1(void* _self, void* connector) { self->interface2 = connector; } void REGISTER_PortType1_Interface1_operation1(void* _self, int(* operation)(void* _self, int param1)) { self->fp_interface1_operation1 = operation; } Aufruf der Registrierungsfunktionen im Konstruktor des umgebenden Classifiers: REGISTER_PortType1_Interface1(&port1, self); REGISTER_PortType1_Interface1_operation1(&port1, StructuredClass_operation1_Implementation);

10 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk10 / 17 Realisierung ANSI C-Modell (neu entwickelt, da nicht frei verfügbar) –Core-Diagramm –Container-Diagramm Plugin-Architektur

11 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk11 / 17 ANSI C Modell: Core

12 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk12 / 17 ANSI C-Modell: Container

13 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk13 / 17 Workflow

14 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk14 / 17 Plugin-Architektur

15 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk15 / 17 Optimierung: Singletons Singleton: „eine globale Instanz“ Häufig in der Praxis Keine Verletzung der direkten Abbildung struct _Data { int a; char b; } #define Data struct _Data Data Data_self; struct _Data { int a; char b; } #define Data struct _Data Data_CREATE(); Data data1; Data_CREATE($data1); Normale TransformationTransformation mit Singletons

16 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk16 / 17 Optimierung: Evaluation Performance –6 Mrd. Funktionsaufrufe einer einfachen Multiplikation (Demo-Beispiel) Unoptimiert:392 Sekunden Singletons: 331 Sekunden Speicherplatz (dynamisch) –3 Instanzen bzw. 3 Singletons (Demo-Beispiel) Unoptimiert: Bytes Singletons: Bytes –31 Instanzen bzw. 3 Singletons Unoptimiert: Bytes Singletons: Bytes Speicherplatz (statisch) –3 Instanzen bzw. 3 Singletons (Demo-Beispiel) Unoptimiert: Bytes Singletons: Bytes –31 Instanzen bzw. 3 Singletons Unoptimiert: Bytes Singletons: Bytes

17 RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk17 / 17 Demo Vielen Dank für die Aufmerksamkeit!


Herunterladen ppt "Generierung von effizientem C-Code aus UML2-Strukturdiagrammen Abschlussvortrag Mathias Funk."

Ähnliche Präsentationen


Google-Anzeigen