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

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses 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

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

Software Engineering Klassendiagramme Assoziationen

Software 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

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Kapitel 3 Frames Seite 1

Kapitel 3 Frames Seite 1 Kapitel 3 Frames Seite 1 3 Frames 3.1 Allgemeines Mit Frames teilt man eine HTML-Seite in mehrere Bereiche ein. Eine Seite, die mit Frames aufgeteilt ist, besteht aus mehreren Einzelseiten, die sich den

Mehr

Vortrag von: Ilias Agorakis & Robert Roginer

Vortrag 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

Mehr

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung

CSS-Grundlagen. Etwas über Browser. Kapitel. Die Vorbereitung Kapitel 1 Die Vorbereitung Vorgängerversionen. Bald darauf folgte dann schon die Version 4, die mit einer kleinen Bearbeitung bis vor Kurzem 15 Jahre unverändert gültig war. All das, was du die letzten

Mehr

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Fachgebiet 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

Mehr

WhiteStarUML Tutorial

WhiteStarUML 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/

Mehr

Wochenbericht. Firas Zoabi. Studienprojekt A: SIMPL. 28. Dezember 2009 I M P

Wochenbericht. Firas Zoabi. Studienprojekt A: SIMPL. 28. Dezember 2009 I M P Wochenbericht Firas Zoabi Studienprojekt A: SIMPL 28. Dezember 2009 S I M P L Geplante Aufgaben und Tätigkeiten Erledigte Aufgaben und Tätigkeiten Übersicht Benötigte Arbeitszeit/Aufwände Gewonnene Erkenntnisse

Mehr

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008 Konzeption und Implementierung einer automatisierten Testumgebung, 10. Dezember 2008 1 Gliederung Einleitung Softwaretests Beispiel Konzeption Zusammenfassung 2 Einleitung Komplexität von Softwaresystemen

Mehr

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI TTS - TinyTimeSystem Unterrichtsprojekt BIBI Mathias Metzler, Philipp Winder, Viktor Sohm 28.01.2008 TinyTimeSystem Inhaltsverzeichnis Problemstellung... 2 Lösungsvorschlag... 2 Punkte die unser Tool erfüllen

Mehr

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost Adobe Photoshop Lightroom 5 für Einsteiger Bilder verwalten und entwickeln Sam Jost Kapitel 2 Der erste Start 2.1 Mitmachen beim Lesen....................... 22 2.2 Für Apple-Anwender.........................

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Software Engineering Interaktionsdiagramme

Software Engineering Interaktionsdiagramme Software Engineering Interaktionsdiagramme Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Nachrichtenaustausch Welche Nachrichten werden ausgetauscht? (Methodenaufrufe)

Mehr

SEW Übung EMFText. 1 Aufgabe. 2 Domänenbeschreibung. 3 Installation von Eclipse/EMFText. 4 Schritt-für-Schritt Anleitung. 4.

SEW Ü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

Mehr

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Copyright 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

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

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

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

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

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

Das Persönliche Budget in verständlicher Sprache

Das Persönliche Budget in verständlicher Sprache Das Persönliche Budget in verständlicher Sprache Das Persönliche Budget mehr Selbstbestimmung, mehr Selbstständigkeit, mehr Selbstbewusstsein! Dieser Text soll den behinderten Menschen in Westfalen-Lippe,

Mehr

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst.

40-Tage-Wunder- Kurs. Umarme, was Du nicht ändern kannst. 40-Tage-Wunder- Kurs Umarme, was Du nicht ändern kannst. Das sagt Wikipedia: Als Wunder (griechisch thauma) gilt umgangssprachlich ein Ereignis, dessen Zustandekommen man sich nicht erklären kann, so dass

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei

Mehr

Einführung in die Informatik Tools

Einführung in die Informatik Tools Einführung in die Informatik Tools Werkzeuge zur Erstellung von Softwareprojekten Wolfram Burgard 8.1 Motivation Große Softwareprojekte werden schnell unübersichtlich. Änderungen im Code können leicht

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

Übungen zur Softwaretechnik

Übungen zur Softwaretechnik Technische Universität München Fakultät für Informatik Lehrstuhl IV: Software & Systems Engineering Markus Pister, Dr. Bernhard Rumpe WS 2002/2003 Lösungsblatt 9 17. Dezember 2002 www4.in.tum.de/~rumpe/se

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1 Wenn der Name nicht gerade www.buch.de oder www.bmw.de heißt, sind Internetadressen oft schwer zu merken Deshalb ist es sinnvoll, die Adressen

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Leichte-Sprache-Bilder

Leichte-Sprache-Bilder Leichte-Sprache-Bilder Reinhild Kassing Information - So geht es 1. Bilder gucken 2. anmelden für Probe-Bilder 3. Bilder bestellen 4. Rechnung bezahlen 5. Bilder runterladen 6. neue Bilder vorschlagen

Mehr

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr.

Language Workbench. Aktuelle Themen der Softwaretechnologie. Vortrag von: Arthur Rehm Steven Cardoso. Betreut von: Prof. Dr. Language Workbench Vortrag von:! Aktuelle Themen der Softwaretechnologie Arthur Rehm Steven Cardoso Betreut von: Prof. Dr. Reichenbach [1] !2 Index Kontext Domain Specific Language (DSL) Language Workbench

Mehr

Gruppenrichtlinien und Softwareverteilung

Gruppenrichtlinien und Softwareverteilung Gruppenrichtlinien und Softwareverteilung Ergänzungen zur Musterlösung Bitte lesen Sie zuerst die gesamte Anleitung durch! Vorbemerkung: Die Begriffe OU (Organizational Unit) und Raum werden in der folgenden

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Erklärung zu den Internet-Seiten von www.bmas.de

Erklärung zu den Internet-Seiten von www.bmas.de Erklärung zu den Internet-Seiten von www.bmas.de Herzlich willkommen! Sie sind auf der Internet-Seite vom Bundes-Ministerium für Arbeit und Soziales. Die Abkürzung ist: BMAS. Darum heißt die Seite auch

Mehr

Online Newsletter III

Online Newsletter III Online Newsletter III Hallo zusammen! Aus aktuellem Anlass wurde ein neuer Newsletter fällig. Die wichtigste Neuerung betrifft unseren Webshop mit dem Namen ehbshop! Am Montag 17.10.11 wurde die Testphase

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit, Wie kann ein PDF File angezeigt werden? kann mit Acrobat-Viewern angezeigt werden auf jeder Plattform!! (Unix,

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Installationsanleitung Maschinenkonfiguration und PP s. Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18.

Installationsanleitung Maschinenkonfiguration und PP s. Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18. Installationsanleitung Maschinenkonfiguration und PP s Release: VISI 21 Autor: Anja Gerlach Datum: 18. Dezember 2012 Update: 18.Februar 2015 Inhaltsverzeichnis 1 Einbinden der Postprozessoren... 3 1.1

Mehr

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

WEBSEITEN ENTWICKELN MIT ASP.NET

WEBSEITEN ENTWICKELN MIT ASP.NET jamal BAYDAOUI WEBSEITEN ENTWICKELN MIT ASP.NET EINE EINFÜHRUNG MIT UMFANGREICHEM BEISPIELPROJEKT ALLE CODES IN VISUAL BASIC UND C# 3.2 Installation 11 Bild 3.2 Der Webplattform-Installer Bild 3.3 IDE-Startbildschirm

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering Zur Architektur der Applikation Data Repository Franz-Josef Elmer, Universität Basel, HS 2015 Software Engineering: Mit acht bewährten Praktiken zu gutem Code 2 Schichtarchitektur

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Bedienungsanleitung für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Matthias Haasler Version 0.4 Webadministrator, email: webadmin@rundkirche.de Inhaltsverzeichnis 1 Einführung

Mehr

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Wie richten Sie Ihr Web Paket bei Netpage24 ein Wie richten Sie Ihr Web Paket bei Netpage24 ein Eine kostenlose ebook Anleitung von Netpage24 - Webseite Information 1 E-Mail Bestätigung... 3 2 Ticketsystem... 3 3 FTP Konto anlegen... 4 4 Datenbank anlegen...

Mehr

Tutorial - www.root13.de

Tutorial - www.root13.de Tutorial - www.root13.de Netzwerk unter Linux einrichten (SuSE 7.0 oder höher) Inhaltsverzeichnis: - Netzwerk einrichten - Apache einrichten - einfaches FTP einrichten - GRUB einrichten Seite 1 Netzwerk

Mehr

Fotostammtisch-Schaumburg

Fotostammtisch-Schaumburg Der Anfang zur Benutzung der Web Seite! Alles ums Anmelden und Registrieren 1. Startseite 2. Registrieren 2.1 Registrieren als Mitglied unser Stammtischseite Wie im Bild markiert jetzt auf das Rote Register

Mehr

Einführung in die Java- Programmierung

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

Mehr

Kompilieren und Linken

Kompilieren und Linken Kapitel 2 Kompilieren und Linken Bevor wir uns auf C++ selbst stürzen, brauchen wir einiges Vorgeplänkel, wie man komfortabel ein größeres C++- kompilieren kann. Mit Java stellt sich der Kompiliervorgang

Mehr

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Beamen in EEP Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert Zuerst musst du dir 2 Programme besorgen und zwar: Albert, das

Mehr

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen

Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Flyer, Sharepics usw. mit LibreOffice oder OpenOffice erstellen Wir wollen, dass ihr einfach für eure Ideen und Vorschläge werben könnt. Egal ob in ausgedruckten Flyern, oder in sozialen Netzwerken und

Mehr

Schulberichtssystem. Inhaltsverzeichnis

Schulberichtssystem. Inhaltsverzeichnis Schulberichtssystem Inhaltsverzeichnis 1. Erfassen der Schüler im SBS...2 2. Erzeugen der Export-Datei im SBS...3 3. Die SBS-Datei ins FuxMedia-Programm einlesen...4 4. Daten von FuxMedia ins SBS übertragen...6

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Video-Tutorial: Einrichten einer Facebook Landing Page in der Facebook Chronik (Timeline)

Video-Tutorial: Einrichten einer Facebook Landing Page in der Facebook Chronik (Timeline) Video-Tutorial: Einrichten einer Facebook Landing Page in der Facebook Chronik (Timeline) Skript Nivea hat eine Die Telekom hat eine Microsoft hat eine Und selbst die BILD-Zeitung hat eine Wovon ich spreche?

Mehr

Kostenstellen verwalten. Tipps & Tricks

Kostenstellen verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Kostenstellen erstellen 3 13 1.3 Zugriffsberechtigungen überprüfen 30 2 1.1 Kostenstellen erstellen Mein Profil 3 1.1 Kostenstellen erstellen Kostenstelle(n) verwalten 4

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es 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

Mehr

Geld Verdienen im Internet leicht gemacht

Geld Verdienen im Internet leicht gemacht Geld Verdienen im Internet leicht gemacht Hallo, Sie haben sich dieses E-book wahrscheinlich herunter geladen, weil Sie gerne lernen würden wie sie im Internet Geld verdienen können, oder? Denn genau das

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Kommunikations-Management

Kommunikations-Management Tutorial: Wie importiere und exportiere ich Daten zwischen myfactory und Outlook? Im vorliegenden Tutorial lernen Sie, wie Sie in myfactory Daten aus Outlook importieren Daten aus myfactory nach Outlook

Mehr

Reporting Services und SharePoint 2010 Teil 1

Reporting Services und SharePoint 2010 Teil 1 Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?

Mehr

Typo3 - Schulung: Fortgeschrittene I an der Hochschule Emden/Leer

Typo3 - Schulung: Fortgeschrittene I an der Hochschule Emden/Leer Verlinkung: Man unterscheidet zwischen externer und interner Verlinkung. Bei der externen Verlinkung verlässt man den Bereich unseres Web-Servers. Typo3 überprüft nicht die Existenz der angegebenen Seite

Mehr

Nach der Installation kann es auch schon losgehen. Für unseren Port Scanner erstellen wir zunächst ein neues Projekt:

Nach der Installation kann es auch schon losgehen. Für unseren Port Scanner erstellen wir zunächst ein neues Projekt: Ein Port Scanner ist eine gute Möglichkeit den eigenen Server auf offene Ports zu scannen. Zu viele nicht benötigte und offene Ports können auf Ihrem Server und auf Ihrem Computer ein Sicherheitsrisiko

Mehr

Outlook-Daten komplett sichern

Outlook-Daten komplett sichern Outlook-Daten komplett sichern Komplettsicherung beinhaltet alle Daten wie auch Kontakte und Kalender eines Benutzers. Zu diesem Zweck öffnen wir OUTLOOK und wählen Datei -> Optionen und weiter geht es

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Einkaufslisten verwalten. Tipps & Tricks

Einkaufslisten verwalten. Tipps & Tricks Tipps & Tricks INHALT SEITE 1.1 Grundlegende Informationen 3 1.2 Einkaufslisten erstellen 4 1.3 Artikel zu einer bestehenden Einkaufsliste hinzufügen 9 1.4 Mit einer Einkaufslisten einkaufen 12 1.4.1 Alle

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

Mehr

DOKUMENTATION VOGELZUCHT 2015 PLUS

DOKUMENTATION VOGELZUCHT 2015 PLUS DOKUMENTATION VOGELZUCHT 2015 PLUS Vogelzucht2015 App für Geräte mit Android Betriebssystemen Läuft nur in Zusammenhang mit einer Vollversion vogelzucht2015 auf einem PC. Zusammenfassung: a. Mit der APP

Mehr

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert https://www.sws.bfh.ch/studium/cas/swe-fs13/protected/re/re_buch.

Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert https://www.sws.bfh.ch/studium/cas/swe-fs13/protected/re/re_buch. Vgl. Kapitel 5 aus Systematisches Requirements Engineering, Christoph Ebert https://www.sws.bfh.ch/studium/cas/swe-fs13/protected/re/re_buch.pdf 2 Nach derbefragung aller Stakeholder und der Dokumentation

Mehr

Microsoft SharePoint 2013 Designer

Microsoft SharePoint 2013 Designer Microsoft SharePoint 2013 Designer Was ist SharePoint? SharePoint Designer 2013 Vorteile SharePoint Designer Funktionen.Net 4.0 Workflow Infrastruktur Integration von Stages Visuelle Designer Copy & Paste

Mehr

Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg.

Vermeiden Sie es sich bei einer deutlich erfahreneren Person dranzuhängen, Sie sind persönlich verantwortlich für Ihren Lernerfolg. 1 2 3 4 Vermeiden Sie es sich bei einer deutlich erfahreneren Person "dranzuhängen", Sie sind persönlich verantwortlich für Ihren Lernerfolg. Gerade beim Einstig in der Programmierung muss kontinuierlich

Mehr

Model Driven Development im Überblick

Model 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,

Mehr

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java Objektorientierte Programmierung mit Java Eine praxisnahe Einführung mit BlueJ Klassenentwurf Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? 1.0 Zentrale Konzepte

Mehr

Registrierung am Elterninformationssysytem: ClaXss Infoline

Registrierung am Elterninformationssysytem: ClaXss Infoline elektronisches ElternInformationsSystem (EIS) Klicken Sie auf das Logo oder geben Sie in Ihrem Browser folgende Adresse ein: https://kommunalersprien.schule-eltern.info/infoline/claxss Diese Anleitung

Mehr

Die Post hat eine Umfrage gemacht

Die Post hat eine Umfrage gemacht Die Post hat eine Umfrage gemacht Bei der Umfrage ging es um das Thema: Inklusion Die Post hat Menschen mit Behinderung und Menschen ohne Behinderung gefragt: Wie zufrieden sie in dieser Gesellschaft sind.

Mehr

Day-Trading. Ich zeige Ihnen hier an einem Beispiel wie das aussieht.

Day-Trading. Ich zeige Ihnen hier an einem Beispiel wie das aussieht. Day-Trading Das Day-Trading, der Handel innerhalb eines Tages, wird von den meisten Tradern angestrebt. Das stelle ich auch immer wieder bei meinen Schülern in den Seminaren fest. Sie kleben förmlich vor

Mehr

Internet Explorer Version 6

Internet Explorer Version 6 Internet Explorer Version 6 Java Runtime Ist Java Runtime nicht installiert, öffnet sich ein PopUp-Fenster, welches auf das benötigte Plugin aufmerksam macht. Nach Klicken auf die OK-Taste im PopUp-Fenster

Mehr

Anleitung Postfachsystem Inhalt

Anleitung Postfachsystem Inhalt Anleitung Postfachsystem Inhalt 1 Allgemeines... 2 2 Einloggen... 2 3 Prüfen auf neue Nachrichten... 2 4 Lesen von neuen Nachrichten... 3 5 Antworten auf Nachrichten... 4 6 Löschen von Nachrichten... 4

Mehr

Installationsanleitung CLX.PayMaker Home

Installationsanleitung CLX.PayMaker Home Installationsanleitung CLX.PayMaker Home Inhaltsverzeichnis 1. Installation und Datenübernahme... 2 2. Erste Schritte Verbindung zur Bank einrichten und Kontoinformationen beziehen... 4 3. Einrichtung

Mehr

Bauteilattribute als Sachdaten anzeigen

Bauteilattribute als Sachdaten anzeigen Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...

Mehr

Arbeiten mit dem Outlook Add-In

Arbeiten mit dem Outlook Add-In Arbeiten mit dem Outlook Add-In Das Outlook Add-In ermöglicht Ihnen das Speichern von Emails im Aktenlebenslauf einer Akte. Außerdem können Sie Namen direkt aus BS in Ihre Outlook-Kontakte übernehmen sowie

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