Seminar Informatik. 07 Fakultät für Information-, Medien und Elektrotechnik Studiengang: Master Technische Informatik. Domain Specific Language

Größe: px
Ab Seite anzeigen:

Download "Seminar Informatik. 07 Fakultät für Information-, Medien und Elektrotechnik Studiengang: Master Technische Informatik. Domain Specific Language"

Transkript

1 07 Fakultät für Information-, Medien und Elektrotechnik Studiengang: Master Technische Informatik Seminar Informatik Thema: Professor: Student: Domain Specific Language Prof. Dr. Hans W. Nissen Tuwana Abdulla Matrikelnummer:

2 Inhaltsverzeichnis 1. Einführung in Domain Specific Language Problem Domain Solution Domain Domain Specific Language Wann ist ein Domain Specific Language notwendig? DSL beim praktischen Einsatz Domain Specific Language mit Java erstellen Domain Specific Language mit Groovy erstellen Internal- und External DSL Internal DSL External DSL UML mit Domain Specific Language UML Profile mit UML UML Profile mit Meta-Object Facility Von der Domain-Analyse zur UML Profile Domain Specific Language Integration Internal DSL Integration DSL Integration mit Java 6 Scripting Engine DSL Integration mit Spring External DSL Integration UML Model Integration Fazit Literatur...22

3 1. Einführung in Domain Specific Language Hinweis: Die Informationen in diesem Kapitel und in allen Unterkapiteln stammen von folgende Quelle: [ghos11] Um zu verstehen was ein Domain Specific Language ist, dann muss man zuerst klären, was ein Domain genau bedeutet. Aus der allgemeinen Sprachgebrauch bedeutet ein Domain ein Gebiet. In jedes Fachgebiet gibt es verschiedene Entitäten und Prozesse. Jedes Fachgebiet lässt sich in ein Problem Domain und ein Solution Domain aufteilen. Das Domain Specific Language ist das Bindeglied zwischen den Problem Domain und den Solution Domain. Was genau das Problem Domain und das Solution Domain sind und welche Rolle dabei das Domain Specific Language spielt, wird in den unteren Unterkapiteln erläutert. 1.1 Problem Domain Das Problem Domain sind Entitäten und Prozesse in einem Fachgebiet, die man analysiert. In einem Linux Betriebssystem sind z.b. Ordner und Dateien die Entitäten. Ein Ordner verschieben ist ein Prozess. Ein Problem im Problem Domain setzt sich aus den jeweiligen Entitäten und Prozesse zusammen. Eine Datei von einem Ordner in einem anderen Ordner zu verschieben ist ein Problem, dass Teil des Problem Domains ist. 1.2 Solution Domain Wie der Name es schon andeutet, gibt das Solution Domain die Lösung für das Problem in einem Problem Domain an. Doch wie sieht so eine Lösung aus? Die Lösung des Solution Domains setzt sich aus den Werkzeugen und zusätzliche Prozessen zusammen, die Notwendig sind, um das Problem des Problem Domains zu lösen. Zum Beispiel wäre das Werkzeug, zum verschieben einer Datei, das Betriebssystem selbst. Die zusätzlichen Prozesse wären hier die Programme im Betriebssystemkern, die für den Interrupt verantwortlich sind oder ob der User berechtigt ist die Datei zu verschieben. Es ist wichtig zu wissen, dass die Lösung im Solution Domain von der Anforderung abhängt. Denn zu einem Problem gibt es verschiedene Lösungen. Die Anforderung legt fest, welcher Lösung für welches Problem durchgeführt werden soll. 1.3 Domain Specific Language Wenn sich zwei Menschen unterhalten, dann ist die Sprache das entscheidende Kriterium. Erst wenn beide Personen die selbe Sprache verwenden, dann kann eine vernünftige Unterhaltung entstehen. Dies ist hier nicht anderes. Das Problem Domain und das Solution Domain müssen die selbe Sprache verwenden, um für einen Problem eine Lösung angeben zu können. Die Sprache, dass von einem Problem Domain und einem Solution Domain verwendet wird heißt Domain Specific Language (DSL). Mit Hilfe des Domain Specific Languages wird das Problem genau erfasst. Im Solution Domain wird das Domain Specific Language interpretiert und eine Lösung wird durchgeführt. 1

4 Um zum Beispiel eine Datei zu verschieben, können wir dies dem Betriebssystem mitteilen, indem wir es in der Linux-Shall eingeben. Das eingegebene Befehl, für die Verschiebung der Datei, ist ein Domain Specific Language. Das Betriebssystem interpretiert den eingegebene Befehl und verschiebt die Datei. Domain Specific Language ist keine rarität. Fast überall begegnet uns solche Sprachen. Viele von uns haben es sogar mehrfach verwendet. Zu Domain Specific Language gehören zum Beispiel Sprachen wie SQL, HTML, CSS oder ANT. Sie alle teilen die gleiche Eigenschaft. Sie sind hervorragend geeignet, um bestimmte Aufgaben zu lösen. Aber man kann sie nicht allgemein verwenden. Zum Beispiel kann man mit HTML keine Algorithmen programmieren, dafür aber einfach eine statische Internetseite realisieren. 1.4 Wann ist ein Domain Specific Language notwendig? Die Entscheidung, ob ein Domain Specific Language in einem Projekt notwendig ist, hängt davon ab, ob es einem Vorteile bringt. Domain Specific Language hat allgemein folgende Vorteile: Domain Specific Language ist ausdrucksstark: Domain Specific Language ist angelehnt an das jeweilige Fachgebiet. Die Fachbegriffe, die dort verwendet werden, werden auch in der Domain Specific Language verwendet. Dadurch ist es möglich Spezialisten in die Entwicklung zu integrieren, die nicht in der IT-Welt zuhause sind (z.b Aktienhändler). Domain Specific Language ist prägnant: Dank des Domain Specific Languages kann ein User einfach das geschriebene Code nachvollziehen. Dies ist zum Beispiel bei einem C++ Code nicht der Fall. Die Einarbeitung, in einem schon geschriebenen C++ Code, kann unter Umständen lange dauern. Außerdem hätten Spezialisten, die in der IT-Welt nicht Zuhause sind, keine Chance den Code zu verstehen. Domain Specific Language bietet einen hohen Level an Abstraktion: Bei einem Domain Specific Language spielen Implementierungstechniken keine Rolle. Die Sprache ist nach Möglichkeit vollkommen an das jeweilige Fachgebiet angegliedert. Dadurch wird die Sprache auch für Experten interessant, die keine Ahnung von der Softwareentwicklung haben. Domain Specific Language hat nicht nur Vorteile, sondern auch Nachteile: Die Entwicklung der Sprache: Bevor man ein Domain Specific Language verwenden kann, muss dies erst mal entwickelt werden. Dies kann unter Umständen sehr komplex werden. Ist die Sprache noch nicht entwickelt, dann werden die Kosten für die jeweiligen Projekte höher sein, da die Entwicklung eines Domain Specific Languages ein eigenständiges Projekt ist. Vielleicht kann das Domain Specific Language in anderen Projekten wiederverwendet werden, was auf Dauer sich wieder rentiert. 2

5 Aber am Anfang bleiben die hohen Kosten und diese müssen bei der Entscheidung, ob für das Projekt ein Domain Specific Language notwendig ist, berücksichtigt werden. Performance bedenken: Wegen der hohen Level an Abstraktion kann es zu Performance-Problemen kommen. Solche Performance-Probleme sind bei normalen Anwendungssoftware zweitrangig aber bei Programmen in eingebetteten System sind solche Performance-Probleme sehr bedenklich. Es gibt sicherlich auch andere Vor- und Nachteile und hängt meistens vom jeweiligen Fachgebiet ab. Auch diese Merkmale müssen bei der Entscheidung, für oder gegen den Einsatz von Domain Specific Language, in Betracht gezogen werden. 3

6 2. DSL beim praktischen Einsatz Hinweis: Die Informationen in diesem Kapitel und in allen Unterkapiteln (Kapitel 2.4 ausgeschlossen) stammen von folgende Quelle: [ghos11] Es gibt zwei verschiedene Formen von Domain Specific Language. Die sogennanten Internal DSL und die External DSL. Ein Internal DSL basiert auf eine bereits entwickelte Sprache. Diese wird meistens weiterentwickelt. Das External DSL wird von Grund auf neu entwickelt. In der folgenden Kapiteln werden Beispiele von Domain Specific Languages gezeigt, die mit unterschiedlichen Programmiersprachen entwickelt worden sind. Es werden auch die verschiedenen Entwurfsmuster bei der Entwicklung von Internal- und External DSL gezeigt. Außerdem tauchen wir in die Welt von UML mit DSL ein. 2.1 Domain Specific Language mit Java erstellen Das folgender Code-Beispiel zeigt die Implementierung eines Domain Specific Languages in der Programmiersprache Java: Code 1: Java DSL public class Order { static class Builder { private String security; private int quantity; private int limitprice; private boolean allornone; private int value; private String boughtorsold; public Builder() { public Builder buy(int quantity, String security) { this.boughtorsold = "Bought"; this.quantity = quantity; this.security = security; return this; public Builder sell(int quantity, String security) { this.boughtorsold = "Sold"; this.quantity = quantity; this.security = security; return this; public Builder atlimitprice(int p) { this.limitprice = p; return this; 4

7 public Builder allornone() { this.allornone = true; return this; public Builder valueas(ordervaluer ov) { this.value = ov.valueas(quantity, limitprice); return this; public Order build() { return new Order(this); private final String security; private final int quantity; private final int limitprice; private final boolean allornone; private int value; private final String boughtorsold; private Order(Builder b) { security = b.security; quantity = b.quantity; limitprice = b.limitprice; allornone = b.allornone; value = b.value; boughtorsold = b.boughtorsold; //Getters und Setters public interface OrderValuer { int valueas(int qty, int unitprice); public class StandardOrderValuer implements OrderValuer { public int valueas(int qty, int unitprice) { return unitprice * qty; Das Beispiel realisiert ein Domain Specific Language für einen Trading System. Durch das Domain Specific Language sollen Experten ohne große mühe Order platzieren können. Wie so ein Order mit dem soeben erstellten Domain Specific Language aussehen kann, zeigt folgende Code 2: 5

8 Code 2: Order platzieren mit Java DSL Order o = new Order.Builder().buy(100, "IBM").atLimitPrice(300).allOrNone().valueAs(new StandardOrderValuer()).build(); Allerdings weist das Java DSL einige schwächen auf. Man kann zum Beispiel sehen, dass für den Order ein Objekt der Klasse Builder und die Methode build() benötigt werden. Diese beiden Merkmale des Java DSLs haben nichts mit dem Fachgebiet zu tun. Java braucht diese Merkmale, um den Order zusammenzustellen. Für einen Experten, in einem Fachgebiet, sind solche Java spezifischen Eigenschaften irreführend und nicht praktikabel. Wir brauchen eine andere Programmiersprache, um eine prägnantere Domain Specific Language zu erstellen. 2.2 Domain Specific Language mit Groovy erstellen Im Gegensatz zu Java bietet Groovy durch META-Programmierung bessere Möglichkeiten an, um prägnantere Domain Specific Language zu entwickeln. Code 3 zeigt ein Beispiel, wie mit Groovy das Domain Specific Language aussieht. Code 3: Order platzieren mit Groovy DSL ord = neworder.to.buy(100.shares.of('ibm')) { limitprice 300 allornone true valueas {qty, unitprice -> qty * unitprice Im Gegensatz zu Java DSL kann man sehen, dass Methoden, wie z.b. build(), in Groovy DSL nicht verwendet werden. Stattdessen ist die Sprache sehr prägnant und ausdrucksstark. Ein Experte, dass aus dem Fachgebiet des Aktienhandels stammt, wird die Sprache des Groovy DSLs den des Java DSLs vorziehen. Doch wie realisiert Groovy solch eine Domain Specific Language? Groovy kann durch META-Programmierung, sogar während der Laufzeit, Veränderungen an der Sprache vornehmen. Die Implementierung des oben aufgeführten Groovy DSLs zeigt Code 4. 6

9 Code 4: Groovy DSL class Order { def security def quantity def limitprice def allornone def value def bs def buy(su, closure) { bs = 'Bought' buy_sell(su, closure) def sell(su, closure) { bs = 'Sold' buy_sell(su, closure) private buy_sell(su, closure) { security = su[0] quantity = su[1] closure() def getto() { this //(1) def methodmissing(string name, args) { order.metaclass.getmetaproperty(name).setproperty(order, args) def getneworder() { order = new Order() //(2) def valueas(closure) { order.value = closure(order.quantity, order.limitprice[0]) //(3) Integer.metaClass.getShares = { -> delegate Integer.metaClass.of = { instrument -> [instrument, delegate] In (1) werden alle Methoden abgefangen, die in der Klasse Order nicht aufgelistet sind. 7

10 In (1) werden alle Methoden abgefangen, die in der Klasse Order nicht aufgelistet sind. Methoden wie limitprice werden abgefangen und intern zu Attributen konvertiert (siehe die Attribute in Code 4 und den Aufruf von limitprice in Code 3). Groovy bietet den sogenannten Closure an. Closure sind, vereinfacht gesagt Blocks mit Codes, die später ausgeführt werden. Hier (2) wird es verwendet, um das Domain Specific Language prägnanter und ausdrucksstärker zu machen. Der Unterschied zu Java DSL sieht man in Code 2 und Code 3 bei der Methode valueas(...). Man kann sehen, dass beim Groovy DSL ein Objekt vom Typ StandardOrderValuer nicht extra vom DSL User angelegt werden muss, um die Methode valueas(...) zu verwenden. Dank der META-Programmierung, kann man direkt Methoden in einem bereits angelegten Klasse injizieren. In unserem Beispiel (3) wurden hier die Methoden getshares und das Attribute shares der Klasse Integer injiziert. Das Resultat davon sieht man in Code Internal- und External DSL Domain Specific Language lässt sich in Internal- und External DSL einteilen. Internal DSL basiert auf die Entwickelung einer Sprache, durch eine andere Sprache. Bei Internal DSL ist die nötige Infrastructure für die Sprache schon gegeben. Bei External DSL wird eine Sprache von Grund auf neu entwickelt Internal DSL Es gibt zwei Formen von Domain Specific Language. Diese sind Generative DSL und Embedded DSL. Bei der generativen DSL geht es darum Codes zu erzeugen. Bei der Embedded DSL geht es darum eine Sprache in eine andere einzubetten. Trotz dieser Trennung findet man in der Realität Sprachen, die auf beide Konzepte zugreifen. Ein prominentes Beispiel wäre Rails. Rails ist ein Internal DSL und ist eingebettet in Ruby. Allerdings nutzt Rails die Möglichkeiten von Ruby, um Codes zu erzeugen. Rails ist daher auch ein generativer DSL. Bei der Embedded DSL gibt es folgender Konzepte, die verwendet werden, um die Sprache zu definieren. Smart API: Bei der Smart API geht es darum Methoden, wie eine Kette, miteinander zu kombinieren. Diese Methode haben wir schon mal benutzt (siehe Code 1). Manipulation des Syntaxbaums: Zunächst wird ein abstrakter Syntaxbaum einer bestehen Sprache erzeugt. Durch Manipulation des abstrakten Syntaxbaums wird das Domain Specific Language definiert. Reflective META-Programming: Bei der Smart API wurden die Methoden statisch aufgerufen. Doch was ist, wenn man den Aufruf der Methoden erst zur Laufzeit weiß? Dank Reflective META-Programming ist es möglich während der Laufzeit zu bestimmten welcher Methoden aufgerufen werden sollen. 8

11 Sprachen wie Ruby bieten solche Möglichkeiten an. Bei der generativen DSL gibt es folgender Konzepte, die verwendet werden, um die Sprache zu definieren. Runtime META-Programming: Dank der Laufzeit META-Programmierung ist es möglich während der Laufzeit Codes zu erzeugen. Dieses Konzept haben wir bereits im Code 4 verwendet, um eine prägnante und ausdrucksstarke Sprache zu erzeugen. Complie-Time META-Programming: Dieses Konzept der META-Programmierung ist jedem bekannt, der schon mal mit C++ programmiert hat. Hier kann man durch den Preprozessor, während der Kompilierung, C++ Codes erzeugen External DSL Das Parsen des geschriebenen Codes und die Ausführung des geschriebenen Codes sind fester Bestandteil des External DSLs. Beim External DSL gibt es folgender Konzepte, die verwendet werden, um die Sprache zu definieren. Context-Driven String Manipulation: Man kann Regeln definieren und diese als Strings hinschreiben. Die geschriebenen Regeln können durch einen Preprozessor in eine beliebige Programmiersprache übersetzt werden. Transforming XML to Consumable Resource: In Spring DI Framework werden die Konfigurationen für den DI Container in eine XML-Datei gespeichert. Diese XML-Datei ist ein External DSL, dass als Ressource für eine andere Anwendung bereitsteht. DSL Workbench: DSL Workbench bieten eine Entwicklungsumgebung an, mit der es möglich ist die Entwicklung und die Verwaltung eines External DSLs einfach durchzuführen. Eclipse Xtext ist ein prominentes Beispiel. Eclipse Xtext speichert Meta-Models bezüglich des Domain Specific Languages ab. Das Meta-Model kann dann in anderen Frameworks integriert werden. Zu den Frameworks gehören unter anderem Generatoren, rich editors usw. DSL mit eingebetteten fremden Code mixen: Tools wie YACC und ANTLR erlauben, mit der erweiterten Notation der Backus- Nauer Form, Parser für einen Domain Specific Language zu generieren. Auch kann man die Regeln, die man mit den erweiterten Backus-Nauer Form festgelegt hat, mit anderen Sprachen(C/C++ und Java) kombinieren, um den Parser zu generieren. Ob man sich für den Internal- oder External DSL entscheidet, hängt von der jeweiligen Anforderung an das System und die Ressourcen ab, die für das Projekt zur Verfügung stehen. Jeder muss selbst abwägen welches Konzept der Spracherzeugung für ihn sinnvoll ist. 9

12 2.4 UML mit Domain Specific Language Unified Modeling Language (UML) ist eine standardisierte grafische Modellierungssprache, dass überwiegend für die Entwicklung von Softwaresystemen eingesetzt wird. Ähnlich zu Java wird UML in vielen Fachbereichen eingesetzt. UML kann aber für bestimmte Fachbereiche spezialisiert werden. Dies ist z.b. bei modellgetriebe Softwareentwicklung notwendig. Durch das Model kann der Code automatisch erzeugt werden. Dadurch wird die Entwicklung einer Software nicht nur beschleunigt, sondern auch die Qualität erhöht, da automatisch generierter Code weniger Fehler enthalten. Das Standard-UML kann durch Erweiterungsmöglichkeiten, die in der UML vorgesehen sind, erweitert werden. Solche Erweiterungen werden durch Stereotypen, TaggedValues und Constraints vorgenommen und heißen UML Profile. Durch das UML Profile wird eine Sprache definiert, die Domain-Specific Modeling Language genannt wird. Diese Sprache spielt in der modellgetriebenen Softwareentwicklung eine entscheidende Rolle. Denn Dank einer solchen Sprache kann ein System durch das Model präzise erfasst werden UML Profile mit UML 2 Hinweis: Die Informationen in diesem Kapitel stammen von folgende Quelle: [fakh12] Wie bereits erwähnt erweitert ein UML Profile den Standard-UML und spezialisiert es für ein bestimmtes Fachgebiet. Ein UML Profile besteht aus folgenden Elementen: Metaclass: Ein Metaclass definiert ein Standard-UML Element. Das Metaclass kann durch Stereotypen erweitert werden. Stereotype: Stereotypen können einen oder mehrere Metaclass erweitern. Stereotypen können Attribute (tagged definition) und Assoziationen haben. Auch können Stereotypen von anderen Stereotypen erben (Generalisierung/Spezialisierung). Abbildung 2.1 zeigt ein Beispiel wie ein Stereotype ein Metaclass erweitert. Abbildung

13 Man kann sehen, dass das Stereotype den UML-Element Artifact erweitert, sodass es zu einem EJB-jar Archive wird. Constraints: Constraints sind viel mehr als nur Bedingungen. Man kann mit ihnen z.b. Attribute automatisch setzen, ohne das der Modelliere sich darum kümmern muss. Abbildung 2.2 zeigt das Beispiel aus Abbildung 2.1. Abbildung 2.2 Dieses mal ist es um einen Constraint ergänzt. Man kann sehen, dass das EJB-jar Archive die Datei ejb-jar.xml im Ordner META-INF haben muss. TaggedValue: Zusätzliche Angaben über einen verwendeten Model eines Stereotypen erfolgen über TaggedValue. Dies kann bei der Modellierung des Domains sehr hilfreich sein. Abbildung 2.3 zeigt ein Beispiel. 11

14 Abbildung 2.3 Das UML Profile selbst ist eine Art Package, das mehrere Stereotypen beinhaltet. Außerdem können UML Profile auch andere Profile durch <<reference>> importieren. Nachdem das UML Profile einsatzfähig ist, kann es in einer Applikation verwendet werden. Abbildung 2.4 zeigt ein Beispiel. Abbildung 2.4 Man kann sehen, dass die Applikation Web Application die beiden UML Profile Servlets und Java verwendet UML Profile mit Meta-Object Facility Eine wohl definierte Sprache bedeutet, dass es automatisch durch einen Computer verarbeitet werden kann [kwb03]. Eine solche Sprache verwendet meistens Grammatiken, die die Sprache erzeugen. Doch in der Welt der grafischen Modellierung gibt es keine Grammatiken, die die Sprache definieren, dass durch das UML und dessen Spezialisierung definiert ist. Deshalb hat das OMG den Meta-Object Facility eingeführt. Das Meta-Object Facility hat vier Schichten und jeder Schicht hat folgende Eigenschaften [niss10]: Schicht M0: Schicht M0 ist die unterste Schicht. Diese Schicht repräsentiert die konkreten Daten [niss10]. 12

15 Schicht M1: Hier sind die Modelle (Diagramme), mit der ein Modellierer ein System modellieren kann [niss10]. Schicht M2: Meta-Modelle der Schicht M2 definieren, wie die Modelle in der Schicht M1 aufgebaut sind [niss10]. Schicht M3: Meta-Meta-Modelle der Schicht M3 definieren, wie die Meta-Modelle der Schicht M2 aufgebaut sind. Außerdem definiert sich die Schicht M3 selbst [niss10]. Abbildung 2.5 zeigt ein Beispiel, wie so ein MOF aussehen könnte. Abbildung 2.5 [niss10] 13

16 Man kann die konkreten Daten der Schicht M0 anhand der Objektdiagramme sehen. M1 zeigt das Model des Systems. Die Elemente, die für das Model des Systems verwendet wurden, sind in der Schicht M2 definiert. Man kann auch sehen, dass Schicht M3 wiederum M2 definiert. Einige Fragen stellen sich sofort. Wie ist das MOF genau definiert? Kann man das Meta- Model der Schicht M2 erweitern? Ohne Erweiterungen, kann ich kein Domain spezifischer Sprache definieren, mit der ich das Domain präzise erfassen kann. Um solche Fragen beantworten zu können. Werden wir das MOF etwas genauer betrachten. Abbildung 2.6 zeigt das MOF in Zusammenspiel mit UML. Abbildung 2.6 [fakh12] hinweis: Ab hier stammen die Informationen von folgende Quelle (ausgenommen sind die Quellen die explizit angegeben wurden): [fakh12] 14

17 Wir betrachten die beiden UML Teilspezifikationen UML 2: Infrastructure und UML 2: Superstructure. Das UML 2: Infrastructure ist das Fundament der UML. Hier sind fast alle Elemente, die immer wieder verwendet werden. Das UML 2: Superstructure erweitert das UML 2: Infrastructure. Das UML 2: Infrastructure besteht aus zwei Paketen. Die Primitive Types (vordefinierte Elemente [OMG07] ) und das Infrastructure Library. Das Infrastructure Library ist in unserem Beispiel in zwei Pakten aufgeteilt. Das Paket Core bietet minimale Funktionalitäten an z.b. Klassen, Assoziationen usw [OMG07]. Das Paket Profiles bietet Mechanismen an, um das Core -Paket zu erweitern. In der Abbildung 2.6 sehen wir in der Schicht M3 das MOF. In der Schicht M2 sind die beiden Sprachen UML und CWM definiert. Man kann sehen, dass sowohl aus der Schicht M3, als auch aus der Schicht M2 auf das Core zurückgegriffen wird. Denn das UML 2: Infrastructure definiert die Metaclasses, die in der MOF, UML und CWM verwendet werden. Zu beachten ist die Sprache UML in der Schicht 2. Wir können sehen, wie das Paket Profile, aus der Infrastructure Library, durch <<merge>> im Inhalt des Pakets Profiles, aus der Sprache UML, verschmilzt. Wenn wir jetzt die Sprache UML aus der Schicht M2 spezialisieren möchten, dann greifen wir auf die Mechanismen zurück, die in der Infrastructure Library definiert sind. Alle Sprachen aus der Schicht M2, die das Paket Profiles aus der Infrastructure Library verwendeten, können über die selben Mechanismen für einen oder mehrere Domäne spezialisiert werden. Das können wir auch in der Abbildung 2.6 sehen. Wir können in der Schicht M1 sehen, wie die Sprache UML, aus der Schicht M2, für eine Domäne spezialisiert wird (Domain Profile 1). Das UML Profile Domain Profile 1 wird auch von Model User Model 3 verwendet Von der Domain-Analyse zur UML Profile Hinweis: Die Informationen in dieses Kapitel stammen von folgende Quelle: [seli07] Bei der Übergang der Domain-Analyse bis zum fertigen UML Profile sind einige Punkte zu beachten, die hier erwähnt werden. Es ist wichtig, dass bei der Erfassung des Domains das betrachtet werden soll was für das Domain wichtig ist. Dies soll unabhängig vom UML metamodel geschehen. Später sollen die Daten in das UML Profile überführt werden. Bei der Erfassung des Domains sollten folgende Daten berücksichtigt werden. 15

18 Das fundamentale Sprachkonstrukt: Zum Sprachkonstrukt gehören z.b. Entitäten und deren Eigenschaften. Im Falle von multi-tasking würden Prozesse, der Prozessor, Schedulers, Prozess Warteschlangen, Prioritäten usw. zum fundamentalen Sprachkonstrukt gehören. Beziehungen: Welche Beziehungen existieren zwischen den Entitäten? Zum Beispiel laufen auf einem Prozessor mehrere Prozesse. Constraints: Legt fest, wie die Sprachkonstrukte miteinander kombiniert werden sollen. Z.B. nach welches Kriterium soll der Prozessor die jeweiligen Prozesse ausführen. Konkretes Syntax: Auch das konkrete Syntax des Domain-Specific Modeling Languages muss in Betracht gezogen werden. Das Domain-Specific Modeling Language sollte sich an das jeweilige Domain orientieren, um so prägnant und ausdrucksstark wie möglich zu sein. Das Model des Domains wird jetzt Schritt für Schritt auf das UML Profile gemappt. Dabei sollten folgende Empfehlungen in Betracht gezogen werden. Bei der Wahl der UML-META-Klassen sollten die META-Klassen gewählt werden, bei der dessen Semantik dem des Domains am besten entspricht. Dies ist sehr wichtig, da das UML Semantik in vielen Tools verwendet wird. Überprüfe, ob es bei den Constraints im UML Profile zu Konflikten kommt. Überprüfe, ob einige Attribute verfeinert werden können. Attribute, die automatisch gesetzt werden, könnten durch Constraints z.b. aus der Modellierung entfernt werden. Diese würde das Domain-Specific Modeling Language prägnanter machen. 16

19 3. Domain Specific Language Integration Es gibt viele Möglichkeiten, um Domain Specific Languages in die jeweilige Applikation zu integrieren. Wir werden hier einige Techniken zeigen, wie man dies bewerkstelligt. 3.1 Internal DSL Integration Hinweis: Die Informationen in dieses Kapitel stammen von folgende Quelle: [ghos11] Internal DSL basieren auf bereits vorhandene Infrastruktur. Wir gehen davon aus, dass unsere bestehende Applikation mit der Programmiersprache Java geschrieben worden ist. Anhand einige Beispiele soll gezeigt werden, wie die Integration eines DSLs durchgeführt wird DSL Integration mit Java 6 Scripting Engine Wir schauen uns nochmal das Groovy DSL aus Kapitel 2.2 an (Code 4). Dieses Quellcode sei nun in der Datei ClientOrder.groovy gespeichert. Code 5 zeigt mehrere Order, die platziert werden müssen. Dieses Code ist in der Datei order.dsl gespeichert. Code 5: Groovy DSL Order platzieren orders = [] neworder.to.buy(100.shares.of('ibm')) { limitprice 300 allornone true valueas {qty, unitprice -> qty * unitprice orders << order neworder.to.buy(150.shares.of('goog')) { limitprice 300 allornone true valueas {qty, unitprice -> qty * unitprice orders << order neworder.to.buy(200.shares.of('msoft')) { limitprice 300 allornone true valueas {qty, unitprice -> qty * unitprice orders << order orders Um dieses Code in unsere Applikation zu verwenden, nutzen wir das Java 6 Scripting Engine. Code 6 zeigt wie dies bewerkstelligt wird. 17

20 Code 6: Java 6 Scripting Engine public class GroovyScriptEngine { public static void main(string[] args) throws Exception { ScriptEngineManager factory = new ScriptEngineManager(); ScriptEngine engine = factory.getenginebyname("groovy"); List<?> orders = (List<?>)engine.eval(new InputStreamReader( new BufferedInputStream( new SequenceInputStream( new FileInputStream("ClientOrder.groovy"), new FileInputStream("order.dsl"))))); System.out.println(orders.size()); for(object o : orders) { System.out.println(o); In Code 6 wird zunächst die Datei ClientOrder.groovy und order.dsl", mit Hilfe der Groovy ScriptEngine, geladen. Die Order werden in eine Liste gespeichert und in eine for- Schleife werden die jeweiligen Order ausgeführt DSL Integration mit Spring Seit Spring 2.0 wird die Implementierung eines Beans auch durch Programmiersprachen wie Ruby oder Groovy unterstützt. Dies soll anhand eines Beispiels verdeutlicht werden. Das Beispiel ist relativ einfach. Wenn man mit Aktien handelt, dann muss man einige Regeln beim Handeln beachten. Diese Regeln können gesetzlich oder aber auch nur hausgemacht sein. Die Regeln sollen über einen User per DSL eingegeben werden können. Um dies zu bewerkstelligen, sollen die Regeln mit der Programmiersprache Ruby realisiert werden. Diese Regeln sollen dann in mein Java Programm überführt werden. Zunächst zeigt Code 7 die Implementierung eines Java Programms mit Hilfe von Spring. Code 7: Trading Service Public class TradingServiceImpl implements TradingService{ //Regeln die dynamisch geladen werden private AccrudInterestCalculationRule public void dotrade(trade trade){ // Implementierung 18

21 public interface AccrudInterestCalculationRule{ BigDecimal calculate(trade trade); Das Ruby Programm wird dynamisch, Dank des Interfaces AccrudInterestCalculationRule, in das Java Programm geladen. Code 8 und Code 9 zeigen abschließend das Ruby Programm und die nötige Konfiguration in Spring. Code 8: calculate mit Ruby require 'java' class RubyAccruedInterestCalculationRule{ def calculate(trade) //Implementierung end end RubyAccruedInterestCalculationRule.new Code 9: Spring Konfiguration <lang:jruby id= accintcalcrule refresh-check-delay= 5000 script-interfaces= org.springframework.scripting. AccrudInterestCalculationRule script-source= classpath:rubyaccruedinterestcalculationrule.rb > </lang:jruby> Dies ist mehr als nur eine einfache Integration. Denn Dank der Spring Framework können wir somit die stärken der Programmiersprachen Ruby oder Groovy in Java einbinden. 3.2 External DSL Integration Zu External DSL Integration gibt es keinen Konzept wie das DSL integriert werden sollte. Es hängt maßgeblich davon ab, wofür das DSL gebraucht wird. Die Art und Weise, wie das External DSL integriert wird, ist ein entscheidender Faktor bei der Wahl, ob man einen External DSL entwickeln sollte. 19

Michael Piechotta - CASE Tools. openarchitecture Ware

Michael Piechotta - CASE Tools. openarchitecture Ware Model Driven Development Michael Piechotta - CASE Tools openarchitecture Ware Gliederung 1.Einleitung - Was ist MDD? - Wozu MDD? 2.Model Driven Development - OMG Konzepte: Modelle,Transformationen Meta-Modellierung

Mehr

Model Driven Architecture Praxisbeispiel

Model 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

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Software Engineering II

Software 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

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Graphischer Editor für die technologieunabhängige User Interface Modellierung

Graphischer Editor für die technologieunabhängige User Interface Modellierung Universität Augsburg Lehrstuhl für Softwaretechnik und Programmiersprachen Prof. Dr. Bernhard Bauer Praktikum Modellgetriebene Softwareentwicklung SS 2008 Graphischer Editor für die technologieunabhängige

Mehr

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML) Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

Model Driven Architecture

Model Driven Architecture { AKTUELLES SCHLAGWORT* / MODEL DRIVEN ARCHITECTURE Model Driven Architecture Martin Kempa Zoltán Ádám Mann Bei der Model Driven Architecture (MDA) bilden Modelle die zentralen Elemente des Softwareentwicklungsprozesses.

Mehr

Andreas Lux 16.03.2010. Verknüpfung unterschiedlicher Modellsprachen (BPMN, UML, DSL) zur Anforderungsanalyse

Andreas Lux 16.03.2010. Verknüpfung unterschiedlicher Modellsprachen (BPMN, UML, DSL) zur Anforderungsanalyse Andreas Lux 16.03.2010 Verknüpfung unterschiedlicher Modellsprachen (BPMN, UML, DSL) zur Anforderungsanalyse Warum unterschiedliche Sprachen? Nicht alle Probleme eignen sich, um mit Standardsprachen beschrieben

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold

Codegeneratoren mit Xtend2. 11.04.2012, A. Arnold Codegeneratoren mit Xtend2 11.04.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was ist Xtend2? 2. Xtend2 Konzepte 3. Hands On! 3 4 8 20 2 Was ist Xtend2? Funktionale, objektorientierte Sprache

Mehr

Modellgetriebene Softwareentwicklung bei der IBYKUS AG

Modellgetriebene Softwareentwicklung bei der IBYKUS AG Modellgetriebene Softwareentwicklung bei der IBYKUS AG Theorie Teil 4: Domänenspezifische Sprachen Dr. Steffen Skatulla IBYKUS AG 1 Inhalt Teil 4: Domänenspezifische Sprachen Nutzung vorhandener Sprachen

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

PLATTFORMÜBERGREIFENDE ENTWICKLUNG MITHILFE MODELLGETRIEBENER METHODEN UND TECHNOLOGIEN

PLATTFORMÜBERGREIFENDE ENTWICKLUNG MITHILFE MODELLGETRIEBENER METHODEN UND TECHNOLOGIEN PLATTFORMÜBERGREIFENDE ENTWICKLUNG MITHILFE MODELLGETRIEBENER METHODEN UND TECHNOLOGIEN Mathias Slawik, WI (M), 3. FS Aktuelle Themen der Wirtschaftsinformatik, HTW Berlin, WS 10/11 Gliederung 2 Methode

Mehr

Jochen Bauer 08.01.2010

Jochen Bauer 08.01.2010 08.01.2010 Um was geht s und wie läuft s ab? Eclipse-EMP-MDT: Standards unter einem Dach! Gliederung 1. der Model (MDT) 2. Model-Driven- (MDD) und MDT 3. Interne Domain-Specific-Languages (DSL) 4. 5. 6.,

Mehr

Konzeption und Realisierung eines logikbasierten Anfragewerkzeugs für UML-Modelle

Konzeption 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

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

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

Modellgetriebene 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

Mehr

Projekt AGB-10 Fremdprojektanalyse

Projekt AGB-10 Fremdprojektanalyse Projekt AGB-10 Fremdprojektanalyse 17. Mai 2010 1 Inhaltsverzeichnis 1 Allgemeines 3 2 Produktübersicht 3 3 Grundsätzliche Struktur und Entwurfsprinzipien für das Gesamtsystem 3 3.1 Die Prefuse Library...............................

Mehr

Software Engineering I

Software Engineering I Software I Übungsblatt 1 + 2 Claas Pinkernell Technische Universität Braunschweig http://www.sse.cs.tu-bs.de/ Seite 2 Welche Werkzeuge? Programmiersprache Java Integrierte Entwicklungsumgebung Eclipse

Mehr

Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014

Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014 Modellgetriebene Softwareentwicklung (Model Driven Software Development - MDSD) SS 2014 Wahlpflichtfach (2 SWS) für Bachelor Andreas Schmidt Einführung/Organisation 1/19 Ziele der Vorlesung Vorstellung

Mehr

MDA MDA mit mit Open-Source-Software Eine Eine Bestandsaufnahme

MDA MDA mit mit Open-Source-Software Eine Eine Bestandsaufnahme MDA MDA mit mit Open-Source-Software Eine Eine Bestandsaufnahme Gerhard Wanner (wanner@hft-stuttgart.de) Stefan Stefan Siegl Siegl (s.siegl@novatec-gmbh.de) Agenda Model Driven Architecture (MDA) Einführung/Übersicht/Motivation

Mehr

Erste Schritte in Java

Erste Schritte in Java Erste Schritte in Java Im einführenden Kapitel haben wir die Grundbegriffe der imperativen Programmierung an einem Beispiel (Algorithmus von Euklid) kennengelernt. In diesem Kapitel sehen wir uns an einem

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava shota.okujava@isento.de www.isento.de

Beispielhaft MDSD in der Praxis. Dr. Shota Okujava shota.okujava@isento.de www.isento.de Beispielhaft MDSD in der Praxis Dr. Shota Okujava shota.okujava@isento.de www.isento.de Agenda Einführung Softwareentwicklungsprozess und MDSD Technologien und Werkzeuge Demo Entwicklung der Metamodelle

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

Datenhaltung für Android Model First. 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg

Datenhaltung für Android Model First. 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg Datenhaltung für Android Model First 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg Agenda Datenhaltung in Android Motivation / Projektziele Projekt Umsetzung Stand der Entwicklung Fazit 2 Datenhaltung

Mehr

Model Driven Development einige wichtige Grundprinzipien

Model Driven Development einige wichtige Grundprinzipien Model Driven Development einige wichtige Grundprinzipien Johannes Scheier j@scheier software.ch Copyright by Scheier Software Engineering Seite 1 Inhalt Was ist Model Driven Development (MDD)? Was verspricht

Mehr

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Individuelle 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

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

UML 2.0 Quelltextgenerierung

UML 2.0 Quelltextgenerierung UML 2.0 Quelltextgenerierung Seminararbeit im Fach Informatik im Rahmen des Seminars Sicherheitskritische Systeme an der Universität Siegen, Fachgruppe für Praktische Informatik eingereicht bei Dr. Jörg

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

XMI & Java. von Stefan Ocke so3@inf.tu-dresden.de 5.Juli 2001

XMI & Java. von Stefan Ocke so3@inf.tu-dresden.de 5.Juli 2001 XMI & Java von Stefan Ocke so3@inf.tu-dresden.de 5.Juli 2001 1. XMI XML Metadata Interchange - Ziele und Historie - Metamodellarchitektur der OMG und MOF - XMI Dokumente und XMI DTD Ziele und Historie

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

Domainspezifische Sprachen

Domainspezifische Sprachen Domainspezifische Sprachen Eine Einführung und Vertiefung am Beispiel des Eclipse Xtext Framework Mirko Heinold Institut für Informatik Christian-Albrechts-Universität zu Kiel Arbeitsgruppe Kommunikationssysteme

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Software Engineering Übung 4 Architektur, Modulentwurf

Software Engineering Übung 4 Architektur, Modulentwurf software evolution & architecture lab Software Engineering Übung 4 Architektur, Modulentwurf 1 Informationen 1.1 Daten Ausgabe Di 27.10.2009 Abgabe So 08.11.2009 bis 23:59 Uhr Besprechung am Di 17.11.2009

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. 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

Mehr

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum

Starthilfe für C# Inhaltsverzeichnis. Medien- und Kommunikationsinformatik (B.Sc.) Alexander Paharukov. Informatik 3 Praktikum Starthilfe für C# Inhaltsverzeichnis Allgemeines... 2 Bezugsquellen... 2 SharpDevelop... 2.NET Runtime... 2.NET SDK... 2 Installation... 2 Reihenfolge... 2 Vorschlag für eine Ordnerstruktur... 3 Arbeit

Mehr

Christian Kurz SWT Projekt WS 07/08

Christian Kurz SWT Projekt WS 07/08 Christian Kurz SWT Projekt WS 07/08 1. Allgemeine Aspekte der generativen GUI- Entwicklung 2. Entwicklung mit Hilfe von GUI-Designern 3. Entwicklung mit Hilfe deklarativer GUI- Sprachen 4. Modellgetriebene

Mehr

TUDOOR - Ein Java Adapter für Telelogic DOORS

TUDOOR - Ein Java Adapter für Telelogic DOORS TUDOOR - Ein Java Adapter für Telelogic DOORS Jae-Won Choi, Anna Trögel, Ingo Stürmer Model Engineering Solutions GmbH Abstract: Im Bereich des Requirements Engineering hat sich DOORS der Firma Telelogic

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: 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

Mehr

Web-Services Implementierung mit Java

Web-Services Implementierung mit Java Web-Services Implementierung mit Java J. Heinzelreiter WS 2004/05 Java-APIs für Web-Services (1) Anwendungs-Code JAXR JAXM JAX-RPC SAAJ SOAP/SwA JWSDL WSDL XML/XML-Schema Web-Services/Java - 2 Java-APIs

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Erweitern Sie ihren Tomcat um das AXIS-Framework und machen Sie ihn damit bereit für den Einsatz von Web Services:

Erweitern Sie ihren Tomcat um das AXIS-Framework und machen Sie ihn damit bereit für den Einsatz von Web Services: 0BBA Karlsruhe, Vorlesung Programmieren, Web Services 1BAufgabe 1 Tomcat um das AXIS-Framework erweitern : Erweitern Sie ihren Tomcat um das AXIS-Framework und machen Sie ihn damit bereit für den Einsatz

Mehr

Modellgetriebene Entwicklung von grafischen Benutzerschnittstellen

Modellgetriebene Entwicklung von grafischen Benutzerschnittstellen Modellgetriebene Entwicklung von grafischen Benutzerschnittstellen Stefan Link, Thomas Schuster, Philip Hoyer, Sebastian Abeck Institut für Telematik, Fakultät für Informatik Universität Karlsruhe (TH)

Mehr

Klausur zur Einführung in die objektorientierte Programmierung mit Java

Klausur 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-

Mehr

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Eclipse Equinox als Basis für Smart Client Anwendungen Christian Campo, compeople AG, 5.7.2007 Java Forum Stuttgart 2007 Übersicht Definition / Architektur Smart Client Smart Client mit RCP / Equinox Gesamtfazit

Mehr

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Die Programmiersprache Java. www.kit.edu. Institut für Angewandte Informatik Programmieren I Die Programmiersprache Java KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Eigenschaften von Java Java ist eine

Mehr

Groovy on Grails. Informatik-Seminar WS06/07. Alexander Treptow. Groovy on Grails Alexander Treptow (minf2622) 1

Groovy on Grails. Informatik-Seminar WS06/07. Alexander Treptow. Groovy on Grails Alexander Treptow (minf2622) 1 Groovy on Grails Informatik-Seminar WS06/07 Alexander Treptow Groovy on Grails Alexander Treptow (minf2622) 1 Übersicht Groovy on Grails Projektstruktur Controllers Views & Layout Dynamic Tag Libraries

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1 Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1 Die Unified Modeling Language Die UML (hier in der Version 0.9) ist ein Satz von Notationen zur Beschreibung objektorientierter Softwaresysteme.

Mehr

Modellgetriebene Softwareentwicklung

Modellgetriebene 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

Mehr

Objektorientierte Programmierung

Objektorientierte 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

Programmieren in Java

Programmieren 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

Mehr

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring

Dennis Schulte / Tobias Flohre codecentric AG. Enterprise Java Batch mit Spring Dennis Schulte / Tobias Flohre Enterprise Java Batch mit Spring Dennis Schulte Düsseldorf @denschu www.github.com/denschu blog.codecentric.de/author/dsc tel +49 (0) 1515 _ 288 2395 dennis.schulte@codecentric.de

Mehr

CORBA. Systemprogrammierung WS 2006-2007

CORBA. Systemprogrammierung WS 2006-2007 CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Java Batch Der Standard für's Stapeln

Java Batch Der Standard für's Stapeln Java Batch Der Standard für's Stapeln Berlin Expert Days 18.09.2015 Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption und Realisierung von IT-Lösungen GEDOPLAN

Mehr

Java für Computerlinguisten

Java für Computerlinguisten Java für Computerlinguisten 2. Objektorientierte Programmierung Christian Scheible Institut für Maschinelle Sprachverarbeitung 28. Juli 2009 Christian Scheible Java für Computerlinguisten 28. Juli 2009

Mehr

Die nächste Revolution in der modelgetriebenen Entwicklung?

Die nächste Revolution in der modelgetriebenen Entwicklung? Die nächste Revolution in der modelgetriebenen Entwicklung? Me Johannes Kleiber Software Engineer bei FMC Johannes.Kleiber@fmc-ag.com Themen Überblick Window Workflow Foundation Workflows modellieren WF

Mehr

Rechnernetze Projekt SS 2015

Rechnernetze Projekt SS 2015 30/03/15 Seite 1 Aspektorientierte Programmierung logische Aspekte (Concerns) im Programm separieren Crosscutting Concerns (Ziel: generische Funktionalitäten über mehrere Klassen hinweg zu verwenden -

Mehr

Bedienung von BlueJ. Klassenanzeige

Bedienung von BlueJ. Klassenanzeige Im Folgenden werden wichtige Funktionen für den Einsatz von BlueJ im Unterricht beschrieben. Hierbei wird auf den Umgang mit Projekten, Klassen und Objekten eingegangen. Abgeschlossen wird dieses Dokument

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Model Driven Software Development

Model Driven Software Development Model Driven Software Development Vergleich von Metametamodellen Marcel Hoyer 1von 19 Themenvorstellung Vergleich von Metametamodellen Was sind überhaupt Metametamodelle? Analyse und Vergleich existierender

Mehr

Inhalt: Version 1.7.5

Inhalt: Version 1.7.5 Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

Software Engineering II

Software Engineering II Software Engineering II Wintersemester 12/13 Fachgebiet Software Engineering Installation der MWE Plugins Von der Juno Update Site installieren (falls noch nicht vorhanden): MWE SDK Xpand SDK 2 TFD Projekt

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber

Konsequent agile Entwicklung mit funk4onaler Programmierung. Michael Sperber Konsequent agile Entwicklung mit funk4onaler Programmierung Michael Sperber Individualso4ware branchenunabhängig Scala, Clojure, Erlang, Haskell, F# Schulungen, Coaching www.acave- group.de funkaonale-

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

PHP 6 Beliebte Webskriptsprache wird erwachsen. Linux User Group Bern 14.05.2009 René Moser

PHP 6 Beliebte Webskriptsprache wird erwachsen. Linux User Group Bern 14.05.2009 René Moser <mail@renemoser.net> PHP 6 Beliebte Webskriptsprache wird erwachsen Linux User Group Bern 14.05.2009 René Moser Inhalt 1.Wie entstand PHP? 2.Was PHP? 3.Warum PHP? 4.Wie installiere ich PHP? 5.Wie programmiere

Mehr

DBUS Interprozess-Kommunikation für Embedded-Plattformen

DBUS Interprozess-Kommunikation für Embedded-Plattformen DBUS Interprozess-Kommunikation für Embedded-Plattformen Andreas Schwarz Neratec Solutions AG Firmenprofil Neratec Solutions AG Produkt-Entwicklungen für kundenspezifische elektronische Produkte Produkte

Mehr

eclipse - Entwicklungsumgebung und mehr ETIS SS05

eclipse - Entwicklungsumgebung und mehr ETIS SS05 eclipse - Entwicklungsumgebung und mehr ETIS SS05 Gliederung Motivation Geschichte Architektur Platform Runtime Eclipse Platform Java Development Tools (JDE) Plugin Development Environment (PDE) Zusammenfassung

Mehr

Einfü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 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

Mehr

Übungen zur Android Entwicklung

Übungen zur Android Entwicklung Übungen zur Android Entwicklung Aufgabe 1 Hello World Entwickeln Sie eine Hello World Android Applikation und laden diese auf den Emulator. Leiten Sie hierfür die Klasse android.app.activity ab und entwerfen

Mehr

Softwaretechnologie für die Ressourcenlinguistik

Softwaretechnologie für die Ressourcenlinguistik Tools und Frameworks FSU Jena Gliederung 1 Pipelines Formate 2 3 Übersicht Details Fazit Pipelines Formate Komponenten bilden eine Pipeline Text Sentence Splitter Tokenizer POS-Tagger Output Texte werden

Mehr

Einführung in die Programmierung für NF

Einführung in die Programmierung für NF Einführung in die Programmierung für NF UML Valerie Holmeyer Michael Kirsch Direct Feedback Eure Mitarbeit ist mir wichbg Quiz nach den jeweiligen AbschniGen Jeder kann mitmachen App socra&ve auf Smartphone

Mehr

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de

Innovator 11 excellence. DDL importieren. Data-Definition-Language-Dateien in Datenbankschema importieren. HowTo. www.mid.de Innovator 11 excellence DDL importieren Data-Definition-Language-Dateien in Datenbankschema importieren HowTo www.mid.de Zweck In Innovator Data excellence können Sie mit dem DDL-Import Ihr physisches

Mehr

Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:...

Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:... Prüfung "Programmieren 2", INbac2, SS 2014 Seite 1 von 7 Datum, Uhrzeit: 18. 07. 2014, 10.30 Uhr Matrikelnummer:... Semester: INbac2 Prüfer: Prof. Meixner Note:... Dauer: 60 Min. Hilfsmittel: keine Punkte:...

Mehr

Mobile Application Development

Mobile Application Development Mobile Application Development Android: Einführung Jürg Luthiger University of Applied Sciences Northwestern Switzerland Institute for Mobile and Distributed Systems Lernziele Der/die Kursbesucher/in kann

Mehr

Grundlagen zur nebenläufigen Programmierung in Java

Grundlagen zur nebenläufigen Programmierung in Java Grundlagen zur nebenläufigen Programmierung in Java Karlsruher Entwicklertag 2013 5. Juni 2013 Referent: Christian Kumpe Inhalt des Vortrags Was zeigt dieser Vortrag? Ein einfaches Beispiel mit allerlei

Mehr

Erweiterbare Programmiersprachen und DSLs

Erweiterbare Programmiersprachen und DSLs Erweiterbare Programmiersprachen und DSLs Markus Voelter, Freiberufler/itemis Bernhard Merkle, SICK AG Dieser Vortrag (und dieses Paper) beschreiben einen neuartigen Ansatz für die Entwicklung eingebetteter

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

C# im Vergleich zu Java

C# im Vergleich zu Java C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03 Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick Entstehung

Mehr

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

G s e a s m a t m ar a ch c i h tek e tur u I und IoC Gesamtarchitektur I und IoC Schichten einer Web-Anwendung Initiiert durch J2EE und Spring: Strukturierte Sicht auf UI und Fachlogik (Domäne) Ergibt 5 Schichten: Man unterscheidet Präsentations- und Domänenmodell!

Mehr

Comparing Software Factories and Software Product Lines

Comparing Software Factories and Software Product Lines Comparing Software Factories and Software Product Lines Martin Kleine kleine.martin@gmx.de Betreuer: Andreas Wuebbeke Agenda Motivation Zentrale Konzepte Software Produktlinien Software Factories Vergleich

Mehr

Java-Schulung Grundlagen

Java-Schulung Grundlagen Java-Schulung Grundlagen Java 2 Standard Edition JDK 5 / 6 31.05.2008 Marcel Wieczorek 1 Themenübersicht Basiswissen Objektorientierung Datentypen Fehlerbehandlung Sonstiges Einführung Klassen, Strings

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Das Interceptor Muster

Das Interceptor Muster Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster

Mehr

09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten

09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten Aktuelle Themen der Wirtschaftsinformatik Zusammenfassung 09.06.2003 André Maurer andre@maurer.name www.andre.maurer.name Wirtschaftsinformatik FH 3.5 Fachhochschule Solothurn, Olten 1 Serverseitige Webprogrammierung

Mehr

Software Engineering Klassendiagramme weiterführende Konzepte

Software Engineering Klassendiagramme weiterführende Konzepte Software Engineering Klassendiagramme weiterführende Konzepte Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Klassenattribut: static Implementierung in Java public

Mehr

Java Einführung Programmcode

Java Einführung Programmcode Java Einführung Programmcode Inhalt dieser Einheit Programmelemente Der erste Programmcode Die Entwicklungsumgebung: Sun's Java Software Development Kit (SDK) Vom Code zum Ausführen des Programms 2 Wiederholung:

Mehr

Ajax & GWT. Kurs: User Interfaces und ihre Evaluierung Dozent: Manfred Thaller WS 2012/2013 Referent: Rafael Kalina

Ajax & GWT. Kurs: User Interfaces und ihre Evaluierung Dozent: Manfred Thaller WS 2012/2013 Referent: Rafael Kalina Ajax & GWT Kurs: User Interfaces und ihre Evaluierung Dozent: Manfred Thaller WS 2012/2013 Referent: Rafael Kalina Ajax Technisches Verfahren, bei dem Browser aktualisierte Inhalte nicht mehr synchron

Mehr

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap Proseminar Objektorientiertes Programmieren mit.net und C# Florian Schulz Institut für Informatik Software & Systems Engineering Einführung Was hat Cross-Plattform

Mehr

Komponentenbasierte Softwareentwicklung

Komponentenbasierte Softwareentwicklung Seminar WS04 Komponentenbasierte Softwareentwicklung Karl Pauls Software-Komponente A software component is a unit of composition with contractually specified interfaces and explicit context dependencies

Mehr