thesis - LMU
thesis - LMU
thesis - LMU
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