13.08.2013 Aufrufe

thesis - LMU

thesis - LMU

thesis - LMU

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

INSTITUT FÜR INFORMATIK<br />

LUDWIG – MAXIMILIANS – UNIVERSITÄT<br />

MÜNCHEN<br />

Diplomarbeit<br />

Erweiterung eines Open Source-Werkzeugs<br />

für die UML-basierte Modellierung<br />

von Webanwendungen<br />

Dariya Sharonova<br />

Aufgabensteller: Prof. Dr. Martin Wirsing<br />

Betreuer: Dr. Nora Koch (<strong>LMU</strong> München)<br />

Abgabedatum: 27.10.2011<br />

i


Eidesstattliche Erklärung<br />

Ich erkläre, dass ich die vorliegende Arbeit selbständig verfasst, nicht anderweitig für<br />

Prüfungszwecke vorgelegt, alle benutzten Quellen und Hilfsmittel angegeben, sowie wörtliche und<br />

sinngemäße Zitate gekennzeichnet habe.<br />

München, den 27.10.2011 ___________________________<br />

ii


Моим родителям посвящается...<br />

(russ. Meinen Eltern gewidmet...)<br />

Ich möchte mich ganz herzlich bei meiner Betreuerin Frau Dr. Nora Koch<br />

bedanken. Danke Ihnen, dass Sie immer für mich da waren und Geduld<br />

hatten.<br />

Auch geht ein Dank an meine Arbeitskollegen bei der Sulzer GmbH, die mir<br />

immer mit einem guten Rat zur Seite standen.<br />

Und bei Dmitry möchte ich mich bedanken, ohne seine Unterstützung hätte ich<br />

das kaum geschafft.<br />

Ein besonderer Dank geht an meine Eltern, die trotz der großen Entfernung<br />

mich immer großartig unterstützten und mitfieberten.<br />

iii


Abstract<br />

Im Rahmen dieser Diplomarbeit werden Implementierungsmöglichkeiten für<br />

eine UML 1 -basierte Modellierung von Webanwendungen untersucht. Die<br />

betrachteten Modellierungstechniken stammen aus einer Methodik namens<br />

UML-based Web Engineering, kurz UWE. Dies ist ein vor ca. 15 Jahren<br />

entstandener UML-basierter Ansatz zur Modellierung und Entwicklung von<br />

Webanwendungen, der u.a. ein speziell für Webanwendungen angepasstes<br />

UML-Profil vorsieht.<br />

Die Arbeit umfasst eine umfangreiche Analyse von UML-CASE 2 -Tools für<br />

Eclipse 3 im Hinblick auf ihre Erweiterbarkeit für UWE. Zu den analysierten<br />

Merkmalen gehören die Unterstützung bestimmter UML-Diagrammtypen,<br />

geschachtelter Diagramme, Profile und Stereotype 4 . Darüber hinaus werden<br />

grafische Modellierungsmöglichkeiten, enthaltene Entwicklertools,<br />

Möglichkeiten der Codegenerierung, Qualität der Dokumentation und Lizenz<br />

betrachtet.<br />

Das Hauptziel der Analyse ist die Auswahl eines UML-CASE-Tools als<br />

Zielplattform für UWE-Erweiterungen. Anschließend werden Funktionen für die<br />

UWE-Notation und UWE-basierte Modellierung von Webanwendungen als<br />

Erweiterung des ausgewählten UML-CASE-Tools implementiert.<br />

1 UML – Unified Modeling Language<br />

2 CASE – Computer-aided software engineering<br />

3 Quelloffene Entwicklungsplattform ([web-eclipse])<br />

4 Lt. Duden ([web-duden-stereotyp]) ist das Wort Stereotyp grammatikalisch sächlich und hat folgende Wortformen:<br />

Nominativ Singular das Stereotyp, Nominativ Plural die Stereotype<br />

iv


Inhaltsverzeichnis<br />

1 Einleitung.............................................................................................1<br />

1.1 Motivation und Zielsetzung...............................................................1<br />

1.2 Gliederung der Arbeit.......................................................................2<br />

2 Grundlagen und verwendete Techniken....................................................4<br />

2.1 UML...............................................................................................4<br />

2.1.1 Diagramme...............................................................................4<br />

2.1.1.1 Klassendiagramm................................................................5<br />

2.1.1.2 Anwendungsfalldiagramm.....................................................5<br />

2.1.1.3 Aktivitätsdiagramm.............................................................6<br />

2.1.1.4 Zustandsdiagramm..............................................................6<br />

2.2 UML-based Web Engineering (UWE)...................................................6<br />

2.2.1 ArgoUWE..................................................................................7<br />

2.2.2 MagicUWE................................................................................8<br />

2.3 Eclipse...........................................................................................9<br />

2.4 TOPCASED....................................................................................10<br />

2.4.1 Grundlagen.............................................................................10<br />

2.4.2 TOPCASED UML Editor..............................................................12<br />

2.4.3 Beispiel: Adressbuch................................................................13<br />

3 Vergleich von Werkzeugen für die UML-Modellierung................................20<br />

3.1 Kriterien.......................................................................................20<br />

3.2 Vergleich......................................................................................21<br />

3.3 Entscheidung................................................................................30<br />

3.3.1 Ausgewählte Tools...................................................................30<br />

3.3.2 Detaillierte Analyse..................................................................33<br />

3.3.3 Entscheidung über das Tool für die UWE-Erweiterung...................34<br />

4 Anforderungsanalyse............................................................................36<br />

4.1 Zielplattform und Integration..........................................................36<br />

4.2 Benutzeroberfläche........................................................................36<br />

4.2.1 Hauptmenü.............................................................................37<br />

4.2.1.1 Menüeintrag New UWE Diagram..........................................38<br />

4.2.1.2 Menüeintrag Transformations..............................................40<br />

4.2.1.3 Menüeintrag Create Default Models......................................41<br />

4.2.1.4 Menüeintrag Apply Profile...................................................42<br />

4.2.1.5 Menüeintrag About UWEclipse.............................................43<br />

v


4.2.2 Kontextmenü im Projektbaum...................................................44<br />

4.2.2.1 Neue Diagramme anlegen...................................................44<br />

4.2.2.2 Transformation von Inhaltsmodellen....................................45<br />

4.2.2.3 Transformationen von Navigationsmodellen..........................46<br />

4.2.3 Kontextmenü im Diagrammeditor..............................................48<br />

4.2.4 Palette im Diagrammeditor.......................................................51<br />

5 Implementierung.................................................................................53<br />

5.1 GUI-Abläufe..................................................................................53<br />

5.1.1 Anlegen eines TOPCASED-Modells..............................................53<br />

5.1.2 Laden des UWE-Profils..............................................................54<br />

5.1.3 Anwenden des UWE-Profils auf das TOPCASED-Modell..................55<br />

5.1.4 Anwenden eines Stereotyps auf das TOPCASED-Modell................56<br />

5.1.5 Anwenden eines Stereotyps auf eine Klasse................................57<br />

5.2 Designentscheidungen....................................................................59<br />

5.2.1 Ermitteln von Stereotypeigenschaften........................................59<br />

5.2.2 Nested Classes........................................................................59<br />

5.2.3 Kontextmenü im Diagrammeditor..............................................59<br />

5.2.4 Palette im Diagrammeditor.......................................................60<br />

5.2.5 Drag & Drop von Stereotypen...................................................61<br />

5.3 Implementierungsdetails................................................................61<br />

5.3.1 Projektstruktur........................................................................61<br />

5.3.2 Benutzeroberfläche..................................................................62<br />

5.3.2.1 Ansichtsfenster..................................................................63<br />

5.3.2.2 Hauptmenü.......................................................................64<br />

5.3.2.3 Kontextmenü im Projektbaum.............................................65<br />

5.3.2.4 Kontextmenü im Diagrammeditor........................................66<br />

5.3.2.5 Palette im Diagrammeditor.................................................67<br />

5.3.3 Anlegen von Modell-Containern.................................................67<br />

5.3.4 Laden und Anwenden des Profils................................................68<br />

5.3.5 Anlegen von Diagrammen.........................................................70<br />

5.3.6 Transformationen.....................................................................71<br />

5.3.7 Anmerkungen..........................................................................71<br />

5.3.7.1 Aufruf der psu-Ansicht vor der Arbeit mit UWEclipse..............71<br />

5.3.7.2 Ermitteln des Typs des selektierten Objekts..........................72<br />

5.3.7.3 Übergang von einem Diagrammelement zu seiner internen<br />

Repräsentation.............................................................................72<br />

6 Modellierung eines Beispiels mit UWEclipse.............................................74<br />

6.1 Vorbereitung.................................................................................74<br />

6.2 Transformationen...........................................................................74<br />

7 Zusammenfassung und Ausblick............................................................78<br />

7.1 Durchgeführte Arbeit......................................................................78<br />

vi


7.2 Vergleich zu MagicUWE...................................................................79<br />

7.3 Ausblick........................................................................................79<br />

Literaturverzeichnis.................................................................................80<br />

Webreferenzen....................................................................................80<br />

Literaturreferenzen..............................................................................82<br />

Sourcecodereferenzen..........................................................................83<br />

vii


1 Einleitung<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

1.1 Motivation und Zielsetzung<br />

Moderne Softwareentwicklung ist kaum vorstellbar ohne Techniken, die zur<br />

Systematisierung und Automatisierung in verschiedenen Phasen des<br />

Entwicklungsprozesses beitragen. Eine wichtige Rolle spielt dabei die<br />

Modellierung des zu entwickelnden Softwaresystems, die heutzutage oft in<br />

engem Zusammenhang mit dem Begriff Unified Modeling Language (UML)<br />

steht.<br />

Eine der auf UML basierenden Techniken ist UWE (UML-based Web<br />

Engineering) – eine Methodik für die Modellierung und Entwicklung von<br />

Webanwendungen, die von modellgetriebenen Ansätzen Gebrauch macht und<br />

dem Entwickler ein auf Webanwendungen zugeschnittenes UML-Profil zur<br />

Verfügung stellt. Dieses Profil sowie die ganze UWE-Methodik lassen sich dank<br />

voller UML-Konformität von UWE grundsätzlich mit jedem UML-CASE-Tool<br />

(CASE – Computer-aided software engineering) einsetzen, welches UML<br />

unterstützt.<br />

Das Hauptziel von UWE ist die Systematisierung und Unterstützung des<br />

Entwicklungsprozesses, der eine automatische oder halbautomatische<br />

Generierung der Webanwendungen ermöglicht.<br />

Für die Unterstützung des UWE-basierten Modellierungsvorganges wurden für<br />

die UML-Werkzeuge ArgoUML und MagicDraw (beides sind CASE-Tools für die<br />

Modellierung von Softwaresystemen mit Hilfe von UML) spezielle Plugins<br />

entwickelt: ArgoUWE und MagicUWE, die den Entwickler durch die<br />

Teilautomatisierung des UWE-basierten Modellentwurfs unterstützen.<br />

Vorteil von ArgoUML ist seine Open Source-Lizenz. Allerdings unterstützt das<br />

Tool UML2 5 nicht. Somit wurde auch die Entwicklung von ArgoUWE eingestellt.<br />

MagicDraw bietet dagegen zwar die UML2-Unterstützung, ist jedoch ein<br />

kommerzielles Tool.<br />

Dadurch zeichnet sich die Notwendigkeit ab, die Funktionalität der erwähnten<br />

UWE-Plugins auf Basis eines Open Source UML-Tools mit UML2-Unterstützung<br />

zu implementieren. Von besonderem Interesse ist dabei Eclipse – etablierte<br />

Open Source IDE (Integrated development environment, Integrierte<br />

5 UML2 bzw. UML 2.x ist die 2. Version der UML-Spezifikation, die zahlreiche Änderungen im Vergleich zu der Version<br />

1 bringt und insgesamt wesentlich ausgereifter ist<br />

1


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Entwicklungsumgebung) mit Unterstützung der UML-Modellierung.<br />

Somit gehen wir zu den Aufgaben über, denen sich diese Diplomarbeit widmet:<br />

– Analyse vorhandener Eclipse-basierter UML-Werkzeuge im Hinblick auf<br />

ihre Erweiterbarkeit für UWE<br />

– Auswahl eines UML-CASE-Tools – anhand der Analyse – als Zielplattform<br />

für UWE-Erweiterungen<br />

– Implementierung von Funktionen zur UWE-basierten Modellierung von<br />

Webanwendungen im ausgewählten UML-CASE-Tool<br />

Die Analyse wird nach mehreren Kriterien durchgeführt: Unterstützung UWErelevanter<br />

UML-Diagrammtypen, Arbeit mit UML-Profilen und -Stereotypen,<br />

grafische Modellierungsmöglichkeiten, integrierte Entwicklertools,<br />

Möglichkeiten der Codegenerierung, Qualität der Dokumentation, Lizenz.<br />

Nach der Analyse wird entschieden, welches UML-Werkzeug für die<br />

Implementierung der UWE-Methodik und die Migration der Funktionalität von<br />

ArgoUWE und MagicUWE am besten geeignet ist.<br />

Als Nächstes wird im Rahmen dieser Diplomarbeit das ausgewählte Tool um die<br />

Funktionen zur UWE-basierten Modellierung von Webanwendungen erweitert.<br />

Im Laufe der Entwicklung werden Teile der MagicUWE-Funktionalität als Plugin<br />

zum ausgewälten UML-Werkzeug implementiert.<br />

1.2 Gliederung der Arbeit<br />

Die vorliegende Arbeit besteht aus 6 Kapiteln:<br />

– Im Kapitel 1 wird die Arbeit kurz vorgestellt sowie die Motive zu ihrer<br />

Entstehung erläutert.<br />

– Kapitel 2 enthält eine Einführung in Techniken und Begriffe, die mit<br />

Modellierung und UWE zu tun haben und im Rahmen dieser Arbeit<br />

benutzt wurden.<br />

– Im Kapitel 3 wird die umfangreiche Analyse der verfügbaren Eclipsebasierten<br />

UML-Wekrzeuge durchgeführt. Dabei wird anhand der<br />

festgelegten Kriterien das für die UWE-Modellierung am besten geeignete<br />

Werkzeug festgestellt.<br />

– Kapitel 4 widmet sich der Anforderungsanalyse für das zu entwickelnde<br />

Plugin zum UML-Werkzeug, das im Kapitel 3 ausgewählt wurde.<br />

– Die Entwicklung des Plugins wird im Kapitel 5 beleuchtet. Dabei werden<br />

nicht nur implementierte Funktionen, technische Details der<br />

Implementierung und Designentscheidungen geschildert, sondern auch<br />

2


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

technische Probleme, die während der Entwicklung entstanden sind.<br />

– Im Kapitel 6 wird die Modellierung mit dem entwickelten Plugin anhand<br />

eines Beispiels veranschaulicht.<br />

– Kapitel 7 beinhaltet die Zusammenfassung für die ganze Arbeit sowie die<br />

Beschreibung der Möglichkeiten zur Weiterentwicklung im Bereich UWEbasierte<br />

Modellierung von Webanwendungen in Bezug auf das<br />

entwickelte Plugin.<br />

3


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

2 Grundlagen und verwendete Techniken<br />

Dieses Kapitel enthält einen Überblick über Techniken und Begriffe aus dem<br />

Bereich Modellierung – sowohl allgemeine als auch diejenigen, die im<br />

Zusammenhang mit UWE im Rahmen dieser Arbeit in Frage kommen.<br />

2.1 UML<br />

UML (Unified Modeling Language, [web-uml]) ist eine universale grafische<br />

Modellierungssprache zum Spezifizieren, Konstruieren und Dokumentieren von<br />

Softwaresystemen. UML wird in vielen Anwendungsbereichen eingesetzt und ist<br />

momentan die führende Modellierungssprache in der IT-Industrie ([lit-umlinfra]).<br />

Mit der Standardisierung und Weiterentwicklung von UML befasst sich<br />

die OMG (Object Management Group, [web-omg]).<br />

UML verfügt über einen Erweiterungsmechanismus, der im Rahmen dieser<br />

Arbeit von Bedeutung ist: sog. UML-Profile. Ein UML-Profil dient zur Anpassung<br />

von UML an eine bestimmte Entwicklungsplattform oder einen bestimmten<br />

Anwendungsbereich – somit entsteht jeweils ein neuer UML-Dialekt ([lit-umlinfra]).<br />

2.1.1 Diagramme<br />

Die aktuelle Version 2.3 der UML-Spezifikation legt 14 Diagrammtypen fest, die<br />

in 2 Gruppen (mit jeweils 7 Diagrammtypen) aufgeteilt sind:<br />

– Strukturdiagramme (structure diagrams)<br />

– Verhaltensdiagramme (behavior diagrams)<br />

Die gesamte Diagrammübersicht ist auf Abb. 2.1 dargestellt.<br />

4


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 2.1. UML-Diagrammübersicht [lit-uml-super]:704<br />

UWE-Funktionalität setzt Unterstützung von 4 folgenden UML-Diagrammtypen<br />

voraus ([lit-uwe-meta]):<br />

– Klassendiagramme<br />

– Anwendungsfalldiagramme<br />

– Aktivitätsdiagramme<br />

– Zustandsdiagramme<br />

Diese Diagrammtypen werden in nachfolgenden Abschnitten kurz vorgestellt.<br />

2.1.1.1 Klassendiagramm<br />

Das Klassendiagramm (class diagram) dient zur Darstellung der statischen<br />

Struktur des Systems. Es zeigt Klassen, deren Eigenschaften (Attribute) und<br />

Operationen sowie Klassenbeziehungen und Schnittstellen. Klassendiagramme<br />

sind eines der wichtigsten Konzepte der objektorientierten Modellierung und<br />

werden während aller Phasen des Entwicklungsprozesses verwendet.<br />

2.1.1.2 Anwendungsfalldiagramm<br />

Das Anwendungsfalldiagramm (use case diagram) stellt Anwendungsfälle,<br />

Akteure (Benutzer des Systems) und ihre Beziehungen (Interaktionen) dar.<br />

5


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

2.1.1.3 Aktivitätsdiagramm<br />

Das Aktivitätsdiagramm (activity diagram) beschreibt Aktionen und Abläufe<br />

eines Systems. Es wird dargestellt, in welcher Reihenfolge die Aktionen<br />

augeführt werden und wie Kontroll- und Datenflüsse organisiert sind. Es ist<br />

möglich, Bedingungen und Nebenläufigkeit der Aktionen darzustellen.<br />

2.1.1.4 Zustandsdiagramm<br />

Das Zustandsdiagramm (state machine diagram) ist eine durch UML-Notation<br />

dargestellte Variante der endlichen Automaten. Zustandsdiagramme dienen<br />

zum Darstellen von Zuständen eines Objektes sowie von Transitionen<br />

(Übergängen) zwischen diesen Zuständen. Bei Transitionen können Ereignisse<br />

angegeben werden, die diese Transitionen auslösen. Es besteht auch die<br />

Möglichkeit, Bedingungen festzulegen, die für das jeweilige Ereignis erfüllt sein<br />

müssen, damit es gefeurt werden kann.<br />

2.2 UML-based Web Engineering (UWE)<br />

UML-based Web Engineering, kurz UWE, ([web-uwe], [lit-chapter-7-uwe]), ist<br />

eine Methodik aus dem Bereich Softwaretechnik, die sich mit der Entwicklung<br />

von Webanwendungen befasst. Das Hauptziel ist dabei die Systematisierung<br />

und Unterstützung des Entwicklungsprozesses, der eine automatische oder<br />

halbautomatische Generierung der Websysteme ermöglicht. UWE setzt<br />

modellgetriebene Ansätze bei der Entwicklung ein, baut auf UML auf und wird<br />

im Bereich UML-Modellierung und Entwicklung von Webanwendungen<br />

eingesetzt.<br />

UWE zeichnet sich durch volle UML-Konformität aus: alle UWE-Modellelemente<br />

sind mit Hilfe eines speziellen UML-Profils definiert. Durch den Einsatz dieses<br />

UML-Profils kann das Metamodell um Stereotype erweitert werden, die speziell<br />

im Bereich Webentwicklung benötigt werden (z.B. für die Darstellung von<br />

Elementen der Navigationsstruktur einer Webseite).<br />

Ein wichtige Eigenschaft des Entwicklungsprozesses mit UWE ist die getrennte<br />

Modellierung unterschiedlicher Sichten des Websystems (separation of<br />

concerns). Dabei werden während jeder Entwicklungsphase (Analyse, Design,<br />

Implementierung) Modelle erstellt, die jeweils eine Sicht der Webanwendung<br />

darstellen:<br />

– Inhalt (Festlegung der Konzepte aus dem Anwendungsbereich und deren<br />

Zusammenhänge)<br />

– Navigation (Navigationspfade und -elemente)<br />

6


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

– Präsentation (Darstellung und Interaktion mit dem Benutzer)<br />

Somit ergibt sich ein 2D-artiger Entwicklungsprozess - mit Entwicklungsphasen<br />

und Systemsichten als 2 Dimensionen. Eine solche Vorgehensweise trägt zu<br />

besserer Wartung, Reengineering und Portierung des zu entwickelnden<br />

Websystems bei.<br />

Des Weiteren kann der Vorgang um eine 3. Dimension erweitert werden,<br />

nämlich die Aspekt-Achse, wenn man neben standardmäßig modellierten<br />

Strukturaspekten auch noch Verhaltensaspekte in die Modellierung mit<br />

einbezieht. Letztere werden in UML mit Hilfe von Interaktions- und<br />

Zustandsdiagrammen dargestellt. Auch eine 4. Dimension kommt in Betracht,<br />

und zwar die Anpassbarkeit, bei der es sich um die automatische<br />

Personalisierung der Webanwendung für den jeweiligen Benutzer bzw. um die<br />

Berücksichtigung des Nutzungskontextes handelt.<br />

Weitere Eigenschaft der UWE-Methodik ist das sogenannte Model-Driven<br />

Development (MDD, Modellgetriebene Entwicklung). Dieser Ansatz basiert auf<br />

der konsequenten Nutzung von Modellen in allen Entwicklungsphasen sowie<br />

deren Umwandlungen (Transformationen) und eignet sich besonders gut für die<br />

Entwicklung der Websysteme.<br />

Da UWE UML-konform ist, lassen sich UWE-Modelle grunsätzlich mit Hilfe von<br />

allen CASE-Tools entwickeln, die UML unterstützen. Zur tiefgreifenden<br />

Unterstützung des UWE-basierten Modellentwurfs wurden darüber hinaus<br />

spezielle Tools entwickelt, wie z.B. ArgoUWE und MagicUWE.<br />

2.2.1 ArgoUWE<br />

ArgoUWE ([web-uwe-argo], [lit-chapter-7-uwe]) ist ein Open Source-Plugin für<br />

das CASE-Tool ArgoUML ([web-argouml]), das auf dem UWE-Metamodell<br />

basiert (welches seinerseits vom UML-Metamodell abgeleitet wird). ArgoUWE<br />

stellt einen Editor für die UWE-basierte Modellierung von Webanwendungen zur<br />

Verfügung und bietet Funktionen für Modelltransformationen und<br />

Konsistenzprüfung des Modells. Die Verwendung des UWE-Profils bei der<br />

Modellentwicklung ermöglicht den Modellaustausch zwischen ArgoUWE und<br />

anderen UML CASE-Werkzeugen (ArgoUWE stellt dafür die Funktion des XMI 6 -<br />

Exports zur Verfügung).<br />

In ArgoUWE können Diagramme erstellt werden, mit deren Hilfe die von UWE<br />

eingeführten Modelltypen abgebildet werden können: Navigations-,<br />

Präsentations-, Prozess- und Anpassungsmodell. Es stehen folgende<br />

6 XMI – XML Metadata Interchange – ist ein Austauschformat für Metadaten, verwendet z.B. für den UML-Modell-<br />

Austausch zwsichen UML-Werkzeugen, zwischen einem Modellierungstool und einem Codegenerator etc.<br />

7


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Transformationsmöglichkeiten für die Umwandlung von Modellen nach UWEbzw.<br />

MDD-Methodik zur Verfügung:<br />

– Inhaltsmodell → Navigationsmodell<br />

– Navigationsmodell → Präsentationsmodell<br />

ArgoUWE besitzt einen Mechanismus für die Konsistenzprüfung des Modells in<br />

Bezug auf OCL-Einschränkungen (OCL, Object Constraint Language, [lit-ocl],<br />

[web-ocl-dd]), die im UWE-Metamodell definiert wurden. Diese Funktion baut<br />

auf dem sog. Design Critics-Feature von ArgoUML.<br />

Dabei läuft im Hintergrund ein Thread, der alle Einschränkungsverletzungen im<br />

Laufe der Modellentwicklung registriert, ohne den Entwicklungsprozess zu<br />

unterberechen und den Entwickler dabei zu stören. Der Entwickler hat jederzeit<br />

die Möglichkeit, sich über gefundene Verletzungen und Inkonsistenzen mittels<br />

entsprechender Liste im To-Do-Bereich der Benutzeroberfläche zu erkundigen.<br />

Lt. [web-uwe-argo], ist die Entwicklung von ArgoUWE mittlerweile eingestellt.<br />

Die Ursache war fehlende UML2-Unterstützung in ArgoUML.<br />

2.2.2 MagicUWE<br />

MagicUWE ([web-uwe-magic]) ist ein Tool für die UWE-basierte Modellierung<br />

von Webanwendungen, das als Plugin für das UML-Entwicklungswerkzeug<br />

MagicDraw ([web-magicdraw]) implementiert wurde.<br />

MagicUWE basiert auf Standards wie UML und MDA (Model-Driven Architecture,<br />

Modellgetriebene Architektur), realisiert die in 2.2 beschriebene getrennte<br />

Modellierung unterschiedlicher Sichten der zu entwickelnden Webanwendung<br />

(separation of concerns), unterstützt modellgetriebene Vorgehensweise bei<br />

der Entwicklung und bietet Möglichkeit zur Konsistenzüberprüfung des Modells<br />

([web-uwe-magic-brief]).<br />

Zu der Funktionalität von MagicUWE gehört die Unterstützung von UWE-<br />

Profilen ([web-uwe-magic-profile]), -Stereotypen und -Package-Struktur sowie<br />

die Möglichkeit der Modelltransformationen ([web-uwe-magic-brief]).<br />

MagicUWE bietet einige Konfigurations- und Anpassungsmöglichkeiten und<br />

lässt sich leicht um weitere UWE-Modellierungselemente erweitern ([web-uwemagic-brief]).<br />

Auf Abb. 2.2 ist die Menüstruktur von MagicUWE sowie ein im<br />

Editor von MagicDraw geöffnetes UWE-Diagramm zu sehen.<br />

8


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 2.2. MagicUWE 1.3.2 und MagicDraw 16.8<br />

Ein vollständiges Verzeichnis der in MagicUWE realisierten Erweiterungen und<br />

Automatisierungen von MagicDraw-Funktionalität ist unter [web-uwe-magicref]<br />

zu finden. Einige dieser Funktionen wurden im UML-Werkzeug<br />

implementiert, das im Rahmen dieser Arbeit entstand: automatisches Laden<br />

des UWE-Profils, Anlegen von Standard-UWE-Modellen, Anlegen von UWE-<br />

Diagrammen etc. Eine detaillierte Liste der implementierten Funktionalität wird<br />

im Kapitel 5 aufgeführt.<br />

2.3 Eclipse<br />

Eclipse spielt eine wichtige Rolle in dieser Arbeit, da diese Plattform als Open<br />

Source lizenziert ist, zahlreiche Möglichkeiten zur UML-Modellierung anbietet<br />

und über eine große Community verfügt. Im Kapitel 3 werden Eclipse-basierte<br />

UML-Modellierungslösungen untersucht, um das Tool für die angestrebte UWE-<br />

Erweiterung zu ermitteln, das den gestellten Anforderungen am besten<br />

entspricht.<br />

Eclipse ([web-eclipse], [web-eclipse-wiki-faq-what]) ist eine auf Java-Technik<br />

basierende plattformunabhängige Softwareentwicklungsumgebung, die auf<br />

einem höchst erweiterbaren Plugin-System aufbaut. Es ist eine Plattform mit<br />

einem relativ kleinen Kern, der das Laden, Integration und Verwaltung von<br />

Plugins übernimmt und sich allerdings darauf beschränkt. Alles weitere - die<br />

ganze Funktionalität also, die dem Eclipse-Benutzer zur Verfügung steht - wird<br />

in Form von Plugins bereitgestellt.<br />

9


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Kernfunktionen von Eclipse basieren auf Equinox ([web-eclipse-equinox]) -<br />

einer Implementierung der OSGi 7 R4-Basisspezifikation ([web-osgi-spec-4],<br />

[web-aneeshkumarkb]), die eine Architektur für komponentenbasierte<br />

Anwendungen festlegt. Es werden hierbei u.a. folgende Aspekte definiert:<br />

– Umgebung (Container) für Komponenten (die hier als Bundles bezeichnet<br />

werden)<br />

– vom Container bereitgestellte Funktionen für die Integration, Verwaltung<br />

und Ausführung von Bundles<br />

– Standards für OSGi-kompatible Bundle-Entwicklung<br />

Somit stellt Equinox die Möglichkeit zur Verfügung, eine aus mehreren Bundles<br />

(Eclipse-Plugins in dem Fall) bestehende Anwendung zusammenzubauen, und<br />

stellt alle dafür benötigten Verwaltungsmittel bereit.<br />

2.4 TOPCASED<br />

TOPCASED ist einer der zentrale Begriffe in dieser Arbeit. Es ist eine Sammlung<br />

von Werkzeugen für den gesamten Softwarentwicklungsprozess. Ein<br />

Bestandteil von TOPCASED ist der TOPCASED UML Editor – das UML-<br />

Modellierungstool, welches als Objekt der Anpassung für UWE im Rahmen<br />

dieser Arbeit ausgewählt wurde. Wie diese Auswahl erfolgte, wird ausführlich<br />

im Kapitel 3 beschrieben.<br />

In 5.1 werden einige grundlegende Abläufe aus der Arbeit mit dem TOPCASED<br />

UML Editor aufgeführt. Diese Abläufe veranschaulichen einerseits einige<br />

Möglichkeiten des TOPCASED UML Editors. Andererseits dienen sie als Vorgabe<br />

für die zu implementierende (automatische) UWE-bezogene Funktionalität des<br />

Plugins, das im Rahmen dieser Diplomarbeit entwickelt wurde.<br />

2.4.1 Grundlagen<br />

TOPCASED ([web-topcased], [web-topcased-heise], [web-topcasedpresentation-30-min],<br />

[web-topcased-presentation-2-h]) ist ein aus den<br />

Bedürfnissen der Luft- und Raumfahrtbranche (Airbus) hervorgegangenes<br />

Projekt, in dessen Rahmen eine Reihe von Werkzeugen von hoher Qualität für<br />

die Entwicklung sicherheitskritischer und dauerhaft einsetzbarer Systeme<br />

entsteht. Der Name TOPCASED steht dementsprechend treffend für Toolkit in<br />

OPen source for Critical Applications & SystEms Development (Open-Source-<br />

Werkzeugsammlung für die Entwicklung kritischer Anwendungen und<br />

Systeme). TOPCASED-Werkzeuge sollen alle Phasen des Entwicklungsprozesses<br />

7 OSGi – Open Services Gateway initiative<br />

10


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

abdecken – von der Spezifikation bis zur Implementiertung. Sie finden<br />

Verwendung bei der Entwicklung von Software- und Hardware-Systemen in<br />

Luft- und Raumfahrttechnik, Automotive und anderen Branchen mit ähnlichen<br />

Anforderungen.<br />

Technisch gesehen ist TOPCASED eine erweiterbare Eclipse-basierte RCP (Rich<br />

Client Platform) [web-eclipse-rcp].<br />

Dadurch, dass TOPCASED auf Eclipse und seiner Plugin-Architektur aufbaut,<br />

stehen alle Vorteile Eclipse-basierter Systeme zur Verfügung ([web-topcasedpresentation-2-h]):<br />

– Plattformunabhängigkeit (da Eclipse selbst eine auf Java-Technik<br />

basierende IDE ist)<br />

– modularer Aufbau (auf einer Seite – der auf ein Minumum reduzierte<br />

Kern, der nur für das Laden, Integration und Verwaltung von Plugins<br />

verantwortlich ist, auf der anderen – Plugins, die die ganze Funktionalität<br />

bereitstellen)<br />

– ausgereifte Mechanismen zur Softwareverteilung, automatische Updates,<br />

Unterstützung mehrerer parallel installierter Versionen<br />

– ergonomischer Aspekt (etabliertes GUI auf Basis von SWT und JFace)<br />

– weitgehende Unterstützung für Teamarbeit (CVS, SVN)<br />

Des Weiteren bedient sich TOPCASED der Funktionen von GEF und EMF ([webtopcased-presentation-2-h]):<br />

– GEF (Graphical Editor Framework, [web-eclipse-wiki-gef-faq], [webeclipse-gef])<br />

stellt Funktionalität bereit, mit deren Hilfe eine Eclipsebasierte<br />

Anwendung mit einem vollwertigen grafischen Editor versehen<br />

werden kann.<br />

– EMF (Eclipse Modeling Framework, [web-eclipse-emf]) stellt<br />

Mechanismen für Modellierung und Codegenerierung zur Verfügung, inkl.<br />

Laden, Bearbeiten, Vergleichen, Zusammenlegen und Abfragen von<br />

Modellen, Modelltransformationen, Import von Modellen aus anderen<br />

Programmen, Transaktionen für Modellbearbeitung, Integritätsprüfungen<br />

für Modelle, Mappings von Modellen zu relationalen Datenbanken etc.<br />

Die TOPCASED-Schicht ([web-topcased-presentation-2-h]), die auf o.g.<br />

Mechanismen aufbaut, besteht aus dem Ecore-Editor (Modelleditor für das<br />

grundlegende EMF-Metamodell, mittlerweile ein Teil des Eclipse-Projekts<br />

geworden), einem SDK zum Erstellen von neuen Modelleditoren, einer Reihe<br />

von Editoren und Tools für Modellüberprüfung, Modellsimulation, Code- und<br />

Dokumentationsgenerierung etc. Auf Abb. 2.3 ist der Modellierungs-Stack von<br />

Eclipse, EMF und TOPCASED dargestellt.<br />

11


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 2.3. Modellierungs-Stack von Eclipse und TOPCASED [web-topcasedpresentation-2-h]<br />

2.4.2 TOPCASED UML Editor<br />

Ein Unterprojekt von TOPCASED, der TOPCASED UML Editor [web-topcaseddownload],<br />

ist ein grafisches UML-Modellierungswerkzeug mit Unterstützung<br />

semantischer Zusammenhänge zwischen Diagrammelementen.<br />

Grundlegende Abläufe aus der Arbeit mit dem TOPCASED UML Editor – im<br />

Zusammenhang mit der UWE-Funktionalität, die im Rahmen dieser Arbeit zu<br />

entwickeln ist – werden in 5.1 beschrieben.<br />

Begriffe TOPCASED und TOPCASED UML Editor werden in dieser Arbeit<br />

weiterhin als Synonyme verwendet.<br />

Auf Abb. 2.4 und 2.5 ist der TOPCASED UML Editor in typischer Konfiguration<br />

zu sehen.<br />

12


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 2.4. GUI des TOPCASED UML Editors [web-topcased-quick-start]<br />

Abbildung 2.5. Anwendungsfalldiagramm im TOPCASED UML Editor [webtopcased-quick-start]<br />

2.4.3 Beispiel: Adressbuch<br />

Dieser Abschnitt enthält mit TOPCASED erstellte Diagramme, die bei der UWEbasierten<br />

Entwicklung eines Beispielprojektes verwendet werden, nämlich<br />

eines Adressbuches. Das Beispielsprojekt stammt aus [web-uwe-ex-abwcu],<br />

13


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

dort sind auch Diagramme enthalten, die im Rahmen dieser Arbeit mit Hilfe<br />

von TOPCASED nachgebildet und weiter unten aufgeführt werden, um die<br />

grundlegenden Möglichkeiten von TOPCASED zu veranschaulichen.<br />

Das Beispiel soll zeigen, wie mit Hilfe von UWE ein Websystem modelliert<br />

werden kann, das die Arbeit mit gleichartigen Objekten (Anlegen, Bearbeiten,<br />

Löschen, Veröffentlichen) auf Basis der Benutzerinteraktion ermöglicht.<br />

Das betrachtete Adressbuch enthält Kontakte, die jeweils einen Namen, 2<br />

Telefonnummern, 2 Postanschriften, eine E-Mail-Adresse und ein Bild<br />

umfassen. Ausgegeben werden Informationen zu Kontakten, die vom Benutzer<br />

mittels Eingabe von Suchkriterien ausgesucht wurden. [web-uwe-ex-abwcu]<br />

In diesem Beispiel wird eines der Prinzipien der UWE-Methodik befölgt, nämlich<br />

die getrennte Modellierung unterschiedlicher Sichten des zu entwickelnden<br />

Websystems (separation of concerns). Für Inhalts-, Navigations- und<br />

Präsentationsaspekte werden dabei jeweils eigene Modelle erstellt.<br />

Auf Abb. 2.6 ist das Inhaltsmodell des Adressbuches in Form eines UML-<br />

Anwendungsfalldiagramms dargestellt.<br />

Abbildung 2.6. Inhaltsmodell des Adressbuches<br />

Abb. 2.7 zeigt eine mögliche Implementierungsvariante des Adressbuches: das<br />

Inhaltsmodell in Form eines UML-Klassendiagramms mit Klassen für das<br />

Addressbuch selbst (AddressBook), für den Kontakt (Contact), die<br />

14


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Postanschrift (Address), die Telefonnummer (Phone) und das Bild (Picture).<br />

Abbildung 2.7. Inhaltsmodell einer möglichen Implementierung des<br />

Adressbuches<br />

Abb. 2.8 beschreibt die Navigationsstruktur der Anwendung, die aus Knoten<br />

und Verbindungen zwischen den Knoten besteht. Das dargestellte<br />

Navigationsmodell enthält Knoten und Verbindungen von folgenden Typen, die<br />

von UWE zur Verfügung gestellt werden:<br />

– Knoten:<br />

• <br />

• <br />

• <br />

• <br />

• <br />

– Verbindungen:<br />

• <br />

• <br />

Zu den auf dem Modell dargestellten Navigationsklassen<br />

() gehören Knoten für die Klassen AddressBook und<br />

Contact. Dagegen sind die Klassen Address, Phone und Picture aus Abb. 2.7<br />

in diesem Modell nicht vorhanden, weil sie bei der Navigation keine Rolle<br />

spielen.<br />

15


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Der -Knoten Search stellt die Kontaktsuche dar: durch die Eingabe<br />

von Suchkriterien kann der Benutzer bestimmte Kontakte aussuchen, die dann<br />

als Liste ausgegeben werden, die durch den -Knoten ContactList<br />

repräsentiert wird.<br />

Inhaltsänderungen (Anlegen, Löschen und Bearbeiten von Kontakten) werden<br />

mit den -Knoten ContactCreation, ContactDeletion und<br />

ContactUpdate dargestellt, die über -Verbindungen in das<br />

Navigationsmodell eingebunden sind.<br />

Das Hauptmenü der Webanwendung und das Menü zum Löschen und<br />

Bearbeiten von Kontakten sind auf dem Modell in Form von -Knoten<br />

MainMenu und ContactMenu dargestellt.<br />

Abblidung 2.8. Navigationsstruktur des Adressbuches<br />

Auf Abb. 2.9 ist das Prozessmodel des Adressbuches dargestellt, das Abläufe in<br />

der Webanwendung beschreibt.<br />

16


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 2.9. Prozessstruktur des Adressbuches<br />

Abb. 2.10 zeigt die Vorgehensweise beim Löschen eines Kontaktes aus dem<br />

Adressbuch.<br />

17


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 2.10. Prozessmodell zum Löschen eines Kontaktes aus dem<br />

Adressbuch<br />

Auf Abb. 2.11 ist ein Teil des Präsentationsmodells des Adressbuches in Form<br />

eines UML-Klassendiagramms dargestellt.<br />

18


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 2.11. Präsentationsmodell des Adressbuches (Teil)<br />

19


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

3 Vergleich von Werkzeugen für die UML-<br />

Modellierung<br />

In diesem Kapitel werden die zum Zeitpunkt dieser Arbeit verfügbaren UML-<br />

Plugins und -Tools für Eclipse bzw. auf Basis von Eclipse betrachtet. Es werden<br />

grundlegende Kriterien für die benötigte Funktionalität, Verfügbarkeit und<br />

Nutzungsmöglichkeiten der Tools formuliert. Im Hinblick auf die gestellten<br />

Anforderungen wird ein Vergleich sowie die Auswahl der Werkzeuge<br />

vorgenommen. Ausgewählte Tools werden detaillierter analysiert. Dabei wird<br />

das für UWE zu erweiterndes Werkzeug ermittelt.<br />

Insgesamt waren zum Zeitpunkt dieser Arbeit mehr als 70 UML-bezogene<br />

Werkzeuge für Eclipse verfügbar. Die Liste der betrachteten Tools wurde auf<br />

Basis der Software-Verzeichnisse von [web-epc-1] und [web-epc-2]<br />

zusammengestellt. Das sind 2 umfangreichste Webportals für Eclipse-Plugins<br />

und Eclipse-basierte Lösungen.<br />

3.1 Kriterien<br />

Angesichts des großen Umfanges des Themenbereichs UML muss zunächst eine<br />

generelle primäre Trennung nach Relevanz der UML-Werkzeuge für diese Arbeit<br />

vorgenommen werden. Diese Trennung erfolgt in 2 aufeinander aufbauenden<br />

Stufen:<br />

– Kriterium I-a. Das Werkzeug muss generell für die Erstellung von UML-<br />

Diagrammen geeignet sein.<br />

– Kriterium I-b. Diagramme müssen mit Hilfe eines visuellen Editors<br />

erstellt werden können.<br />

An die nach der primären 2-stufigen Trennung ermittelten UML-Werkzeuge<br />

werden folgende grundsätzliche Anforderungen gestellt:<br />

– Kriterium II-a. Open Source-Lizenz<br />

– Kriterium II-b. Unterstützung von folgenden 4 Diagrammtypen, die von<br />

UWE benötigt werden (2.1.1):<br />

• Class<br />

• Use Case<br />

• Activity<br />

20


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

• State Machine<br />

Die Open Source-Lizenzierung (Kriterium II-a) wurde aus folgenden Gründen<br />

als Anforderung festgelegt:<br />

– freie Nutzung der Software für beliebige Zwecke (oder mit nur wenigen<br />

lizenzbedingten Einschränkungen)<br />

– uneingeschränkte Anzahl von Benutzern, d.h. es entstehen keine Kosten<br />

in Bezug auf Benutzerzahl (häufig auch keine Anschaffungskosten)<br />

– offener Quellcode, was bei der Entwicklung von Erweiterungen/Plugins<br />

häufig sehr hilfreich ist<br />

– an der Entwicklung ist oft eine vielseitige Community beteiligt, was<br />

positive Auswirkungen auf die Softwarequalität hat und dem<br />

Erfahrungsaustausch beiträgt<br />

– geringe Gefahr des Vendor Lock-in 8<br />

3.2 Vergleich<br />

In Tabelle 3.1 sind alle betrachteten UML-Werkzeuge aufgeführt – inkl.<br />

unterstützte Diagrammtypen sowie ein Vermerk zur Verfügbarkeit des<br />

jeweiligen Tools unter einer Open Source-Lizenz.<br />

Als Erstes wird das Kriterium I-a aus 3.1 angewendet (Erstellung von UML-<br />

Diagrammen generell). Es gibt eine Menge der UML-Werkzeuge, die sich mit<br />

ganz anderen Bereichen des UML befassen (z.B. OCL) und somit in diesem<br />

Schritt wegfallen.<br />

Als Nächstes wird die Verfügbarkeit des visuellen Diagrammeditors überprüft<br />

(Kriterium I-b).<br />

Ziel bzw. Schwerpunkt vieler UML-Werkzeuge, die mit der Erstellung von UML-<br />

Diagrammen zu tun haben, ist die Umwandlung des Programmcodes (dabei<br />

kommen diverse Programmiersprachen vor, meistens Java, aber auch C++,<br />

C#, JavaScript, PHP etc.) in UML-Diagramme. Solche Werkzeuge fokussieren<br />

sich auf die Zusammenhänge zwischen dem Programmcode und UML. Auf die<br />

visuelle Erstellung der (losen) UML-Diagramme wird dagegen eher rudimentär<br />

oder gar nicht eingegangen. Beispiele solcher Werkzeuge sind: Cpp2Uml,<br />

MaintainJ, JS/UML, LightUML, M2Code for Java, M2Flex, M2Spring etc. Diese<br />

und ähnliche durch die Anwendung vom Kriterium I-a ausgewählten Tools<br />

werden hiermit dementsprechend durch das Kriterium I-b aussortiert.<br />

8 Vendor Lock-in ist die Abhängigkeit vom Hersteller, die den Herstellerwechsel wegen großen materiellen Aufwands<br />

wesentliich erschwert<br />

21


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Danach müssen die UML-Werkzeuge in Bezug auf Kriterien II-a und II-b<br />

(Verfügbarkeit unter einer Open Source-Lizenz + Unterstützung von 4<br />

benötigten Diagrammtypen) betrachtet werden.<br />

22


Tabelle 3.1. Analyse der UML-Werkzeuge<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

+ – Unterstützt bzw. vorhanden<br />

– – Nicht unterstützt bzw. nicht vorhanden<br />

P – In Planung<br />

kA – keine Angaben<br />

UML-Werkzeug<br />

Class<br />

Use Case<br />

Unterstützte<br />

Diagrammtypen<br />

Activity<br />

State Machine<br />

Sequence<br />

Component<br />

Deployment<br />

Composite<br />

Structures<br />

Visueller Editor<br />

Code Generator<br />

Diagram from Code<br />

(reverse-engineered<br />

diagrams)<br />

Actifsource - Model-<br />

Erstellt den Code aus Diagrammen<br />

Driven Code<br />

Generator<br />

- - - - - - - - + + - -<br />

Agile4R<br />

- - - - - - - - kA + - -<br />

Generiert Anwendungen aus .emx UML2<br />

Modellen<br />

AgileJ<br />

Generiert Diagramme aus dem Java-Code<br />

StructureViews code<br />

visualizer<br />

+ - - - - - - - kA - + -<br />

Altova Umodel + + + + + + + + + + + -<br />

AmaterasUML + + + - + - - - + - - +<br />

Apollo for Eclipse + - - - - - - - + + + -<br />

Architexa + - - - + - - - + - + -<br />

ArgoUML + + + + + - + - + + + + Nicht ausgereift<br />

Blueprint Software + + + + + + - + + - - -<br />

23<br />

Open Source<br />

Bemerkungen


UML-Werkzeug<br />

Class<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Use Case<br />

Unterstützte<br />

Diagrammtypen<br />

Activity<br />

State Machine<br />

Sequence<br />

Component<br />

Deployment<br />

Composite<br />

Structures<br />

Visueller Editor<br />

Code Generator<br />

Diagram from Code<br />

(reverse-engineered<br />

diagrams)<br />

Modeler –<br />

Community Edition<br />

Blueprint Software<br />

Round-trip engineering<br />

Modeler –<br />

Professional Edition<br />

+ + + + + + - + + + + -<br />

Classtemplater - - - - - - - - - + - + Class based code generator for Eclipse<br />

CodeLogic + - - + - - - - + - + - Generiert Diagramme aus dem Java-Code<br />

Coffea + - - - - - - - + + kA - Bindeglied zw. Unterschiedlichen UML-Plugins<br />

Cpp2Uml + - - - - - - - + - + + Generiert Diagramm aus dem C++-Code<br />

CRUD Booster + - - - - - - - + + + -<br />

DresdenOCL + - - - - - - - + + - kA<br />

DSM/IA<br />

- - - - - - - - - + - kA<br />

E-Platero + - - - - - - - + - - +<br />

EMF Triple<br />

- - - - - - - - - - - kA<br />

Open Source<br />

Bemerkungen<br />

Generiert DSM (Dependency Structure Matrix)<br />

aus UML<br />

Speichern und Laden von EMF-Modellen in/aus<br />

RDF-Datenquellen (EMF – Eclipse Modeling<br />

Framework, RDF – Resource Description<br />

Framework)<br />

eUML2 + - - - + - - - + + + -<br />

Green UML + - - - - - - - + + + +<br />

Hiber Objects + - - - + - - - + + - +<br />

IBM Rational Rose<br />

XDE Modeler<br />

+ + - + + + + - + - - -<br />

IBM Rational + + - + - - - - + + kA - Zum Bestandteil von Rational Software<br />

24


UML-Werkzeug<br />

Class<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Use Case<br />

Unterstützte<br />

Diagrammtypen<br />

Activity<br />

State Machine<br />

Sequence<br />

Component<br />

Deployment<br />

Composite<br />

Structures<br />

Visueller Editor<br />

Code Generator<br />

Diagram from Code<br />

(reverse-engineered<br />

diagrams)<br />

Software Modeler Architect geworden<br />

IBM UML2 Utilities<br />

for Model Driven<br />

Development<br />

k<br />

A<br />

k<br />

A<br />

k<br />

A<br />

k<br />

A<br />

k<br />

A<br />

k<br />

A<br />

k<br />

A<br />

kA kA kA kA kA<br />

Entwicklung eingestellt<br />

IdafeUML + + P - P - - - + + + kA<br />

Janus - Java'n'UML<br />

Simultanously<br />

+ - - - - - - - + + + +<br />

Java To UML2 + - - - - - - - - - + + Konvertiert den Java-Code ins UML-Modell<br />

JS/UML<br />

+ - - - - - - - - - + +<br />

Konvertiert den JavaScript-Code ins UML-<br />

Modell<br />

Jupe + - - - - - - - + + + +<br />

LightUML + - - - - - - - + - + + Generiert Diagramme aus dem Java-Code<br />

M2Code for Java -<br />

Konvertiert UML2-Modelle in Java Enterprise<br />

Agile Model Driven<br />

JEE Generator<br />

+ + + - + - - - - + - - Applications<br />

M2Flex - Agile Model<br />

Konvertiert UML2-Modelle in RIA auf Basis von<br />

Driven Flex App + + + - + - - - - + - - Flex/Spring/Hibernate (RIA – Rich Internet<br />

Generator<br />

Application)<br />

M2Spring - Agile<br />

Konvertiert UML2-Modelle in Spring 2.5<br />

Spring 2.5<br />

Application<br />

Generator<br />

+ + + - + - - - - + - -<br />

Enterprise Applications<br />

MaintainJ + - - - + - - - + - + - Generiert UML aus dem Code<br />

MDWorkbench + + + + + + + + + + - -<br />

25<br />

Open Source<br />

Bemerkungen


UML-Werkzeug<br />

Class<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Use Case<br />

Unterstützte<br />

Diagrammtypen<br />

Activity<br />

State Machine<br />

Sequence<br />

Component<br />

Deployment<br />

Composite<br />

Structures<br />

Visueller Editor<br />

Code Generator<br />

Diagram from Code<br />

(reverse-engineered<br />

diagrams)<br />

Mentor Graphics<br />

EDGE UML Suite<br />

+ + + + + - - - + + - -<br />

Mia-Studio + + + + + + + + + + - +<br />

MOSKitt – UML + + + + + - - - + + + +<br />

Obeo Designer - + - - + - - - + + - -<br />

ObjectAid UML<br />

Designer<br />

+ - - - + - - - + - + -/+<br />

Objecteering/UML + + + + + + + - + + - -<br />

ObjectiF Eclipse<br />

Edition<br />

+ + + + - - - - + + + -<br />

Papyrus<br />

PlantUML<br />

+ + P + - + + + + + - +<br />

+ + + + + + - - + - + +<br />

Poseidon UML<br />

professional edition<br />

QiQu - Code<br />

+ + + + + + + - + + - -<br />

Generator<br />

Framework<br />

- - - - - - - - - + - +<br />

Slime UML + + - - - - - - + + + -<br />

Taylor MDA<br />

+ + + - - - - - + + - +<br />

TextUML Toolkit + - - - - - - - + + + kA<br />

26<br />

Open Source<br />

Bemerkungen<br />

Konvertiert UML-Modelle in den C/C++-Code<br />

Diagramme werden nicht in einem visuellen<br />

Editor gezeichnet, sondern durch speziellen<br />

Code definiert und vom Plugin gezeichnet bzw.<br />

in eine Grafik gerendert<br />

Transformiert XMI in den Code (Java, C#)<br />

Spezialisiert auf der Entwicklung von<br />

Enterprise Applications


UML-Werkzeug<br />

Class<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Use Case<br />

Unterstützte<br />

Diagrammtypen<br />

Activity<br />

State Machine<br />

Sequence<br />

Component<br />

Deployment<br />

Composite<br />

Structures<br />

Visueller Editor<br />

Code Generator<br />

Diagram from Code<br />

(reverse-engineered<br />

diagrams)<br />

+ + + + + + + + + + + - ↔<br />

Together Community<br />

Edition for Eclipse<br />

+ + + - + - - - + + + -<br />

TOPCASED UML<br />

Editor<br />

+ + + + + + + + + + + +<br />

UML Tool for Eclipse<br />

(SDE-EC Community<br />

Edition, Visual<br />

Round-trip engineering UML2 Java<br />

Paradigm for UML)<br />

UMLet - Fast UML<br />

Editor<br />

+ + + + - - - - + - - +<br />

UniMod + - + + - - - - + + - kA<br />

Violet UML Editor for<br />

Eclipse<br />

+ + + + - - - - + - - +<br />

Visual UML Editor<br />

Eclipse Plugin<br />

+ - + - - - - - + - - +<br />

27<br />

Open Source<br />

Bemerkungen


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Zu erwähnen sind einige Werkzeuge, die zwar alle 4 benötigten<br />

Diagrammtypen unterstützen (Kriterium II-b ist somit erfüllt) und dabei<br />

softwaretechnisch als ausgereift und funktionsreich einzuschätzen sind, jedoch<br />

aus Lizenzgründen im Rahmen der gestellten Anforderungen nicht<br />

berücksichtigt werden können (Kriterium II-a ist nicht erfüllt).<br />

Das sind solche Tools wie SDE-EC Community Edition, Objecteering/UML for<br />

Java etc. Weiteres Beispiel: das Paket Poseidon von Gentleware AG bietet zwar<br />

die Möglichkeit, es unter einer Open Source-Lizenz (mit speziellen<br />

Bedingungen) zu benutzen, diese gilt aber nur für die Community Edition des<br />

Produktes, die im Gegensatz zur Professional Edition keine Eclipse-Integration<br />

hat und auch kostenpflichtig ist.<br />

Andererseits gibt es eine Reihe von UML-Tools, die zwar als Open Source<br />

lizenziert sind (Kriterium II-a ist erfüllt) und Erstellung von Diagrammen<br />

mehrerer (unter anderem für diese Arbeit nicht in Frage kommender) Typen<br />

ermöglichen (z.B. Sequence, Communication etc.), von den 4 benötigten aber<br />

nicht alle unterstützen (bzw. zum Zeitpunkt dieser Arbeit noch nicht<br />

unterstützten wie z.B. Slime UML, wo Activity und State Machine-Diagramme<br />

erst in Planung waren). Kriterium II-b ist somit nicht erfüllt.<br />

Eine ergänzende Anforderung muss gestellt werden, um den Begriff der<br />

visuellen Diagrammerstellung zu präzisieren. Die gesuchten Tools müssen<br />

semantische Vorgehensweise beim Erstellen von Diagrammen unterstützen,<br />

d.h. die Verbindungen zwischen einzelnen Bestandteilen des Diagramms<br />

müssen vom Tool während der Entwicklung registriert, verfolgt und<br />

dementsprechend bei visuellen Änderungen angepasst werden. Ein<br />

Gegenbeispiel ist das Tool UMLet, das zwar alle 4 benötigten Diagrammtypen<br />

unterstützt (Kriterium II-b), dabei aber über keine semantische Bindungen<br />

verfügt: alle Elemente des Diagramms sind lediglich grafische Objekte ohne<br />

Zusammenhänge, was z.B. zur Folge hat, dass die grafische Darstellung von<br />

Kantenverbindungen beim Ändern der Knotenpositionen immer wieder<br />

händisch angepasst werden muss.<br />

Ein nennenswertes, aber leider nicht zu berücksichtigendes Tool ist PlantUML,<br />

das zwar Open Source ist (Kriterium II-a) und alle 4 Diagrammtypen<br />

unterstützt (Kriterium II-b). Diagramme werden jedoch nicht in einem<br />

visuellen Editor gezeichnet, sondern durch einen speziellen Code definiert und<br />

vom Plugin gezeichnet bzw. in eine Grafik gerendert.<br />

3.3 Entscheidung<br />

3.3.1 Ausgewählte Tools<br />

28


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Durch die Berücksichtigung von Kriterien II-a und II-b (Open Source-Lizenz +<br />

Unterstützung von 4 erwähnten Diagrammtypen) werden schließlich nur in<br />

Tabelle 3.2 aufgeführte UML-Tools ausgewählt.<br />

Tabelle 3.2. Für die Entscheidung ausgewählte UML-Werkzeuge<br />

UML-Werkzeug Ausführung<br />

MOSKitt Standalone RCP auf Eclipse-Basis<br />

Papyrus<br />

– Standalone RCP auf Eclipse-Basis<br />

– Eclipse-Plugin<br />

TOPCASED UML Editor Standalone RCP auf Eclipse-Basis (zum<br />

Zeitpunkt dieser Arbeit allerdings nur für 32-Bit-<br />

Systeme verfügbar)<br />

Violet UML Editor for<br />

Eclipse<br />

– Standalone JAR<br />

– Eclipse-Plugin<br />

Diese Werkzeuge werden in Bezug auf Unterstützung von weiterer UMLbezogener<br />

Funktionalität untersucht, in erster Linie von Profilen und<br />

Stereotypen.<br />

Violet UML Editor for Eclipse wird aus weiteren Betrachtungen mangels<br />

Unterstützung von Profilen und Stereotypen sowie auf Grund von insgesamt<br />

relativ dürftiger UML-Unterstützung (es werden nur grundlegende Elemente<br />

unterstützt) ausgeschlossen.<br />

Papyrus konnte zum Zeitpunkt der Tool-Analyse keine Unterstützung für<br />

Aktivitätsdiagramme aufweisen: sie hätte zwar lt. Roadmap schon längst<br />

implementiert sein müssen, auf der Webseite waren Aktivitätsdiagramme<br />

damals jedoch als "Still under development" markiert, dementsprechend fehlte<br />

auch deren Unterstützung im Tool selbst. Aus diesem Grund wurde Papyrus aus<br />

der Betrachtung ausgenommen.<br />

Beispiele für Klassendiagramme, die mit MOSKitt, Papyrus, TOPCASED und<br />

Violet erstellt wurden, sind auf Abb. 3.1, 3.2, 3.3 und 3.4 zu sehen.<br />

29


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 3.1 Klassendiagram in MOSKitt<br />

Abbildung 3.2. Klassendiagramm in Papyrus<br />

30


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 3.3. Klassendiagramm in TOPCASED<br />

3.3.2 Detaillierte Analyse<br />

Abbildung 3.4. Klassendiagramm in Violet<br />

Nachfolgende Tabellen enthalten Informationen zu den beiden letzlich<br />

ausgewählten Tools – MOSKitt und TOPCASED UML Editor:<br />

– Tabelle 3.3 – Unterstützung von UML-Features, die für diese Arbeit von<br />

Bedeutung sind.<br />

– Tabelle 3.4 – Nicht-funktionale (Vergleichs)Kriterien.<br />

Tabelle 3.3. Unterstützung von UML-Features<br />

31


UML-<br />

Werkzeug<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Version Profile Stereotype<br />

Pins<br />

Nested<br />

Classes<br />

MOSKitt 1.3.0 + + + -<br />

TOPCASED 5.0.0 + + + -<br />

Tabelle 3.4. Nicht-funktionale Kriterien<br />

Kriterium MOSKitt TOPCASED<br />

Dokumentation<br />

Bedienung<br />

Support<br />

– Spanische Version ist nicht ganz<br />

aktuell (Dokumentation v. 1.1.0<br />

bei aktueller MOSKitt-Version<br />

1.3.0), Englische Version ist<br />

veraltet (0.7.0) und enthält<br />

teilweise Sätze und Beispiele<br />

auf Spanisch.<br />

– Aus MOSKitt aufgerufene Hilfe<br />

ist teilweise auf Spanisch.<br />

– Auf der Webseite sind Webcasts<br />

zur Bedienung des Programms<br />

verfügbar.<br />

– Bequeme Bedienung, Aufbau<br />

des UI ähnelt sehr dem bei<br />

TOPCASED.<br />

– Palette der UML-Elemente ist<br />

nicht vollständig, es fehlt z.B.<br />

Central Buffer Node (zentraler<br />

Pufferknoten).<br />

– Nettes, hilfsbereites und<br />

verständnisvolles Team, wobei<br />

der Kontakt nur über Frau Dr.<br />

Koch möglich war.<br />

– Aktuelle<br />

Dokumentation ist<br />

vorhanden.<br />

– Bequeme Bedienung,<br />

Aufbau des UI ähnelt<br />

sehr dem bei<br />

MOSKitt.<br />

– Umfangreiche Palette<br />

der UML-Elemente.<br />

– Mailinglisten zu<br />

einzelnen Bereichen<br />

stehen zur Verfügung<br />

(für Benutzer,<br />

Entwickler etc.).<br />

3.3.3 Entscheidung über das Tool für die UWE-Erweiterung<br />

Als Werkzeug, das als Zielplattform für UWE-Erweiterungen im Rahmen dieser<br />

Arbeit dienen soll, wird aufgrund des abschließenden Vergleichs TOPCASED<br />

ausgewählt. Fukntionen für die UWE-Notation und UWE-basierte Modellierung<br />

32


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

von Webanwendungen werden als eine in TOPCASED integrierte Lösung<br />

implementiert.<br />

33


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

4 Anforderungsanalyse<br />

In diesem Kapitel werden Anforderungen an die zu implementierende Software<br />

gestellt. Folgende Aspekte werden festgelegt:<br />

– Zielplattform, wo das zu implementierende Tool integriert sein soll<br />

– Art der Integration<br />

– Benutzerinteraktion<br />

– Menüstruktur<br />

– Funktionalität<br />

4.1 Zielplattform und Integration<br />

Die zu entwickelnde Software-Lösung für die Unterstützung der UWE-Methodik<br />

(vorläufiger Codename: UWEclipse) soll in den TOPCASED UML Editor integriert<br />

werden. Es ist ein grafisches UML-Modellierungswerkzeug (Eclipse-basierte<br />

RCP), das im Kapitel 3 als Zielplattform für die Implementierung von UWE<br />

vorgesehener Funktionen und Möglichkeiten ausgewählt wurde.<br />

TOPCASED ist unter [web-topcased-download] erhältlich und lag zum<br />

Zeitpunkt dieser Diplomarbeit in der Version 5.0.0 9 vor.<br />

Es bietet sich an, UWEclipse in Form eines Eclipse-Plugins zu entwickeln. Auf<br />

diese Weise kann es problemlos in jede mit TOPCASED ausgestattete Eclipse-<br />

Distribution integriert werden und auf der Funktionalität von TOPCASED<br />

aufbauen.<br />

4.2 Benutzeroberfläche<br />

UWEclipse soll dem Benutzer folgende GUI-Elemente zur Verfügung stellen (die<br />

in die Eclipse/TOPCASED-Benutzeroberfläche integriert sein sollen):<br />

– UWEclipse-Hauptmenü in der Eclipse-Menüleiste (Nr. 1 auf Abb. 4.1)<br />

– Erweiterung des Kontextmenüs im Projektbaum (Nr. 2 auf Abb. 4.1)<br />

– Erweiterung des Kontextmenüs im Diagrammeditor (Nr. 3 auf Abb. 4.1)<br />

9 Zum Zeitpunkt des Abschlusses der Arbeit war bereits die Version 5.1.0 herunterzuladen, diese konnte jedoch nicht<br />

mehr berücksichtigt werden<br />

34


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

– Erweiterung der Palette im Diagrammeditor (Nr. 4 auf Abb. 4.1)<br />

4.2.1 Hauptmenü<br />

Abbildung 4.1. Grafische Integration von UWEclipse<br />

Der Eintrag für das UWEclipse-Hauptmenü (Namensgebung: UWEclipse) soll<br />

sich in der Eclipse-Menüleiste befinden. Die Menüstruktur sieht<br />

folgendermaßen aus:<br />

UWEclipse<br />

New UWE Diagram<br />

Content Diagram<br />

Navigation Diagram<br />

Presentation Diagram<br />

Process Structure Diagram<br />

Process Flow Diagram<br />

Transformations<br />

Content → Navigation<br />

Navigation → Presentation<br />

Navigation → Process Structure<br />

35


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Navigation → Process Flow<br />

Create Default Models<br />

Apply Profile<br />

About UWEclipse<br />

Das Anwendungsfalldiagramm für die Arbeit mit dem UWEclipse-Hauptmenü ist<br />

auf Abb. 4.2 dargestellt.<br />

Abbildung 4.2. Anwendungsfalldiagramm für das UWEclipse-Hauptmenü<br />

4.2.1.1 Menüeintrag New UWE Diagram<br />

Folgende UWE-Modelltypen sollen zur Verfügung gestellt werden:<br />

– Content<br />

– Navigation<br />

– Presentation<br />

– Process Structure<br />

– Process Flow<br />

36


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Für jeden dieser UWE-Modelltypen soll es einen gleichnamigen Menüeintrag im<br />

Untermenü New UWE Diagram des UWEclipse-Hauptmenüs geben. Beim Aufruf<br />

eines solchen Menüeintrages wird ein leeres TOPCASED-Modell mit einem<br />

leeren TOPCASED-Diagramm angelegt:<br />

– Klassendiagramm für alle UWE-Modelltypen außer Process Flow<br />

– Aktivitätsdiagramm für Process Flow<br />

Daraufhin soll auf das TOPCASED-Modell folgendes angewendet werden:<br />

a) das (vorher geladene) UWE-Profil<br />

b) das entsprechende UWE-Stereotyp:<br />

• UWE Profile::contentModel<br />

• UWE Profile::navigationModel<br />

• UWE Profile::presentationModel<br />

• UWE Profile::processModel<br />

Das soeben angelegte TOPCASED-Diagramm soll danach im Diagrammeditor<br />

geöffnet werden. Der als Standard vergebene TOPCASED-Diagrammname wird<br />

vom Namen des UWE-Modelltyps abgeleitet (New Content Diagram, New<br />

Navigation Diagram, New Presentation Diagram, New Process Structure<br />

Diagram, New Process Flow Diagram).<br />

Bei jedem TOPCASED-Modell soll intern ein Vermerk über den entsprechenden<br />

UWE-Modelltyp mit gespeichert werden. Des Weiteren ist die<br />

Auswahlmöglichkeit der UWE-Modellierungselemente vom UWE-Modellttyp<br />

abhängig.<br />

Auf Abb. 4.3 ist das Aktivitätsdiagramm für den Menüeintrag New UWE Diagram<br />

dargestellt.<br />

37


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.3. Aktivitätsdiagramm für den Menüeintrag New UWE Diagram<br />

4.2.1.2 Menüeintrag Transformations<br />

Im Untermenü Transformations des UWEclipse-Hauptmenüs stehen die<br />

Transformationsmöglichkeiten unter verschiedenen UWE-Modelltypen zur<br />

Verfügung:<br />

– Content → Navigation<br />

– Navigation → Presentation<br />

– Navigation → Process Structure<br />

– Navigation → Process Flow<br />

Dabei wird das aktuell im visuellen Diagrammeditor geöffnete Diagramm in das<br />

Diagramm des jeweiligen Zieltyps umgewandelt – vorausgesetzt, dass das<br />

aktuelle TOPCASED-Diagramm einem UWE-Modelltyp entspricht (d.h. mit dem<br />

entsprechenden internem Vermerk versehen ist) und dass sein Typ mit dem<br />

Quelltyp des ausgewählten Menüeintrages übereinstimmt. Sollte das nicht der<br />

Fall sein oder wenn im Editor kein Diagramm vorhanden ist, soll eine<br />

entsprechende Meldung erscheinen.<br />

Auf Abb. 4.4 ist das Aktivitätsdiagramm für den Menüeintrag Transformations<br />

dargestellt.<br />

38


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.4. Aktivitätsdiagramm für den Menüeintrag Transformations<br />

4.2.1.3 Menüeintrag Create Default Models<br />

Mit Hilfe des Untermenüs Create Default Models des UWEclipse-Hauptmenüs<br />

sollen automatisch Modell-Container angelegt werden, die mit Ordnern im<br />

TOPCASED-Projektbaum repräsentiert werden:<br />

– Content<br />

– Navigation<br />

– Presentation<br />

– Process<br />

Auf Abb. 4.5 ist das Aktivitätsdiagramm für den Menüeintrag Create Default<br />

Models dargestellt.<br />

39


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.5. Aktivitätsdiagramm für den Menüeintrag Create Default<br />

Models<br />

4.2.1.4 Menüeintrag Apply Profile<br />

Menüeintrag Apply Profile des UWEclipse-Hauptmenüs bietet die<br />

Möglichkeit, das UWE-Profil zu laden und auf das Modell anzuwenden, falls<br />

noch kein Profil angewendet wurde.<br />

Auf Abb. 4.6 ist das Aktivitätsdiagramm für den Menüeintrag Apply Profile<br />

dargestellt.<br />

40


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.6. Aktivitätsdiagramm für den Menüeintrag Apply Profile<br />

4.2.1.5 Menüeintrag About UWEclipse<br />

Menüeintrag About UWEclipse des UWEclipse-Hauptmenüs enthält allgemeine<br />

Informationen über UWEclipse (Version etc.).<br />

Auf Abb. 4.7 ist das Aktivitätsdiagramm für den Menüeintrag About UWEclipse<br />

dargestellt.<br />

41


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.7. Aktivitätsdiagramm für den Menüeintrag About UWEclipse<br />

4.2.2 Kontextmenü im Projektbaum<br />

Im Kontextmenü des Projektbaums (Ansichten Package Explorer, Project<br />

Explorer, Navigator und Topcased Navigator) sollen UWEclipse-Funktionen<br />

zur Verfügung stehen, die für das Anlegen und die Transformationen von<br />

Diagrammen verantwortlich sind. Diese Funktionen sollen in das bereits<br />

vorhandene Eclipse/TOPCASED-Kontextmenü integriert sein.<br />

4.2.2.1 Neue Diagramme anlegen<br />

Beim Klick mit der rechten Maustaste auf einen Unterordner im Projektbaum<br />

(Ansichten Package Explorer, Project Explorer, Navigator und Topcased<br />

Navigator) sollen im Kontextmenü die Menüeinträge zum Anlegen von neuen<br />

Diagrammen für folgende UWE-Modelltypen erscheinen:<br />

– Content<br />

– Navigation<br />

– Presentation<br />

– Process Structure<br />

– Process Flow<br />

Die Funktionalität, die sich hinter diesen Menüeinträgen verbirgt, stimmt genau<br />

mit dem überein, was in 4.2.1.1 beschrieben wurde.<br />

Abb. 4.8 und 4.9 zeigen das Anwendungsfalldiagramm und das<br />

Aktivitätsdiagramm für diese Kontextmenüeinträge.<br />

Abbildung 4.8. Anwendungsfalldiagramm für das Kontextmenü im Projektbaum<br />

42


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

zum Anlegen von neuen Diagrammen<br />

Abbildung 4.9. Aktivitätsdiagramm für das Kontextmenü im Projektbaum zum<br />

Anlegen von neuen Diagrammen<br />

4.2.2.2 Transformation von Inhaltsmodellen<br />

Beim Klick mit der rechten Maustaste im Projektbaum (Ansichten Package<br />

Explorer, Project Explorer, Navigator und Topcased Navigator) auf einen<br />

Knoten, der einem Content Diagram entspricht, soll der Menüeintrag für die<br />

Transformation Content → Navigation escheinen.<br />

Die Funktionalität dieses Menüeintrages entspricht dem, was in 4.2.1.2<br />

beschrieben wurde, allerdings mit dem Unterschied, dass die Transformation<br />

nicht auf das aktuell im Diagrammeditor geöffnete Diagramm angewendet<br />

wird, sondern auf das im Baum ausgewählte.<br />

Abb. 4.10 und 4.11 zeigen das Anwendungsfalldiagramm und das<br />

Aktivitätsdiagramm für diesen Kontextmenüeintrag.<br />

43


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.10. Anwendungsfalldiagramm für das Kontextmenü im<br />

Projektbaum für die Transformation von Inhaltsmodellen<br />

Abbildung 4.11. Aktivitätsdiagramm für das Kontextmenü im Projektbaum für<br />

die Transformation von Inhaltsmodellen<br />

4.2.2.3 Transformationen von Navigationsmodellen<br />

44


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Beim Klick mit der rechten Maustaste im Projektbaum (Ansichten Package<br />

Explorer, Project Explorer, Navigator und Topcased Navigator) auf einen<br />

Knoten, der einem Navigation Diagram entspricht, sollen die Menüeinträge für<br />

die Transformationen Navigation → Presentation, Navigation → Process<br />

Structure und Navigation → Process Flow erscheinen.<br />

Die Funktionalität dieser Menüeinträge entspricht dem, was in 4.2.1.2<br />

beschrieben, allerdings mit dem Unterschied, dass die Transformation nicht auf<br />

das aktuell im Diagrammeditor geöffnete Diagramm angewendet wird, sondern<br />

auf das im Baum ausgewählte.<br />

Abb. 4.12 und 4.13 zeigen das Anwendungsfalldiagramm und das<br />

Aktivitätsdiagramm für diese Kontextmenüeinträge.<br />

Abbildung 4.12. Anwendungsfalldiagramm für das Kontextmenü im<br />

Projektbaum für die Transformationen von Navigationsmodellen<br />

45


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.13. Aktivitätsdiagramm für das Kontextmenü im Projektbaum für<br />

die Transformationen von Navigationsmodellen<br />

4.2.3 Kontextmenü im Diagrammeditor<br />

Im Kontextmenü des Diagrammeditors sollen UWEclipse-Menüeinträge<br />

vorhanden sein, die den Attributen der Stereotype entsprechen, welche auf das<br />

gerade ausgewählte Element angewendet wurden (falls auf das ausgewählte<br />

Element keine Stereotype angewendet wurden, sollen keine UWEclipse-<br />

Einträge im Kontextmenü erscheinen). Bei der Auswahl eines Attributes aus<br />

dem Kontextmenü soll ein Fenster kommen, wo der Attributwert angegeben<br />

bzw. bearbeitet oder gelöscht werden kann.<br />

Diese Menüeinträge sollen nur für bestimmte Modelltypen und bestimmte<br />

46


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Diagrammelemente verfügbar sein:<br />

– Modelltypen (beides TOPCASED-Klassendiagramme)<br />

• Navigation<br />

• Presentation<br />

– Klassendiagrammelemente<br />

• Klasse<br />

• Assoziation<br />

• Komposition<br />

• Aggregation<br />

Auf Abb. 4.14, 4.15, 4.16 und 4.17 sind Anwendungsfalldiagramme und<br />

Aktivitätsdiagramme für das Kontextmenü des Diagrammeditors für Elemente<br />

eines Navigations- bzw. eines Präsentationsmodells dargestellt.<br />

Abblidung 4.14. Anwendungsfalldiagramm für das Kontextmenü im<br />

Diagrammeditor für Elemente eines Navigationsmodells<br />

Abblidung 4.15. Anwendungsfalldiagramm für das Kontextmenü im<br />

Diagrammeditor für Elemente eines Präsentationsmodells<br />

47


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abblidung 4.16. Aktivitätsdiagramm für das Kontextmenü im Diagrammeditor<br />

für Elemente eines Navigationsmodells<br />

48


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abblidung 4.17. Aktivitätsdiagramm für das Kontextmenü im Diagrammeditor<br />

für Elemente eines Präsentationsmodells<br />

4.2.4 Palette im Diagrammeditor<br />

Die Palette des Diagrammeditors (Toolbar mit Diagrammelementen, Abb. 4.18)<br />

soll erweitert werden: es soll ein Bereich hinzugefügt werden, der Stereotype<br />

des geladenen Profils enthält. Dies soll jedoch nur für folgende UWE-<br />

Modelltypen gelten:<br />

– Navigation<br />

– Presentation<br />

– Process Structure<br />

49


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 4.18. Palette des Diagrammeditors<br />

50


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

5 Implementierung<br />

In diesem Kapitel wird die Entwicklung des Plugins beschrieben. Dabei werden<br />

implementierte Funktionen, technische Details der Implementierung,<br />

Designentscheidungen und während der Entwicklung entstandene technische<br />

Probleme beleuchtet.<br />

5.1 GUI-Abläufe<br />

Die Implementierung der UWEclipse-Funktionalität lehnt sich an einige Eclipsebzw.<br />

TOPCASED-Funktionen an, die bei gewissen Benutzeraktionen aufgerufen<br />

werden. So wird z.B. das Laden des UWE-Profils auf die Art und Weise<br />

implementiert, wie es beim Aufruf des Kontextmenüeintrages Load<br />

Resource... eines TOPCASED-Modells der Fall ist. Als nächstes werden solche<br />

auf der Benutzeroberfläche stattfindende Abläufe beschrieben, die bei der<br />

Implementierung als Referenz dienen.<br />

5.1.1 Anlegen eines TOPCASED-Modells<br />

Alle Abläufe setzen voraus, dass ein Projekt vom Typ Topcased Project<br />

vorliegt (Beispielsname topcased_uweclipse_test), das ein Modell vom Typ<br />

UML Model with TOPCASED enthält (Beispielsname demodel), welches mit der<br />

Option Empty model with a default diagram und dem Diagrammtyp Class<br />

Diagram erstellt wurde. Auf der Abb. 5.1 ist das Ergebnis in den Ansichten<br />

Topcased Navigator und Outline zu sehen.<br />

51


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.1. Referenzprojekt in TOPCASED<br />

5.1.2 Laden des UWE-Profils<br />

In der Outline-Ansicht im Kontextmenü des -Knotens wird der<br />

Menüeintrag Load Resource... ausgewählt. Anschließend wird über den<br />

Button Browse File System... das UWE-Profil ausgewählt und geladen.<br />

Nachdem das Profil geladen wurde, erscheint es in der Outline-Ansicht unter<br />

Additional Resources. Die Outline-Ansicht sieht dabei wie auf Abb. 5.2<br />

dargestellt aus.<br />

52


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.2. Geladenes UWE-Profil<br />

5.1.3 Anwenden des UWE-Profils auf das TOPCASED-Modell<br />

Das UWE-Profil wird auf das TOPCASED-Modell angewendet, indem man in der<br />

Outline-Ansicht im Kontextmenü des -Knotens den Menüeintrag<br />

Apply Profile und dort das UWE-Profil auswählt (Abb. 5.3).<br />

53


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.3. Anwenden des UWE-Profils auf das TOPCASED-Modell<br />

5.1.4 Anwenden eines Stereotyps auf das TOPCASED-Modell<br />

Ein Stereotyp wird auf das TOPCASED-Modell angewendet, indem man in der<br />

Outline-Ansicht im Kontextmenü des -Knotens den Menüeintrag<br />

Apply Stereotype auswählt (Abb. 5.4).<br />

54


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.4. Anwenden eines Stereotyps auf das TOPCASED-Modell<br />

5.1.5 Anwenden eines Stereotyps auf eine Klasse<br />

Im visuellen Diagrammeditor wird eine Klasse (SampleClass in unserem<br />

Beispiel) angelegt. Daraufhin erscheint in der Outline-Ansicht ein<br />

entsprechender Knoten ( SampleClass unter → <br />

demodel). Im Kontextmenü des Klassenknotens ist der Menüeintrag Apply<br />

Stereotype und anschließend das gewünschte Stereotyp auszuwählen (Abb.<br />

5.5).<br />

Alternativ kann man die Stereotypauswahl auch über die Eigenschaftsansicht<br />

der Klasse in grafischer Darstellung im Diagrammeditor vornehmen: Klick mit<br />

der rechten Maustaste auf die betroffene Klasse im Diagrammeditor → Show<br />

Properties → Bereich Stereotypes → Stereotyp auswählen und mit Add ><br />

anwenden (Abb 5.6).<br />

55


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.5. Anwenden eines Stereotyps auf eine Klasse in der Outline-<br />

Ansicht<br />

Abbildung 5.6. Anwenden eines Stereotyps auf eine Klasse im Diagrammeditor<br />

56


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

5.2 Designentscheidungen<br />

Bei Designentscheidungen sowie TOPCASED-bezogenen Fragen in Hinsicht auf<br />

Entwicklung und Verwendung wurde die TOPCASED-Kommunikationsplattform<br />

in Form von Mailinglisten [web-topcased-mail-users] und [web-topcased-maildevel]<br />

([web-topcased-contacts]) benutzt. Auf diese Weise wurde über einige<br />

nachfolgende Punkte entschieden.<br />

5.2.1 Ermitteln von Stereotypeigenschaften<br />

Eigenschaften eines Stereotyps (die z.B. im Profilbaum von MagicUWE unter<br />

dem jeweiligen Stereotypknoten angezeigt werden) lassen sich mit Hilfe der<br />

beiden Methoden Stereotype.getAllAttributes() und<br />

Stereotype.getFeatures() ermitteln:<br />

Stereotype stereo;<br />

...<br />

// Alternative 1<br />

for ( Property prop : stereo.getAllAttributes() ) { /* Behandlung<br />

von prop */ }<br />

// Alternative 2<br />

for ( Feature feat : stereo.getFeatures() ) { /* Behandlung von<br />

feat */ }<br />

Es gibt jedoch einen Unterschied zwischen den beiden Alternativen, der sich<br />

z.B. beim UWE-Profil zeigt: dort liefern zwar beide Alternativen in meisten<br />

Fällen die selben Ergebnisse, es gibt jedoch einige Stereotype, wo<br />

getAllAttributes() jeweils 1 Element mehr liefert, als getFeatures(). Das<br />

ist immer die Eigenschaft isHome. Aus diesem Grund wurde bei der<br />

Entwicklung für die Methode getAllAttributes() entschieden.<br />

5.2.2 Nested Classes<br />

Die Arbeit mit Nested Classed war zum Zeitpunkt dieser Arbeit nicht möglich,<br />

da deren Darstellung von TOPCASED nicht unterstützt wurde.<br />

5.2.3 Kontextmenü im Diagrammeditor<br />

Es wurde beschlossen, das Kontextmenü im Diagrammeditor (4.2.3) nicht zu<br />

implementieren, da TOPCASED bereits eine bequeme Oberfläche für die<br />

Bearbeitung von Attributwerten eines Stereotyps bereitstellt (Abb. 5.7). Man<br />

57


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

gelangt dorthin, indem man Show Properties im Kontextmenü des<br />

selektierten Diagrammelements auswählt und dort in den Bereich Stereotype<br />

Attributes geht.<br />

Abbildung 5.7. Attribute eines Stereotyps im TOPCASED UML Editor<br />

5.2.4 Palette im Diagrammeditor<br />

Ursprüngliche Anforderung war, die Palette des TOPCASED-Diagrammeditors zu<br />

erweitern, und zwar um einen Bereich, der Stereotype des geladenen Profils<br />

enthalten würde (4.2.4).<br />

Dazu wäre folgendes benötigt:<br />

– Erweiterung (durch Vererbung) beider abstrakter Klassen<br />

• ModelerPaletteManager [src-topcased-ModelerPaletteManager]<br />

• AbstractCreationUtils [src-topcased-AbstractCreationUtils]<br />

– Integration neuer Klassen in den Quellcode<br />

Das Problem dabei: diese Vorgehensweise ist nur als Erweiterung des<br />

TOPCASED-Quellcodes möglich, d.h. nicht als Bestandteil des zu<br />

programmierenden Eclipse-Plugins. Dies hat zur Folge, dass man sich für eine<br />

der beiden Entwicklungsstrategien entscheiden müsste:<br />

58


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

– Fork (Abspaltung) von TOPCASED, d.h. Gründung eines eigenständigen<br />

Projektes auf Basis von TOPCASED – zwar mit Implementierung<br />

gewünschter Änderungen an der Palette, jedoch auch mit genereller<br />

Weiterentwicklung des gesamten Projektes, was sich natürlich im<br />

Widerspruch zum Ziel und den Möglichkeiten dieser Arbeit befindet.<br />

– Anpassung des aktuellen TOPCASED-Quellcodes, allerdings ohne<br />

Absichten, daraus einen Fork zu machen. Diese Variante ist jedoch<br />

äußerst kurzlebig und bedarf ständiger Neuimplementierung bei jedem<br />

größeren Versionssprung von TOPCASED, weil sich der bei Anpassungen<br />

benutzte TOPCASED-Quellcode in jeder neuen Version ändert, ggf. auch<br />

radikal.<br />

Somit wurde auf das Thema Palettenerweiterung verzichtet.<br />

5.2.5 Drag & Drop von Stereotypen<br />

Eine Idee war, Stereotype aus dem Profil auszulesen, in einem Baum<br />

darzustellen und dort die Möglichkeit zur Verfügung zu stellen, sie per Drag &<br />

Drop in den Diagramm-Bereich zu ziehen und auf die jeweilige Zielklasse<br />

automatisch anzuwenden. Nach dem Austausch in [web-topcased-mail-devel]<br />

stellte sich heraus, dass es in TOPCASED keine direkte Möglichkeit für diese Art<br />

von Drag & Drop gibt. Es sollte jedoch möglicherweise mit Hilfe eines Drop<br />

Listeners machbar sein, der zum TOPCASED-Editor programmtechnisch<br />

hinzugefügt werden müsste. Ein Beispiel für solche Vorgehensweise sollte die<br />

Klasse DropListenersManager [src-topcased-DropListenersManager]<br />

darstellen. Es war jedoch nicht möglich, auf Basis dieser Klasse<br />

nachzuvollziehen, wie der gewünschte Mechanismus in Bezug auf TOPCASED-<br />

Editor implementiert werden könnte. Aus diesem Grund wurde die Drag &<br />

Drop-Funktion für Stereotype im Baum nicht implementiert.<br />

5.3 Implementierungsdetails<br />

UWEclipse wurde in Java geschrieben und stellt ein Eclipse-Plugin dar. In<br />

diesem Abschnitt werden die softwaretechnischen Aspekte der<br />

Implementierung von UWeclipse beleuchtet.<br />

5.3.1 Projektstruktur<br />

Das Java-Projekt von UWEclipse trägt den Namen psu, der noch vor der<br />

Entscheidung über die Namensgebung festgelegt wurde und soviel wie Profiles<br />

and Stereotypes for UWE bedeutet. Die Struktur des Projektes ist auf Abb. 5.8<br />

59


zu sehen.<br />

Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.8. Projektstruktur<br />

Wie man der Abb. 5.8 entnehmen kann, ist das Projekt in mehrere Packages<br />

aufgeteilt:<br />

– psu – Verwaltung vom Lebenszyklus des Plugins (Activator.java),<br />

Ansichtsfenster des Plugins (psu-Ansicht, psuView.java)<br />

– psu.controllers – Klassen für die Arbeit mit Profilen, Stereotypen und<br />

Diagrammen<br />

– psu.enums – Aufzählungstypen (enum)<br />

– psu.handlers – Ereignisbehandlungsroutinen für das UWEclipse-<br />

Hauptmenü sowie für die Kontextmenüs<br />

– psu.tree – Klassen für die Darstellung von Stereotypen und deren<br />

Eigenschaften in einer Baumstruktur<br />

5.3.2 Benutzeroberfläche<br />

60


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

5.3.2.1 Ansichtsfenster<br />

Das Plugin verfügt über eine Eclipse-typische andockbare Ansicht (view), die<br />

beim Start leer ist und beim Laden eines UML-Profils durch UWEclipse mit den<br />

darin enthaltenen Stereotypen und deren Eigenschaften aufgefüllt wird.<br />

Stereotype und Stereotypeigenschaften werden in Form einer Baumstruktur<br />

mit 2 Ebenen dargestellt (Mitglied TreeViewer tree der Klasse psu.psuView),<br />

wie auf Abb. 5.9 dargestellt. Die psu-Ansicht ist beim Erststart nicht zu sehen<br />

und kann über das Eclipse-Menü aktiviert werden: Window | Show View |<br />

Other... → psu → psu.<br />

61


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.9. psu-Ansicht mit Stereotypen und Stereotypeigenschaften aus<br />

dem UWE-Profil<br />

5.3.2.2 Hauptmenü<br />

Das UWEclipse-Hauptmenü wurde lt. Anforderungen in 4.2.1 implementiert<br />

und ist auf Abb. 5.10 dargestellt. Menüdefinitionen wurden in der Datei<br />

plugin.xml vorgenommen, und zwar im Register Extensions, Bereiche<br />

62


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

org.eclipse.ui.commands, org.eclipse.ui.handlers und<br />

org.eclipse.ui.menus. Die Bearbeitung von Ereignissen, die bei<br />

Menüaufrufen auftreten, wird von der Klasse psu.handlers.MainHandler<br />

übernommen.<br />

Abbildung 5.10. UWEclipse-Hauptmenü<br />

5.3.2.3 Kontextmenü im Projektbaum<br />

Kontextmenüeinträge im Projektbaum (Anforderungen in 4.2.2) sind auf Abb.<br />

5.11 zu sehen. Sie sind in der Datei plugin.xml definiert, und zwar im<br />

Register Extensions, Bereich org.eclipse.ui.popupMenus:<br />

psu.objectContribution01 (Anlegen von UWE-Diagrammen) und<br />

psu.objectContribution02 (Transformationen). Beide sind vom Typ<br />

objectContribution, d.h. die entsprechenden Menüeinträge werden nur beim<br />

Selektieren von GUI-Objekten eines bestimmten Typs (angegeben jeweils in<br />

der objectClass-Eigenschaft) aktiv und erscheinen daraufhin im<br />

Kontextmenü:<br />

– psu.objectContribution01 (Anlegen von UWE-Diagrammen) gilt nur<br />

für Objekte vom Typ org.eclipse.core.resources.IFolder<br />

– psu.objectContribution02 (Transformationen) gilt nur für Objekte vom<br />

Typ org.eclipse.core.resources.IFile<br />

Die Bearbeitung von Ereignissen, die bei Menüaufrufen auftreten, wird von der<br />

Klasse psu.handlers.PopupHandler übernommen.<br />

63


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.11. Kontextmenüeinträge im Projektbaum<br />

5.3.2.4 Kontextmenü im Diagrammeditor<br />

Das Kontextmenü im Diagrammeditor (4.2.3) wurde zwar aus den in 5.2.3<br />

dargelegten Gründen nicht implementiert. Es wurde jedoch die Möglichkeit der<br />

Implementierung eines solchen Menüs untersucht.<br />

Die Definition erfolgte in der Datei plugin.xml, Register Extensions, Bereich<br />

org.eclipse.ui.popupMenus. Der objectContribution-Eintrag, der für das<br />

Kontextmenü UWEClipse - Stereotype attributes verantwortlich ist, heißt<br />

psu.contextmenu.classeditpart und ist mit dem Typ (objectClass)<br />

org.topcased.modeler.uml.classdiagram.edit.ClassEditPart verbunden,<br />

so dass das beschriebene Kontextmenü nur beim Selektieren von<br />

ClassEditPart-Objekten erscheint.<br />

Somit ist für jeden relevanten Typ grafischer Diagrammelemente ein eigenes<br />

Kontextmenü benötigt. Eine wichtige Frage, die in diesem Zusammenhang<br />

aufkommt, ist die Ermittlung der entsprechenden Klasse, die jeweils als<br />

objectClass einzutragen ist. Dieses Problem wird wie folgt gelöst: Man<br />

selektiert das gewünschte Diagrammelement im Diagrammeditor und drückt<br />

die Tastenkombination ALT+SHIFT+F1. Dabei erscheint das Fenster des in<br />

Eclipse integrierten Tools namens Plug-in Selection Spy (Abb. 5.12). In<br />

diesem Fenster kann man den Namen der gesuchten Klasse sehen (The type<br />

of the selected element).<br />

Die Bearbeitung von Ereignissen, die bei Menüaufrufen auftreten, würde in der<br />

Klasse psu.handlers.PopupHandler erfolgen.<br />

64


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abbildung 5.12. Plug-in Selection Spy<br />

5.3.2.5 Palette im Diagrammeditor<br />

Die Erweiterung der Palette des Diagrammeditors (4.2.4) wurde aus den in<br />

5.2.4 dargelegten Gründen nicht implementiert.<br />

5.3.3 Anlegen von Modell-Containern<br />

Die Modell-Container für Diagramme (4.2.1.3) werden in Form von Ordnern im<br />

Projektbaum angelegt. Die dafür verantwortliche Funktion,<br />

psu.controllers.DiagramController.CreateFolders(), ermittelt das<br />

aktuell selektierte Element im Projektbaum, leitet davon den Rootordner des<br />

Projektes ab und übergibt ihn sowie die Namen der anzulegenden Ordner an<br />

die Hilfsfunktion psu.controllers.DiagramController.create_folder(), die<br />

das Anlegen von Ordnern übernimmt.<br />

65


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Auf der Abb. 5.13 ist das Ergebnis der Funktion zu sehen.<br />

Abbildung 5.13. Von UWEclipse angelegte Modell-Container für Diagramme<br />

5.3.4 Laden und Anwenden des Profils<br />

Das Laden und das Anwenden des Profils (4.2.1.4) ist in der Funktion<br />

LoadApplyProfile() der Klasse psu.controllers.ProfileController<br />

implementiert.<br />

Die Funktion versucht zunächst das aktuelle Diagramm im Diagrammeditor zu<br />

ermitteln und zu überprüfen, ob darauf bereits ein Profil angewendet wurde.<br />

Falls das der Fall ist, wird die Funktion verlassen. Dieser Vorgang sieht wie<br />

folgt aus (Fehlerbehandlung wurde zwecks besserer Lesbarkeit ausgelassen):<br />

UMLEditor editor = (UMLEditor)UMLPlugin.getDefault().<br />

GetWorkbench().getActiveWorkbenchWindow().getActivePage().<br />

getActiveEditor();<br />

Diagram dia = editor.getActiveDiagram();<br />

Package pack = (Package)Utils.getDiagramModelObject(dia);<br />

Integer I = pack.getAllAppliedProfiles().size();<br />

if (I >= 1) {<br />

msg(I.toString() + " profile(s) already applied (" +<br />

pack.getAllAppliedProfiles().get(0).getName() + ").");<br />

return;<br />

}<br />

Als Nächstes wird mit Hilfe eines FileDialog-Objekts dem Benutzer die<br />

Möglichkeit zur Verfügung gestellt, die Profildatei auszuwählen.<br />

Die Profildatei wird mit Hilfe der getResource()-Methode der Klasse<br />

org.eclipse.emf.ecore.resource.ResourceSet ausgelesen:<br />

ResourceSet rs = new ResourceSetImpl();<br />

URI profilePath = URI.createURI("file:////" + filepath);<br />

Resource profileResource = rs.getResource(profilePath,true);<br />

Profile profile = (Profile)EcoreUtil.GetObjectByType<br />

(profileResource.getContents(),UMLPackage.eINSTANCE.getProfile());<br />

66


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Zum Ermitteln aller im Profil enthaltenen Stereotype wird die Methode<br />

Profile.allOwnedElements() verwendet:<br />

EList lst = profile.allOwnedElements();<br />

for ( Element item : lst ) {<br />

if (!(item instanceof Stereotype)) continue;<br />

// Hier kommt die Behandlung des Stereotyps "(Stereotype)item"<br />

}<br />

Eigenschaften eines Stereotyps werden mit Hilfe von<br />

Stereotype.getAllAttributes() ermittelt (5.2.1 enthält die Erklärung,<br />

warum dabei auf Stereotype.getFeatures() verzichtet wurde):<br />

Stereotype stereo;<br />

for ( Property prop : stereo.getAllAttributes() ) { /* Behandlung<br />

von prop */ }<br />

Für die Anzeige von Stereotyp- und Eigenschaftsbezeichnungen können jeweils<br />

folgende äquivalente Aufrufe benutzt werden:<br />

– Stereotypbezeichnung: Stereotype.getKeyword() oder<br />

Stereotype.getLabel()<br />

– Eigenschaftsbezeichnung (mittels Property-Klasse):<br />

Property.getName() oder Property.getLabel()<br />

– Eigenschaftsbezeichnung (mittels Feature-Klasse): Feature.getName()<br />

oder Feature.getLabel()<br />

Für Testzwecke und zur Veranschaulichung des Inhalts des UWE-Profils werden<br />

darin enthaltene Stereotype und deren Eigenschaften in einer Baumstruktur in<br />

der psu-Ansicht des UWEclipse dargestellt. Dafür sind folgende Module aus<br />

dem psu.tree-Package verantwortlich:<br />

– UweTreeContentProvider.java<br />

– UweTreeItem.java<br />

– UweTreeLabelProvider.java<br />

Das Anwenden des Profils erfolgt mit Hilfe der Funktion<br />

Package.applyProfile(), anschließend wird das Diagramm aktualisiert und<br />

abgespeichert:<br />

pack.applyProfile(profile);<br />

editor.refreshActiveDiagram();<br />

editor.doSave(null);<br />

67


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

5.3.5 Anlegen von Diagrammen<br />

Das Anlegen von UWE-Diagrammen (Content, Navigation, Presentation,<br />

Process Structure, Process Flow), wie in 4.2.1.1 und 4.2.2.1 beschrieben,<br />

erfolgt mit Hilfe der Funktion CreateModel() der Klasse<br />

psu.controllers.DiagramController.<br />

Anhand der übergebenen UWE-Modelltyp-Kennung (ein Wert vom Typ<br />

psu.enums.UweModelType) wird die UML-Diagrammtyp-Kennung ermittelt (ein<br />

Wert vom Typ psu.enums.UmlDiagramType): Aktivitätsdiagramm für Process<br />

Flow, Klassendiagramm für alle anderen UWE-Modelltypen. Danach wird auf<br />

Basis der UML-Diagrammtyp-Kennung eine interne TOPCASED-ID der<br />

jeweiligen Diagrammschablone ermittelt, die in TOPCASED-Funktionen zur<br />

Angabe des Typs des anzulegenden Diagramms dient. Diese 2-stufige<br />

Umwandlung (UWE-Modelltyp → UML-Diagrammtyp → TOPCASED-<br />

Diagrammschablone-ID) könnte zwar reduziert werden, indem man den UML-<br />

Diagrammtyp (psu.enums.UmlDiagramType) ausschließt, so ist es aber eine<br />

klarere und mehr strukturierte Vorgehensweise.<br />

Auf Basis des selektierten Elementes im Projektbaum wird der Zielordner<br />

ermittelt. Anschließend werden mit Hilfe eines<br />

org.topcased.modeler.extensions.Template-Objekts 2 Diagrammdateien<br />

angelegt: eine .uml- und eine .umldi-Datei. Letztere wird im Diagrammeditor<br />

geöffnet.<br />

Auf der Abb. 5.14 ist das Ergebnis der Funktion zu sehen.<br />

Abbildung 5.14. Von UWEclipse angelegtes und geöffnetes Diagramm<br />

Beim Anlegen von Diagrammen wurde intensiv Gebrauch von Teilen des Codes<br />

aus folgenden TOPCASED-Klassen gemacht:<br />

– UMLDiagramsPage ([src-topcased-moskitt-UMLDiagramsPage])<br />

– DiagramsPage ([src-topcased-DiagramsPage])<br />

– NewUMLDiagrams ([src-topcased-moskitt-NewUMLDiagrams])<br />

68


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

5.3.6 Transformationen<br />

Für die Transformationen von Modellen (4.2.1.2, 4.2.2.2, 4.2.2.3) ist die<br />

Funktion psu.controllers.DiagramController.Transformation()<br />

zuständig.<br />

Auf alle Klassen des zu transformierenden Diagramms wird das jeweilige<br />

Stereotyp angewendet (dabei werden bereits angewendete Stereotype<br />

zurückgesetzt):<br />

Package pack = (Package)Utils.getDiagramModelObject(dia);<br />

Stereotype stereo = this.find_stereo(pack,target_stereotype_name);<br />

if (stereo == null) {<br />

msg("Target stereotype not found!");<br />

return;<br />

}<br />

for ( Element el : pack.allOwnedElements() ) {<br />

// Nur Klassen werden behandelt<br />

if (!el.getClass().toString().endsWith("ClassImpl")) continue;<br />

}<br />

for ( Stereotype st : el.getAppliedStereotypes())<br />

// el.getAppliedStereotypes().clear() wird nicht unterstützt<br />

el.unapplyStereotype(st);<br />

try { el.applyStereotype(stereo); } catch (Exception e) {};<br />

Anschließend wird das betroffene Diagramm aktualisiert und abgespeichert.<br />

5.3.7 Anmerkungen<br />

In diesem Abschnitt sind Anmerkungen aufgeführt, die bei der Arbeit mit<br />

UWEclipse bzw. bei seiner Weiterentwicklung von Bedeutung sein können.<br />

5.3.7.1 Aufruf der psu-Ansicht vor der Arbeit mit UWEclipse<br />

Ein Problem, das im Rahmen der Implementierung nicht gelöst werden konnte,<br />

ist das Abfangen von Objektselektionen ohne Aktivierung der psu-Ansicht. Das<br />

Abfangen von Selektionen funktioniert nämlich erst dann, wenn man einmal<br />

zur psu-Ansicht gewechselt hat. Nach dem einmaligen Wechsel zur psu-Ansicht<br />

69


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

(bzw. wenn sie bereits beim Start geöffnet und aktiv war) funktioniert das<br />

Abfangen von Selektionen, selbst wenn man im Laufe der Arbeit zu einer<br />

anderen Ansicht wechselt.<br />

Das bedeutet, dass vor der Arbeit mit UWEclipse grundsätzlich zur<br />

psu-Ansicht gewechselt werden muss.<br />

In den Klassen, die für die Ereignisbehandlung von Menüs verantwortlich sind<br />

(MainHandler und PopupHandler aus psu.handlers), wird es mit der<br />

Bedingung if (psuView.GetTree() == null) überprüft. Wenn diese<br />

Bedingung erfüllt ist, ist das Abfangen von Selektionen noch nicht aktiv, und es<br />

wird eine entsprechende Meldung angezeigt.<br />

5.3.7.2 Ermitteln des Typs des selektierten Objekts<br />

Um den Typ eines selektierten Objekts zu ermitteln, kann man die<br />

Tastenkombination ALT+SHIFT+F1 benutzen (5.3.2.4). Dabei erscheint das<br />

Fenster des in Eclipse integrierten Tools namens Plug-in Selection Spy<br />

(Abb. 5.12). In diesem Fenster kann man den Namen der gesuchten Klasse<br />

sehen (The type of the selected element).<br />

5.3.7.3 Übergang von einem Diagrammelement zu seiner<br />

internen Repräsentation<br />

Eine Lösung, die in der endgültigen Version von UWEclipse nicht gebraucht<br />

wurde, jedoch potentiell bei künftigen Weiterentwicklungen nützlich sein<br />

könnte, betrifft den Übergang von einem grafischen Diagrammelement zu<br />

seiner internen Repräsentation.<br />

Es wäre z.B. dann wichtig, wenn man anhand des selektierten<br />

Diagrammelements seinen im Hintergrund stehenden Bestandteil des Modells<br />

ermitteln möchte: um z.B. darauf Stereotype anzuwenden etc.<br />

Im nachfolgenden Beispiel (enthalten in auskommentierter Form im<br />

selectionChanged()-Ereignis des ISelectionListener listener aus der<br />

Klasse psu.psuView) wird diese Vorgehensweise veranschaulicht:<br />

ClassEditPart c = (ClassEditPart)<br />

((IStructuredSelection)CurrentSelection).getFirstElement();<br />

String class_name = c.getEditableLabel().toString();<br />

UMLEditor editor = (UMLEditor)<br />

((ModelerGraphicalViewer)c.getViewer()).getModelerEditor();<br />

70


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Diagram dia = editor.getActiveDiagram();<br />

Package pack = (Package)Utils.getDiagramModelObject(dia);<br />

org.eclipse.uml2.uml.Class cls =<br />

(org.eclipse.uml2.uml.Class)pack.getMember(class_name);<br />

msg(cls.getName());<br />

71


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

6 Modellierung eines Beispiels mit UWEclipse<br />

Dieses Kapitel ist eine Einführung in UWEclipse für die Benutzer. Es soll zeigen,<br />

wie mit Hilfe von UWEclipse modelliert wird. Als Basis dient das Beispiel mit<br />

dem Adressbuch aus 2.4.3.<br />

6.1 Vorbereitung<br />

Man erstellt ein neues TOPCASED-Projekt. Mit Hilfe des UWEclipse-Hauptmenüs<br />

oder des UWEclipse-Kontextmenüs im Projektbaum legt man ein neues UWE-<br />

Diagramm an.<br />

Mit dem Menüeintrag Apply Profile im UWEclipse-Hauptmenü geht das<br />

Laden und das Anwenden des Profils leichter und schneller, als mit den<br />

Standardmitteln.<br />

Über das Kontextmenü des selektierten Diagrammelements (Menüeintrag Show<br />

Properties → Bereich Stereotype Attributes) gelangt man in den Bereich,<br />

wo Attributwerte des auf das selektierte Diagrammelement angewendeten<br />

Stereotyps angezeigt werden und bearbeitet werden können.<br />

6.2 Transformationen<br />

Als Beispiel wird das bereits mit TOPCASED modellierte Inhaltsmodell des<br />

Adressbuches (Abschnitt 2.4.3, Abb. 2.7) benutzt.<br />

Mit Hilfe des UWEclipse-Hauptmenüs oder des UWEclipse-Kontextmenüs im<br />

Projektbaum fürht man die Transformation Content → Navigation durch. Das<br />

Ergebnis ist auf Abb. 6.1 zu sehen.<br />

72


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abblidung 6.1. Ergebnis der Transformation Content → Navigation<br />

Als ein weiteres Beispiel wird das Navigationsmodell aus 2.4.3 (Abb. 2.8)<br />

verwendet.<br />

Mit Hilfe des UWEclipse-Hauptmenüs oder des UWEclipse-Kontextmenüs im<br />

Projektbaum fürht man die Transformationen Navigation → Presentation<br />

und Navigation → Process Structure durch. Das Ergebnis ist auf Abb. 6.2<br />

und 6.3 zu sehen.<br />

73


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abblidung 6.2. Ergebnis der Transformation Navigation → Presentation<br />

74


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Abblidung 6.3. Ergebnis der Transformation Navigation → Process<br />

Structure<br />

75


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

7 Zusammenfassung und Ausblick<br />

Im Rahmen dieser Diplomarbeit wurden UML-CASE-Tools für Eclipse im Hinblick<br />

auf ihre Erweiterbarkeit für UWE (eine UML-basierte Methodik zur Modellierung<br />

und Entwicklung von Webanwendungen) analysiert. Das Hauptziel der Analyse<br />

war die Auswahl eines als Open Source lizenzierten UML-CASE-Tools für die<br />

UWE-Anpassung. Ein weiterer Bestandteil der Arbeit war die Implementierung<br />

der UWE-Funktionalität im ausgewählten Tool.<br />

7.1 Durchgeführte Arbeit<br />

Die durchgeführte Analyse von UML-CASE-Tools war umfangreich und umfasste<br />

mehrere Vergleichskriterien (Unterstützung UWE-relevanter UML-<br />

Diagrammtypen, Unterstützung von UML-Profilen und -Stereotypen, grafische<br />

Modellierungsmöglichkeiten, enthaltene Entwicklertools, Möglichkeiten der<br />

Codegenerierung, Qualität der Dokumentation, Lizenz). Die Recherche und die<br />

Auswahl des Werkzeugs, das als Zielplattform für UWE-Erweiterungen dienen<br />

sollte, war eine anspruchsvolle Aufgabe und benötigte auch Installation und<br />

praktische Tests von einigen Kandidatentools.<br />

Die Analyse ergab, dass das Tool namens TOPCASED UML Editor sich für die<br />

UWE-Anpassung am besten eignet. TOPCASED ist eine Eclipse-basierte RCP<br />

(Rich Client Platform), die sich im rasanten Tempo weiterentwickelt. Als diese<br />

Arbeit in der Anfangsplanung war, lautete die damals aktuelle TOPCASED-<br />

Version 4.1.0. Danach kamen 5 weitere Releases heraus, so dass zum<br />

Zeitpunkt des Abschlusses der Arbeit bereits die Version 5.1.0 herunterzuladen<br />

war. Das alles spricht dafür, dass die Entwicklung dieses UML-CASE-Tools nicht<br />

stehenbleibt. Eine Community von Entwicklern und Benutzern ist immer bereit,<br />

einen Drittentwickler zu unterstützen, der sich mit der Entwicklung auf Basis<br />

von TOPCASED befasst. Somit hat die auf TOPCASED basierende UWE-Lösung<br />

eine solide Grundlage, auf der man im Zuge der Weiterentwicklung weiterhin<br />

aufbauen kann.<br />

Als Nächstes wurden im Rahmen dieser Diplomarbeit Funktionen für die UWE-<br />

Notation und UWE-basierte Modellierung von Webanwendungen als TOPCASED-<br />

Erweiterung implementiert. Diese Erweiterung, genannt UWEclipse, ist ein<br />

Eclipse-Plugin und macht u.a. Gebrauch von TOPCASED-Funktionen. Im Laufe<br />

der UWEclipse-Entwicklung hat sich die Auswahl von TOPCASED als<br />

Zielplattform durchaus bestätigt.<br />

76


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

In UWEclipse wurden Funktionen implementiert, welche die UWE-basierte<br />

Modellierung unterstützen bzw. vereinfachen. Dazu gehört das Anlegen von<br />

UWE-Modellen, Laden und Anwenden des UWE-Profils, Transformationen von<br />

UWE-Modellen.<br />

Neben der eigentlichen Implementierung der UWE-Funktionalität wurden die<br />

von Eclipse und TOPCASED zur Verfügung gestellten Klassen und Funktionen<br />

für die UML-Modellierung erforscht und somit die Erfahrungen gesammelt, die<br />

sowohl im UWEclipse-Code als auch in dieser Ausarbeitung zusammengefasst<br />

wurden.<br />

7.2 Vergleich zu MagicUWE<br />

Das urpsrüngliche Ziel der Entwicklung von UWEclipse war die Nachbildung<br />

bzw. die Migration der MagicUWE-Funktionalität in ein Open Source-Werkzeug<br />

mit vergleichbaren zu MagicDraw Modellierungsmöglichkeiten. Es sollte u.a.<br />

den UWE-Entwicklern den Umstieg auf die neue Modellierungsoberfläche<br />

erleichtern, da die Menüstruktur und die Bedienung von MagicUWE im neuen<br />

Tool möglichst beibehalten werden sollte.<br />

Das UWEclipse-Hauptmenü und das UWEclipse-Kontextmenü im Projektbaum<br />

entsprechen den Menüs von MagicUWE. Zu den in UWEclipse implementierten<br />

MagicUWE-Funktionen gehören das Anlegen von UWE-Modellen und deren<br />

Transformationen.<br />

Das Laden (mit dem anschließenden Anwenden) des UWE-Profils erfolgt nicht<br />

automatisch, sondern bei Bedarf durch den Benutzer.<br />

Das Kontextmenü im Diagrammeditor wurde nicht implementiert, da die<br />

entsprechende Funktionalität (Bearbeiten von Attributwerten zu ausgewählten<br />

Stereotypen) vom TOPCASED UML Editor bereits zur Verfügung gestellt wurde.<br />

7.3 Ausblick<br />

Die implementierte Funktionalität und die gesammelten Erfahrungen bilden<br />

insgesamt einen guten Ausgangspunkt für künftige Erweiterungen der UWErelevanten<br />

Funktionalität im TOPCASED UML Editor.<br />

Bei der UWEclipse-Weiterentwicklung könnten z.B. einige Verbesserungen in<br />

der Bedienung bzw. Benutzerführung in Betracht gezogen werden.<br />

Außerdem wären solche Themen interessant wie die Erweiterung der Palette<br />

des TOPCASED-Diagrammeditors um einen Bereich mit Stereotypen oder Drag<br />

77


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

& Drop von Stereotypen von einem Baum in den Diagramm-Bereich zwecks<br />

Anwendung auf die ausgewählte Klasse.<br />

Nicht zu vergessen wäre auch die Arbeit mit Nested Classes, die zwar<br />

momentan von TOPCASED nicht unterstützt werden, in künftigen Versionen<br />

jedoch aktuell werden können.<br />

Eine wichtige Weiterentwicklung wäre die Unterstützung von RIA 10 Patterns mit<br />

dem automatischen Einbinden von Zustandsmaschinen.<br />

10 RIA – Rich Internet Application – Webanwendung mit reichhaltiger Menge an Funktionen und<br />

Interaktionsmöglichkeiten<br />

78


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

Literaturverzeichnis<br />

Webreferenzen<br />

[web-uwe] UWE - UML-based web engineering; http://uwe.pst.ifi.lmu.de/;<br />

Stand 02.02.2011.<br />

[web-uwe-argo] UWE – ArgoUWE;<br />

http://uwe.pst.ifi.lmu.de/toolargoUWE.html; Stand 10.04.2011.<br />

[web-uwe-magic] UWE – MagicUWE;<br />

http://uwe.pst.ifi.lmu.de/toolMagicUWE.html; Stand 23.09.2011.<br />

[web-uwe-magic-brief] MagicUWE – A CASE Tool Plugin for Modeling Web<br />

Applications; http://uwe.pst.ifi.lmu.de/toolMagicUWE.html (direkt:<br />

http://uwe.pst.ifi.lmu.de/posters/MagicUWE.pdf); Stand 23.09.2011.<br />

[web-uwe-magic-ref] UWE - MagicUWE - Reference;<br />

http://uwe.pst.ifi.lmu.de/toolMagicUWEReferenceV1.3.html; Stand<br />

25.09.2001.<br />

[web-uwe-magic-profile] UWE - Metamodel and Profile;<br />

http://uwe.pst.ifi.lmu.de/publicationsMetamodelAndProfile.html (direkt:<br />

http://uwe.pst.ifi.lmu.de/download/UWE_Profile_v2.0.zip); Stand 25.09.2011.<br />

[web-uwe-ex-abwcu] UWE – Examples: Address Book With Content Updates;<br />

http://uwe.pst.ifi.lmu.de/exampleAddressBookWithContentUpdates.html;<br />

Stand 11.07.2011.<br />

[web-argouml] argouml.tigris.org; http://argouml.tigris.org/; Stand<br />

10.04.2011.<br />

[web-magicdraw] UML | UML Modeling Tool | UML Designing Tool | Graphical<br />

Modelling Tool from No Magic; http://www.magicdraw.com/; Stand<br />

10.04.2011.<br />

[web-ocl-dd] OCL Portal; http://www-st.inf.tu-dresden.de/ocl/; Stand<br />

10.04.2011.<br />

[web-epc-1] Eclipse Plugins, Bundles and Products - Eclipse Marketplace;<br />

http://marketplace.eclipse.org (Suchergebnis:<br />

http://marketplace.eclipse.org/search/apachesolr_search/?filters=tid<br />

79


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

%3A19&solrsort=sort_title%20asc); Stand 20.12.1010.<br />

[web-epc-2] EclipsePlugins : hi! Find your plugin for Eclipse here.;<br />

http://www.eclipse-plugins.info (Suchergebnis: http://www.eclipseplugins.info/eclipse/plugins.jsp?category=UML);<br />

Stand 20.12.1010.<br />

[web-topcased] Topcased - Home; http://www.topcased.org/; Stand<br />

13.02.2011.<br />

[web-topcased-heise] Airbus: Systementwicklung mit Open Source | heise<br />

open; http://www.heise.de/open/artikel/82839; Dr. Oliver Diedrich<br />

(odi@heiseopen.de), 21.12.2006; Stand 13.02.2011.<br />

[web-topcased-presentation-30-min] Topcased 30 minutes Presentation;<br />

http://www.topcased.org/ (direkt:<br />

http://gforge.enseeiht.fr/docman/view.php/52/3629/TOPCASED-presentation-<br />

30mn.pdf); Stand 11.09.2011.<br />

[web-topcased-presentation-2-h] Topcased 2 hours Presentation;<br />

http://www.topcased.org/ (direkt:<br />

http://gforge.enseeiht.fr/docman/view.php/52/3627/TOPCASED-presentation-<br />

2h.pdf); Stand 11.09.2011.<br />

[web-topcased-quick-start] Quick start editor tutorial;<br />

http://www.topcased.org/index.php?documentsSyn<strong>thesis</strong>=y&Itemid=59<br />

(direkt:<br />

http://gforge.enseeiht.fr/docman/view.php/7/4536/TPC_5.0.0_QuickStart_edit<br />

or_tutorial.pdf); Stand 11.09.2011.<br />

[web-topcased-download] Downloads for project TOPCASED;<br />

http://www.topcased.org/index.php?idd_projet_pere=52&Itemid=60; Stand<br />

13.02.2011.<br />

[web-topcased-contacts] Topcased – Contacts;<br />

http://www.topcased.org/index.php/content/view/41/58/; Stand 01.08.2011.<br />

[web-topcased-mail-users] TOPCASED mailing list for end-users; topcasedusers@lists.gforge.enseeiht.fr<br />

[web-topcased-mail-devel] TOPCASED mailing list for developers; topcaseddevel@lists.gforge.enseeiht.fr<br />

[web-eclipse-rcp] Eclipse Rich Client Platform;<br />

http://www.eclipse.org/home/categories/rcp.php; Stand 13.02.2011.<br />

[web-eclipse] Eclipse - The Eclipse Foundation open source community<br />

80


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

website.; http://www.eclipse.org/; Stand 13.04.2011.<br />

[web-eclipse-wiki-faq-what] FAQ What is Eclipse? - Eclipsepedia;<br />

http://wiki.eclipse.org/FAQ_What_is_Eclipse%3F; Stand 13.04.2011.<br />

[web-eclipse-wiki-gef-faq] GEF/Developer FAQ – Eclipsepedia;<br />

http://wiki.eclipse.org/GEF/Developer_FAQ; Stand 12.09.2011.<br />

[web-eclipse-equinox] Equinox; http://www.eclipse.org/equinox/; Stand<br />

13.04.2011.<br />

[web-eclipse-gef] GEF; http://www.eclipse.org/gef/; Stand 12.09.2011.<br />

[web-eclipse-emf] Eclipse Modeling - EMF – Home;<br />

http://www.eclipse.org/modeling/emf/; Stand 12.09.2011.<br />

[web-osgi-spec-4] OSGi Alliance | Specifications / HomePage;<br />

http://www.osgi.org/Specifications/HomePage?section=2#Release4; Stand<br />

13.04.2011.<br />

[web-aneeshkumarkb] OSGi - The Dynamic Module System for Java;<br />

http://aneeshkumarkb.blogspot.com/; Stand 13.04.2011.<br />

[web-omg] Object Management Group; http://www.omg.org/; Stand<br />

26.10.2011.<br />

[web-uml] Object Management Group – UML; http://www.uml.org/; Stand<br />

30.09.2011.<br />

[web-duden-stereotyp] Duden | Stereotyp | Bedeutung, Rechtschreibung,<br />

Grammatik; http://www.duden.de/rechtschreibung/Stereotyp; Stand<br />

09.10.2011.<br />

Literaturreferenzen<br />

[lit-chapter-7-uwe] Nora Koch, Alexander Knapp, Gefei Zhang, Hubert<br />

Baumeister, UML-based Web Engineering: An Approach based on Standards<br />

(book chapter). In Web Engineering: Modelling and Implementing Web<br />

Applications. Gustavo Rossi, Oscar Pastor, Daniel Schwabe and Luis Olsina<br />

(Eds.), chapter 7, 157-191, © Springer, HCI, 2008. Im Web:<br />

http://uwe.pst.ifi.lmu.de/publicationsByTopic.html (direkt:<br />

http://www.pst.ifi.lmu.de/veroeffentlichungen/uwe.pdf).<br />

[lit-uml-infra] UML Infrastructure Specification, v2.3; OMG Document Number:<br />

81


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

formal/2010-05-03; Im Web: http://www.omg.org/spec/UML/2.3/ (direkt:<br />

http://www.omg.org/spec/UML/2.3/Infrastructure/PDF/).<br />

[lit-uml-super] UML Superstructure Specification, v2.3; OMG Document<br />

Number: formal/2010-05-05; Im Web: http://www.omg.org/spec/UML/2.3/<br />

(direkt: http://www.omg.org/spec/UML/2.3/Superstructure/PDF/).<br />

[lit-ocl] Object Constraint Language, v2.3; OMG Document Number: ptc/2010-<br />

11-42; Im Web: http://www.omg.org/spec/OCL/2.3/Beta2/ (direkt:<br />

http://www.omg.org/spec/OCL/2.3/Beta2/PDF).<br />

[lit-uwe-meta] Christian Kroiß, Nora Koch and Sergej Kozuruba; UWE<br />

Metamodel and Profile: User Guide and Reference. Version 1.9; <strong>LMU</strong> Technical<br />

Report 1101, April 2011; Im Web:<br />

http://uwe.pst.ifi.lmu.de/publicationsMetamodelAndProfile.html (direkt:<br />

http://uwe.pst.ifi.lmu.de/download/UWE-Metamodel-Reference-v1.9.pdf).<br />

Sourcecodereferenzen<br />

[src-topcased-ModelerPaletteManager] TOPCASED-Source, topcased-mf, Klasse<br />

ModelerPaletteManager;<br />

http://gforge.enseeiht.fr/scm/viewvc.php/plugins/modeler/org.topcased.model<br />

er/src/org/topcased/modeler/editor/palette/ModelerPaletteManager.java?<br />

revision=1.3&root=topcased-mf&view=markup&pathrev=HEAD<br />

[src-topcased-AbstractCreationUtils] TOPCASED-Source, topcased-mf, Klasse<br />

AbstractCreationUtils;<br />

http://gforge.enseeiht.fr/scm/viewvc.php/plugins/modeler/org.topcased. model<br />

er/src/org/topcased/modeler/editor/AbstractCreationUtils.java?<br />

diff_format=u&revision=1.9&root=topcased-mf&view=markup<br />

[src-topcased-DropListenersManager] TOPCASED-Source, topcased-req, Klasse<br />

DropListenersManager;<br />

http://gforge.enseeiht.fr/scm/viewvc.php/plugins/org.topcased.requirement.bu<br />

ndle.topcased/src/org/topcased/requirement/bundle/topcased/services/DropLis<br />

tenersManager.java?root=topcased-req&view=markup<br />

[src-topcased-moskitt-UMLDiagramsPage] TOPCASED/MOSKitt-Source, Klasse<br />

UMLDiagramsPage; http://subversion.moskitt.org/gvcaseadaptations/topcased/trunk/org.topcased.modeler.uml/src/org/topcased/model<br />

er/uml/wizards/UMLDiagramsPage.java<br />

[src-topcased-DiagramsPage] TOPCASED-Source, topcased-mf, Klasse<br />

DiagramsPage;<br />

82


Erweiterung eines Open Source-Werkzeugs für die UML-basierte Modellierung von Webanwendungen<br />

http://gforge.enseeiht.fr/scm/viewvc.php/plugins/modeler/org.topcased.model<br />

er/src/org/topcased/modeler/wizards/DiagramsPage.java?<br />

diff_format=u&revision=1.33&root=topcased-mf&view=markup<br />

[src-topcased-moskitt-NewUMLDiagrams] TOPCASED/MOSKitt-Source, Klasse<br />

NewUMLDiagrams; http://subversion.moskitt.org/gvcaseadaptations/topcased/trunk/org.topcased.modeler.uml/src/org/topcased/model<br />

er/uml/wizards/NewUMLDiagrams.java<br />

83

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!