Generierung von effizientem C-Code aus UML2-Strukturdiagrammen

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

der Universität Oldenburg
Integrations- und Funktionstests im Rahmen des V-Modelles
Klassen - Verkettete Liste -
Strategie (Strategy / Policy) Ein objektbasiertes Verhaltensmuster Stephan Munkelt, Stefan Salzmann - 03IN.
Modellgetriebene Softwareentwicklung
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Übungskonzept für Algorithmen Informatik-Praktikum im Grundstudium Aron Ruß, Ingo Löhken, Martin Breede.
Zusammenfassung & Fazit
Abschlusspräsentation cims. cims Abschlusspräsentation cims Agenda Aufgabenstellung Das System – Benutzerverwaltung / Abrechnungsmodell.
Konzeption und prototypische Implementierung eines zentralen Informationssystems für Systemmanagement Motivation Oft wird es schwierig, die benötigten.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Motivation Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Dynamischer Speicher. In einer Funktion wird z.B. mit der Deklaration int i; Speicher auf dem sogenannten Stack reserviert. Wenn die Funktion verlassen.
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
Agenda Einführung Haskell QuickCheck Zusammenfassung
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
14StrukturKlasse1 Von der Struktur zur Klasse von C zu C++ Von Jens Hoffmann
DVG Klassen und Objekte
Matrix Multiplication on CUDA
UML Begleitdokumentation des Projekts
1 Dienstbeschreibung mit DAML Ein graphischer Editor für DAML - Ting Zheng Betreuer: Michael Klein, Philipp Obreiter.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Präsentation einer Codegenerator Softwarelösung objectiF.
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
MDA – Framework AndroMDA
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Nutzungsszenarien introspektiver Modelle
Holonische Multiagentensimulation
Grundlagen ExecutionModel Simulationsumgebung
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Universität zu Köln Institut für Historisch-Kulturwissenschaftliche Informationsverarbeitung Prof. Dr. M. Thaller AM1: Re-usable Content in 3D und Simulationssystemen.
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
HPI Bachelorprojekt Scalable EMF Vorstellung der Designdokumente Strukturen und Abläufe 1. März 2010.
Informatik 1 Letzte Übung.
Strukturierter Entwurf (und Realisierung)
Welchen Problemen ist man bei heterogener, verteilter Programmierung ausgesetzt? Hardware: nicht einheitliche, inkompatible Systeme, verschiedene Leistungsfähigkeit.
1.2 Trennung von Struktur und Inhalt
Effiziente Codegenerierung aus UML2 Strukturdiagrammen
Objectives Verstehen was unterDelegate verstanden wird
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Seminar Modellgetriebene Softwareentwicklung Thema 3: Metamodelle – MOF Michél Rieser Prof. Dr.-Ing. habil. Georg Paul
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Technische Universität München, Informatik XI Angewandte Informatik / Kooperative Systeme Verteilte Anwendungen: Entwurf Dr. Wolfgang Wörndl
S INGLETON P ATTERN IN M ATLAB By Giuseppe
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
Einführung in AspectJ ● Inhalt: 1)Überblick 2)Elemente des crosscuttings in AspectJ 3)„Hello World“ in AspectJ 4)Wie Aspekte in Java verwoben werden 5)Join.
Gewachsene Architektur Das kann nicht funktionieren!
 Präsentation transkript:

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

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

RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk Inhalt Motivation / Anforderungen Transformationskonzept Maximen Beispiel Realisierung ANSI C-Modell Plugin-Architektur Optimierung Singletons Evaluation Demo Zuerst will ich die Arbeit etwas umfassender motivieren…und dabei die konkreten Grundanforderungen erläutern.. Hieraus ergibt sich das grundsätzliche Transformationskonzept…(erläutert an einem Beispiel!) Danach gehe ich auf die Realisierung des Transformationskonzeptes ein, ANSI C Modell, dann des Werkzeugs als Eclipse-Plugin…Architektur RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk Kontext: MDD Plattformen bieten heutzutage umfangreichere und mächtigere Möglichkeiten als „nackte“ Programmiersprachen, man kann jetzt auf Rahmenwerke und wiederverwndbare Komponenten zurückgreifen. RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk Anforderungen MDD im Umfeld eingebetteter Systeme MeDUSA Verwendung von UML2-Modellen Zielsprache ANSI C Übergang von Modell zu Code möglichst nahtlos: Codegenerierung! MDD häufig im Einsatz bei Webanwendungen, jetzt eingebettete Systeme! RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

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 Schwierigkeit: keine klassen in ANSI C RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

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

Beispiel: Behavior Port II Umsetzung der Classifier in C-Strukturen: 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; } RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

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; Jetzt kommt die Realisierung! Damit sollte das Konzept komplett erläutert sein! Aufruf der Registrierungsfunktionen im Konstruktor des umgebenden Classifiers: REGISTER_PortType1_Interface1(&port1, self); REGISTER_PortType1_Interface1_operation1(&port1, StructuredClass_operation1_Implementation); RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk Realisierung ANSI C-Modell (neu entwickelt, da nicht frei verfügbar) Core-Diagramm Container-Diagramm Plugin-Architektur Zweistufige Realisierung wurde schon im Zwischenvortrag erläutert (Flexibilität, Anpassbarkeit durch modularisierten Aufbau) Gerade da ist es wichtig, dass die Zwischenschritte möglichst einfach sind, deshalb jeweils innerhalb einer Domäne. RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk ANSI C Modell: Core RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

ANSI C-Modell: Container RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk Workflow RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk Plugin-Architektur RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

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

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: 1.016.492 Bytes Singletons: 1.016.611 Bytes 31 Instanzen bzw. 3 Singletons Unoptimiert: 1.016.828 Bytes Singletons: 1.016.611 Bytes Speicherplatz (statisch) Unoptimiert: 13.967 Bytes Singletons: 14.086 Bytes Unoptimiert: 16.015 Bytes Singletons: 16.134 Bytes RWTH Aachen, LuFGI 3 Software Konstruktion - Mathias Funk

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