Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.
|
|
- Christa Vogt
- vor 8 Jahren
- Abrufe
Transkript
1 Free your work.
2 Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.
3 Design und Implementierung von Codegeneratoren Am Beispiel der MDA-Suite XCoder Dipl.-Inf. Constantin Szallies
4 Warum MDA? Softwareentwicklung automatisieren! Zwei orthogonale Ansätze kombinieren: Codegenerierung: Berücksichtigung von Cross cutting concerns z. B. Getter/Setter Beschreibung auf einer höheren Abstraktionsebene! Reuse / Frameworks / Vererbung 4
5 Softwareentwicklung mit der MDA Generierter Quellcode Modellierung Generator Binärcode Individueller Code = nicht automatisierte Bearbeitung Compiler 5
6 Konsequentes Forward Engineering Modellierung Generierung Ergänzen des individuellen Codes Modell und Code jederzeit synchron! Ermöglicht die Erstellung eines Modells auf höherer Abstraktionsebene! Roundtrip Engineering bedeutet: Modell und Code äquivalent 6
7 Die XCoder-Suite Wiederverwendbare Komponenten und anpassbare Standard-Generatoren Open Source: In Projekten von Liantis verwendet und weiterentwickelt, wenn Standard-Lösungen ungeeignet Das komplette Framework ist vollständig modelliert und generiert sich selbst: MDA 2 Leichtgewichtig, schnell und einfach zu erweitern 7
8 XCoder-Architektur (hier: für C++) Modell-Transformation Instanz UML-Metamodell- C++-Metamodell- Instanz XMI-Export XMI-Reader Generate Model.xml C++ Sources C++ Sources C++ Quellen 8
9 Platform Independent Model (PIM) <<entity>> Rechnung summe : Money +rechnungen 1 0..* +kunde <<entity>> Kunde name : String getsaldo() : Money <<primitive>> Money <<primitive>> String <<enumeration>> KundenArt PRIVAT GESCHAEFTLICH 9
10 Platform Specific Model (PSM) Durch Transformation des PIM erzeugt <<EJBLocalInterface>> Rechnung <<EJBLocalMethod>> getkunde() : test.kunde <<EJBLocalMethod>> setkunde(p : test.kunde) : void KundenArt PRIVAT : int = 0 GESCHAEFTLICH : int = 1 <<EJBLocalInterface>> Kunde <<EJBLocalMethod>> getsaldo() : java.math.bigdecimal <<EJBLocalMethod>> getrechnungenint() : java.util.collection <<EJBLocalMethod>> addtorechnungen(p : test.rechnung) : void <<EJBLocalMethod>> removefromrechnungen(p : test.rechnung) : void <<EJBLocalMethod>> getrechnungen() : java.util.collection <<EJBEntityLocalHomeInterface>> RechnungHome <<EJBEntityLocalHomeInterface>> KundeHome <<EJBCreateMethod>> create() : test.rechnung <<EJBFinderMethod>> findbyprimarykey(pk : java.lang.object) : test.rechnung <<EJBCreateMethod>> create() : test.kunde <<EJBFinderMethod>> findbyprimarykey(pk : java.lang.object) : test.kunde <<EJBEntity>> KundeBean <<EJBEntity>> RechnungBean <<EJBCreateMethod>> ejbpostcreate() : void ejbremove() : void ejbload() : void ejbstore() : void ejbpas sivate() : void ejbactivate() : void unsetentitycontext() : void <<EJBCreateMethod>> ejbcreate() : java.lang.object <<EJBRemoteMethod>> getsumme() : java.math.bigdecimal <<EJBRemoteMethod>> setsumme(someobject : java.math.bigdecimal) : void setentitycontext(someobject : javax.ejb.entitycontext) : void <<EJBRemoteMethod>> getentitycontext() : javax.ejb.entitycontext <<EJBRemoteMethod>> getejbhome() : test.rechnunghome <<EJBRemoteMethod>> getkunde() : test.kunde <<EJBRemoteMethod>> setkunde(p : test.kunde) : void <<EJBCreateMethod>> ejbcreate() : java.lang.object <<EJBCreateMethod>> ejbpostcreate() : void <<EJBRemoteMethod>> getsaldo() : java.math.bigdecimal ejbremove() : void ejbload() : void ejbstore() : void ejbpassivate() : void ejbactivate() : void <<EJBRemoteMethod>> getname() : java.lang.string <<EJBRemoteMethod>> setname(someobject : java.lang.string) : void setentitycontext(someobject : javax.ejb.entitycontext) : void <<EJBRemoteMethod>> getentitycontext() : javax.ejb.entitycontext unsetentitycontext() : void <<EJBRemoteMethod>> getejbhome() : test.kundehome <<EJBRemoteMethod>> getrechnungenint() : java.util.collection <<EJBRemoteMethod>> setrechnungenint(p : java.util.collection) : void <<EJBRemoteMethod>> addtorechnungen(p : test.rechnung) : void <<EJBRemoteMethod>> removefromrechnungen(p : test.rechnung) : void <<EJBRemoteMethod>> getrechnungen() : java.util.collection 10
11 UML-Metamodell Eine Instanz des Metamodells ist das im UML-Werkzeug erstellte Modell Einlesen des Modells im XMI-Format +type Classifier owner 1 1 +associations AssociationEnd +participant 0..n +connections 0..n +attributes 0..n Attribute +ass ociation 1 Association 11
12 Java-Metamodell Metamodell der Programmiersprache Java +importedpackages Package 0..n +implementingclasses 0..n +implement edinterfaces 0..n +extendedclasses 0..n +superclass 0..1 Classifier 0..n +import edclasses isinterface : Boolean = False visibility : ClassVisibility = PUBLIC isabstract : Boolean = False isfinal : Boolean = False isstatic : Boolean = False finalizable : Boolean = False documentation : String usequalifiednamesonly : Boolean = False iscustomclass : Boolean = True filenameextension : String = "java" userimportsenabled : Boolean = True skipgeneration : Boolean 0..n innerclasses +outerclass <<enumeration>> ClassVisibility PUBLIC PRIVATE PROTECTED PACKAGE 1 +attributes 0..n Attribute +parentclass 1 0..n +parentclass +operations Operatio n 12
13 Das Java-Metamodell verwenden // Create java model Model javamodel = new Model(); // create class Classifier javaclassifier = new Classifier(); javamodel.addclasswithqualifiedname(javaclassifier, "example.kunde"); // add attribute Attribute someattribute = new Attribute(); someattribute.setname("myattribute"); someattribute.settype(type.gettype("int")); javaclassifier.addtoattributes(someattribute); 13
14 Abstraktes Dateisystem // Create file system TransactionFileSystem filesystem = new TransactionFileSystem(); // Create java model Model javamodel = new Model(); // create java classes... // Generate java class javamodel.generate(filesystem); Kapselung des Dateisystems filesystem.commit(); Transaktionsschutz für Dateiänderungen 14
15 Das EJB-Metamodell als Erweiterung des Java-Metamodells 0..1 Classifier (f rom jav a) <<abstract>> MappedClassifier (f rom java) <<abstract>> BeanClassifier +parentclass <<abstract>> Bean CompoundPrimaryKey e ntitybe an +compoundprimarykey 1 EntityBean +primarykeyattributes 0..n Attribute (f rom core) 0..n +operations Op eration (f rom jav a) XCoder Template AllAttributesCPKConstructor CPKHashCodeOperation CPKToStringOperation CPKEqualsOperation generatebody() generatebody() generatebody() generatebody() 15
16 Template für tostring -Methode public void generatebody(com.liantis.io.printer printer) { _3C8E2EF60260 java.util.vector keys = ((CompoundPrimaryKey)this.getParentClass()). getentitybean().getprimarykeyattributes(); Umwandlung mittels Präprozessor } Attribute firstattribute = (Attribute)keys.elementAt(0); [ return "(" + [[firstattribute.getname()]] + ] for(int i=1,j=keys.size();i<j;i++) { Attribute anattribute = (Attribute)keys.elementAt(i); [ ", " + [[anattribute.getname()]] + ] } [ ")"; ] 16
17 Vorteile durch Metamodellierung Die Struktur des zu erzeugenden Codes liegt vollständig vor Kennt alle Typen, die er verwendet Classifier Weiß, ob alle geerbten, abstrakten Methoden überschrieben werden Weiß, ob java.sql.date unqualifiziert verwendet werden kann Berechnet Details für seine Templates 17
18 Modelltransformation Aus einer Metamodell-Instanz eine zweite Metamodell-Instanz erzeugen Eine oder mehrere Iterationen über das Eingabe- Modell bauen das Ausgabe-Modell auf Am Ende: Model to Text -Transformation UML- MetamodelL-Instanz OOP- MetamodelL-Instanz 18
19 Modellierung einer Transformation BOInterface I nterf ac ecl assifi er (from core) +umlinterface 1 1 +javainterface $map() mapattributes() mapoperations() maproles() mapinheritancerelations() maprealizerelations() Cl assi fi er (from java) +umlclassifier ClassCla 1 ssi fier (from core) 1 +umlclassifi er +javaclassifier javaenumeration BusinessObject map() mapattributes() mapoperations() maproles() mapinheritancerelations() maprealizerelations() Enumeration $map() mapattributes() mapoperations() maproles() generateclassinitializer() mapinheritancerelations() maprealizerelations() <<abstract>> MappedClassifier $m apping : Cl assifi ermapping $m ap () $setma pp ing() pre MapFeatures() ma pattributes() ma poperati ons() ma pro les() mapvisibility() ma pinheritancerel ations() maprealizerelations() mapdependencyrelations() po stma pfea tu res() ma pbasicel em ents() Exception Exception +umlexcepti on 1 (from commonbehavi javaexception $map() mapattributes() mapoperations() maproles() mapinheritancerelations() maprealizerelations() 19
20 Implementierung einer Transformation public static Enumeration map(classclassifier aclass) { _3C73A384029F Enumeration e = new Enumeration(); e.setumlclassifier(aclass); e.setid(aclass.getid()); String name = new StringTransformer().transform(aClass.getName()); e.setname(name); e.setisfinal(true); e.setuserimportsenabled(false); } // add attributes as enumeration constants java.util.vector attribs = aclass.getattributes(); for (int i = 0; i < attribs.size(); i++) { Attribute at = attribs.elementat(i); Attribute javaattribute = new Attribute(); e.addtoattributes(javaattribute);... if(at.hastype()) new TransformationError(at,"no attribute types allowed here");... } return e; 20
21 21 Standardkomponenten UML-Metamodell (OMG-Standard) Java-Metamodell EJB-Metamodell C++-Metamodell SQL-Metamodell C#-Metamodell UML Java-Transformation UML EJB-Transformation UML C++-Transformation UML SQL-Transformation UML C#-Transformation Transaktionsgesicherte Generierung unter Erhalt von manuell geschriebenem Code
22 Beispielprojekt Abrechnungssystem für Telekommunikationsunternehmen und Energieversorger Produktiv seit 1998 Bestehende C++-Architektur Modellierung mit Rational Rose Generierung mit XCoder/C++ Koexistenz von manuell erstelltem und generiertem Code Schrittweise Migration zu vollständiger Generierung Aufwand für XCoder/C++-Anpassung: 20 PT 22
23 Was bedeutet... für Sie? Schnelle Einführung durch leichtgewichtigen Ansatz Leistungsfähige Lösungen durch Metamodelle und Modelltransformation Flexible und einfache Erweiterung durch modellierten Generator 23
24 Liantis: Kompetenz im Bereich MDA Einsatz v. MDA-Standardwerkzeugen 2. Entwicklung v. MDA-Individuallösungen Modellgetriebene Entwicklung seit 1997 COBOL/Java: Versicherungsbranche COBOL: Finanzdienstleistungsbranche Java/EDIFACT: Standardisierungsorg. C++: Immobilienwirtschaft Java/C++/C#/J2EE: SE-Werkzeuge C++: Telekommunikation J2EE: Energiewirtschaft J2EE: Bank
25 Geschäftsfelder Liantis Beratung und Training Software-Entwicklung Liantis berät und trainiert zu folgenden Themen: Objektorientierte Software-Entwicklung, insb. UML Software-Architekturen, insb. MDA, EJB, CORBA XML Generierungsverfahren Anforderungsanalyse Vorgehensmodelle Projektmanagement 25
26 Geschäftsfelder Liantis Beratung und Training Software-Entwicklung Liantis verfügt über langjähriges Know-how in der Entwicklung komplexer Informationssysteme. Wir unterstützen Unternehmen bei der Realisierung ihrer Software- Entwicklungsprojekte. Dabei werden modernste Softwaretechnologie und Entwicklungswerkzeuge eingesetzt. 26
27 Free your work.
28 Free your work. Durch: Constantin Szallies Liantis GmbH & Co. KG St.-Anton-Straße Krefeld Fon: / Fax: / info@liantis.com
29 Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.
Model Driven Architecture Best Practices
Model Driven Architecture Best Practices Am Beispiel der MDA-Suite XCoder Dipl.-Inf. Constantin Szallies Standardtechnologien der MDA Standardisiert von der Object Management Group (OMG) Unified Modeling
MehrModel Driven Development im Überblick
Model Driven Development im Überblick Arif Chughtai Diplom-Informatiker (FH) www.digicomp-academy, Seite 1 September 05 Inhalt Motivation Überblick MDA Kleines Beispiel Werkzeuge www.digicomp-academy,
MehrVortrag von: Ilias Agorakis & Robert Roginer
MDA Model Driven Architecture Vortrag von: Ilias Agorakis & Robert Roginer Anwendungen der SWT - WS 08/09 Inhalt Was ist MDA? Object Management Group (OMG) Ziele Konzepte der MDA Werkzeuge Vor- und Nachteile
MehrFree your work. Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.
Free your work. Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren. 1 Automatische Verifikation von Anforderungen Dr. Guido Dischinger guido.dischinger@liantis.com
MehrGroße Übung Praktische Informatik 1
Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,
MehrCode-Erzeugung aus UML-Klassendiagrammen
Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter
MehrWhiteStarUML Tutorial
WhiteStarUML Tutorial Autor: Simon Balázs, BME IIT, 2015. Übersetzung: Kovács Márton, 2015. Installation Herunterladen und installieren Sie das WhiteStarUML: http://sourceforge.net/projects/whitestaruml/
MehrJava: Vererbung. Teil 3: super() www.informatikzentrale.de
Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und
MehrModel Driven Architecture (MDA)
Model Driven Architecture (MDA) Vortrag im Fach Software Engineering II BA Mannheim / Fachrichtung Angewandte Informatik Torsten Hopp Gliederung Einleitung Motivation Grundzüge der MDA Ziele & Potenziale
MehrActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0
Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht
MehrCopyright 2014 Delta Software Technology GmbH. All Rights reserved.
Karlsruhe, 21. Mai 2014 Softwareentwicklung - Modellgetrieben und trotzdem agil Daniela Schilling Delta Software Technology GmbH The Perfect Way to Better Software Modellgetriebene Entwicklung Garant für
MehrEinführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005
Einführung in die objektorientierte Programmierung mit Java Klausur am 19. Oktober 2005 Matrikelnummer: Nachname: Vorname: Semesteranzahl: Die Klausur besteht aus drei Frageblöcken zu den Inhalten der
MehrJava Einführung Abstrakte Klassen und Interfaces
Java Einführung Abstrakte Klassen und Interfaces Interface Interface bieten in Java ist die Möglichkeit, einheitliche Schnittstelle für Klassen zu definieren, die später oder/und durch andere Programmierer
MehrKlausur zur Einführung in die objektorientierte Programmierung mit Java
Klausur zur Einführung in die objektorientierte Programmierung mit Java im Studiengang Informationswissenschaft Prof. Dr. Christian Wolff Professur für Medieninformatik Institut für Medien-, Informations-
MehrEinführung in Generatives Programmieren. Bastian Molkenthin
Einführung in Generatives Programmieren Bastian Molkenthin Motivation Industrielle Entwicklung *!!*,(% % - #$% #!" + '( & )!* Softwareentwicklung Rückblick auf Objektorientierung Objektorientierte Softwareentwicklung
MehrVerhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...
PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:
MehrModel Driven Architecture Praxisbeispiel
1 EJOSA OpenUSS CampusSource Model Driven Architecture Praxisbeispiel 2 Situation von CampusSource-Plattformen Ähnliche Funktionen (Verwaltung von Studenten und Dozenten, Diskussionsforen,...), jedoch
MehrEinführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012
Einführung in modellgetriebene Softwareentwicklung 24. Oktober 2012 Überblick Was sind die Grundprinzipien der modellgetriebenen Softwareentwicklung? Entwicklung einer MDD-Infrastruktur Modellgetriebene
MehrModel Driven Architecture
Model Driven Architecture Wilhelm Stephan Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Seminar Softwareentwicklung in der Wissenschaft Betreuer: Julian Kunkel SommerSemester
MehrEinführung in die Java- Programmierung
Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113
MehrProgrammiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny
Programmiersprache 2 (C++) Prof. Dr. Stefan Enderle NTA Isny 3. UML Klassendiagramm Nachtrag 3.1 Einführung UML UML ist eine standardisierte Sprache zur Modellierung von Systemen. In UML werden graphische
MehrErfolg ist programmierbar.
45789545697749812346568958565124578954569774981 46568958565124578954569774981234656895856124578 45697749812346568958565124578954569774981234656 58565124578954569774981234656895856124578954569 49812346568958565124578954569774981234656895856
MehrKompetenz. rund um. Ihren. Entwicklungsprozess. Über uns. Technische Software. Modellbasierter Test. Prüfplätze. Automatisierung.
Kompetenz rund um Ihren Entwicklungsprozess Modellieren für den Test - Segen oder Fluch? Firmenpräsentation auf der embeddedworld 2010 Dipl. Ing. (Univ) Gerhard Baier Bereichsleiter Marketing und Vertrieb
MehrSoftware Engineering Klassendiagramme Einführung
Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt
MehrSoftware Entwicklung II (SS12)
Prof. Dr. P. Liggesmeyer Dipl.-Inf. K. Bizik M.Sc. K. Nehring TU Kaiserslautern Fachbereich Informatik AG Software Engineering: Dependability Software Entwicklung II (SS12) Übung 5 Ausgabe: 04.06.2012
MehrSEA. Modellgetriebene Softwareentwicklung in der BA
SEA Modellgetriebene Softwareentwicklung in der BA MDA bei der BA Ziele/Vorteile: für die Fachabteilung für die Systementwicklung für den Betrieb Wie wird MDA in der BA umgesetzt? Seite 2 MDA bei der BA
MehrGeneratives Programmieren
Generatives Programmieren Seminar Produktlinien WS03/04 Tammo van Lessen 08.01.2004 Outline Einleitung Generatoren Generatives Programmieren Fazit Einleitung Industrielle Entwicklung 1826 Austauschbare
MehrLösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13)
Prof. Ina Schaefer Institut für Softwaretechnik und Fahrzeuginformatik TU Braunschweig Lösungsvorschlag für Übungsblatt 6 Software Engineering 1 (WS 2012/13) Ausgabe: 12. Januar 2013 Abgabe: 25. Januar
MehrObjektorientierte Programmierung
Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum
MehrJava Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff
Java Reflection Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff Java Reflection Die Java Reflection API liefert per Introspection Informationen über Klassen => Meta-Daten.
MehrJava Einführung Umsetzung von Beziehungen zwischen Klassen. Kapitel 7
Java Einführung Umsetzung von Beziehungen zwischen Klassen Kapitel 7 Inhalt Wiederholung: Klassendiagramm in UML Java-Umsetzung von Generalisierung Komposition Assoziationen 2 Das Klassendiagramm Zweck
MehrEinführung in die Programmierung
Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In
MehrDefinition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014
Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung
MehrErfolg ist programmierbar.
4578954569774981234656895856512457895456977498 3465689585651245789545697749812346568958561245 9545697749812346568958565124578954569774981234 6895856512457895456977498123465689585612457895 6977498123465689585651245789545697749812346568
MehrInhalt. Motivation Techniken des MDE. Fallbeispiele
ISE-Seminar 2012 Inhalt Motivation Techniken des MDE Computer Aided Software Engineering (CASE) Domain-Specific-Languages (DSL) Model Driven Architecture (MDA) Fallbeispiele Motivation Automatische Codegenerierung
MehrViele gute Stellen sind frei. Besetzen Sie eine.
Viele gute Stellen sind frei. Besetzen Sie eine. Die Innovations Softwaretechnologie GmbH mit Hauptsitz am Bodensee ist Wir suchen gute Java Entwickler. Kommen Sie zu uns als: Informatiker(in) (Diplom/Bachelor/Master)
MehrEin hierarchischer, modellgetriebener Ansatz zur Codegenerierung. R. Gitzel, M. Schwind
Ein hierarchischer, modellgetriebener Ansatz zur Codegenerierung R. Gitzel, M. Schwind Agenda! Überblick/Motivation! Hintergrund! Technische Umsetzung! Zentrale Ergebnisse 2 Überblick Ziele! Know-how-Aufbau/Stand
MehrWas ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit
Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit EMF ist ein eigenständiges Eclipse-Projekt (Eclipse Modeling Framework Project) EMF ist ein Modellierungsframework und Tool
MehrModel-Driven Development in Scrum-Projekten
Tempo machen: Model-Driven Development in Scrum-Projekten Herzlich willkommen Enrico Fritz microtool GmbH Berlin Tempo machen: Model-Driven Development in Scrum-Projekten 25 Jahre Tools und Beratung: microtool
MehrEinführung in Eclipse und Java
Universität Bayreuth Lehrstuhl für Angewandte Informatik IV Datenbanken und Informationssysteme Prof. Dr.-Ing. Jablonski Einführung in Eclipse und Java Dipl.Inf. Manuel Götz Lehrstuhl für Angewandte Informatik
MehrKonzeption und Realisierung eines logikbasierten Anfragewerkzeugs für UML-Modelle
Konzeption und Realisierung eines logikbasierten Anfragewerkzeugs für UML-Modelle Doktoranden-, Diplomandenseminar, Institut für Informatik, TU Clausthal 23. Juni 2009 Motivation: Modelle werden in der
MehrClient-Server-Beziehungen
Client-Server-Beziehungen Server bietet Dienste an, Client nutzt Dienste Objekt ist gleichzeitig Client und Server Vertrag zwischen Client und Server: Client erfüllt Vorbedingungen eines Dienstes Server
MehrProgrammieren ohne Programmierer Das GeneSEZ Generator Framework. Gerrit Beine gerrit.beine@sapat.de
Programmieren ohne Programmierer Das GeneSEZ Generator Framework Gerrit Beine gerrit.beine@sapat.de Vogelperspektive Theorie: Model driven software development Praxis: Konzepte von GeneSEZ Lösungen für
MehrJetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen.
Teil B: Erweiterungen Jetzt sollt ihr von der Vorlage der Grundversion 1.0 ein eigenes Textadventure erstellen. Die folgenden Aufgaben und Ausführungen geben einige Hilfestellungen, welche (mindestens
MehrSoftware Engineering Klassendiagramme Assoziationen
Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen
MehrModel Driven SOA Modellgetriebene Entwicklung von SOA Anwendungen. OOP München, 26.01.2011
Model Driven SOA Modellgetriebene Entwicklung von SOA Anwendungen OOP München, 26.01.2011 I N H A L T 1. SOA das erste Projekt 2. Prozesse Ergebnisse aus dem Fachbereich 3. Der Business Analyst und BPMN
MehrReferenzarchitekturen und MDA 1
Referenzarchitekturen und MDA 1 Gerd Beneken *, Tilman Seifert *, Niko Baehr +, Inge Hanschke +, Olaf Rauch + *) TU München Lehrstuhl für Software & Systems Engineering Boltzmannstr. 3; 85748 Garching
MehrDr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur. UML-Klassendiagramme als Werkzeug im Unterricht
Dr. Hanno Schauer Mons-Tabor-Gymnasium Montabaur UML-Klassendiagramme als Werkzeug im Unterricht Blitzlicht? In welcher Programmiersprache(n) unterrichten Sie?? In welchem Umfang unterrichten Sie Objektorientierung??
MehrWIRTSCHAFTSINFORMATIK
Westfälische Wilhelms-Universität Münster A platform for professional model-driven software development. Präsentation im Rahmen des Seminars Software Engineering WS 08/09 Jan Schürmeier Jan.Schuermeier@gmx.de
MehrTest-Driven Design: Ein einfaches Beispiel
Test-Driven Design: Ein einfaches Beispiel Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele Veranschaulichung der Technik des Test-Driven Design am Beispiel eines Programms
MehrEs sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.
Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt
Mehri n g e n i e u r b ü r o f ü r s o f t w a r e t e c h n o l o g i e w w w. v o e l t e r. d e Metamodellbasierte Codegenerierung in Java
Metamodellbasierte Codegenerierung in Java Codegenerierung Markus Völter, voelter@acm.org, www.voelter.de Codegenerierung bezeichnet die automatische Erstellung von Quelltext aus üblicherweise abstraktereren,
MehrDie MID ModellierungsMethodik M³ ein Baukasten für Produktlinien. Andreas Ditze, MDD & PL 2009, Leipzig, 23.03.2009
Die MID ModellierungsMethodik M³ ein Baukasten für Produktlinien Andreas Ditze, MDD & PL 2009, Leipzig, 23.03.2009 I N H A L T 1. Vorstellung 2. Was macht einen guten Baukasten aus? 3. Ziele der MID ModellierungsMethodik
MehrVorlesung "Software-Engineering"
Vorlesung "Software-Engineering" Rainer Marrone, TUHH, Arbeitsbereich STS Vorige Vorlesung Pflichtenheft (requirements specification document) Charakterisierung von Software-Qualität Detaillierte Anforderungsanalyse
MehrEin Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen
Ein Erfahrungsbericht beim Einsatz von generierenden Ansätzen im Vergleich zu generischen Lösungen Tom Krauß Agenda Begriffsdefinition Verfahren Praktische Beispiele Vergleich und Bewertung Begriffsklärung
MehrProgrammieren in Java
Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können
MehrModellgetriebene Softwareentwicklung
Modellgetriebene Softwareentwicklung 30.10.2008 Dr. Georg Pietrek, itemis AG Inhalt Wer ist itemis? Modellgetriebene Entwicklung Ein Praxis-Beispiel Fazit 2 Vorstellung IT-Dienstleister Software-Entwicklung
MehrSoftware Engineering II
Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters
MehrDaniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers
Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des
MehrPraktische Übung 'JUnit-Test'
Praktische Übung 'JUnit-Test' Starten Sie für die folgende Übung Eclipse und laden Sie das Testprojekt von folgender URL: http://pi.informatik.uni-siegen.de/berlik/swt/currency.zip Darin ist die Klasse
MehrIndividuelle Erweiterung des generierten Codes. 16. Januar 2013
Individuelle Erweiterung des generierten Codes 16. Januar 2013 Überblick Welche Möglichkeiten zur individuellen Erweiterung von generiertem Code gibt es? Innerhalb eines Moduls (Klasse) Auf Modulebene
MehrSoftwaretechnik (Allgemeine Informatik) Überblick
Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6
MehrSystemdenken und Gestaltungsmethodik System-Modellierung
Systemdenken und Gestaltungsmethodik System-Modellierung Prof. Dr.-Ing. Stefan Brunthaler TFH Wildau 2008ff Master Telematik Ausgangsbasis Es liegt ein kosten-nutzen-optimales Lösungskonzept vor. Die Architektur
MehrInnovator 11 classix. Java Reverse Engineering. HowTo. Ralph Schönleber. www.mid.de
Innovator 11 classix Java Reverse Engineering Ralph Schönleber HowTo www.mid.de Mit Innovator Java Reverse Engineering durchführen Inhaltsverzeichnis Voraussetzungen... 2 Java Reverse Engineering... 2
Mehr188.154 Einführung in die Programmierung für Wirtschaftsinformatik
Beispiel 1 Vererbung (Liste) Gegeben sind die beiden Klassen ListNode und PersonNode. 188.154 Einführung in die Programmierung für Wirtschaftsinformatik Wiederholung, Prüfungsvorbereitung Monika Lanzenberger
MehrIBM Software Demos Rational Software Delivery Platform - Änderungen an Design und Architektur einer Anwendung
In dieser Demo verwendet Alex die Visualisierungs- und Modellfunktionen von Rational Software Architect, um die Architektur der Anwendung zu betrachten und festzulegen, wie die Änderung Sofort kaufen bestmöglich
MehrDieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.
Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html
MehrÜbung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse
Übung 03: Schleifen Abgabetermin: xx.xx.xxxx Name: Matrikelnummer: Gruppe: G1 (Prähofer) G2 (Prähofer) G3 (Wolfinger) Aufgabe Punkte gelöst abzugeben schriftlich abzugeben elektronisch Aufgabe 03.1 12
MehrÜbungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11
Übungen zur Vorlesung Einführung in die Informatik Wintersemester 2010/11 Fakultät für Informatik Lehrstuhl 1 Dr. Lars Hildebrand Carla Delgado-Battenfeld Fatih Gedikli Tobias Marschall Benjamin Schowe
MehrInnere Klassen in Java
Innere Klassen in Java SS 2012 Prof. Dr. Margarita Esponda Innere Klassen Klassen- oder Interfacedefinitionen können zur besseren Strukturierung von Programmen verschachtelt werden Eine "Inner Class" wird
MehrFachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6
Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in
MehrObjektbasierte Entwicklung
Embedded Software Objektbasierte Entwicklung Objektorientierung in C? Prof. Dr. Nikolaus Wulff Objektbasiert entwickeln Ohne C++ wird meist C im alten Stil programmiert. => Ein endlose while-schleife mit
MehrAufgabenblatt Nr. 5 Generizität und TicTacToe
Aufgabenblatt Nr. 5 Generizität und TicTacToe 1 Generische Sortier-Methode 1.1 Aufgabe: Entwickeln einer generischen Sortiermethode für Objekte mit der Schnittstelle Comparable Ihnen ist aus der Vorlesung
MehrJava Einführung Collections
Java Einführung Collections Inhalt dieser Einheit Behälterklassen, die in der Java API bereitgestellt werden Wiederholung Array Collections (Vector, List, Set) Map 2 Wiederholung Array a[0] a[1] a[2] a[3]...
MehrModellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme. Tillmann Schall, anaptecs GmbH
Modellgetriebene Entwicklungsprozesse in der Praxis - eine Bestandsaufnahme Tillmann Schall, anaptecs GmbH : Agenda Grundlagen modellgetriebener Entwicklungsprozesse Schritte zur Einführung Erfahrungen
MehrInnovator 11 classix. Enterprise JavaBeans (EJB) für JBuilder. Connect. Alexander Borschet. www.mid.de
Innovator 11 classix Enterprise JavaBeans (EJB) für JBuilder Alexander Borschet Connect www.mid.de Modellieren und Generieren von Enterprise JavaBeans (EJB) für JBuilder Wozu dient die Anbindung an JBuilder?
MehrEin subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen
Ein subjektiver Vergleich zwischen SSIS und Kettle mit Ausblick auf die Generierung von BI-Lösungen vorgestellt am 29.09.2008 in der PASS Regionalgruppe Karlsruhe Michael Riedmüller inovex GmbH Project
MehrSEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.
SEW Übung EMFText 1 Aufgabe Erstellen Sie eine textuelle Domänenspezifische Sprache Domain-specific Language (DSL) mit dem Werkzeug EMFText. Die Sprache soll dazu dienen Formulare (Fragen, Antworttypen
MehrSWE5 Übungen zu Software-Engineering
1 Übungen zu Software-Engineering 1) Klassen und Objekte 2) Telefonanlage 3) Objekt- und Klassendiagramme 4) Assoziationen 5) Telefonanlage (Erweiterung) 6) Fahrzeuge 7) Familien 2 Aufgabe 1: Klassen und
MehrJavakurs zu Informatik I. Henning Heitkötter
Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,
MehrJava Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1
Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen
MehrINNOVATOR im Entwicklungsprozess
Erfahrungsbericht INNOVATOR im Entwicklungsprozess Basis für Host- und Java-Anwendungen Dr. Carl-Werner Oehlrich, Principal Consultant MID GmbH Das Modellierungswerkzeug INNOVATOR Geschäftsprozess-Modellierung
MehrSichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben
Sichtbarkeit & statische Methoden Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben Nicht sichtbare Methoden Wollen Eltern bestimmte Methoden vor den
MehrCodegenerierung am Beispiel des PIMAR-Projekts PhoneBook. 14. Januar 2015
Codegenerierung am Beispiel des PIMAR-Projekts PhoneBook 14. Januar 2015 Überblick Modell- und Codegenerierung (M2C, C2M) Modellinterpretation vs. Modellübersetzung PIMAR Code-Generierung am Beispiel des
Mehr4. AuD Tafelübung T-C3
4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {
MehrPrinzipien Objektorientierter Programmierung
Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................
MehrJavadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck
Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle
MehrModellbasierte Softwareentwicklung
CD OCL OD Statechart SD Modellbasierte Softwareentwicklung 7. Evolutionäre Methodik 7.1. Vorgehensmodell Vorlesungsnavigator: Prof. Dr. Bernhard Rumpe Sprache Codegen. http://www.se-rwth.de/ Testen Evolution
MehrProgrammierkurs Java
Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen
MehrÜbung: Verwendung von Java-Threads
Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum
MehrTypumwandlungen bei Referenztypen
Typumwandlungen bei Referenztypen Genau wie es bei einfachen Typen Typumwandlungen gibt, gibt es auch bei Referenztypen Umwandlungen von einem Referenztypen in einen anderen Referenztypen, die wie bei
MehrGrundkonstrukte der Objektorientierung in Java, C# und C++
Grundkonstrukte der Objektorientierung in Java, C# und C++ 2 Viele Patterns basieren auf einer Kombination einiger zentraler Modellierungskonstrukte, namentlich auf Schnittstellen- und Implementierungsvererbung
MehrObjektorientierte Programmierung
Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)
MehrÜbungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag
Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:
MehrEs war einmal... "StudyING: Welten bewegen - Welten gestalten"
Computer, generiere! Christian Schröder Fachbereich Elektrotechnik und Informationstechnik Fachhochschule Bielefeld christian.schroeder@fh-bielefeld.de Es war einmal... Es war einmal... ein Bauvorhaben!
MehrSoftwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel
Übungen zur Vorlesung Softwaretechnologie - Wintersemester 2012/2013 - Dr. Günter Kniesel Übungsblatt 10 - Lösungshilfe Aufgabe 1. CRC-Karten (7 Punkte) Es geht um die Modellierung der folgenden Bibliotheks-Anwendung:
MehrA Domain Specific Language for Project Execution Models
A Domain Specific Language for Project Execution Models Eugen Wachtel, Marco Kuhrmann, Georg Kalus Institut für Informatik Software & Systems Engineering Inhalt Einführung und Hintergrund Problembereiche
MehrSoftwareentwicklungsprozess im Praktikum. 23. April 2015
Softwareentwicklungsprozess im Praktikum 23. April 2015 Agile Softwareentwicklung Eine agile Methodik stellt die beteiligten Menschen in den Mittelpunkt und versucht die Kommunikation und Zusammenarbeit
MehrProbeklausur Softwareengineering SS 15
Probeklausur Softwareengineering SS 15 Hinweis: Die Bearbeitungsdauer entspricht dem Punktewert. Aufgabe 1 (10 min) Beschreiben Sie das Vorgehensmodell Test-Driven-Development (TDD) a) Erläutern Sie das
Mehr