Fakultät Informatik Institut für Angewandte Informatik, Lehrstuhl Technische Informationssysteme Bericht zur GPCE '07 Dipl.-Inf. Uwe Ryssel 20. Dezember 2007
Inhalt Konferenz und Konferenzaustragungsort Grundlagen Auswahl an vorgestellten Problemen Eigener Beitrag Zusammenfassung 20.12.2007 Bericht zur GPCE '07 Folie 2 von 30
Inhalt Konferenz und Konferenzaustragungsort Grundlagen Auswahl an vorgestellten Problemen Eigener Beitrag Zusammenfassung 20.12.2007 Bericht zur GPCE '07 Folie 3 von 30
Konferenz GPCE Generative Programming and Component Engineering Findet jährlich abwechselnd in Nordamerika und Europa statt 2002 Pittsburgh (Pennsylvania, USA) 2003 Erfurt (Deutschland) 2004 Vancouver (Kanada) 2005 Tallinn (Estland) 2006 Portland (Oregon, USA) 1.-4. Oktober 2007 in Salzburg (Österreich) Zusammen mit der Embedded Systems Week 2008 in Nashville (Tennessee, USA) 20.12.2007 Bericht zur GPCE '07 Folie 4 von 30
Themen und Workshops Generative Programming (Programme, die andere Programme synthetisieren) Component Engineering (Komponentenorientierte Softwareentwicklung) Domain-Specific Languages (Notierung von Programmspezifikationen in einer speziellen domänenspezifischen Sprache) Workshops: AOPLE '07 (Aspect-Oriented Product Line Engineering) APGES '07 (Automatic Program Generation for Embedded Systems) 21 Vorträge GPCE + 7 Vorträge APGES 20.12.2007 Bericht zur GPCE '07 Folie 5 von 30
Austragungsort Salzburg Hauptstadt des Bundeslandes Salzburg/Österreich 150.000 EW (viertgrößte Stadt Österreichs) Geburtsstadt von Wolfgang Amadeus Mozart Altstadt seit 1997 UNESCO-Weltkulturerbe 15 v. Chr römische Stadt Iuvavum 739 Bischofssitz (bis 1803) 775 Name Salzburg nachweisbar Quelle: Wikipedia 20.12.2007 Bericht zur GPCE '07 Folie 6 von 30
Festung Hohensalzburg Wahrzeichen von Salzburg 1077 mit Bau begonnen Größte Erweiterung während des Dreißigjährigen Kriegs um 1450 Quelle: Wikipedia und hohensalzburg.com heute 20.12.2007 Bericht zur GPCE '07 Folie 7 von 30
Inhalt Konferenz und Konferenzaustragungsort Grundlagen Auswahl an vorgestellten Problemen Eigener Beitrag Zusammenfassung 20.12.2007 Bericht zur GPCE '07 Folie 8 von 30
Domain-Specific Languages (DSL) Formale Sprache, die für ein bestimmtes Problemfeld (Domäne) entworfen wurde Beispiele (textuell/grafisch) TeX (Dokumentenbeschreibung) Makefiles (Kompilierabläufe mit Abhängigkeiten) SQL (Datenbankabfragen) HTML (Websites) SysML (Modellierung von Systemen) Kann auch in andere Sprachen eingebettet werden Präprozessor/Makros (z.b. in C/C++) Erweiterung des Compilers/Interpreters 20.12.2007 Bericht zur GPCE '07 Folie 9 von 30
Component Engineering Komponentenbasierte (Software-)Entwicklung Unterteilung von Anwendungen in wiederverwendbaren Komponenten Idealfall: Neue Anwendungen werden aus vorhandenen Komponenten zusammengebaut Realität: Neu Komponenten müssen implementiert werden Vorhandene Komponenten müssen angepasst werden Idealfall nur innerhalb einer abgegrenzten Domäne (Software-Produktlinie) möglich 20.12.2007 Bericht zur GPCE '07 Folie 10 von 30
Generative Programmierung Komponentenbibliothek DSL Problembeschreibung/ Anforderungen optimierte lauffähige Programme Generator Automatische Wiederverwendung von Code Automatische Generierung von optimierten Programmen 20.12.2007 Bericht zur GPCE '07 Folie 11 von 30
Inhalt Konferenz und Konferenzaustragungsort Grundlagen Auswahl an vorgestellten Problemen Eigener Beitrag Zusammenfassung 20.12.2007 Bericht zur GPCE '07 Folie 12 von 30
Ausgewählte Probleme Welche Probleme werden mit der Generativen Programmierung gelöst? Höheren Abstraktionsstufe Lösungsbeschreibung zu komplex und fehleranfällig, Abstrahierung auf Problembeschreibung (DSL Generator Programm) Automatische Wiederverwendung Komponentenorientierte Sicht Beispielprobleme und dessen Lösungen Vermeiden von Programmierfehlern Beschreibung eines Problems zur besseren Optimierung Systemmodellierung mit mehreren Komponentenmodellen Variantenmanagement 20.12.2007 Bericht zur GPCE '07 Folie 13 von 30
Einbettung von SQL, XPath in Java, PHP Problem: String query = "SELECT id FROM users WHERE name='" + username + "' AND pw='" + password + "'"; -> SELECT id FROM users WHERE name='uwe' AND pw='abc' -> SELECT id FROM users WHERE name='uwe' AND pw='' OR 'x'='x' Lösung: Sprache (Java, PHP) erweitern String username =, pw = ; SQL q = < SELECT id FROM users WHERE username = ${username} AND pw = ${pw} >; wird von Compiler in Methodenaufrufe umgewandelt Nicht literale pw erzeugen Exceptions 20.12.2007 Bericht zur GPCE '07 Folie 14 von 30
Context-Aware Scanning for Parsing Extensible Languages Problem: Code enthält durch Erweiterungen viele verschiedene Sprachen: Java, SQL, XML, XPath usw. Jede Sprache hat eigene Schlüsselwörter, Variablennamen class Demo { int method { int SELECT, limit = 18; ResultSet rs = using c query { SELECT id FROM users WHERE users.age >= limit }; } } Lösung: Entwicklung von neuen Parser- und Scanneralgorithmen 20.12.2007 Bericht zur GPCE '07 Folie 15 von 30
Schnelle Bibliotheken mit SPIRAL Gesucht: schnelle Mathe-Bibliotheken (FFT, Matrixmultiplikation usw.) Problem: Unterschiedliche Hardware (Dual Core, Quad Core, Vektorrechner, GPU, FPGA) Zugehöriger Code (C, Assembler) muss immer an Hardware angepasst werden Optimierung durch Compiler nur in engen Grenzen möglich (schlechter C-Code kann schlecht optimiert werden) Lösung: formale Definition des math. Problems und automatische Generierung von optimierbaren C-Code 20.12.2007 Bericht zur GPCE '07 Folie 16 von 30
Schnelle Bibliotheken mit SPIRAL, Beispiel DFT mit Blocklänge N=100 Zerlegung in "Teil"-DFTs verringert Rechenaufwand Wie soll zerlegt werden? Ausprobieren!!! Verschiedene Varianten (100-1000) werden generiert und ausgetestet Beste wird genommen und in Bibliothek abgelegt siehe www.spiral.net Quelle: spiral.net 20.12.2007 Bericht zur GPCE '07 Folie 17 von 30
CALM A type-centric framework Problem: Einsatz verschiedener Komponentenmodelle Typechecking von Komponentenbeschreibungssprachen zu schwach oder zu kompliziert bzw. skaliert schlecht (z.b. OCL) 20.12.2007 Bericht zur GPCE '07 Folie 18 von 30
CALM Typisierungsebenen Lösung: Einführen einer Metaebene mit Typisierung: Styles legt Grundtypen (kinds) fest: Interface (API, NV), Module (Komponente, Funktionsblock), Connector (Methodenaufruf, NV-Binding) Modules legt Typen (types) fest: Konkrete Interfacetypen, Komponenten Scenario konkretes System (instance) Durch Styles können verschiedene Komponentenmodelle beschrieben und verknüpft werden CALM-Typsystem ist Basis von CADENA (http://cadena.projects.cis.ksu.edu) 20.12.2007 Bericht zur GPCE '07 Folie 19 von 30
Inhalt Konferenz und Konferenzaustragungsort Grundlagen Auswahl an vorgestellten Problemen Eigener Beitrag Zusammenfassung 20.12.2007 Bericht zur GPCE '07 Folie 20 von 30
Eigener Vortrag Generative Design of Hardware-in-the-Loop Models Problem: Beim Test von Steuerungen im Automobil werden Umgebungsmodelle benötigt (z.b. in MATLAB Simulink) (Modellierung des Bremssystems, der Autos, der Straße) Modelle treten in sehr vielen ähnlichen Variationen auf Kompatibilität zwischen Komponenten ist zu bewerten 20.12.2007 Bericht zur GPCE '07 Folie 21 von 30
Beispielmodelle 20.12.2007 Bericht zur GPCE '07 Folie 22 von 30
Beispielmodelle 20.12.2007 Bericht zur GPCE '07 Folie 23 von 30
Generierung der Simulink-Modelle Anforderungen Generierte Simulink-Modelle Aktive Bibliothek Generator 20.12.2007 Bericht zur GPCE '07 Folie 24 von 30
Model migration X Y? Aktive Bibliothek Generator Aktive Bibliothek von Grund auf erzeugen ist nicht praktikabel, da meist schon Komponenten vorhanden sind und diese wiederverwendet werden können Bibliotheksmigration soll automatisiert werden 20.12.2007 Bericht zur GPCE '07 Folie 25 von 30
Model analyzer Additional semantic information Model analyzer Active Library Extrahiert Aktive Elemente von existierenden Modellen Zusammenfassen der Varianten durch Vergleich der formal beschriebenen Aktiven Elemente 20.12.2007 Bericht zur GPCE '07 Folie 26 von 30
Geschlossener Entwicklungskreis Aktive Bibliothek Generator Hinzufügen einer neuen Variante zu einem existierenden AE 'Tube' Erzeugen einer neuen Variante Model analyzer 20.12.2007 Bericht zur GPCE '07 Folie 27 von 30
Zusammenfassung Konferenz GPCE Generative Programming, DSL, Komponenten Auswahl an vorgestellten Problemen und deren Lösungen Eigener Beitrag 20.12.2007 Bericht zur GPCE '07 Folie 28 von 30
Ausblick Ungelöste Probleme: Korrektheit des Generierungsprozesses Syntaxkorrektheit und Vollständigkeit Ist generierter Code immer syntaktisch richtig? Ist Code lauffähig oder fehlen Teile? Anforderungserfüllung Entspricht die generierte Lösung dem Problem, welches man z.b. per DSL formuliert hat? Beschreibungen von Abhängigkeiten OCL usw. zu komplex 20.12.2007 Bericht zur GPCE '07 Folie 29 von 30
Fragen und Diskussion 20.12.2007 Bericht zur GPCE '07 Folie 30 von 30