Modellgetriebene Softwareentwicklung

Größe: px
Ab Seite anzeigen:

Download "Modellgetriebene Softwareentwicklung"

Transkript

1 Softwaretechnik Projekt Referat Modellgetriebene Softwareentwicklung Marcus Mews

2 Marcus Mews 18. Januar 2008 Technische Universität Berlin Fachbereich Informatik Softwaretechnik Projekt

3 INHALTSVERZEICHNIS 1 Einführung Rückblick Ausblick Modelle Das Modell Das Metamodell Unterscheidungen Das ontologische Metamodell Das linguistische Metamodell Meta-Ebenen und Abstraktion Verfeinerung in UML UML-Profile Verfeinerung des Metamodells Verfeinerung des Modells Transformationen Modell zu Modell Modell zum Modell eines anderen Metamodells Modell zu Quelltext Quelltextgenerierung Templates API-basierte Generatoren Generierter Code / nicht generierter Code Integration von generiertem und nicht generiertem Code Richtlinien Alles in einem Rutsch Generiere gut aussehenden Quelltext MDSD Konzept Terminologie Domäne Metamodell Formale Modelle Transformation Ziele und Potentiale Genereller Ansatz Fazit Quellen

4 1 Einführung 1 Einführung Dieses Referat soll einen Überblick über wichtige Aspekte der modellgetriebenen Softwareentwicklung (MDSD; engl. Modell Driven Software Developement) geben und einige Gesichtspunkte näher erläutern. Als Hauptreferenz wurde Modellgetriebene Softwareentwicklung von Thomas Stahl und Markus Völter herangezogen. Falls nicht explizit hervorgehoben, so beziehen sich die Ausführungen auf MDSD und nicht auf die Modellgetriebene Architektur (MDA; engl. Model Driven Architecture), wie sie durch die Object Management Group (OMG) propagiert wird. In vielen Fällen ist eine solche Unterscheidung jedoch überflüssig, da die MDA als Spezialisierung der MDSD verstanden werden kann. 1.1 Rückblick In den 90er Jahren entwickelten sich mehrere Paradigmen der Softwareentwicklung, aus denen drei ganz besonders hervortraten: Beherrschten zu Beginn jenen Jahrzehnts noch Computer Aided Softwareengineering (CASE) und Sprachen der vierten Generation (4GLs) die Bildfläche, so kamen gegen Ende der 90er Jahre objektorientierte Paradigmen hinzu. CASE-Methoden und die notwendigen Werkzeuge waren meist proprietär und standen daher im Widerspruch zu offenen Standards. Schlechte Erfahrungen der Unternehmen mit den oftmals teuren Werkzeugen waren die Folge und wurden durch mangelnde Interoperabilität verschärft. Zwar konnten objektorientierte Sprachen nicht alle Wünsche erfüllen, sie lösten jedoch die vorangegangenen Programmiersprachen ab und legten den Grundstein für die Komponententechnologie. In Verbindung mit UML-Werkzeugen ist es zwar möglich, zwischen Modellen und korrespondierendem Quelltext zu wechseln, jedoch blieben UML-Modelle immer nur (grafische) Dokumentation. 1.2 Ausblick Obwohl sich viele UML-Werkzeuge signifikant verbessert haben und intelligente Wizards zur Erstellung von Benutzeroberflächen, Anwendung von Entwicklungsmustern und über Codeskelettgenerierung verfügen, sind sie weiterhin nicht in der Lage, Änderungen am Designmuster automatisch und iterativ auf den Quelltext der gesamten Anwendung zu übertragen. Bei MDA und MDSD werden wesentliche Teile des Quelltextes und nicht nur Codeskelette aus den Modellen generiert. Die hier genutzten Modelle müssen dementsprechend exakt und ausdrucksstark sein um Applikationen mitsamt ihrer Funktionalität so gut wie möglich beschreiben zu können. Aus diesem Grund kann keine allgemeine und für alle Bereiche passende Modellierungssprache verwendet werden, da sie entweder einen übermäßigen Umfang hätte oder zu ungenau und abstrakt wäre. Folglich setzt MDA / MDSD immer eine zu entwickelnde Domänensprache voraus, die auf das zu lösende Problem angepasst ist. Wird die Applikation in all ihren Funktionen mithilfe der Domänensprache genau beschrieben, ist durch entsprechende (zu implementierende) Generatoren eine Transformation in ausführbaren Code möglich. Je nachdem, wie detailliert die Domänensprache ist, kann zwischen Prozent des Quelltextes automatisch generiert werden. In stark spezialisierter Software und bei Unikaten kann ein Entwicklungsansatz nach MDA/MDSD auch nicht sinnvoll sein. Sind hingegen Softwarefamilien bzw. -produktlinien 4

5 1.2 Ausblick das Entwicklungsziel, so kann durch modellgetriebene Softwareentwicklung eine signifikante Einsparung an Ressourcen erreicht werden. Die Vorteile von MDA sind also größere Entwicklungseffizienz bessere Integration von Fachexperten bessere Änderbarkeit der Software leichtere Umsetzung der Softwarearchitektur Möglichkeit der Portierung auf andere Plattformen Natürlich ist das Übersetzen von abstrakten Spezifikationen in weniger abstrakten, ausführbaren Code nichts neues. Bei modellgetriebener Softwareentwicklung wird hingegen nicht nur übersetzbarer Quelltext erzeugt, sondern auch zugehörige Modelle und Infrastrukturen, mit deren Hilfe der Quelltext erst übersetzt bzw. transformiert werden kann. 5

6 2 Modelle 2 Modelle 2.1 Das Modell Abbildung 1: Haus 1 Dies ist ganz klar ein Haus. Im Zusammenhang der modellgetriebenen Softwareentwicklung soll die Abbildung jedoch zuallererst als Modell eines Hauses verstanden werden. Hier steht als die Idee Haus im Vordergrund; der pure Gedanke: Haus. Abbildung 2: Haus 2 Das neue Bild zeigt auch ein Haus. Dieses ist präziser modelliert. Präziser modelliert heißt nicht, dass es sich in seiner Art vom Haus 1 unterscheidet, sondern nur, dass all seine Attribute, die Haus 1 nicht vorgegeben hat, nun festgelegt werden. Attribute eines Hauses könnten die Anzahl der Fenster und Türen sein. Die Anschrift ist ein weiteres Attribut. Abbildung 3: Haus 3 Die Pläne wurden in die Tat umgesetzt und das Haus tatsächlich gebaut. Haus 3 ist die Analogie zur Instanz einer Klasse. Die zugehörige Klasse soll das zweite Haus darstellen. Das erste Haus hingegen ist das Modell vom zweiten Haus und demnach das Metamodell zum letzten Haus. 6

7 2.1 Das Modell Modelle repräsentieren Strukturen, Funktionen oder Verhaltensweisen auf abstrakte Weise. In der Regel werden MDA-Modelle in UML definiert. Abbildung 4: Die vier Metaschichten der OMG Da der Begriff meta immer relativ zu einem Modell zu betrachten ist und sich daher eine absolute Definition von Metamodell erübrigt, hat die OMG vier Metaschichten definiert. Insbesondere die zwei unteren Schichten M0 und M1 sind für Softwareentwickler gewohntes Terrain: In M1, dem Modell, wird eine Klasse mitsamt Attributen und Methoden definiert, die dann üblicherweise zur Laufzeit in M0 instanziiert und mit speziellen Werten versehen wird. Selbstverständlich können mehrere Instanzen erzeugt werden, deren Attribute sich auch unterscheiden können. 2.2 Das Metamodell Ebene M2 das Metamodell definiert die Konstrukte, die in M1 Verwendung finden. Somit sind die in M1 verwendeten Klassen Instanzen aus der M2-Metamodell Ebene. Die oberste Ebene M3 das Meta-Metamodell definiert einerseits die M2-Metamodell-Ebene und andererseits auch sich selbst. Daher existieren oberhalb von M3 keine weiteren Ebenen. Laut OMG werden die Instanzen in M2 auf Basis der Meta Object Facility (MOF) definiert. Diese MOF ist prinzipiell unabhängig von UML und ermöglicht so Metamodellierungen die nicht auf UML basieren. Selbst nicht OO-Modellierungssprachen sollen durch MOF unterstützt werden. Dennoch basiert MOF auf dem Klassenkern der UML und verwendet sowohl gleiche Konzepte als auch gleiche Syntax wie die UML. 7

8 2.2 Das Metamodell Das Metamodell ist ein Modell des Modells. Dementsprechend ist das erste Haus das Metamodell zum dritten Haus. Werden nur die Modellierungsebenen M1 und M2 betrachtet, so kann das Modellhaus (Haus 2) natürlich auch lediglich als Instanz und das Metamodellhaus (Haus 1) als Modell betrachtet werden. Wichtig ist, dass nicht nur die einzelnen Komponenten, die auf der nächsten, darunter liegenden Ebene betrachtet werden, modelliert werden, sondern alle Verknüpfungsarten. Das heißt, dass insbesondere Konstrukte wie Vererbung und Referenzierung auf einer Modellebene definiert werden müssen, damit sie von den Instanzen genutzt werden können. 2.3 Unterscheidungen Das ontologische Metamodell Ontologische Modelle entstehen durch mehrstufige Klassifizierung. Allerdings sind Klasse- Modell-Beziehungen nicht immer nur über mehrere Abstraktionsebenen hinweg gültig. Abbildung 5: Ontologisches Metamodell Am folgenden Beispiel (Abbildung 5) soll illustriert werden, dass zwar Stadt eine Instanz der Klasse Knoten und Zürich eine Instanz der Klasse Stadt ist, aber Zürich keine Instanz der Klasse Knoten ist Das linguistische Metamodell Ein Modell einer Modellierungstechnik oder -sprache heißt linguistisches Metamodell der betreffenden Technik oder Sprache. Jedoch wird die Präzisierung linguistisch oft weggelassen. Daher bedeutet Metamodell ohne Zusätze in der Regel linguistisches Metamodell. 8 Abbildung 6: Linguistisches Metamodell

9 2.3 Unterscheidungen Linguistische Metamodelle modellieren die verwendeten Modellierungskonstrukte. Daher können im Modellbereich einerseits nur durch das Metamodell zur Verfügung gestellte Konstrukte genutzt und diese andererseits aber auch nur durch modellierte Verknüpfungstechniken miteinander in Verbindung gebracht werden. So müssen im Metamodell nicht nur Metaklassen erstellt werden, sondern auch Techniken wie Vererbung und Referenzierung. 2.4 Meta-Ebenen und Abstraktion PIM' PIM Mapping Refactoring PSM-1 PSM-1' bezieht sich auf Plattform -1 Abbildung 7: Zusammenhang von PIM, PSM und Plattform Im Sinne der MDA ist die Trennung von plattformabhängigen (PSM) und plattformunabhängigen (PIM) Modellen ein Schlüsselkonzept der OMG. Ausgehend von der Tatsache, dass Konzepte stabiler als Technologien sind, kann ein PIM unabhängig von der aktuellen Technologie und Plattform entwickelt werden. Mithilfe von speziellen Transformationen für eine Zielplattform kann aus dem PIM ein PSM erstellt werden. Die Rücktransformation aus nicht generiertem Quelltext ist allerdings nur schwer automatisierbar, da an dieser Stelle intellektuelle Arbeit in Form eines Refaktorings notwendig ist. In Verbindung mit verschiedenen Zielplattformen und entsprechenden Transformationen können mehrere PSM parallel existieren. Modelle können trotz verschiedener Abstraktionsgrade auf ein und derselben Metaebene liegen. Hier liefern Transformationen zwar ein spezielleres Modell, dieses befindet sich aber immer noch auf der gleichen Abstraktionsebene. 9

10 2.4 Meta-Ebenen und Abstraktion M3 MOF <<instanceof>> PIM- Metam odell PSM- Metam odell M2 PIM <<instanceof>> Transformation PSM <<instanceof>> M1 Abbildung 8: Abstrakt vs. Meta Im Rahmen des Beispiels könnten verschiedene Plattformen beispielsweise verschiedene Architekturstile bedeuten; so ließe sich ein und dasselbe Einfamilienhaus sowohl auf der Bauhaus- Plattform als auch auf der Jugendstil-Plattform realisieren. Die speziellen Ausprägungen weichen voneinander ab, aber das Modell wird dennoch seiner Spezifikation entsprechend umgesetzt. Ob und inwieweit eine plattformspezifische Modellierung bereits auf höherer Ebene notwendig oder angebracht ist, muss von Projekt zu Projekt entschieden werden. Um von technischen Gegebenheiten möglichst unabhängig zu sein, empfiehlt sich jedoch weitestgehend mit plattformunabhängigen Modellen zu arbeiten. Im Rahmen des Beispiels sollte demzufolge erst bei der Quelltextgenerierung entschieden werden, in welchem Stil das Haus erzeugt wird, und nicht indem bspw. auf der Modellebene ein plattformspezifisches Modell eines Stils genutzt wird. 10

11 3 Verfeinerung in UML 3 Verfeinerung in UML Das bisher betrachtete Modell ist noch sehr einfach und wird nun weiter verfeinert, um daran die Möglichkeiten der Modellierung aufzuzeigen. Zunächst soll das Metamodell weiter ausgearbeitet werden. Ein Haus besteht üblicherweise aus einem Dach, mehreren Räumen sowie Fenstern. Diese Verfeinerungen sollen gleich in UML dargestellt werden. Um das Beispiel übersichtlich zu halten, wird das Haus lediglich in drei weitere Bestandteile zerlegt. Abbildung 9: Metahaus Da das Modell auf dem Metamodell aufbaut, muss zuerst das Metamodell betrachtet und modelliert werden. Um eine passende M2 Sprache für die Modellierung des Metamodells zu definieren und dann später im Softwareentwicklungsprozess nutzen zu können, ist es wenig sinnvoll, die M2 Sprache komplett neu zu entwerfen. Vielmehr werden ausgehend vom UML-Metamodell passende Erweiterungen erstellt. Es gibt drei Möglichkeiten, diese Erweiterungen umzusetzen: Erweiterungen auf Basis des existierenden Metamodells der UML Erweiterungen mittels Stereotypen (mithilfe von UML 1.x) Erweiterungen mittels Profilen (mithilfe von UML2) Im Folgenden wird die Modellierung mittels Profilen genauer betrachtet und das Metamodell modelliert. 3.1 UML-Profile UML-Diagramme sind nur in Kombination mit einer Modellierungssprache MDA-Modelle. Die Modellierungssprache ist typischer Weise durch ein UML-Profil und daran angeknüpfte 11

12 3.1 UML-Profile Transformationsvorschriften gegeben. Hierdurch ist die Bedeutung der UML-Modelle formalisiert und ihre Abbildung auf eine gegebene Plattform eindeutig definiert. Das so entstandene Metamodell ist eine Instanz des ursprünglichen UML-Metamodells. UML-Profile können den Sprachumfang der UML durch leichtgewichte Konstrukte erweitern. Diese Konstrukte ermöglichen nicht nur eine Erweiterung sondern auch eine Einschränkung des Metamodells der UML. So können individuelle Anforderungen und Besonderheiten des Problems berücksichtigt werden. Darüber hinaus existieren bereits Standardprofile, auf die auch gegebenenfalls zurückgegriffen werden kann: UML Profil für Corba / Corba Component Modell (CCM) UML Profil für Enterprise Application Integration (EAI) UML Profil für Enterprise Distributed Object Computing (EDOC) UML Testing Profile UML Profile for Schedulability, Performance, and Time spezielle Typen von Systemen (eingebettete oder Hardwaresysteme) spezielle Techniken und Implementierungssprachen (C++, Java) spezielle Methoden und Vorgehensmodelle (RUP, V-Modell). Jedes UML-Profil verwendet immer ein Referenzmodell, das typischer Weise das UML- Metamodell ist. Andernfalls kann auch ein bereits bestehendes UML-Profil durch ein weiteres erweitert werden. Jedoch können auf diese Weise keine bestehenden Definitionen verändert oder entfernt werden. Allerdings ist durch Constraints eine Reduzierung der sprachlichen Möglichkeiten möglich. UML Profile bestehen prinzipiell aus drei Kategorien: Stereotypen (Spezialisierung von UML::Class) Tagged Values (Eigenschaften von Stereotypen) Constraints (Modellierungsregeln) Durch Contraints formulierte Bedingungen gelten sowohl für den Stereotypen als auch für die aus Stereotypen abgeleiteten Klassen des Modells. Zur Definition von Contraints wird die Object Contraint Language (OCL) verwendet. Contraints lassen sich sowohl auf Metamodellebene (M1) als auch auf Modellebene (M2) verwenden. Abbildung 10 stellt eine Erweiterung der UML grafisch dar. UML::Class <<instanceof>> MOF::Classifier generalizes MyMetaClass <<instanceof>> Abbildung 10: Metamodell Erweiterung in Bezug zur MOF 12

13 3.2 Verfeinerung des Metamodells 3.2 Verfeinerung des Metamodells Wie zu Beginn dieses Kapitels erwähnt, kann ein Haus in weitere Komponenten untergliedert werden. Da jedes Haus auf diese Art strukturiert werden kann, ist es sinnvoll, dass Metamodell dementsprechend auszuformulieren, sodass es dem Entwickler weitere Sprachkonstrukte auf Modellebene zur Verfügung stellt. Abbildung 11 zeigt wie sich das Haus aus Dach und Räumen zusammensetzt. Jeder Raum, so das Modell, kann auch über Fenster verfügen. 3.3 Verfeinerung des Modells Abbildung 11: Metamodell des Hauses Das Modell kann wie gewohnt mithilfe der UML dargestellt werden. An dieser Stelle kann auf die im Metamodell definierten Konstrukte zurückgegriffen werden. Dort formulierte Einschränkungen würden im Modell automatisch übernommen. Zudem kann die Konformität und Wohlgeformtheit des Modells durch automatische Modellvalidierung sichergestellt werden. Abbildung 12: Modell in Bezug zum Metamodell 13

14 4 Transformationen 4 Transformationen Ziel der MDA ist es, über Modelltransformationen also generativ den Prozess der Softwareentwicklung über alle Abstraktionsschichten abzubilden. Auf diese Art müssen lediglich alle benötigten Transformationen geschrieben werden um eine Vielzahl von Softwareprodukten herstellen zu können. Neben der Codegenerierung, auf die im Folgenden genauer eingegangen wird, sind Modelltransformationen eine der wichtigsten Technologien der MDA. 4.1 Modell zu Modell Auf Grundlage ein und desselben Metamodells können verschiedene Modelle definiert werden, die das gleiche Ziel verfolgen. In solchen Fällen ist es möglich, ein Modell in ein anderes zu transformieren. Dies geschieht mithilfe von Queries/Views/Transformations (QVT) Sprache. Erweitern wir unser Beispiel um ein weiteres Modell, das auf dem gleichen Metamodell beruht. Im neuen Modell ist das gleiche Haus wie im alten dargestellt. Jedoch unterscheidet sich die innere Struktur der Modelle voneinander: Während im neuen Modell alle Räume und das Dach direkt vom Haus referenziert werden, gibt die Referenzierungsstruktur beim alten Haus Auskunft über den Aufbau des Hauses. Nichtsdestotrotz können die Modelle mit einer definierten Transformationsvorschrift ineinander überführt werden. 14

15 4.2 Modell zum Modell eines anderen Metamodells 4.2 Modell zum Modell eines anderen Metamodells Wenn sich die Metamodelle unterscheiden, kann unter Umständen eine Transformation zwischen zwei Modellen durchgeführt werden; dies hängt insbesondere davon ab, inwieweit sich gleiche Prinzipien von einem Metamodell in ein anderes überführen lassen. Abbildung 13: Metahausmodell nach Baukastenprinzip Hier wird ein neues Metamodell genutzt, dass auf der Idee eines Baukastensystems beruht. Einzelne Blöcke lassen sich beliebig aneinander stecken und können so ein größeres Haus bilden. Jeder Block besteht hierbei aus sechs Seiten, wobei jede Seite eine Wand, eine Tür oder ein Fenster sein kann. 15

16 4.3 Modell zu Quelltext 4.3 Modell zu Quelltext Quelltextgenerierung Im Folgenden wird auf einige Quelltextgenerierungstechniken genauer eingegangen. All diese Techniken besitzen immer ein Metamodell bzw. eine abstrakte Syntax. Ferner existieren immer Transformationen, die auf diesem Metamodell aufbauen Templates Diese Generierungstechnik ist einer der einfachsten Wege zur automatischen Quelltexterzeugung. Im folgenden Beispiel soll aus einer Spezifikation eine komplette Javaklasse generiert werden. Dies wird mithilfe eines XSLT-stylesheet. <class name= Person package= com.mycompany > <attribute name= name type= String /> <attribute name= age type= int /> </class> Text 1: Spezifikation der Klasse <xsl:template match= class > package <xsl:value-of />; public class <xsl:value-of />; <xsl:apply-templates select= attribute /> } </xsl:template> <xsl:template match= attribute > private <xsl:value-of /> <xsl:value-of />; public <xsl:value-of /> get_<xsl:value-of />() { return <xsl:value-of />; } public void set_<xsl:value-of /> ( <xsl:value-of /> <xsl:value-of /> ) { } this.<xsl:value-of /> = <xsl:value-of />; </xsl:template> Text 2: XSLT-stylesheet 16

17 4.3 Modell zu Quelltext package com.mycompany; public class Person { private String name; private int age; public String get_name() { return name; } public void set_name(string name) { this.name = name; } } public int get_age() { return age; } public void set_age(int age) { this.age = age; } Solange keine größeren Systeme mit diesem recht einfachen Ansatz generiert werden müssen, steht der Quelltextgenerierung durch Templates nichts im Weg. Werden die Systeme allerdings komplexer, so werden die XSLT-stylesheets schnell unübersichtlich API-basierte Generatoren Text 3: Generierte Javaklasse Eine sehr bekannte Art der Quelltextgenerierung sind API-basierte Generatoren. Durch die zur Verfügung gestellte API können Elemente der Zielplattform erzeugt werden. Da sie auf der abstrakten Syntax der Zielsprache arbeiten, sind sie an sie gebunden. Das folgende, sehr kurze Beispiel soll einen ersten Einstieg ermöglichen. public class Vehicle : Object { } Text 4: Generierte Quelltext in C# CodeNamespace n =... CodeTypeDeclaration c = new CodeTypeDeclaration ( Vehicle ); c.isclass = true; c.basetypes.add (typeof (System.Object) ); c.typeattributes = TypeAttributes.Public; n.types.add( c ); Text 5: Generatorquelltext in C# Würden mehrere Sprachen derselben abstrakten Syntax existieren, könnten solche Generatoren für all diese Sprachen genutzt werden. Im Rahmen des.net-frameworks ist eine Auswahl der konkreten Syntax (C#, VB, C++) möglich. So kann ein abstrakt definierter API-basierter Quelltextgenerator für mehrere Zielsprachen verwendet werden Generierter Code / nicht generierter Code Da in den meisten Fällen nur Teile der Anwendung generiert werden, müssen die Lücken manuell mit Quelltext ausgefüllt werden. Jedoch ziehen manuelle Änderungen am Quelltext viele Probleme hinsichtlich Konsistenz, Build-Management, Versionierung nach sich. Können generierte Dateien, wenn sie zu 100% generiert wurden, einfach noch gelöscht werden um beim nächsten 17

18 4.3 Modell zu Quelltext build erneut erstellt zu werden, so muss mit generierten und nachträglich manipulierten Quelltexten anders verfahren werden: Manuelle Veränderungen müssen immer in dafür gekennzeichneten Bereichen stehen, damit sie beim Neugenerieren nicht überschrieben aber in das neue Generat übernommen werden können. Es ist ratsam, generierten und nicht-generierten Quelltext in verschiedenen Dateien zu halten und eine Architektur zu verwenden, die nicht nur klar hervorhebt, welche Artefakte generiert und welche manuell erstellt werden, sondern auch definiert, wie diese Quelltexte kombiniert werden Integration von generiertem und nicht generiertem Code Ausgehend von unverändertem, generiertem Quelltext soll manuell neuer Quelltext in das Generat eingefügt werden. Eine einfache Methode der Integration besteht in der Verwendung von reservierten Bereichen, die vom Generator lesbar sind. Hier kann der Entwickler eigenen Quelltext einfügen, ohne dass dieser bei nachfolgenden Generatorläufen überschrieben wird. Auto geschw indigkeit: int bescheunige(dv: int) stop() public class Auto { int geschwindigkeit = 0; public void beschleunige(int dv) { // protected area begin 0001 // insert your code here // protected area end } } public void stop() { // protected area begin 0002 // insert your code here // protected area end } Abbildung 14: Generierter Code mit Protected Areas Allerdings hat diese Methode einige Nachteile: Der Generator ist komplexer, da er die Erkennung, Erhaltung und Verwaltung der geschützten Bereiche bewältigen muss. Nicht immer ist eine Erhaltung geschützter Bereiche möglich; in der Praxis sind Quelltextverluste keine Seltenheit. Die Trennung von generiertem und manuell erstelltem Quelltext wird durchbrochen, da beide in einer Datei/Klasse stehen. Da besonders der letzte Punkt problematisch ist, sollten andere Mechanismen der Integration in Betracht gezogen werden. Eine viel genutzte Lösung ist die 3-schichtige Implementierung. 18

19 4.3 Modell zu Quelltext Nicht-generierte, abstrakte Basisklasse (Teil der Plattform ) Plattform schicht Generierte, abstrakte Mittelklasse Modellschicht Manuell im plem entiert, nicht-abstrakte Klasse Applikationslogik- Schicht Abbildung 15: Die drei Schichten der dreischichtigen Implementierung Als Teil einer Plattform wird zunächst eine abstrakte Basisklasse implementiert. Für jede Komponente generiert der Generator eine von der Basisklasse erbende Zwischenklasse. Diese realisiert alle aus dem Modell abgeleiteten Aspekte. Die letztlich durch den Entwickler erstellte, nicht abstrakte Implementierungsklasse erbt von der generierten Zwischenklasse und kann dann im System verwendet werden. Auf diese Weise können Lücken in der Zwischenklasse aufgefüllt werden. 4.4 Richtlinien Alles in einem Rutsch Der Build-Prozess der endgültigen Anwendung sollte die Neugenerierung aller transformierten / generierten Artefakte umfassen. Werden auch nur wenige manuelle nachträgliche Schritte notwendig um das System innerhalb des Build-Prozesses zu erstellen, so wird eine Umgehung des MDA/MDSD-Schemas riskiert, die dann auf die traditionelle Softwareentwicklung zurückführt. Aus diesem Grund sollten alle manuellen Anpassungen in Zusammenhang mit dem Build-Prozess vermieden werden. Dies bedeutet keineswegs, dass 100% einer Anwendung generiert werden müssten. In den meisten Fällen ist es sogar unumgänglich, einige Teile in einer 3GL zu implementieren. Lediglich der Build-Vorgang soll in einem Rutsch durchgeführt werden können Generiere gut aussehenden Quelltext Anzunehmen, dass der Entwickler den generierten Quelltext nie zu Gesicht bekommt, ist unrealistisch. Obwohl Entwickler generierten Quelltext nicht ändern müssen, können sie mit herkömmlichen Entwicklungswerkzeugen bspw. beim debugging mit generiertem Quelltext in Berührung kommen. Folgende Möglichkeiten helfen, generierten Quelltext übersichtlich und verständlich zu halten: Sinnvolle Kommentare können unter Zuhilfenahme der im Modell verwendeten Terminologie und Informationen generiert werden. 19

20 4.4 Richtlinien Um die Lesbarkeit der generierten Quelltexte zu verbessern, können Pretty Printer oder Beautifier verwendet werden. Diese Werkzeuge existieren für jede gängige Programmiersprache und können generierten Quelltext umstrukturieren und mit sinnvollen Einrückungen versehen. So genannte Location Strings helfen, den generierten Quelltexten zugrunde liegende Modellelemente zu identifizieren. Ferner sind Generierungsdaten wie Datum und Versionsnummer sinnvoll. [ :05:42] GENERATED FROM TEMPLATE SomeTemplate MODEL ELEMENT apackage::aclass::someoperation(). Text 6: Location Strings und Generierungsdaten Falls keine performancekritischen Anwendungsteile generiert werden, ist gute Lesbarkeit nicht nur bei generiertem Quelltext notwendig für die Akzeptanz bei Anwendungsentwicklern; sie ist bei manuell erzeugtem mindestens ebenso wichtig. Längst wird Quelltext nicht mehr nur für Maschinen geschrieben, sondern zum Lesen durch andere Benutzer. 20

21 5 MDSD Konzept 5 MDSD Konzept Modell Driven Architecture (MDA) ist einer der jüngeren Standards der Object Management Group (OMG); er wurde 2001 veröffentlicht. Die OMG - ein Konsortium aus ca. 800 Firmen - wurde 1989 gegründet und erstellt herstellerneutrale Spezifikationen zur Verbesserung der Portabilität und Interoperabilität von Software. Obwohl MDA und MDSD sich in vielen Aspekten ähneln, zielt MDSD im Gegensatz zu MDA auf die praktische Einsetzbarkeit für den Softwareentwicklungsprozess ab und legt die Priorität nicht wie MDA auf die langfristige Interoperabilität. Hierdurch werden aktuelle Entwicklungen modellgetriebener Softwareentwicklung für den Alltag einsetzbar; unabhängig vom Reifegrad des OMG-MDA-Standards. 5.1 Terminologie Domäne Jede Modellierung bezieht sich immer auf eine Domäne. Sie bildet den Rahmen des gesamten Softwareprodukts und kann sowohl fachlich als auch technisch motiviert sein. Eine fachliche Domäne ist beispielsweise Versicherungen mit Konzepten wie Versicherungsprodukt, Tarif, Schaden, Vertrag, etc. Weitere Beispiele sind Astronomie oder Autohändler. Wenn sich Domänen aus kleineren Subdomänen zusammensetzen, lassen sich zwei Arten unterscheiden: Technische Subdomänen beschreiben einzelne Teile bzw. Aspekte des Gesamtsystems. Typische Beispiele sind GUI-Layout oder Persistenz. Große Systeme lassen sich oft in inhaltliche Teilgebiete untergliedern. Im obigen Versicherungsbeispiel könnten für einzelne Sparten Untergliederungen definiert werden: Leben, PKW, Haftpflicht, etc Metamodell Das Metamodell ist eine Schlüsselkomponente im Konzept des MDA/MDSD. Es ist Voraussetzung für das formale Modell einerseits und Modell-zu-Modell Transformationen andererseits. Das Metamodell formalisiert die Strukturen der betrachteten Domäne und ist Grundlage für jedwede Automation. Obwohl Metamodelle gut mit der UML beschrieben werden können, sind sie nicht notwendigerweise UML basiert. Das Metamodell umfasst die abstrakte Syntax und die statische Semantik. Erstgenannte spezifiziert lediglich die Struktur der Sprache und abstrahiert von Schreibweisen oder Schlüsselwörtern. Die statische Semantik einer Sprache legt Wohlgeformtheitskriterien fest; so müssen in (den meisten) Programmiersprachen Variablen vor ihrer Benutzung deklariert werden. Im Kontext von MDSD kommt der statischen Semantik eine besondere Bedeutung zu, da sie der Detektierung von Modellierungsfehlern dient. 21

22 5.1 Terminologie Formale Modelle Formale Modelle bilden den Ausgangspunkt für automatisierte Transformationen. Selbst interpretative Ansätze erfordern ein formalisiertes Modell. Jedes formale Modell steht in direkter Verbindung zu einer Domäne und ist daher ein in der DSL formulierter Satz. Durch die Semantik der DSL erhält das Modell erst seine Bedeutung. Konzeptionell ist jedes Modell eine Instanz seines Metamodells Transformation Da jedes Quellmodell eine Instanz des zugehörigen Metamodells ist, basiert jede MDSD Transformation auf einem Quellmetamodell. Transformationsvorschriften resultieren daher ausschließlich aus den Konstrukten des Metamodells. Transformationen werden zwischen Modell-zu-Modell- und Modell-zu-Plattform- Transformationen unterschieden. Letztere werden häufig auch als Modell-zu-Code- Transformationen bezeichnet. Modell-zu-Modell-Transformationen erzeugen ihrerseits wieder Modelle. Diese können jedoch auf einem anderen Metamodell basieren als das Quellmetamodell. Solche Transformationen beschreiben prinzipiell wie Konstrukte vom Quellmetamodell in das Zielmetamodell überführt werden. Modell-zu-Plattform-Transformationen generieren mit Kenntnis einer speziellen Plattform Artefakte, die auf genau eine Plattform angepasst sind. 5.2 Ziele und Potentiale Mit MDA/MDSD soll mithilfe von formal eindeutigen Modellen eine signifikante Steigerung der Entwicklungsgeschwindigkeit erreicht werden. Hierzu wird durch Generatoren automatisch Quellcode erzeugt, der andernfalls mühsam per Hand geschrieben werden müsste. Durch die Codegenerierung werden einerseits Zeit und Kosten gespart und es wird andererseits auch die Softwarequalität gesteigert. Abbildung 16: Aufwand bei traditioneller bzw. modellgetriebener Softwareentwicklung 22

23 5.2 Ziele und Potentiale Ein weiteres Ziel ist die Reduzierung der Komplexität und damit eine wesentlich verbesserte Handhabbarkeit komplexer Modelle und Strukturen. Durch abstrakte Modellelierungssprachen soll eine klare Trennung von fachlichen und technischen Aspekten gewährleistet werden, um Verantwortlichkeiten zu trennen und die Wartbarkeit zu verbessern. Abstrakte und technologieunabhängige Beschreibungen der Strukturen und Modelle mithilfe einer eindeutigen Modellierungssprache ermöglichen einen einfacheren Umgang mit und einen schnelleren Umstieg auf neue Technologien. Wurden Modellierungssprachen, Architekturen oder Transformationen einmal definiert, so können sie im Sinne einer Softwareproduktionsstrasse wiederverwendet werden. Diese Art der Wiederverwendung kann zur Herstellung vieler verschiedener Softwaresysteme einer Domäne genutzt werden. 5.3 Genereller Ansatz Jedes Programm und jede Software unterliegt einer ihr eigenen Struktur und einem Modell. Diese Konstruktionsparadigmen sind je nach Programm offensichtlicher oder versteckter, ausgeprägter oder unpräziser, konsequenter oder uneinheitlicher im Quelltext wiederzufinden. Diese Variationen entstehen vor allem durch unterschiedliche Programmiergewohnheiten, fehlende fachliche oder domänenspezifische Kompetenz sowie wirtschaftliche Einflussfaktoren wie Zeitdruck und Resourcenmangel. Jedoch sind genau jene Konstruktionsparadigmen ausschlaggebende Einflussfaktoren auf Entwicklungsgeschwindigkeit, Qualität, Wartbarkeit, Performance, Interoperabilität und Portabilität. Abbildung 17: Grundidee modellgetriebener Softwareentwicklung 23

24 5.3 Genereller Ansatz Da Konstruktionsparadigmen sehr schwer auf Quelltextebene zu erkennen sind, da sie verteilt, verschleiert und oft stark individualisiert vorliegen, werden gewöhnlicherweise Dokumentationen erstellt. Diese leiden jedoch immer unter einem Konsistenzproblem und werden, wenn sie nicht ständig mit dem aktuellen Quelltext synchron gehalten werden, nutzlos. Hier kommt der Ansatz der modellgetriebenen Softwareentwicklung zum Tragen: Modelle sind abstrakt und formal zugleich. Abstrakte Modelle, die sich auf das Wesentliche reduzieren, haben den gleichen Stellenwert wie bisheriger Quelltext. So sind Modelle zwar immer noch Teil der Dokumentation und in der Lage, Strukturen, Architektur und Zusammenhänge grafisch und leicht verständlich darzustellen; sie sind darüber hinaus auch direkter Bestandteil der Software, da aus ihnen ein Großteil der Implementierung generiert werden kann. Die verwendeten Modelle fußen jeweils auf einer dem Problemraum angepassten, spezifischen Sprache, der Domain Spezific Language (DSL). Die Nutzung einer DSL ist allen modellgetriebenen Ansätzen gleich, da nur eine reduzierte und kompakte Modellsprache eine abstrakte Modelllösung überhaupt ermöglicht. Sei nun eine existierende Referenzimplentierung mit individueller Struktur gegeben. Durch etwaige Umstrukturierung des Quelltextes kann die Anwendung in drei wesentliche Teile gegliedert werden: Generischer Code: Quelltext, der für alle ähnlichen Programme gleich ist, Schematischer Code: Sich wiederholender Quelltext, der bspw. auf gleichen Entwurfsmustern basiert und Individueller Code: Anwendungsspezifischer Quelltext. Die modellgetriebene Softwareentwicklung hat nun das Ziel, den schematischen Anteil aus dem Modell abzuleiten. Die hierfür notwendigen Transformationen können zwar Zwischenstufen besitzen, müssen für die jeweilige Domäne jedoch nur einmal erstellt werden. Des weiteren ist auch die Zielplattform ein wesentliches Schlüsselelement, da die erstellten und genutzten Transformationen auf sie optimiert wurden bzw. nur mit ihr funktionieren. 24

25 6 Fazit 6 Fazit Wird der OMG Standard geeignet interpretiert, so ist MDA schon heute einsetzbar und die aufgeführten Potentiale teilweise umsetzbar. Erstmals wird eine echte Kontrolle der Architektur möglich, da zu jedem Zeitpunkt im Verlauf des Projekts sämtliche Details der Architektur bekannt sind. Alle modellierten Eigenschaften der Architektur fließen direkt und in voller Gänze in das Projekt ein und gewährleisten, dass Quelltext und Architektur in Einklang sind. Darüber hinaus wird durch die explizite Auseinandersetzung mit architekturbezogenen Themen das Bewusstsein um die Architektur gestärkt. Außerdem sind technische und fachliche Aspekte eindeutig identifizierbar und voneinander getrennt. Durch die Quelltextgenerierung kann je nach Projektart ein erheblicher Anteil automatisch erstellt werden und lästige Copy, Paste & Modify Arbeiten entfallen weitestgehend. Fehlerbehebung im technischen Quelltext lässt sich einfacher und effizienter durchführen. Liegt der Fehler im Infrastrukturquelltext, so muss er nur an einer Stelle im Generator behoben werden. Jedoch fehlt es zur Zeit immer noch an einigen Standards der OMG, bspw. für Modell-zu- Modell-Transformationen. Eine bessere Unterstützung durch Werkzeughersteller, die bspw. eine automatische Generierung von Tests oder Basisbausteine zur Verwendung bekannter Architekturmuster bereitstellen, kann den Entwicklungsprozess entscheidend fördern. 25

26 7 Quellen 7 Quellen Stahl, Völter: Modellgetriebene Softwareentwicklung. Techniken, Engineering, Management. Heidelberg: dpunkt.verlag, 2005 Javamagazin. Titelthema MDA-Einführung. Frankfurt: Software & Support Verlag Völter, Markus: Metamodellierung Heidenheim: völter - ingeneurbüro für softwaretechnologie Völter, Markus: Modellgetriebene Softwareentwicklung Heidenheim: völter - ingeneurbüro für softwaretechnologie Bausch, Daniel: Modellgetriebene Softwareentwicklung. Am Beispiel von openarchitectureware TU-Darmstadt Geiger, R.: Evaluierung von Produktivitätspotentialen im Softwareentwicklungsprozess für Webanwendungen FH Darmstadt Neuhaus, W., Holzer, B.: Modellgetriebene Softwareentwicklung. Alles UML, oder? Troisdorf: SIGS-DATACOM Glinz, Martin: Metamodelle Universität Zürich Software-Engineering: Einführung in die MDA [ ] Wikipedia: Modell Driven Architektur [ ] Wikipedia: Profil (UML) [ ] Computerwoche.de: Profile [ ] 26

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

SEA. Modellgetriebene Softwareentwicklung in der BA

SEA. Modellgetriebene Softwareentwicklung in der BA SEA Modellgetriebene Softwareentwicklung in der BA MDA bei der BA Ziele/Vorteile: für die Fachabteilung für die Systementwicklung für den Betrieb Wie wird MDA in der BA umgesetzt? Seite 2 MDA bei der BA

Mehr

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht

Mehr

Model Driven Architecture (MDA)

Model Driven Architecture (MDA) Model Driven Architecture (MDA) Vortrag im Fach Software Engineering II BA Mannheim / Fachrichtung Angewandte Informatik Torsten Hopp Gliederung Einleitung Motivation Grundzüge der MDA Ziele & Potenziale

Mehr

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012

Einführung in modellgetriebene Softwareentwicklung. 24. Oktober 2012 Einführung in modellgetriebene Softwareentwicklung 24. Oktober 2012 Überblick Was sind die Grundprinzipien der modellgetriebenen Softwareentwicklung? Entwicklung einer MDD-Infrastruktur Modellgetriebene

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

10 Erweiterung und Portierung

10 Erweiterung und Portierung 10.1 Überblick In vielen Fällen werden Compiler nicht vollständig neu geschrieben, sondern von einem Rechnersystem auf ein anderes portiert. Das spart viel Arbeit, ist aber immer noch eine sehr anspruchsvolle

Mehr

Model Driven Architecture

Model Driven Architecture Model Driven Architecture Wilhelm Stephan Universität Hamburg Fakultät für Mathematik, Informatik und Naturwissenschaften Seminar Softwareentwicklung in der Wissenschaft Betreuer: Julian Kunkel SommerSemester

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

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

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

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

Robot Karol für Delphi

Robot Karol für Delphi Robot Karol für Delphi Reinhard Nitzsche, OSZ Handel I Version 0.1 vom 24. Januar 2003 Zusammenfassung Nach der Einführung in die (variablenfreie) Programmierung mit Robot Karol von Freiberger und Krško

Mehr

Software-Qualität im Rahmen modellgetriebener Softwareentwicklung

Software-Qualität im Rahmen modellgetriebener Softwareentwicklung Software-Qualität im Rahmen modellgetriebener Softwareentwicklung OFFIS Technologiecluster Enterprise Application Integration niels.streekmann@offis.de 09.07.2008 Seite 1 / 13 Software-Qualität: Unterschiedliche

Mehr

Sehr geehrte Faktor-IPS Anwender,

Sehr geehrte Faktor-IPS Anwender, März 2014 Faktor-IPS 3.11 Das neue Release Faktor-IPS 3.11 steht Ihnen zum Download zur Verfügung. Wir informieren Sie über die neusten Feautres. Lesen Sie mehr Sehr geehrte Faktor-IPS Anwender, Auf faktorzehn.org

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

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt

Objektorientierter Software-Entwurf Grundlagen 1 1. Analyse Design Implementierung. Frühe Phasen durch Informationssystemanalyse abgedeckt Objektorientierter Software-Entwurf Grundlagen 1 1 Einordnung der Veranstaltung Analyse Design Implementierung Slide 1 Informationssystemanalyse Objektorientierter Software-Entwurf Frühe Phasen durch Informationssystemanalyse

Mehr

Content Management System mit INTREXX 2002.

Content Management System mit INTREXX 2002. Content Management System mit INTREXX 2002. Welche Vorteile hat ein CM-System mit INTREXX? Sie haben bereits INTREXX im Einsatz? Dann liegt es auf der Hand, dass Sie ein CM-System zur Pflege Ihrer Webseite,

Mehr

Generatives Programmieren

Generatives Programmieren Generatives Programmieren Seminar Produktlinien WS03/04 Tammo van Lessen 08.01.2004 Outline Einleitung Generatoren Generatives Programmieren Fazit Einleitung Industrielle Entwicklung 1826 Austauschbare

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

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

.. für Ihre Business-Lösung

.. für Ihre Business-Lösung .. für Ihre Business-Lösung Ist Ihre Informatik fit für die Zukunft? Flexibilität Das wirtschaftliche Umfeld ist stärker den je im Umbruch (z.b. Stichwort: Globalisierung). Daraus resultierenden Anforderungen,

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 22 Kapitel 19 Vererbung, UML Seite 1 von 22 Vererbung - Neben der Datenabstraktion und der Datenkapselung ist die Vererbung ein weiteres Merkmal der OOP. - Durch Vererbung werden die Methoden und die Eigenschaften

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

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum C A R L V O N O S S I E T Z K Y Agile Vorgehensmodelle in der Softwareentwicklung: Scrum Johannes Diemke Vortrag im Rahmen der Projektgruppe Oldenburger Robot Soccer Team im Wintersemester 2009/2010 Was

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

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

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing Fassade Objektbasiertes Strukturmuster C. Restorff & M. Rohlfing Übersicht Motivation Anwendbarkeit Struktur Teilnehmer Interaktion Konsequenz Implementierung Beispiel Bekannte Verwendung Verwandte Muster

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

UML-DSLs effizient eingesetzt. Insight 07, 13.11.2007 Klaus Weber

UML-DSLs effizient eingesetzt. Insight 07, 13.11.2007 Klaus Weber UML-DSLs effizient eingesetzt Insight 07, 13.11.2007 Klaus Weber Einladung Domänenspezifische Sprachen (DSLs) sind notwendige Voraussetzung für den Erfolg einer MDA-Strategie. MID favorisiert statt der

Mehr

Ein hierarchischer, modellgetriebener Ansatz zur Codegenerierung. R. Gitzel, M. Schwind

Ein hierarchischer, modellgetriebener Ansatz zur Codegenerierung. R. Gitzel, M. Schwind Ein hierarchischer, modellgetriebener Ansatz zur Codegenerierung R. Gitzel, M. Schwind Agenda! Überblick/Motivation! Hintergrund! Technische Umsetzung! Zentrale Ergebnisse 2 Überblick Ziele! Know-how-Aufbau/Stand

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

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

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

Inhalt. Motivation Techniken des MDE. Fallbeispiele

Inhalt. Motivation Techniken des MDE. Fallbeispiele ISE-Seminar 2012 Inhalt Motivation Techniken des MDE Computer Aided Software Engineering (CASE) Domain-Specific-Languages (DSL) Model Driven Architecture (MDA) Fallbeispiele Motivation Automatische Codegenerierung

Mehr

Technische Dokumentation: wenn Englisch zur Herausforderung wird

Technische Dokumentation: wenn Englisch zur Herausforderung wird Praxis Technische Dokumentation: wenn Englisch zur Herausforderung wird Anforderungsspezifikation, Requirements-Engineering, Requirements-Management, Terminologieverwaltung www.sophist.de Über Englischkenntnisse

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

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden. In einer Website haben Seiten oft das gleiche Layout. Speziell beim Einsatz von Tabellen, in denen die Navigation auf der linken oder rechten Seite, oben oder unten eingesetzt wird. Diese Anteile der Website

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

Was sind Jahres- und Zielvereinbarungsgespräche?

Was sind Jahres- und Zielvereinbarungsgespräche? 6 Was sind Jahres- und Zielvereinbarungsgespräche? Mit dem Jahresgespräch und der Zielvereinbarung stehen Ihnen zwei sehr wirkungsvolle Instrumente zur Verfügung, um Ihre Mitarbeiter zu führen und zu motivieren

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

Translation Memory Leistungsstarke Technologie, die Zeit und Geld spart

Translation Memory Leistungsstarke Technologie, die Zeit und Geld spart Translation Memory Leistungsstarke Technologie, die Zeit und Geld spart Version 1.1 2015 Gemino Fachartikel Translation Memory Leistungsstarke Technologie, die Zeit und Geld spart Version 1.1 2015 Seite

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

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

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

Klaus Schild, XML Clearinghouse 2003. Namensräume

Klaus Schild, XML Clearinghouse 2003. Namensräume Namensräume Lernziele Namenskonflikte Warum lösen im World Wide Web einfache Präfixe dieses Problem nicht? Wie lösen globale Namensräume das Problem? Wie werden sie in XML-Dokumenten benutzt? Was sind

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

SDD System Design Document

SDD System Design Document SDD Software Konstruktion WS01/02 Gruppe 4 1. Einleitung Das vorliegende Dokument richtet sich vor allem an die Entwickler, aber auch an den Kunden, der das enstehende System verwenden wird. Es soll einen

Mehr

(1) Mit dem Administrator Modul werden die Datenbank, Gruppen, Benutzer, Projekte und sonstige Aufgaben verwaltet.

(1) Mit dem Administrator Modul werden die Datenbank, Gruppen, Benutzer, Projekte und sonstige Aufgaben verwaltet. 1 TimeTrack! TimeTrack! Ist ein Softwareprodukt von The Project Group, welches der Erfassung von Ist- Aufwänden von Projekten dient. Voraussetzung hierfür ist allerdings, dass das Projekt vorher mit Microsoft

Mehr

Integration mit. Wie AristaFlow Sie in Ihrem Unternehmen unterstützen kann, zeigen wir Ihnen am nachfolgenden Beispiel einer Support-Anfrage.

Integration mit. Wie AristaFlow Sie in Ihrem Unternehmen unterstützen kann, zeigen wir Ihnen am nachfolgenden Beispiel einer Support-Anfrage. Integration mit Die Integration der AristaFlow Business Process Management Suite (BPM) mit dem Enterprise Information Management System FILERO (EIMS) bildet die optimale Basis für flexible Optimierung

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

Anleitung BFV-Widget-Generator

Anleitung BFV-Widget-Generator Anleitung BFV-Widget-Generator Seite 1 von 6 Seit dem 1. Oktober 2014 hat der Bayerische Fußball-Verband e.v. neue Widgets und einen neuen Baukasten zur Erstellung dieser Widgets veröffentlicht. Im Folgenden

Mehr

Einführung und Motivation

Einführung und Motivation Einführung und Motivation iks-thementag: Requirements Engineering 16.11.2010 Autor Carsten Schädel Motto Definiere oder Du wirst definiert. Seite 3 / 51 These Im Privatleben definiert jeder (seine) Anforderungen.

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

Stand 10.2011 vr bank Südthüringen eg 1 von 10. Smart TAN plus Umstellungsanleitung VR-NetWorld Software

Stand 10.2011 vr bank Südthüringen eg 1 von 10. Smart TAN plus Umstellungsanleitung VR-NetWorld Software Stand 10.2011 vr bank Südthüringen eg 1 von 10 Smart TAN plus Umstellungsanleitung VR-NetWorld Software INHALTSVERZEICHNIS 1. Einführung 3 2. Allgemeine Informationen 4 3. Schritt 1 die Anmeldung des Generators

Mehr

Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen. Wir bringen Qualität. Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen

Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen. Wir bringen Qualität. Wir beraten Sie. Wir unterstützen Sie. Wir schaffen Lösungen Was bedeutet es, ein Redaktionssystem einzuführen? Vorgehensmodell für die Einführung eines Redaktionssystems Die Bedeutung Fast alle Arbeitsabläufe in der Abteilung werden sich verändern Die inhaltliche

Mehr

Kurzanleitung zu. von Daniel Jettka 18.11.2008

Kurzanleitung zu. von Daniel Jettka 18.11.2008 Kurzanleitung zu Tigris.org Open Source Software Engineering Tools von Daniel Jettka 18.11.2008 Inhaltsverzeichnis 1.Einführung...1 2.Das Projektarchivs...3 2.1.Anlegen des Projektarchivs...3 2.2.Organisation

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

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger

Software Engineering. Sommersemester 2012, Dr. Andreas Metzger Software Engineering (Übungsblatt 2) Sommersemester 2012, Dr. Andreas Metzger Übungsblatt-Themen: Prinzip, Technik, Methode und Werkzeug; Arten von Wartung; Modularität (Kohäsion/ Kopplung); Inkrementelle

Mehr

Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009

Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009 Generative Prozessmodelle Patrick Otto MDD Konferenz 22.03.2009 Gliederung 1. Generative Programmierung 2. Möglichkeiten und Einsatzgebiet 3. Prozess / Tools 4. Zusammenfassung 19.03.2009 GENERATIVE PROGRAMMIERUNG

Mehr

Die Dateiablage Der Weg zur Dateiablage

Die Dateiablage Der Weg zur Dateiablage Die Dateiablage In Ihrem Privatbereich haben Sie die Möglichkeit, Dateien verschiedener Formate abzulegen, zu sortieren, zu archivieren und in andere Dateiablagen der Plattform zu kopieren. In den Gruppen

Mehr

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen 9 3 Web Services 3.1 Überblick Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen mit Hilfe von XML über das Internet ermöglicht (siehe Abb.

Mehr

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08

Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements. von Stephanie Wilke am 14.08.08 Prozessbewertung und -verbesserung nach ITIL im Kontext des betrieblichen Informationsmanagements von Stephanie Wilke am 14.08.08 Überblick Einleitung Was ist ITIL? Gegenüberstellung der Prozesse Neuer

Mehr

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Erfolg ist programmierbar.

Erfolg ist programmierbar. 4578954569774981234656895856512457895456977498 3465689585651245789545697749812346568958561245 9545697749812346568958565124578954569774981234 6895856512457895456977498123465689585612457895 6977498123465689585651245789545697749812346568

Mehr

ARCO Software - Anleitung zur Umstellung der MWSt

ARCO Software - Anleitung zur Umstellung der MWSt ARCO Software - Anleitung zur Umstellung der MWSt Wieder einmal beschert uns die Bundesverwaltung auf Ende Jahr mit zusätzlicher Arbeit, statt mit den immer wieder versprochenen Erleichterungen für KMU.

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Naked-FHIR. Code-Generierung auf Basis von HL7 FHIR Andreas Schuler, MSc. Textmasterformate durch Klicken bearbeiten

Naked-FHIR. Code-Generierung auf Basis von HL7 FHIR Andreas Schuler, MSc. Textmasterformate durch Klicken bearbeiten Naked-FHIR Code-Generierung auf Basis von HL7 FHIR Andreas Schuler, MSc. HL7 Jahrestagung 2015 18. März 2015 Einführung HL7 FHIR stellt eine Reihe an Basis-Ressourcen zur Verfügung Über Zweite Conformance

Mehr

Java Enterprise Architekturen Willkommen in der Realität

Java Enterprise Architekturen Willkommen in der Realität Java Enterprise Architekturen Willkommen in der Realität Ralf Degner (Ralf.Degner@tk-online.de), Dr. Frank Griffel (Dr.Frank.Griffel@tk-online.de) Techniker Krankenkasse Häufig werden Mehrschichtarchitekturen

Mehr

SWE5 Übungen zu Software-Engineering

SWE5 Übungen zu Software-Engineering 1 Übungen zu Software-Engineering 1) Klassen und Objekte 2) Telefonanlage 3) Objekt- und Klassendiagramme 4) Assoziationen 5) Telefonanlage (Erweiterung) 6) Fahrzeuge 7) Familien 2 Aufgabe 1: Klassen und

Mehr

INNOVATOR im Entwicklungsprozess

INNOVATOR im Entwicklungsprozess Erfahrungsbericht INNOVATOR im Entwicklungsprozess Basis für Host- und Java-Anwendungen Dr. Carl-Werner Oehlrich, Principal Consultant MID GmbH Das Modellierungswerkzeug INNOVATOR Geschäftsprozess-Modellierung

Mehr

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Vollständigkeit halber aufgeführt. Gehen wir einmal davon aus, dass die von uns angenommenen 70% im Beispiel exakt berechnet sind. Was würde

Mehr

SEPA Lastschriften. Ergänzung zur Dokumentation vom 27.01.2014. Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299

SEPA Lastschriften. Ergänzung zur Dokumentation vom 27.01.2014. Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299 SEPA Lastschriften Ergänzung zur Dokumentation vom 27.01.2014 Workshop Software GmbH Siemensstr. 21 47533 Kleve 02821 / 731 20 02821 / 731 299 www.workshop-software.de Verfasser: SK info@workshop-software.de

Mehr

Software Entwicklung II (SS12)

Software Entwicklung II (SS12) Prof. Dr. P. Liggesmeyer Dipl.-Inf. K. Bizik M.Sc. K. Nehring TU Kaiserslautern Fachbereich Informatik AG Software Engineering: Dependability Software Entwicklung II (SS12) Übung 5 Ausgabe: 04.06.2012

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

Outsourcing und Offshoring. Comelio und Offshoring/Outsourcing

Outsourcing und Offshoring. Comelio und Offshoring/Outsourcing Outsourcing und Offshoring Comelio und Offshoring/Outsourcing INHALT Outsourcing und Offshoring... 3 Comelio und Offshoring/Outsourcing... 4 Beauftragungsmodelle... 4 Projektleitung vor Ort und Software-Entwicklung

Mehr

Integrierte IT Portfolioplanung

Integrierte IT Portfolioplanung Integrierte Portfolioplanung -en und _e als zwei Seiten einer Medaille Guido Bacharach 1.04.010 Ausgangssituation: Komplexe Umgebungen sportfolio Ausgangssituation: Komplexe Umgebungen portfolio Definition:

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

Energetische Klassen von Gebäuden

Energetische Klassen von Gebäuden Energetische Klassen von Gebäuden Grundsätzlich gibt es Neubauten und Bestandsgebäude. Diese Definition ist immer aktuell. Aber auch ein heutiger Neubau ist in drei (oder vielleicht erst zehn?) Jahren

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

Mehr

Um zusammenfassende Berichte zu erstellen, gehen Sie folgendermaßen vor:

Um zusammenfassende Berichte zu erstellen, gehen Sie folgendermaßen vor: Ergebnisreport: mehrere Lehrveranstaltungen zusammenfassen 1 1. Ordner anlegen In der Rolle des Berichterstellers (siehe EvaSys-Editor links oben) können zusammenfassende Ergebnisberichte über mehrere

Mehr

Software Systems Engineering

Software Systems Engineering Software : SoSe 08 Prof. Dr. Klaus Schmid Software Produktlinien Ein neues Programm soll erstellt werden. Das habe ich doch schon mal programmiert, oder? Alter Code passt aber nicht ganz! Wird passend

Mehr

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel.

Motivation. Formale Grundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen. Informales Beispiel. Informales Beispiel. Kontextfreie Kontextfreie Motivation Formale rundlagen der Informatik 1 Kapitel 5 Kontextfreie Sprachen Bisher hatten wir Automaten, die Wörter akzeptieren Frank Heitmann heitmann@informatik.uni-hamburg.de

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme 1 Zwei Gleichungen mit zwei Unbekannten Es kommt häufig vor, dass man nicht mit einer Variablen alleine auskommt, um ein Problem zu lösen. Das folgende Beispiel soll dies verdeutlichen

Mehr

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche etutor Benutzerhandbuch Benutzerhandbuch XQuery Georg Nitsche Version 1.0 Stand März 2006 Versionsverlauf: Version Autor Datum Änderungen 1.0 gn 06.03.2006 Fertigstellung der ersten Version Inhaltsverzeichnis:

Mehr

Checkliste. Erfolgreich Delegieren

Checkliste. Erfolgreich Delegieren Checkliste Erfolgreich Delegieren Checkliste Erfolgreich Delegieren Erfolgreiches Delegieren ist für Führungskräfte von großer Bedeutung, zählt doch das Delegieren von n und Projekten zu ihren zentralen

Mehr

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets

NetStream Helpdesk-Online. Verwalten und erstellen Sie Ihre eigenen Tickets Verwalten und erstellen Sie Ihre eigenen Tickets NetStream GmbH 2014 Was ist NetStream Helpdesk-Online? NetStream Helpdesk-Online ist ein professionelles Support-Tool, mit dem Sie alle Ihre Support-Anfragen

Mehr

Softwaretechnik (Allgemeine Informatik) Überblick

Softwaretechnik (Allgemeine Informatik) Überblick Softwaretechnik (Allgemeine Informatik) Überblick 1 Einführung und Überblick 2 Abstraktion 3 Objektorientiertes Vorgehensmodell 4 Methoden der Anforderungs- und Problembereichsanalyse 5 UML-Diagramme 6

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

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

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

Einführung in Generatives Programmieren. Bastian Molkenthin

Einführung in Generatives Programmieren. Bastian Molkenthin Einführung in Generatives Programmieren Bastian Molkenthin Motivation Industrielle Entwicklung *!!*,(% % - #$% #!" + '( & )!* Softwareentwicklung Rückblick auf Objektorientierung Objektorientierte Softwareentwicklung

Mehr

Leitfaden zu Jameica Hibiscus

Leitfaden zu Jameica Hibiscus Single Euro Payment Area (SEPA)-Umstellung Leitfaden zu Jameica Hibiscus Wichtiger Hinweis Bitte beachten Sie, dass die btacs GmbH alle Leitfäden nach bestem Wissen und Gewissen erstellt hat, und diese

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

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr