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



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

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

30. Parser-Generatoren

Institut für Informatik Betriebliche Informationssysteme Graph-basiertes Reengineering

Poseidon for UML. Einführung. Andreas Blunk

43. Dokumentationswerkzeuge

Oracle JDeveloper 10 g

22. Januar Gruppe 2: TOPCASED

Definition Compiler. Bekannte Compiler

Grundlagen der Programmierung 3 A

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

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

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

Compiler: Einführung

Eclipse Modeling Framework Modellgetriebene Softwareentwicklung Prof. Andreas Schmidt

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

Daniela Reiner. Stuttgart,

Compilerbau für die Common Language Run-Time

72. Dokumentationswerkzeuge

Codegenerierung mit Xtend. 21. Januar 2015

Generischer Modellvergleich mit EMF Compare

Programmiersprachen und Übersetzer

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

Changelog objectif 7.0 Service Pack 3

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

Model Driven Architecture (MDA)

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

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

Grundlagen der Programmierung 3 A

Übersetzergenerierung mit lex und yacc

MDRE die nächste Generation des Requirements Engineerings

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

Software Engineering

Definitionen/Vorarbeit zum Thema Java

Parsing SystemVerilog 2012

Entwicklung eines Klassengraphen

Modellgetriebene Softwareentwicklung: Zusammenfassung und Ausblick. 7. Februar 2013

Erzeugung von UML-Diagrammen

Grundlagen der Programmierung 2 (Comp-A)

Einführung in die Modelltransformation mit Xtend

ObjectBridge EJB Edition

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

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

ObjectBridge Java Edition

MOF Meta Object Facility. Veranstaltungsvortrag im Rahmen der Projektgruppe ComponentTools

Grundlagen der Programmierung 2 (Comp-A)

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

Rapid Java wie mit Forms

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

Anhang WEITERE HINWEISE ZU BORLAND TOGETHER CONTROLCENTER

VisualDependencies Fachhochschule Köln

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

Grammatiken und ANTLR

Problemseminar ModelDrivenSoftwareDevelopment

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER

Ein Design Tool für objektorientierte portable Programmierschnittstellen

Grundlagen von MOF. Alexander Gepting 1

Entwicklungsmethoden

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

Design mit CASE-Tools

Kompendium der Web-Programmierung

Java.NET Web-Technologien Mobile

Software- und Systementwicklung

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

ab EUR >TimeLine Developer//

Artem Eger. Build-Systeme in java Maven & ANT

Software-Engineering im Sommersemester 2014

Diagen. Vortrag im Seminar Visuelle Sprachen. Wolfgang Machert. Betreuer: Dr. Berthold Hoffmann. Universität Bremen

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

Desktop-Wikis am Beispiel von TiddlyWiki

Oracle SQL Developer Data Modeling

EINFÜHRUNG IN DIE WIRTSCHAFTSINFORMATIK -ÜBUNGEN- Marina Tropmann-Frick

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich

MDA-Praktikum, Einführung

ADDISON-WESLEY PUBLISHING COMPANY

Integration von Model-Driven Development und formaler Verfikation in den Softwareentwicklungsprozess

Eclipse und EclipseLink

Interpreter - Gliederung

Dirk Reinemann Working Student Sales Consulting

Transformations. Die API des Oracle Datamodeler. Dr. Gudrun Pabst. Trivadis GmbH Lehrer-Wirth-Straße München.

Software Engineering II

Der Parsergenerator BTRACC2

Compiler für f r Eingebettete Systeme (CfES)

Grundlagen des Software Engineering

DWH Automation - Steigerung von Qualität, Effektivität und Transparenz in der DWH Implementierung und dem Betrieb. Referent: Raphael Henneke

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

Mustersuche in Quellcode

WhiteStarUML Tutorial

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

Analyse und Entwurf von Softwaresystemen mit der UML

Verybench: grafisches Frontend für Testwell CMT++ Code Complexity Measures Tool

Native Queries Datenbankabfragen in reinem Java. Carl Rosenberger Chief Software Architect, db4objects Inc. Java Forum Stuttgart 2006, 6.

Modellbasierte Software- Entwicklung eingebetteter Systeme

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

Langzeitarchivierungsaspekte. im Dokumentenlebenszyklus

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

Continuous Delivery mit Orcas

openarchitectureware

Transkript:

34. 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 09-0.5, 14.01.10 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

34.1 Codegenerierung Überführung von Modellen in Programme (Programmüberführung) CASE-Code-Generatoren SEW, Prof. Uwe Aßmann 3 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 Code-Generators typische Werkzeuge Scanner lex, fl ex Front- Parser yacc, bison End AG-Werkzeug ELI, MAX, MUG, JastAdd, Silver Back-End (Codegenerator) Optimierergener. (Ziel- PAG, Optimix, sprachen- abhängig) Codegeneratorgenert. grgen BEG, cggg Quelldiagramm lexikalische Analyse syntaktische Analyse semantische Analyse Zwischencode Codeoptimierung Codegenerierung der kleinsten syntakt. Einheiten des Quelldiagramms (reguläre Ausdrücke) 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 Syntax der Eingabesprachen von Diagrammen ist meist einfacher als die höherer Programmiersprachen [20, S.153] Zielprogramm Prof. U. Aßmann, SEW 5 Schritte der Programmüberführung Dokumentation Dokumentengenerierung CASE-Tool Spezifi kation (z. B. Quelldiagramme) Single Source Quellcode- Umsetzung (Generierung) Code- Rückführung Generierter Quellcode manuelle optimierter und korrigierter Quellcode Handgeschriebener Quellcode Bearbeitung e.g., Fehlerkorrektur, Optimierung auf der Zielmaschine 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 (Peter Coad, Together-CASE-Werkzeug, jetzt Borland): Vorhandensein nur einer defnierten Quelle für alle Softwareentwicklungsarbeiten einheitlicher Ausgangspunkt für Spezifkation, Quellcode und Dokumentation (einschließlich Handbücher) durch Bezeichner, Kommentare, Attribute, Markup oder ähnliches vorgegebene Struktur der Single Source Ausgangspunkt für das Round-Trip Engineering (Coderückführung) Prof. U. Aßmann, SEW 7 Arten der Programmüberführung 1. Quellcode-Umsetzung a) manuell: graphische Spezifi kation Dokumentation manuell Programmfi le b) Codeumwandlung: automatisierte Codegenerierung in eine oder auch mehrere Programmiersprachen Erzeugung von: Progr.-struktur, Bedingungen, Steuerfl uss und Datendeklarationen terminale Codeteile c) Templatebasierte Codeumwandlung: Einsetzen von Code-Fragmenten in Code-Schablonen 2. Programmvorschlag CASE-Spezifi kation zusammenhängender { Pseudocode 3. Rückführung (round-trip) des geänderten Source-Codes des Quellprogramms in die Code-Teile der CASE- Spezifi kation Prof. U. Aßmann, SEW 8

34.1.1 Beispiele SEW, Prof. Uwe Aßmann 9 Programmüberführung in SelectEnterprise Prinzip: Programmcode wird aus Objektmodell (Menge der UML-Diagramme, dominant Klassendiagramm) erzeugt Zielsprachen: C++, Java, Visual Basic, Forté, SQL, IDL Umsetzung: aus Klassendiagrammobjekten werden Codegerüste in der jeweiligen Zielsprache erzeugt bei Vollständigkeit des Modells ist lediglich Implementation der Methodenrümpfe erforderlich Returntypen, Defaultwerte, Datentypen und Kommentare werden dem Entwurfsmodell entnommen Bedienung: mit Data Type Converter unbekannte Datentypen festlegen Zielsprachenspezifi schen Generator aufrufen ( z. B. Java Synchronizer) eventuell zielsprachenspezifi sche Datentypen festlegen Codegenerierung durchführen Prof. U. Aßmann, SEW 10

Programmüberführung in Together 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 Programmiersprachenauswahl Prof. U. Aßmann, SEW 11 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 12

Together-Arbeitsbereiche Prof. U. Aßmann, SEW 13 34.2 Codegenerierungs-Technologien SEW, Prof. Uwe Aßmann 14

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 /*** Grenzmarkierung ***/ Handgeschriebener Code... /*** Grenzmarkierung ***/ Weitere Prinzipien der Codeselektion Prof. U. Aßmann, SEW 15 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 Ein Invasiver Fragmentkompositor (invasive software composition) komponiert Schablonen unter der Berücksichtigung von Fragmenttypen (s. CBSE) Prof. U. Aßmann, SEW 16

34.2.1 Schablonenbasierte Programmüberführung (Templatebased code generation) SEW, Prof. Uwe Aßmann 17 Trennung von handgeschriebenem und generiertem Code Kopplung durch Stringexpansion Kopplung mit Kompositionsprogramm Kompositionsprogramm String-Templateexpandierer Prof. U. Aßmann, SEW 18

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 StrngTemplate. Jenerator for Java http://www.voelter.de/data/pub/jeneratorpaper.pdf Metamodel-controlled template engines Open Architecture Ware's Scripting language Invasive Softwarekomposition (siehe CBSE) Getypte Schablonen-Expansion und -erweiterung http://www.the-compost-system.org http://www.reuseware.org Prof. U. Aßmann, SEW 19 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 20

34.3 Codemodifkation und -rückführung Vorgehen der Coderückführung SEW, Prof. Uwe Aßmann 21 Aufgabe: Erkennen geänderter Code -Teile und Rückführung in die zugehörige Entwurfsspezifkation Prinzip: Die modifzierte Quellcodedatei stammt in jedem Fall aus der Single-Source- Spezifkation eines CASE-Tools, in die der geänderte Programmcode zurückgeführt werden soll Kennzeichnungen der Single Source-Spezifkation sind noch vorhanden. Strukturierung der Quellcodefles ist so, dass Abschnitte erkennbar sind und ihnen eindeutig die Objekte der Entwurfsspezifkation zugeordnet werden können, beispielsweise durch: Trennmarkierungen (-kommentare oder -attribute) zwischen den Abschnitten (Markup) wird zum Erkennen der Grenzen benutzt Vorhandensein von Code -Teilen als zielsprachenspezifsche Freiräume (hooks) Weitere Rückführinformationen gegebenenfalls aus dem Quellflekopf oder -kommentaren Bedienung: Automatisch Bei Rückführungsabweichungen erscheinen ausführliche Meldungen und Handlungshinweise für den Nutzer. 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 22

Beispiel-Folien Beispiel aus der Codegenerierung und -Rückführung von Fujaba: http://www.fokus.fraunhofer.de/en/fokus_events/motion/ecmda2008/_do cs/rs01_t03_manuelbork_emcda2008_slides.pdf Paralleles Parsen von Template und Generat, mit Vergleich zum Aufösen der Indeterminismen der Rückführung Prof. U. Aßmann, SEW 23 The End Prof. U. Aßmann, SEW 24