31. Werkzeuge zur Programmüberführung (Codegenerierung und Round-Trip Engineering)

Ähnliche Dokumente
45. Werkzeuge zur Programmüberführung (Codegenerierung und Round-Trip Engineering) 45.1 Codegenerierung. Literatur. CASE-Code-Generatoren

34. Werkzeuge zur Programmüberführung (Codegenerierung und Round-Trip Engineering)

30. Parser-Generatoren

Grundlagen der Programmierung 3 A

Poseidon for UML. Einführung. Andreas Blunk

Institut für Informatik Betriebliche Informationssysteme Graph-basiertes Reengineering

Compilerbau für die Common Language Run-Time

Grundlagen der Programmierung 3 A

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 7. Februar 2013

Grundlagen der Programmierung 2 (Comp-A)

43. Dokumentationswerkzeuge

22. Januar Gruppe 2: TOPCASED

Web Engineering-Seminar Methoden zur Web Modellierung: Object-oriented Hypermedia Method (OO-H)

72. Dokumentationswerkzeuge

Grundlagen der Programmierung 2 (Comp-A)

Generierung von Steuerungsprogrammcode für SPS und μc aus Petri-Netz-Modellen

Motivation Grundlagen Technologien Manipulation Ecore Genmodell Demo Persistenz Notification Ausblick GMF Fazit / Quellen

Definition Compiler. Bekannte Compiler

Model Driven Architecture (MDA)

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Oracle JDeveloper 10 g

Generischer Modellvergleich mit EMF Compare

Model Driven Development im Überblick

Eclipse Modeling Framework Modellgetriebene Softwareentwicklung Prof. Andreas Schmidt

Erzeugung von UML-Diagrammen

Werkzeugunterstützung für UML Profiles. Verteidigung des Großen Belegs Andreas Pleuß

Inhalt. " DiaGen Historie und Beschreibung. " Architektur eines DiaGen-Editors. " Hypergraphen. " DiaGen-Editoren Komponenten

MDA-Praktikum, Einführung

Definitionen/Vorarbeit zum Thema Java

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

Parsing SystemVerilog 2012

Einfach generieren. Susanne Klar, Michael Klar. Generative Programmierung verständlich und praxisnah ISBN Inhaltsverzeichnis

Daniela Reiner. Stuttgart,

Übersetzergenerierung mit lex und yacc

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers

Einführung. (Compiler) Prof. Dr. Oliver Braun. Letzte Änderung: :49. Einführung 1/26

MDSD Einführung und Überblick

MDRE die nächste Generation des Requirements Engineerings

Compiler. Einführung. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:

Compiler: Einführung

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

Software-Engineering im Sommersemester 2014

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich

UML Modellierung und Model Driven Architecture (MDA) für Java mittels Rational Software Architect (RSA)

Modellierung CORBA-basierter Anwendungssysteme mit der UML

Model-Driven Software Engineering (HS 2011)

Software Engineering

Analyse und Entwurf von Softwaresystemen mit der UML

Verteidigung Großer Beleg

Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH

Modellbasierte Software- Entwicklung eingebetteter Systeme

Software Engineering II

Problemseminar ModelDrivenSoftwareDevelopment

Changelog objectif 7.0 Service Pack 3

Compiler für f r Eingebettete Systeme (CfES)

Implementierung eines LR-Parser-Generators mit syntaktischen Prädikaten

Probe-Klausur Software Engineering Fachbereich BW, für WINFO

Grundlagen von MOF. Alexander Gepting 1

Workshop XÖV-Produktionszubehör und Produktionsumgebungen

JavaCC Rainer Schmidberger

Teil II Objektorientierte Programmierung (OOP) 20. Objektnetze

Einführung in das Graphical Modeling Framework. 13. November 2012

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon

Programmiersprachen und Übersetzer

Modellgetriebene Entwicklung von Pervasive Games

Grammatiken und ANTLR

Teil II Objektorientierte Programmierung (OOP) 20. Objektnetze

Ein Werkzeug zur Überdeckungsmessung für kontrollflussbezogene Testverfahren

Softwareentwicklungsumgebungen

Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen

Java.NET Web-Technologien Mobile

Visual Studio 2010 Neues für Architekten

Evaluation of Database Design and Reverse Engineering Tools for a Large Software System

Entwicklung eines Klassengraphen

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 11. Februar 2015

Codegenerierung mit Xtend. 21. Januar 2015

Sommersemester Implementierung I: Struktur

Unified Modelling Language

UML / Fujaba. Generierung von Java-Quellcode aus UML-Diagrammen. Marcel Friedrich

Lexikalische Programmanalyse der Scanner

51 Artefakt- und Modellmanagement

Graphische Entwicklungsumgebung für eine Echtzeitprogrammiersprache

Modellgetriebene Softwareentwicklung

Anhang WEITERE HINWEISE ZU BORLAND TOGETHER CONTROLCENTER

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

GATE General Architecture for Text Engineering. Alexander Hein & Erik Dießler (VL Text Analytics )

Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002

Rapid Java wie mit Forms

Realität zu modellieren eine

Eclipse Modeling Framework

Vorlesung Programmieren

7. Syntax: Grammatiken, EBNF

Automatisierte Architekturanalyse mittels UML2.0 Diagrammen

Modellgetriebene Softwareentwicklung. Gabriele Taentzer WS 2012/2013 Philipps-Universität Marburg

Inhalt. 1 Einführungsveranstaltung. 2 Pflichtenheft ANFORDERUNGSSPEZIFIKATION - GROBPLANUNG ANFORDERUNGSSPEZIFIKATION - SOLLKONZEPT

Languages and Tools for Object-Oriented Development Klausur Wintersemester 2007/2008

Design Patterns. 3. Juni 2015

Transkript:

31. Werkzeuge zur Programmüberführung (Codegenerierung und Round-Trip Engineering) Prof. Dr. Uwe Aßmann Technische Universität Dresden Institut für Software- und Multimediatechnik http://st.inf.tu-dresden.de Version 11-0.1, 29.12.11 1) Codegenerierung 1) Beispielwerkzeuge 2) Codegenerierungstechniken 1) Schablonenbasierte Codegenerierung 3) Round-Trip Engineering SEW, Prof. Uwe Aßmann 1

Literatur http://www.codegeneration.net/ www.programtransformation.org http://www.codegeneration.net/tiki-read_article.php?articleid=65 Optional Völter, Stahl: Modell-Driven Software Development, AWL 2005. Prof. U. Aßmann, SEW 2

31.1 Codegenerierung Überführung von Modellen in Programme (Programmüberführung) SEW, Prof. Uwe Aßmann 3

CASE-Code-Generatoren Quelldiagramm Zielprogramm Graph. Modellspezifi kation UML-Diagramme SD-Modulchart (ERD, DFD,...) Textuelle Spezifi kation (OCL, UOL, UXF, PML) Stream based Model Interchange Format (SMIF) Übersetzer/Generator Zielsprache Codegerüst Spezifi kation der Zielsprache Spezifi kation des Übersetzungsvorganges, z.b. Auswahl Wurzeldiagramm, Modelltiefe, Startvariable u. a. vollständig/ lauffähig Prof. U. Aßmann, SEW 4

Phasen eines Compilers, hier Code-Generatoren typische Werkzeuge Quelldiagramm Scanner lex, fl ex lexikalische Analyse der kleinsten syntakt. Einheiten des Quelldiagramms (reguläre Ausdrücke) Front- Parser antlr yacc, bison End AG-Werkzeug ELI, MAX, MUG, JastAdd, Silver Back-End (Codegenerator) Optimierergener. (Ziel- PAG, Optimix, sprachen- abhängig) Codegeneratorgenert. grgen BEG, cggg syntaktische Analyse semantische Analyse Zwischencode Codeoptimierung Codegenerierung der Modellsyntax (kontextfreie Grammatiken) Prüfg. auf semantische Fehler (attributierte Grammatiken) interne Darstellg. im aktuellen Zustand (Bäume, Listen, Tabellen) Codeverbesserung (Effi zienz, Laufzeit, Speicher) Endgültige Zuordnung des Codes der Zielsprache Zielprogramm Prof. U. Aßmann, SEW 5

Single-Source-Prinzip und Round-Trip Engineering Dokumentation Dokumentengenerierung CASE-Tool Spezifi kation (z. B. Quelldiagramme) Single Source Quellcode- Generierung Code- Rückführung Generierter Quellcode Handgeschriebener Quellcode manuelle Bearbeitung optimierter und ergänzter Quellcode Prof. U. Aßmann, SEW 6

Single Source Prinzip Eine Single-Source-Technologie gewährleistet zu jeder Zeit an jedem Ort absolute Konsistenz zwischen Modell, Code und Dokumentation (ursprünglich von Peter Coad, Together-CASE-Werkzeug, jetzt Borland): Vorhandensein nur einer definierten Quelle für alle Arbeiten einheitlicher Ausgangspunkt für Spezifikation, Quellcode und Dokumentation (einschließlich Handbücher) durch Bezeichner, Kommentare, Attribute, Markup oder ähnliches vorgegebene Struktur der Single Source Das Single-Source-Prinzip setzt Round-Trip-Engineering (RTE) voraus, mit Codegenerierung: automatisierte Codegenerierung in eine oder auch mehrere Programmiersprachen Erzeugung von: Progr.-struktur, Bedingungen, Steuerfluss und Datendeklarationen terminale Codeteile Templatebasierte Codegenerierung: Einsetzen von Code-Fragmenten in Code-Schablonen Coderückführung (Re-Parsing) des geänderten Source-Codes des Quellprogramms in die Code-Teile der Spezifikation Prof. U. Aßmann, SEW 7

31.1.1 Beispiele SEW, Prof. Uwe Aßmann 8

Programmüberführung in Together (Coad) Prinzip: Single-Source-Technologie durch vollautomatische Synchronisation und vollständige Konsistenz zwischen Modell, Code und Dokumentation. Zielsprachen: Java, Visual Basic, VisualBasic.Net, CORBA IDL, C++, C# Umsetzung: Multi-Language-Support durch Auswahl einer Programmiersprache(6) zu Beginn der Initialisierung eines neuen Projektes UML-Modelling Editor ist nicht nur Werkzeug für den Entwurf von UML-Spezifi kationen, sondern gleichzeitig werden diese inkrementell in die Syntax einer objektorientierten Programmiersprache überführt Synchronisation erfolgt über Parser, nicht über Repository. Bedienung: Simultanes Round-trip Engineering: Änderungen im Klassendiagramm werden unmittelbar im relevanten Source- Code angezeigt und umgekehrt Reverse Engineering existierender Projekte zeigt die darin enthaltenen Programmstrukturen auch als UML-Diagramm Prof. U. Aßmann, SEW 9

Programmiersprachenauswahl in Together Basierend auf den Rollen: Business Modeler, Designer, Developer und Programmierer werden Sichten auf Arbeitsbereich automatisch konfi guriert(view-management). Das Einbinden von Patterns, Templates und vorgefertigten source-basierten Frameworks (Komponenten incl. EJBs) wird unterstützt. Zur Qualitätssicherung werden Metriken und Audits angeboten. Prof. U. Aßmann, SEW 10

Together-Arbeitsbereiche Prof. U. Aßmann, SEW 11

31.2 Codegenerierungs-Technologien SEW, Prof. Uwe Aßmann 12

Trennung von handgeschriebenem und generiertem Code Kopplung mit Entwurfsmuster [Völter/Stahl] (separate Dateien, Klassenverknüpfungen wie Delegation, Vererbung, Composite, Decorator, etc) Kopplung mit Trennmarkierung (hedge) /*** Grenzmarkierung ***/ Handgeschriebener Code... /*** Grenzmarkierung ***/ Prof. U. Aßmann, SEW 13

Weitere Prinzipien der Codeselektion Ein Codeselektor ist ein Transformationssystem aus Term- oder Graphersetzungsregeln, der das Ausgangsprogramm oder -modell abdeckt, also jeden Knoten und Kante aus dem Ausgangsprogramm genau einmal transformiert Einsatz Innerhalb der Zwischen- oder Assembler-Codegenerierung des Übersetzers Als Back-End von CASE-Werkzeugen Ein Codeanordner (code scheduler) ordnet Befehle für den Chip in optimierter Reihenfolge an Codeanordnung erfolgt meist nach der Codeselektion Ein Schablonen-Expandierer (template expander) generiert Code, in dem er Schablonen (templates) mit Werten aus der Programmrepräsentation oder dem Modell füllt (template-gesteuerte Codegenerierung) Ein Invasiver Fragmentkompositor (invasive software composition) komponiert Schablonen unter der Berücksichtigung von Fragmenttypen (s. CBSE) Prof. U. Aßmann, SEW 14

31.2.1 Schablonenbasierte Programmüberführung (Templatebased code generation) SEW, Prof. Uwe Aßmann 15

Trennung von handgeschriebenem und generiertem Code Kopplung durch Stringexpansion Slot Kopplung mit Kompositionsprogramm Slot Kompositionsprogramm String-Templateexpandierer Prof. U. Aßmann, SEW 16

Slots are marked by Hedges Hedges are delimiters that do not occur in the base nor in the slot language Template (superclass:class, t:type) { class Worker extends << superclass >> { << t>> attr = new <<t>>(); <<t>> getattr(); void setattr(<<t>>); } } Prof. U. Aßmann, SEW 17

Tools für Schablonenexpansion Untypisierte Schablonen-Expansion: Frame processing (Bassett) C Holmes, A Evans. A review of frame technology. University of York, Dept. of Computer Science, 2003 https://www.cs.york.ac.uk/ftpdir/reports/ycs-2003-369.pdf String template engines Apache Velocity Parr's template engine StringTemplate Jenerator for Java http://www.voelter.de/data/pub/jeneratorpaper.pdf Metamodel-controlled template engines Open Architecture Ware's Scripting language Invasive Softwarekomposition bietet volltypisierte Schablonenexpansion (siehe CBSE) Getypte Schablonen-Expansion und -erweiterung Kann für beliebige Programmiersprachen instantiiert werden http://www.the-compost-system.org http://www.reuseware.org Prof. U. Aßmann, SEW 18

Xdoclet (xdoclet.sf.net) Xdoclet wandet Attribute (Metadaten) in Code um Schablonen-gesteuerte Codegenerierung Attribut- Code-Regeln Plugin Code- Schablonen Code- Attribute QDox Parser XDoclet Schablonen- Expandierer Hilfs-Code Prof. U. Aßmann, SEW 19

31.3 Codemodifikation und -rückführung SEW, Prof. Uwe Aßmann 20

Vorgehen der Coderückführung Aufgabe: Erkennen geänderter Code -Teile und Rückführung in die Entwurfsmodelle Prinzip: Die modifizierte Quellcodedatei stammt in jedem Fall aus der Single- Source-Spezifikation eines CASE-Tools, in die der geänderte Programmcode zurückgeführt werden soll Kennzeichnungen der Single Source-Spezifikation sind noch vorhanden. Strukturierung der Quellcodefiles ist so, dass Abschnitte erkennbar sind und ihnen eindeutig die Objekte der Entwurfsspezifikation zugeordnet werden können, beispielsweise durch: Trennmarkierungen (-kommentare oder -attribute, hedges) zwischen den Abschnitten (Markup) wird zum Erkennen der Grenzen benutzt Vorhandensein von Code -Teilen als zielsprachenspezifische Freiräume (hooks) Weitere Rückführinformationen gegebenenfalls aus dem Quellfilekopf oder -kommentaren Quelle: Lempp, P., Torick R. J.. Software Reverse Engineering: An Approach to Recapturing Reliable Software; 4th Ann. Joint Conf. on Softw. Quality and Productivity, Crystal City, VA, March 1-3, 1988 Prof. U. Aßmann, SEW 21

Beispiel-Folien Beispiel aus der Codegenerierung und -Rückführung von Fujaba: http://www.fokus.fraunhofer.de/en/fokus_events/motion/ecmda2008/_docs/rs01_t03_ma nuelbork_emcda2008_slides.pdf Paralleles Parsen von Template und Generat, mit Vergleich zum Auflösen der Indeterminismen der Rückführung Prof. U. Aßmann, SEW 22

The End Prof. U. Aßmann, SEW 23