paper - Business Informatics Group
Transcrição
paper - Business Informatics Group
TU Wien Business Informatics Group Institut für Softwaretechnik und Interaktive Systeme Softwareentwicklung mit UML und Eclipse Diplomarbeit zur Erlangung des akademischen Grades eines Diplom Ingenieurs (Dipl. Ing.) eingereicht bei o. Univ.-Prof. Mag. Dipl.-Ing. Dr. Gerti Kappel Christian Sokop Wien, Oktober 2008 Eidesstattliche Erklärung Ich erkläre an Eides statt, dass ich die vorliegende Arbeit selbständig und ohne fremde Hilfe verfasst, andere als die angegebenen Quellen nicht benützt und die den benutzten Quellen wörtlich oder inhaltlich entnommenen Stellen als solche kenntlich gemacht habe. <Ort, Datum> <Eigenhändige Unterschrift> Danksagung Mein besonderer Dank geht an meine gesamte Familie, insbesondere an meine Eltern, Eva und Alfred Sokop, die mich zuerst finanziell und in weiterer Folge emotional unterstützt haben. Weiters möchte ich mich bei Frau Gerti Kappel für die fachliche Betreuung dieser Arbeit, und Daniel Stevens für die Hilfestellung bei der englischen Übersetzung bedanken. Zum Abschluss möchte ich mich bei all meinen Freunden und Kollegen für die schönen, kurzweiligen, intensiven, feucht-fröhlichen und besten Stunden während meiner Studienzeit bedanken, und die Hoffnung aussprechen, dass es für immer so lustig weitergeht! Abstract Today not only the world but also the requirements for computer-based applications change permanently. In addition to these requirements, the development of technologies and tools also continues. Modern and object-oriented technologies, such as UML and Java meet today’s high standards. Distributed systems and web applications respectively represent a wide field in software development. In relation to UML, an excellent way to develop such systems is the object-oriented programming language Java, or more precisely the Java Enterprise Edition. This topic, however, has been thoroughly discussed in [Soko07]. Further tools of today’s projects are integrated development environments. When we think of Java software development we can find the project „eclipse“ [Ecli08] being a very popular and freely accessible development environment. The advantage of this particular development environment is a distinctive plugin management which allows the project to be easily upgraded. This thesis evaluates projects and plugins respectively for the development environment „eclipse“ which support UML 2.0 and therefore assist in the development. Furthermore, this thesis assesses whether the tested plugins allow an automated code generation by exemplifying an application. Finally, this thesis shall also find cost-efficient alternatives to the development environments by IBM (IBM Rational Application Developer [IBM08]) and Omondo (Eclipse Uml [Omon08]). Kurzfassung In der heutigen Zeit ändern sich Anforderungen an Anwendungen laufend. Neben den Anforderungen haben sich natürlich auch die Hilfsmitteln und Technologien weiterentwickelt. Moderne objektorientierte Sprachen, wie z.B. UML und Java, werden den heutigen Ansprüchen gerecht. Zu einem großen Teilgebiet der Softwareentwicklung zählen verteilte Systeme bzw. Web-Anwendungen. Die objektorientierte Programmiersprache Java, oder besser gesagt die Java Enterprise Edition, in Zusammenhang mit UML eignet sich hervorragend solche Systeme zu entwickeln. Dieses Thema wurde ausführlich in [Soko07] behandelt. Als weiteres Hilfsmittel wird heutzutage in jedem Projekt eine Entwicklungsumgebung verwendet. Eine sehr verbreitete und frei zugängliche Entwicklungsumgebung im Bereich der Java Softwareentwicklung ist das Projekt „eclipse“ [Ecli08]. Der Vorteil dieser Entwicklungsumgebung ist, dass sie durch ein ausgeprägtes Pluginmanagement leicht erweiterbar ist. Diese Arbeit evaluiert Projekte bzw. Plugins für die Entwicklungsumgebung „eclipse“, die UML 2.0 unterstützen und dadurch bei der Entwicklung behilflich sind. Weiters soll diese Arbeit evaluieren, inwieweit die getesteten Plugins eine automatisierte Codegenerierung erlauben. Dies soll anhand einer kleinen Beispielanwendung demonstriert werden. Ein weiteres Ziel dieser Arbeit ist es kostengünstige Alternativen zu den Entwicklungsumgebungen von IBM (IBM Rational Application Developer [IBM08]) und Omondo (Eclipse Uml [Omon08]) zu finden. Inhaltsverzeichnis Einleitung.................................................................................................................. 10 1.1 Motivation ............................................................................................... 10 1.2 Problemstellung....................................................................................... 11 1.3 Ziel der Arbeit ......................................................................................... 12 Technologien............................................................................................................. 14 2.1 UML 2.0 - Unified Modeling Language ................................................. 14 2.1.1 Grundlagen von UML 2.0 .......................................................... 15 2.1.2 Diagrammübersicht .................................................................... 15 2.2 (Java) Enterprise Anwendungen ............................................................. 19 2.2.1 Designpatterns............................................................................ 19 2.2.2 Java EE - Java Enterprise Edition .............................................. 22 2.3 Die Entwicklungsumgebung Eclipse ...................................................... 24 2.3.1 Geschichte .................................................................................. 24 2.3.2 Arbeitsweise............................................................................... 25 2.3.3 Eclipse Plugins ........................................................................... 26 2.4 Begleitendes Beispiel .............................................................................. 27 Softwareentwicklung mit UML .............................................................................. 28 3.1 Anwendungsfalldiagramm ...................................................................... 28 3.2 Aktivitätsdiagramm................................................................................. 30 3.2.1 Geschäftsprozessmodellierung................................................... 31 3.2.2 Anwendungsfallbeschreibung .................................................... 31 3.2.3 Implementierung einer Operation .............................................. 33 3.3 Zustandsdiagramm .................................................................................. 34 3.4 Sequenzdiagramm ................................................................................... 37 3.4.1 Architekturbeschreibung ............................................................ 38 3.4.2 Designpatterns............................................................................ 39 3.4.3 Detailmodellierung..................................................................... 40 3.5 Kommunikationsdiagramm..................................................................... 41 3.6 Zeitdiagramm .......................................................................................... 42 3.7 Interaktionsübersichtsdiagramm ............................................................. 43 3.8 Klassendiagramm .................................................................................... 43 3.8.1 Konzeptuell-analytische Modellierung ...................................... 44 3.8.2 Logische, desgin-orientierte Modellierung ................................ 45 3.9 Paketdiagramm........................................................................................ 47 3.9.1 Funktionale Gliederung.............................................................. 47 3.9.2 Definition von Schichten ........................................................... 49 3.10 Objektdiagramm...................................................................................... 50 3.11 Kompositionsstrukturdiagramm.............................................................. 52 3.11.1 Kompositionsstrukturdiagramm für Klassen ............................. 53 3.11.2 Kompositionsstrukturdiagramm für Kollaborationen ................ 55 3.12 Komponentendiagramm .......................................................................... 56 3.13 Verteilungsdiagramm .............................................................................. 59 UML Erweiterungen für Eclipse ............................................................................ 61 4.1 Einleitung ................................................................................................ 61 4.2 MyEclipse ............................................................................................... 65 4.2.1 Anwendungsfalldiagramm ......................................................... 66 4.2.2 Klassen- und Paketdiagramm..................................................... 68 4.2.3 Sequenz- und Kollaborationsdiagramm..................................... 70 4.2.4 Weitere Diagrammarten ............................................................. 71 4.2.5 Zusammenfassung...................................................................... 74 4.3 UML Editoren ......................................................................................... 74 4.3.1 Blueprint Software Modeler....................................................... 74 4.3.2 Violet UML Editor..................................................................... 78 4.4 Codegeneratoren ..................................................................................... 79 4.4.1 Apollo for Eclipse ...................................................................... 79 4.4.2 GreenUML ................................................................................. 83 4.5 Erweiterte Codegeneratoren.................................................................... 85 4.5.1 eUML2 Modeler ........................................................................ 85 4.5.2 AmaterasUML ........................................................................... 90 4.5.3 SlimeUML ................................................................................. 93 Zusammenfassung und Ausblick............................................................................ 95 5.1 Zusammenfassung................................................................................... 95 5.2 Ausblick .................................................................................................. 96 Literaturverzeichnis................................................................................................. 97 Abbildungsverzeichnis Abbildung 1: Übersicht der Diagramme in UML 2.0 [Hitz05] ................................. 16 Abbildung 2: Übersicht 4-Tier Architektur (basiert auf [Lang06]) ........................... 20 Abbildung 3: Eclipse Architektur [Schr02] ............................................................... 25 Abbildung 4: Anwendungsfalldiagramm Übersicht .................................................. 30 Abbildung 5: Aktivitätsdiagramm des Anwendungsfall „Bestellung durchführen“.. 32 Abbildung 6: Aktivitätsdiagramm Bubble Sort ......................................................... 34 Abbildung 7: Protokollzustandsdiagramm „Shopping Cart“..................................... 36 Abbildung 8: Anwendungen von Sequenzdiagrammen im Projekt [Rupp05] .......... 37 Abbildung 9: Sequenzdiagramm 4-Schichtenmodell ................................................ 39 Abbildung 10: Sequenzdiagramm DAO-Pattern (basiert auf [Sun08]) ..................... 40 Abbildung 11: Sequenzdiagramm Lebenszyklus Servlet (basiert auf [Ahme02])..... 41 Abbildung 12: Klassendiagramm DAO-Pattern [Sun08] .......................................... 45 Abbildung 13: Klassendiagramm Domainmodell...................................................... 46 Abbildung 14: Paketdiagramm Shopsystem Übersicht ............................................. 48 Abbildung 15: Paketdiagramm Übersicht Enterprise Anwendung............................ 49 Abbildung 16: Objektdiagramm Testdaten Domänenmodellklassendiagramm ........ 52 Abbildung 17: Kompositionsstrukturdiagramm Kontextklasse „Customer“............. 54 Abbildung 18: Kompositionsstrukturdiagramm DAO-Pattern .................................. 55 Abbildung 19: Kompositionsstrukturdiagramm Anwendung DAO-Pattern.............. 56 Abbildung 20: Komponentendiagramm Java Enterprise Anwendung....................... 57 Abbildung 21: Komponentendiagramm Java EE Web-Anwendung ......................... 58 Abbildung 22: Verteilungsdiagramm Java EE Web-Anwendung ............................. 60 Abbildung 23: MyEclipse: Benutzeransicht .............................................................. 66 Abbildung 24: MyEclispe: Anwendungsfalldiagramm ............................................. 67 Abbildung 25: MyEclipse: Klassendiagramm ........................................................... 68 Abbildung 26: MyEclipse: Klassendiagramm Reverse Engineering......................... 70 Abbildung 27: MyEclipse: Sequenzdiagramm .......................................................... 71 Abbildung 28: MyEclipse: Aktivitätsdiagramm ........................................................ 72 Abbildung 29: MyEclipse: Zustandsdiagramm ......................................................... 73 Abbildung 30: MyEclipse: Verteilungsdiagramm ..................................................... 73 Abbildung 31: Blueprint Software Modeler: Arbeitsbereich..................................... 75 Abbildung 32: Blueprint Software Modeler: Anwendungsfalldiagramm.................. 76 Abbildung 33: Blueprint Software Modeler: Klassendiagramm ............................... 77 Abbildung 34: Apollo for eclipse: Arbeitsumgebung................................................ 80 Abbildung 35: Apollo for eclipse: Klassendiagramm................................................ 81 Abbildung 36: Apollo for eclipse: Klassendiagramm................................................ 82 Abbildung 37: GreenUML: Benutzeransicht ............................................................. 83 Abbildung 38: GreenUML: Reverse Engineering ..................................................... 84 Abbildung 39: eUML: Benutzeroberfläche ............................................................... 86 Abbildung 40: eUML: Erstellen einer Assoziation.................................................... 87 Abbildung 41: eUML: Klassendiagramm.................................................................. 88 Abbildung 42: eUML: Sequenzdiagramm ................................................................. 89 Abbildung 43: AmaterasUML: Anwendungsfalldiagramm ...................................... 91 Abbildung 44: AmaterasUML: Ansicht Klassendiagramm....................................... 91 Abbildung 45: AmaterasUML: Sequenzdiagramm ................................................... 92 Abbildung 46: SlimeUML: Anwendungsfalldiagramm............................................. 93 Kapitel 1 Einleitung Im Folgenden werden Motivation, Problemstellung und Ziele der vorliegenden Arbeit erläutert. 1.1 Motivation In der heutigen Zeit ändern sich Anforderungen an Anwendungen laufend. Neben den Anforderungen haben sich natürlich auch die Hilfsmitteln und Technologien weiterentwickelt. Moderne objektorientierte Sprachen wie z.B. UML und Java werden den heutigen Ansprüchen gerecht. Als weiteres Hilfsmittel wird heutzutage in jedem Projekt eine Entwicklungsumgebung verwendet. Eine sehr verbreitete und frei zugängliche Entwicklungsumgebung im Bereich der Java Softwareentwicklung ist das Projekt „eclipse“ [Ecli08]. Zu einem großen Teilgebiet der Softwareentwicklung zählen verteilte Systeme bzw. Web-Anwendungen. Die objektorientierte Programmiersprache Java, oder besser gesagt die Java Enterprise Edition, in Zusammenhang mit UML eignet sich hervorragend solche Systeme zu entwickeln. Dieses Thema wurde ausführlich in [Soko07] behandelt. Die aktuelle Marktlage zeigt, dass einige Tools angeboten werden, die bei der Modellierung mit UML helfen sollen. Ein gutes Beispiel ist das Open Source Projekt StarUML [Star08]. Für die Entwicklung von Java Anwendungen werden Entwick- Einleitung Seite 11 lungsumgebungen, wie z.B. „eclipse“ angeboten. Die Entwicklungsumgebung „eclipse“ bietet ein Pluginmanagement an und lässt sich dadurch schnell und einfach erweitern. Mittlerweile gibt es auch eine Reihe von UML Plugins für diese Entwicklungsumgebung. Wie mehrere Jahre praktischer Erfahrung gezeigt haben, werden Java Enterprise Anwendungen sehr technologiegetrieben entwickelt. In den meisten Fällen beginnen Programmierer mit der Implementierung zu einem Zeitpunkt im Projekt, zu dem nur wenige Anforderungen existieren und die existierenden Anforderungen wenig bis gar nicht analysiert wurden. Im Laufe der Zeit werden mehr und mehr Anforderungen bekannt, die sofort umgesetzt werden. Dadurch ist, vor allem in großen Projekten, ein ständiges Neuorganisieren der Teilprojekte notwendig und die Implementierung wird immer unübersichtlicher. Diese Form der Implementierung ist mit hohem Zeitund Ressourcenaufwand verbunden. Als unterstützendes „Werkzeug“, um dieses Szenario zu vermeiden, dient die objektorientierte Modellierungssprache UML. Sie bietet Diagramme um Softwaresysteme zu modellieren. Die Entwicklungsumgebung hat, unter anderem, die Aufgabe diese beiden Technologien zu verbinden. Kommt es in einem großen System zu einer kleinen Änderung (wie z.B. ein neues Attribut), so muss sowohl der Source Code, wie auch das Diagramm (z.B. Klassendiagramm) angepasst werden. Anzustreben im Sinne der effektiven und modellgetriebenen Entwicklung ist eine Änderung an einer Stelle im Projekt. Auch in diesem Fall sollte die Entwicklungsumgebung hilfreich sein. 1.2 Problemstellung Das Hauptproblem bei einer Softwareentwicklung ist die Verwendung von mehreren Tools. Auf der einen Seite wird eine Entwicklungsumgebung, auf der anderen Seite werde verschiedene Modellierungswerkzeuge für Dokumentation und Modellierung der Projekte eingesetzt. Dadurch kommt es häufig vor, dass diese Tools nicht zusammenspielen und dadurch der doppelte Aufwand bei der Entwicklung entsteht. Einleitung 1.3 Seite 12 Ziel der Arbeit Ziel dieser Arbeit ist die Evaluierung von Projekten bzw. Plugins für die Entwicklungsumgebung „eclipse“, die UML 2.0 unterstützen und sich in die Entwicklungsumgebung integrieren lassen und dadurch bei der Entwicklung behilflich sind. Weiters soll diese Arbeit evaluieren, inwieweit die getesteten Plugins eine automatisierte Codegenerierung erlauben. Dies soll anhand einer kleinen Beispielanwendung demonstriert werden. Ein weiteres Ziel dieser Arbeit ist es kostengünstige Alternativen zu den Entwicklungsumgebungen von IBM (IBM Rational Application Developer [IBM08]) und Omondo (Eclipse Uml [Omon08]) zu finden. Im ersten Teil der Arbeit wird auf die Einsatzmöglichkeiten von UML 2.0 in der Entwicklung von Java Enterprise Anwendungen eingegangen. Im zweiten Teil werden folgende Plugins untersucht: • Apollo for Eclipse [Apol08]: Dieses Plugin unterstützt eine Mischung aus dem Paket- und Klassendiagramm mit der Möglichkeit Code automatisch generieren zu lassen. • AmaterasUML [Amat08]: Dieses Plugin unterstützt das Klassen-, Sequenzund Anwendungsfalldiagramm und die Möglichkeit der Codegenerierung bzw. Reverse Engineering aus dem Klassendiagramm. • Blueprint Software Modeler [Blue08]: Diese auf „eclispe“ basierende Entwicklungsumgebung bietet mit dem Klassen-, Paket-, Komponenten-, Kompositionsstruktur-, Objekt-, Anwendungsfall-, Aktivitäts-, Zustands- und Sequenzdiagramm die wichtigsten Diagrammarten an. • eUML [eUML08]: Dieses Plugin bietet Klassen-, Paket- und Sequenzdiagramme und die Möglichkeit der Codegenerierung aus Klassendiagrammen an. • green [gree08]: Dieses Plugin bietet nur das Klassendiagramm und eine automatisierte Codegenerierung bzw. Reverse Engineering an. • MyEclipse [Myec08]: Die auf „eclipse“ basierende Entwicklungsumgebung Einleitung Seite 13 „MyEclipse“ bietet neben der Unterstützung von UML eine Vielzahl von weiteren Plugins an, die für die Entwicklung von Enterprise Anwendung eine große Hilfe darstellen. Das integrierte UML Plugin unterstützt das Anwendungsfall-, Klassen-, Sequenz-, Kollaborations-, Zustands-, Aktivitätsund Verteilungsdiagramm. • Slime UML [slim08]: Dieses Plugin bietet eine volle Unterstützung von Klassen-, Paket- und Anwendungsfalldiagrammen an. Außerdem soll auch mit diesem Plugin eine automatische Anpassung der Diagramme bei Änderung des Codes erfolgen. • Violet UML Editor [Viol08]: Dieses Plugin bietet das Anwendungsfall-, Klassen-, Aktivitäts-, Sequenz-, Zustands- und Objektdiagramm an. Die Codegenerierung wird bei diesem Plugin nicht unterstützt. Die Arbeit verfolgt zwei Ziele. Einerseits soll ein Überblick über die Einsatzmöglichkeiten von UML 2.0 in Java Enterprise Anwendungen gegeben werden. Andererseits sollen die oben genannten Plugins vorgestellt werden. Dazu werden die Diagramme aus dem ersten Teil mit Hilfe der Plugins anhand einer Beispielanwendung umgesetzt. Kapitel 2 Technologien Das folgende Kapitel soll eine Einleitung über die behandelten Technologien geben. Einige Teile dieses Kapitels basieren auf [Soko07]. 2.1 UML 2.0 - Unified Modeling Language Als kurze Definition von der Unified Modeling Language gibt [Rupp05] eine „verbreitete Notation, um Softwaresysteme zu analysieren und zu entwerfen“ an. Die in dieser Arbeit verwendete Version 2.0 wurde von der Object Management Group OMG im April 2005 offiziell verabschiedet [Rupp05]. Die aktuellste Version (Stand Juni 2008) von UML ist 2.1.2 und wurde im November 2007 veröffentlicht [OMG07]. Die Object Management Group ist ein internationales Konsortium, welches sich um die Entwicklung von Standards kümmert. Neben der objektorientierten Modellierungssprache UML wurde unter anderem der verbreitete Standard CORBA1 von OMG entwickelt [OMG08]. Neben einigen Änderungen und Erweiterungen, werden in UML 2.0 im Vergleich zur Version 1, auch einige neue Diagramme beschrieben. 1 Common Object Request Broker Architecture (plattformunabhängige Architektur für verteilte An- wendungen [OMG08a]) Technologien Seite 15 2.1.1 Grundlagen von UML 2.0 UML gilt als Modellierungssprache und kann über den gesamten Softwareentwicklungsprozess hinweg verwendet werden. Dadurch ist UML unabhängig von Vorgehensmodellen für die Softwareentwicklung und hat auch nicht das Ziel ein eigenes, neues Vorgehensmodell zu definieren. Weiters soll UML unabhängig von Entwicklungswerkzeugen und Programmiersprachen, sowie mit verschiedensten Anwendungsbereichen kompatibel sein [Hitz05]. Diese Punkte spiegeln auch die Vorteile von UML wider. Die Einsatzmöglichkeiten reichen von der Analysephase bis hin zur Implementierungsbeschreibungen einer Softwareentwicklung. UML kann sowohl bei Echtzeitsystemen wie auch für verteilte Systeme angewendet werden. Praktische Modellierung mit StarUML Die in Kapitel 3 gezeigten Diagramme wurden, soweit wie möglich, mit dem frei verfügbaren Tool StarUML [Star08] modelliert. Dieses Produkt wurde gewählt, da es eine Vielzahl der zu modellierenden Diagramme unterstützt und im Gegensatz zu vielen anderen Modellierungstools frei verfügbar ist [Reic06]. In weiterer Folge wurde versucht die in StarUML modellierten Diagramme mit Hilfe der Entwicklungsumgebung „eclipse“ [Ecli08] zu modellieren. 2.1.2 Diagrammübersicht Das folgende Kapitel soll einen kurzen Überblick über die 13 Diagrammarten von UML 2.0 geben. Prinzipiell kann in UML zwischen Verhaltens- und Strukturdiagrammen unterschieden werden. Mit Verhaltensdiagrammen wird, wie der Name schon sagt, das Verhalten eines Systems modelliert. Mit Verhaltensdiagrammen werden die dynamischen Aspekte eines Systems beschrieben. Mit Hilfe von Strukturdiagrammen werden die statischen und strukturellen Aspekte eines Systems modelliert [Hitz05]. Zu den Strukturdiagrammen zählen in UML 2.0 Klassen-, Objekt-, Paket-, Kompositionsstruktur-, Komponenten- und Verteilungsdiagramme. Bei Verhaltensdiagrammen wird zwischen Anwendungsfall-, Aktivitäts-, Zustands- und Interaktionsdiagrammen unterschieden. Interaktionsdiagramme werden noch in Sequenz-, Kommunikations-, Zeit- und Interaktionsübersichtsdiagramme eingeteilt. Technologien Seite 16 Die Grenze zwischen den Diagrammen ist fließend. So ist es z.B. möglich Teile eines Klassendiagramms in einem Paketdiagramm oder umgekehrt zu modellieren [Hitz05]. Abbildung 1 zeigt eine Übersicht über die Diagrammarten in UML 2.0. Abbildung 1: Übersicht der Diagramme in UML 2.0 [Hitz05] Verhaltensdiagramme in UML 2.0 UML 2.0 beschreibt folgende Verhaltensdiagramme: • Anwendungsfalldiagramm: Das Anwendungsfalldiagramm beschreibt die Anwendung in einer hohen Abstraktionsebene. Mit Hilfe dieses Diagramms wird der Zusammenhang zwischen Aktoren und Anwendungsfällen beschrieben. Ein Anwendungsfall ist eine „abgeschlossene, zusammenhängende Einheit, welche einen Teil der Funktionalität des Systems repräsentiert“ [Zuse01]. • Aktivitätsdiagramm: Das Aktivitätsdiagramm dient für die Modellierung von Prozessen und Software [Hitz05]. Diese Diagrammart wurde zum Vergleich zu älteren UML Definitionen enorm verändert und erweitert. Es beschreibt die gesamten (Teil-)Abläufe in einem System mit Hilfe der zeitlichen Abfolge von Aktivitäten, die im System passieren. Technologien Seite 17 • Zustandsdiagramm: Beim Zustandsdiagramm werden Zustände und Übergänge von Zuständen im System modelliert. Eine Änderung des Zustands kann vom System oder von einem Aktor außerhalb des Systems bestimmt werden [Rupp05]. • Interaktionsdiagramm: Das Interaktionsdiagramm ist kein eigenes Diagramm, sondern der Überbegriff für vier weitere Diagramme. Folgende Interaktionsdiagramme, als Teil der Verhaltensdiagramme werden in UML 2.0 unterschieden: • Sequenzdiagramm: Mit Sequenzdiagrammen werden Interaktionen zwischen Objekten modelliert. Dabei steht die zeitliche Abfolge der Nachrichten im Vordergrund [Hitz05]. Mit dem Sequenzdiagramm soll die Frage „Wie läuft die Kommunikation in meinen System ab?“ [Rupp05] beantwortet werden. Das Sequenzdiagramm ist das meistverwendete unter den Interaktionsdiagrammen [Rupp05]. • Kommunikationsdiagramm: Das Kommunikationsdiagramm beschreibt, wie auch das Sequenzdiagramm, Interaktionen zwischen Objekten. Bei dieser Diagrammart stehen allerdings die strukturellen Beziehungen der Objekte zueinander im Vordergrund [Hitz05]. • Zeitdiagramm: Das Zeitdiagramm dient zum Modellieren von Änderungen der Zustände von Objekten. Besonders geeignet ist diese Diagrammart für die Modellierung von Systemen mit zeitkritischem Verhalten (Echtzeitsysteme) [Hitz05]. • Interaktionsübersichtsdiagramm: Das Interaktionsübersichtsdiagramm ist eine Variante des Aktivitätsdiagramms. Es soll den Zusammenhang zwischen Interaktionen zeigen. Das Interaktionsübersichtsdiagramm soll die Frage „In welcher Reihenfolge und unter welchen Bedingungen finden Interaktionen statt?“ [Rupp05] beantworten. Technologien Seite 18 Strukturdiagramme in UML 2.0 Folgende Diagrammarten werden in UML 2.0 der Strukturmodellierung zugeordnet: • Klassendiagramm: Das Klassendiagramm beschreibt die strukturellen Aspekte des zu entwickelten Systems in Form von Klassen und Schnittstellen (Interfaces). Außerdem werden Beziehungen zwischen Klassen und Interfaces modelliert [Hitz05]. Ein Klassendiagramm kann stark durch seine Abstraktionsebene unterschieden werden. So ist es möglich einen groben Überblick über das Gesamtsystem zu geben. Ein Klassendiagramm kann aber auch eine detaillierte Darstellung der Klassen im System geben und dadurch als Implementierungsgrundlage dienen. Dieser Aspekt spielt vor allem bei der Codegenerierung eine große Rolle. Das Klassendiagramm soll die Frage „Wie sind die Daten und das Verhalten meines Systems im Detail strukturiert?“ [Rupp05] beantworten. • Paketdiagramm: Das Paketdiagramm dient zur strukturellen Darstellung des Systems. Auch bei diesem Diagramm können verschiedene Abstraktionsebenen unterschieden werden. Mit Hilfe dieses Diagramms soll die Komplexität des Systems reduziert werden, indem es in mehrere Pakete aufgeteilt wird [Hitz05]. • Objektdiagramm: Das Objektdiagramm ist dem Klassendiagramm sehr ähnlich und unterscheidet sich dadurch, dass mit Hilfe dieses Diagramms nicht die Klassen, sondern Objekte (Instanzen von Klassen) modelliert werden. Das Objektdiagramm bietet einen Ausschnitt eines prototypischen bzw. exemplarischen Systems [Hitz05]. • Kompositionsstrukturdiagramm: Das Kompositionsstrukturdiagramm wurde in der UML Version 2.0 neu eingeführt. Es bietet die Möglichkeit die interne Struktur einer Klasse und Beziehungen einer Klasse zu anderen Teilen des Systems darzustellen [Rupp05]. • Komponentendiagramm: Das Komponentendiagramm bietet die Möglichkeit Komponenten und deren Zusammenhänge zu definieren. Eine Komponente kann dabei sowohl eine Klasse, aber auch eine systemspezifische Konfigurationsdatei sein. Es soll die Frage „Wie ist mein System strukturiert und wie Technologien Seite 19 werden diese Strukturen erzeugt?“ [Rupp05] beantworten. • Verteilungsdiagramm: Mit dem Verteilungsdiagramm kann die eingesetzte Hardwaretopologie und das zugeordnete Laufzeitsystem, sowie eine Verteilung der Komponenten modelliert werden [Hitz05]. 2.2 (Java) Enterprise Anwendungen Das folgende Kapitel soll einen Überblick über Enterprise Anwendungen geben. Als Definition von Java Enterprise Anwendungen, kann man sagen, dass es sich um Anwendungen handelt, die mit der Java Enterprise Edition (Java EE) implementiert sind. Java EE könnte man in einem Satz als das „am weitesten verbreitete ‚Betriebssystem’ für Webanwendungen“ [Star05] beschreiben. Ein wichtiger Punkt in Enterprise Anwendungen ist es, sich an gewisse Vorgaben (so genannte Designpatterns) zu halten. Die wichtigsten werden in Kapitel 2.2.1 erklärt. 2.2.1 Designpatterns Ein Pattern (Entwurfsmuster) ist die „best practice“ zum Lösen eines bestimmten, wiederkehrenden Problems. Das heißt ein Pattern beschreibt ein wiederkehrendes Problem und stellt eine Möglichkeit für eine Lösung dar [Mari02]. Bekannt in diesem Bereich wurde die so genannte „Gang of Four“ (GoF), die in ihrem Buch [Gamm95] 23 verschiedene Patterns vorstellt. Eines der bekanntesten Entwurfspatterns ist das so genannte Model-View-Controller (MVC) Pattern, welches eine Trennung zwischen Domainobjekten (Model), der Anzeige (View) und der Businesslogik (Controller) vorsieht. Weitere Designpattern, vor allem Pattern in der Softwarearchitektur, werden in [Busc96] beschrieben. Grundlegende Architektur einer Enterprise Anwendung Die grundsätzliche Architektur einer Enterprise Anwendung ist die so genannte 4Tier-Architecture (4-Schichten-Architektur). Laut [Lang06] gilt die 4-SchichtenArchitektur seit dem Internet Boom Mitte der 90er Jahre als „State-of-the-art- Technologien Seite 20 Architektur“ für webbasierte Anwendungen. Abbildung 2 zeigt eine graphische Darstellung der 4-Tier-Architektur: Abbildung 2: Übersicht 4-Tier Architektur (basiert auf [Lang06]) Die vier Schichten (Ebenen) werden wie folgt eingeteilt [Lang06]: • Visualisierungsebene (Web-Client): Diese Ebene nimmt Eingaben des Benutzers entgegen und gibt diese an die nächste Schicht weiter. Nach der Verarbeitung werden Daten von der nächsten Schicht entgegen genommen und für den Benutzer gerecht dargestellt. • Präsentationsebene (Web-Server): Diese Ebene verarbeitet und prüft die vom Benutzer eingegebenen Daten und schickt diese an die dritte Schicht weiter. In die andere Richtung werden die Daten von der nächsten Ebene empfangen und für die Visualisierungsebene vorbereitet. • Geschäftslogik (Anwendungsserver): Die Geschäftslogik stellt das Herzstück der Enterprise Anwendung dar. In dieser Ebene werden die Daten verarbeitet und alle Prozesse, die die eigentliche Anwendung betreffen, implementiert. Zu speichernde Daten werden an die nächste Schicht weitergegeben. Benötigte Daten von der vierten Ebene gelesen. • Datenbankebene (Datenbankserver): In dieser Ebene werden die Daten, die in der Geschäftlogik entstehen, gespeichert, bzw. Daten, die von der Ge- Technologien Seite 21 schäftslogik benötigt werden, geholt. Der Vorteil bei einer mehrstufigen Schichten Architektur liegt vor allen an der Skalierbarkeit und der einfachen Wartung der Anwendungen. So kann jede Schicht für sich auf einen eigenen physischen Rechner laufen und einzeln gewartet werden [Schä02]. Auch im Zusammenhang mit dem Entwicklungsprozess stellen mehrschichtige Architekturen einen Vorteil dar. Entwickler können relativ unabhängig von anderen Schichten ihren Teil implementieren. Weitere Designpattern einer Enterprise Anwendung Eine Liste von häufig verwendeten Patterns in Java Enterprise Anwendungen wird von der Firma Sun Microsystems zur Verfügung gestellt [Sun08]. Auf dieser Internetseite befinden sich auch ausführliche Erklärungen der verschiedenen Patterns. Im Rahmen der vorliegenden Arbeit soll, mit dem DAO-Pattern („Data Access Object“ - Datenzugriffsobjekt), ein weiteres Grundkonzept einer Enterprise Anwendung beschrieben werden. Dieses Pattern wird in weiterer Folge in Form von UML Diagrammen ausführlicher beschrieben. Das DAO-Pattern kapselt den Datenzugriff vom aufrufenden Objekt. Dazu wird ein Interface verwendet, welches die Zugriffs- bzw. Schreibemethoden für den Datenbestand beinhaltet. Die Implementierung dieses Interfaces kann auf verschiedene Arten erfolgen. Der Zugriff auf die Daten kann z.B. mittels Datenbankabfragen implementiert werden. Wird in einer späteren Phase im Projekt entschieden, als Datenquelle XML zu verwenden, so muss nur die Implementierung des Zugriffobjektes und die Konfiguration ausgetauscht werden. Die, meist komplexe, Business Logik bleibt hingegen unverändert. In der Praxis wird häufig ein Austausch der Implementierung für das Testen der Businessmethoden vorgenommen, wenn gewisse Objekte nicht in die Datenbank gespeichert werden sollen, sondern z.B. am Bildschirm ausgegeben oder in ein Testprotokoll geschrieben werden sollen. Technologien Seite 22 2.2.2 Java EE - Java Enterprise Edition Bei der Suche nach einer einfachen und kurzen Definition von der Java Enterprise Edition (Java EE) wird man in der freien Internet-Enzyklopädie Wikipedia fündig: Java Plattform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen. Es handelt sich also um eine Spezifikation einer Softwarearchitektur. Die offizielle und standardisierte Architekturbeschreibung der Java Enterprise Edition [Jend06], welche von der Firma Sun Microsystems verfasst wurde, besteht aus etwa 1.300 Seiten. Einen kurzen Einblick über Java EE Architektur soll die Einteilung der Kapitel zeigen [Jend06]: • Web-tier Technologien: Dieser Teilbereich der Java Enterprise Edition umfasst Standards wie z.B. Java Servlets, Java Server Pages oder Java Server Faces. • Web Service Technologien: In diesem Teil werden alle Modelle beschrieben, die sich mit Web Services befassen. • Enterprise Java Beans (EJB): Dieser Teil beschreibt, wie man die Business Logik einer Java Enterprise Anwendung entwickelt und umfasst Basistechnologien, wie Session beans und Message-driven beans. • Persistenz Technologien: Diese Kapiteln beschäftigen sich mit dem Datenbankzugriff von einer Java Enterprise Anwendung. • Plattform Services: Das letzte Kapitel beschäftigt sich mit Themen, die von vielen anderen Komponenten verwendet werden. Hier werden unter anderem die grundlegenden Technologien wie das Transaktionshandling oder die Sicherheit einer Java Enterprise Anwendung beschrieben. Technologien Seite 23 Zur Ausführung einer Java Enterprise Anwendung, welche Enterprise Java Beans verwendet, wird ein so genannter Anwendungsserver benötigt. Die gängigsten sind das Open Source Projekt JBoss2, sowie die kommerziell vertriebenen Anwendungsserver von Bea (Bea Weblogic3) und IBM (IBM Websphere4). Es existieren allerdings auch weitere Produkte am Markt. Motivation und Ziele Java Enterprise Anwendungen stellen eine Vereinfachung für die Entwicklung von Client-Server Anwendungen dar. Folgende Ziele werden dabei verfolgt [Schä02]: • Wiederverwendbarkeit: Die Implementierung von fachlichen Komponenten ist unabhängig von technischen Konzepten (Business Objekte). • Standardisierte Schnittstellen: Durch standardisierte Schnittstellen soll die Unabhängigkeit zu anderen Systemen ermöglicht werden. Dadurch wird die Enterprise Anwendung herstellerunabhängig. • Trennung zwischen fachlichen und technischen Aspekten: Jeder Entwickler hat eine spezielle Aufgabe im Projekt und ist durch standardisierte Schnittstellen unabhängig(er) von anderen Entwicklern. Vor- und Nachteile Der größte Vorteil an der Java Enterprise Edition bzw. an Java allgemein ist die Plattformunabhängigkeit und die laufende Weiterentwicklung und Anpassung der Programmiersprache. In der heutigen Zeit haben modern entwickelte webbasierten Systeme hohe Anforderungen, wie Skalierbarkeit und Wartbarkeit. Dadurch bietet sich eine mehrstufige 2 http://www.jboss.org 3 http://www.bea.com 4 http://www.ibm.com/websphere Technologien Seite 24 Systemarchitektur an, um Benutzersicht, Geschäftslogik und Datenbank zu trennen [Schä02]. Mit Hilfe der Java Enterprise Edition wird genau diese Trennung innerhalb einer Anwendung ermöglicht. Einer der größten Nachteile von Java Enterprise Anwendungen ist, dass es zwar einen Standard gibt, in der Praxis dieser Standard allerdings (leider) von jedem Anwendungsserver im Detail etwas anders implementiert wird [Schä02]. Ein weiterer Nachteil ist die Performanz einer Java Enterprise Anwendung. In vielen Fällen erfolgt bei jedem Aufruf ein Zugriff auf eine entfernte („remote“) Komponente. Dadurch müssen alle Objekte die verschickt werden zuerst serialisiert werden und danach beim Empfänger wieder zu einem vollständigen Objekt zusammengebaut werden. Dieser Vorgang benötigt einiges an Zeit und Rechenleistung [Schä02]. 2.3 Die Entwicklungsumgebung Eclipse Das folgende Kapitel soll einen kurzen Überblick über die Entwicklungsumgebung (IDE5) eclipse geben. „Eclipse ist eine Entwicklungsumgebung für ‚alles und nichts’ - das bedeutet, dass sie verwendet werden kann, um Software in einer beliebigen Programmiersprache zu entwickeln“ [Burn06]. Wie dieser einleitende Satz zeigen soll, ist Eclipse eine beliebte, state-of-the-art Entwicklungsumgebung mit einem breiten Einsetzgebiet. 2.3.1 Geschichte Die IDE eclipse ist der Nachfolger von IBM Visual Age for Java 4.0 und wurde von IBM im November 2001 als Open Source Projekt freigegeben. Seitdem wurde die Entwicklungsumgebung über 50 Millionen Mal heruntergeladen [Burn06] und ihre beliebtheit steigt von Tag zu Tag. Mittlerweile wird die Weiterentwicklung der Entwicklungsplattform von einer unabhängigen Organisation geführt, der „Eclipse Foundation“. 5 IDE = engl. Integrated development environment Seite 25 Technologien 2.3.2 Arbeitsweise Seit der Version 3.0 sind Erweiterungen (so genannten Plugins) die Basis von „eclipse“. Das heißt, wenn das Standardpaket („eclipse standard development kit“) von der Webseite [Ecli08] heruntergeladen wird, hat man nur den Kern der Entwicklungsumgebung mit den beiden vorinstallierten Plugins „Java Development Tooling“ (JDT) und „Plugin Developer Environment“ (PDE) [Tilm05]. Das Plugin „Java Development Tooling“ macht Eclipse zur Java Entwicklungsumgebung, die „Plugin Developer Environment“ erlaubt dem Benutzer weitere Plugins zu implementieren und installieren. Abbildung 3 zeigt die vier Hauptteile der Entwicklungsumgebung „eclipse“: Abbildung 3: Eclipse Architektur [Schr02] Die angedockten „New Tools“ in Abbildung 3 entsprechen den Plugins. Aufbauend auf die „Platform Runtime“ werden folgende Bestandteile unterschieden [Schr02]: • Workbench: Unter dem Workbench wird das graphische Interface verstanden. Das graphische Interface wird mit Hilfe von SWT (Standard Widgeting Toolkit) und JFace umgesetzt [Schr02]. • Workspace: Der Workspace ist die Verknüpfung der Entwicklungsumgebung mit dem Dateisystem. Der Benutzer wählt beim Starten der Umgebung einen Pfad aus, in dem sich alle seine Dateien befinden. • Help: Dieser Teil beinhaltet eine leicht (mit Hilfe von XML-Dateien) erweiterbare Hilfefunktion für Plugins. Technologien • Seite 26 Version and Configuration Management (VCM): Die Entwicklungsumgebung „eclipse“ stellt standardmäßig ein Versionierungssystem zur Verfügung. Dieses erlaubt dem Benutzer ein Einfaches einbinden von neuen Plugins und ein updaten von vorhandenen Plugins. 2.3.3 Eclipse Plugins Die gesamte Entwicklungsumgebung besteht aus Plugins. Alle Plugins werden in Java programmiert und bleiben damit plattformunabhängig. Beim Starten der Entwicklungsumgebung „eclipse“ wird in einem bestimmten Verzeichnis nach neuen Plugins gesucht, die geladen werden sollen [Schr02]. Grundsätzlich besteht jedes Plugin aus folgenden Dateien [Schr02]: • Manifest-Datei: Die Manifest Datei beinhaltet neben der Beschreibung des Plugins auch weitere Informationen, wie zum Beispiel die Art und Weise, wie das Plugin in die Entwicklungsumgebung „eclipse“ integriert werden soll. • Jar-Archiv: Dieses Java Archiv beinhaltet die ausführbaren Klassen, also die Implementierung des Plugins. • Weitere Ressourcen: In diesem Ordner des Plugins werden weitere Ressourcen wie Bilddateien oder Sprachdateien verwaltet. • Quellcode: Wenn das Plugin Open Source sein soll, beinhaltet dieser Bereich den Quellcode. Mittlerweile wird für beinahe jede Problemstellung ein geeignetes Plugin bereitgestellt. Alle offiziellen Eclipse Plugins sind auf einer Internetseite [Ecli08a] aufgelistet. Mit Stand Ende Mai 2008 werden 1068 verschiedene Plugins zu den verschiedensten Themengebieten angeboten. Technologien 2.4 Seite 27 Begleitendes Beispiel Als begeleitendes Beispiel wurde ein kleines Shopsystem implementiert. Dieses System wurde mit Hilfe von EJB 3.0 entwickelt. Als Datenbank dient eine MySql6 Datenbank und als Anwendungsserver JBoss. Dieses Shopsystem soll möglichst einfach aufgebaut sein. Als Präsentationsschicht wird eine einfache Weboberfläche verwendet. Es wurde darauf geachtet die oben beschriebene Schicht-Architektur zu verwenden. Folgende zwei Anwendungsfälle wurden implementiert: • Produkte verwalten: Ein Administrator hat die Möglichkeit Produkte anzulegen, zu löschen und zu ändern. Ein Produkt wird einer Produktgruppe zugeordnet. • Bestellung durchführen: Der Kunde, der als eindeutige Identifikation eine Emailadresse angibt, hat die Möglichkeit eine Bestellung durchzuführen. Dabei kann er beliebig viele Produkte in den Warenkorb legen und in weiterer Folge bestellen. Wurde die Bestellung durchgeführt wird ein Datensatz in die Datenbank geschrieben. Für die Entwicklung selbst wurde „MyEclipse“ verwendet. Es wurde außerdem auf die Verwendung von weiteren Frameworks verzichtet. 6 http://www.mysql.de Kapitel 3 Softwareentwicklung mit UML Im folgenden Kapitel wird das Zusammenspiel zwischen UML 2.0 und Java Enterprise Anwendungen beschrieben. Dabei wird jedes Diagramm einzeln evaluiert und auf seine Einsetzbarkeit geprüft. Einige Teile dieses Kapitels basieren auf [Soko07]. Die Unterkapiteln 3.1 bis 3.7 beziehen sich auf die Verhaltensmodellierung. Bei der Verhaltensmodellierung stehen die dynamischen Aspekte des Systems im Vordergrund [Hitz05]. Verhaltensmodelle können in jeder Phase des Projektes zum Einsatz kommen. Zur Verhaltensmodellierung zählen Anwendungsfall-, Aktivitäts-, Zustands-, Sequenz-, Kommunikations-, Zeit- und Interaktionsübersichtsdiagramme. Die Unterkaptitel 3.8 bis 3.13 beziehen sich auf die strukturelle Modellierung. Strukturdiagramme beschreiben - wie der Name schon sagt - die Struktur eines Systems. Strukturdiagramme bieten eine Vielzahl von Möglichkeiten, die von der Aufbaustruktur einer Klasse bis hin zur Gliederung vollständiger Architekturen und Systeme reichen [Rupp05]. Zu den Strukturdiagrammen zählen das Klassen-, Paket-, Objekt-, Kompositionsstruktur-, Komponenten- und Verteilungsdiagramm. 3.1 Anwendungsfalldiagramm Das Anwendungsfalldiagramm abstrahiert das zu entwickelte System und stellt es in Form vom Anwendungsfällen aus Sicht des Benutzers dar [Hitz05]. Mit einem Anwendungsfalldiagramm soll die Frage „Was soll mein geplantes System eigentlich leisten“ [Rupp05] beantwortet werden. In älteren Versionen von UML wurde das Anwendungsfalldiagramm als Strukturdiagramm geführt und nicht als Verhaltens- Softwareentwicklung mit UML Seite 29 diagramm. In einem Anwendungsfalldiagramm werden prinzipiell zwischen Aktoren und Anwendungsfällen unterschieden. Aktoren interagieren mit dem System, sind aber klar außerhalb des Systems angesiedelt [Hitz05]. Dabei kann es sich um Benutzer, aber auch um andere Systeme handeln. Ein Anwendungsfall ist eine abgeschlossene, zusammenhängende Einheit, welche einen Teil der Funktionalität des Systems repräsentiert [Zuse01]. Ein Anwendungsfalldiagramm ist ein guter Einstieg, um einen Überblick über das gesamte System zu geben und wird deshalb sehr früh, wenn nicht sogar als erstes, in einem Projekt modelliert. Das Anwendungsfalldiagramm wird in der Praxis öfters in Absprache mit dem Kunden erstellt. Beim Anwendungsfalldiagramm soll die Benutzer spezifische Ebene modelliert werden und ist deshalb eine sehr abstrakte, wenig detaillierte Sicht auf eine Enterprise Anwendung. Ein Anwendungsfalldiagramm wird meist in mehreren Iterationen entworfen. Das erste Diagramm gibt eine grobe Übersicht über das Gesamtsystem und enthält nur jene Anwendungsfälle, die der Grundfunktionalität des Systems entsprechen. In einem weiteren Schritt können diese Anwendungsfälle verfeinert werden. In vielen Fällen und auch von der Literatur empfohlen ([Zuse01], [Hitz05], …), ist es sinnvoll eine Anwendungsfallbeschreibung durchzuführen. Diese Beschreibung soll eine detaillierte Übersicht über den Anwendungsfall geben und enthält unter anderem eine Kurzbeschreibung, Vorbedingungen, Beschreibung des Ablaufs und Auswirkungen [Zuse01]. In UML wird keine Anwendungsfallbeschreibung vorgeschrieben. Anwendungsfälle können in UML 2.0 mit Hilfe der anderen Diagrammarten beschreiben werden, wie es die folgenden Kapiteln zeigen werden. Wie schon beschrieben stellt ein Anwendungsfalldiagramm eine graphische Übersicht über das System und seine Aktoren dar. Im begleitenden Beispiel sind Kunden und Administratoren die Aktoren der Enterprise Anwendung. Das Suchen von Anwendungsfällen geht meistens ein genaues studieren einer textuellen Beschreibung voraus. Verben in den Sätzen sind dabei mögliche Tätigkeiten und Ansätze für einen Anwendungsfall [Zuse01]. Im begleitenden Beispiel sind die Seite 30 Softwareentwicklung mit UML ersten Anwendungsfälle „Produkte verwalten“ und „Produkte bestellen“. Abbildung 4 zeigt ein Anwendungsfalldiagramm auf einer sehr abstrakten Ebene. Es wird nur die Grundfunktionalität des Systems beschrieben. Dieses Anwendungsfalldiagramm wird zu einem späteren Zeitpunkt in dieser Arbeit verfeinert dargestellt (siehe Kapitel 4.2.1). System Manage products Administrator Order products Customer Abbildung 4: Anwendungsfalldiagramm Übersicht Seit UML 2.0 können Anwendungsfälle in Pakete gegliedert werden [Rupp05]. Für die Modellierung bedeutet das, dass schon auf dieser sehr abstrakten Ebene eine Einteilung in Pakete erfolgen kann. In Bezug auf eine Enterprise Anwendung könnten die Pakete, die zu implementierenden Services sein. Im begleiteten Beispiel könnte das Anwendungsfalldiagramm z.B. in ein Administration Service und ein Shop Service eingeteilt werden. 3.2 Aktivitätsdiagramm Aktivitätsdiagramme sind mit der Version 2.0 von UML komplett überarbeitet worden. Sie spezifizieren den Kontroll- und Datenfluss zwischen verschiedenen Arbeitsschritten [Hitz05]. Ein Aktivitätsdiagramm soll die Frage „Wie realisiert mein System ein bestimmtes Verhalten?“ beantworten [Rupp05]. In früheren Versionen stellten Aktivitätsdiagramme eine spezielle Form von Zustandsdiagrammen dar. Mit der Version 2.0 von UML wurden neue Elemente, wie z.B. Strukturierte Knoten, Entscheidungsknoten oder Schleifenknoten eingeführt [Rupp05]. Softwareentwicklung mit UML Seite 31 Aktivitätsdiagramme können in verschiedenen Abstraktionsebenen modelliert werden. Das ist auch der Grund, warum sie in vielen Projektphasen einsetzt werden können. Die drei wichtigsten Einsatzbereiche sind die Geschäftsprozessmodellierung, die Beschreibung von Anwendungsfällen und die Implementierung einer Operation [Rupp05]. Damit bietet das Aktivitätsdiagramm jegliche Form der Abstraktion an und reicht in seiner Vielfalt von der Modellierung von Geschäftprozessen, welche eine sehr abstrakte Sicht auf ein Unternehmen gibt, bis hin zur Modellierung eines Algorithmus, welcher einen kleinen Teil in einem Programm darstellt. Gegliedert nach diesen drei Anwendungsbereichen sollen die folgenden Kapiteln Aktivitätsdiagramme in Bezug auf Enterprise Anwendungen beschreiben. 3.2.1 Geschäftsprozessmodellierung Die Modellierung eines Geschäftsprozesses macht in Bezug auf das begleitende Beispiel keinen Sinn, da im begleitenden Beispiel kein Geschäftsprozess realisiert wird. Bei Anwendungen, die den Businessprozess unterstützen sind Aktivitätsdiagramme in dieser Abstraktionsebene durchaus sinnvoll und können gerade in der Anfangsphase eines Projekts eine gute Übersicht geben. 3.2.2 Anwendungsfallbeschreibung Die Beschreibung von Anwendungsfällen ist ein weiteres Einsatzgebiet von Aktivitätsdiagrammen, wie es das folgende Kapitel anhand des Beispiels „Bestellung durchführen“ zeigen soll. Dieses Beispiel gibt einen guten Überblick über die Einsatzmöglichkeit von Aktivitätsdiagrammen in Enterprise Anwendungen. Der Anwendungsfall wird in Bezug auf Benutzer- und Systemaktivitäten dargestellt. Anwendungsfälle, die mittels Aktivitätsdiagramme beschrieben werden sollen, müssen einen chronologischen Ablauf haben. In diesem Punkt sehe ich auch einen kleinen Nachteil beim Aktivitätsdiagramm. Es können nicht alle Anwendungsfälle aussagekräftig modelliert werden. Die Modellierung von Aktivitätsdiagrammen wird von StarUML nicht ausreichend unterstützt. Deshalb stimmen einige in Abbildung 5 gezeigten Elemente nicht zu Seite 32 Softwareentwicklung mit UML 100% mit der UML 2.0 Notation überein [Reic06]. Customer ShopSystem <<datastore>> [Product] Request productlist Show productlist [more] (De)select product Add (remove) product to cart <<datastore>> [customer] Input Customerdata <<centralBuffer>> [shoppingCart] Save Customerdata Check order [change order] Save order Send order {create} [Order] <<datastore>> [Order] Abbildung 5: Aktivitätsdiagramm des Anwendungsfall „Bestellung durchführen“ Das Aktivitätsdiagramm eignet sich prinzipiell sehr gut für die Modellierung der Präsentationsschicht einer mehrschichtigen Architektur. Hier kann sehr gut beschrieben werden, welche Aktivitäten der Benutzer vornimmt und welche Aktionen (Aktivitäten) das System macht, unabhängig davon, in welcher Ebene die eigentliche Logik implementiert ist. Softwareentwicklung mit UML Seite 33 Zusammengefasst kann gesagt werden, dass das Aktivitätsdiagramm eine gute Möglichkeit darstellt, um komplexe Anwendungsfälle zu beschreiben, ohne dabei ins Detail zu gehen. Ein komplexer Anwendungsfall durchläuft mehrere Aktivitäten und kann möglicherweise auch mehrere alternative Aktivitäten durchlaufen. 3.2.3 Implementierung einer Operation Ein weiteres Einsatzgebiet von Aktivitätsdiagrammen ist die Modellierung von Algorithmen bzw. Operationen [Rupp05], wie es das hier gezeigte Beispiel demonstrieren soll. Als Beispiel wurde hier der Sortieralgorithmus „Bubble Sort“ gewählt. Dieser Sortieralgorithmus durchläuft ein Array bis zum Ende, vergleicht zwei Zahlen, und tauscht sie, wenn die vordere Zahl größer ist. Dieser Vorgang wird so lange wiederholt, bis das Array sortiert ist. Der Quellcode des Algorithmus in Java zeigt Listing 1 [Möss05]. // Sort a (using bubble sort) static void sort(int[] a) { for (int i = a.length - 1; i > 0; i--) for (int j = 0; j < i; j++) if (a[j] > a[j+1]) { int h = a[j]; a[j] = a[j + 1]; a[j + 1] = h; } } } } Listing 1: Quelltext „Bubble Sort“ Als sehr hilfreich bei der Modellierung des hier gezeigten Aktivitätsdiagramms erwies sich ein Vergleich zwischen Nassi-Shneiderman-Struktogrammen [Nass73] und Aktivitätsdiagrammen [Soph05]. Das Aktivitätsdiagramm in dieser Form für dieses einfache Beispiel ist noch einigermaßen übersichtlich, allerdings sagt die Literatur [Rupp05], dass die Verwendung von anderen Modellierungstools durchaus in Betracht gezogen werden soll, sobald komplexere Problemstellungen modelliert werden. Auch das Aktivitätsdiagramm des relativ einfachen Sortieralgorithmus wirkt schon etwas unübersichtlich. Bei komplexeren Algorithmen sind Pseudocode oder andere Softwareentwicklung mit UML Seite 34 Methodiken vorzuziehen, die nicht so platzintensiv sind. Meiner Meinung nach wurde in UML 2.0 diese Möglichkeit geschaffen, um auch Algorithmen darzustellen zu können, was mit älteren Versionen von UML nicht möglich war. Abbildung 6: Aktivitätsdiagramm Bubble Sort Das Modellierungstool StarUML bietet die in Abbildung 6 gezeigte Notation nicht an [Reic06]. 3.3 Zustandsdiagramm Zustandsdiagramme sind eine weitere Möglichkeit um das Verhalten eines Systems zu modellieren. Dabei werden die Zustände, die das System einnehmen kann und Änderungen von Zuständen modelliert. Änderungen von Zuständen können durch interne oder externe Ereignisse ausgelöst werden [Rupp05]. Ein Zustandsdiagramm soll die Frage „Wie verhält sich das System in einem bestimmten Zustand bei gewissen Ereignissen?“ [Rupp05] beantworten. Zustandsdiagramme erlauben auch die Modellierung von parallel ablaufenden Zustandsautoma- Softwareentwicklung mit UML Seite 35 ten, was vor allem bei der Modellierung von verteilten Systemen zum Einsatz kommen kann [Rupp05]. Prinzipiell haben Zustandsautomaten mehrere Einsatzgebiete, die sich wie folgt definieren lassen [Rupp05]: • Anwendungsfälle und Zustandsautomaten: Zustandsdiagramme eignen sich, neben der textuellen Beschreibung und den Aktivitätsdiagrammen, zur Beschreibung von Anwendungsfällen [Rupp05]. Der Unterschied zum Aktivitätsdiagramm, ist die Sicht auf das Gesamtsystem. Während beim Aktivitätsdiagramm das Zusammenspiel zwischen den Aktoren und dem System modelliert wird, werden im Zustandsdiagramm nur systeminterne Zustände und deren Änderungen modelliert. Damit kann eine gute Übersicht über mögliche Zustände der Präsentationsschicht gegeben werden. Ein Zustand entspricht dabei einer Seite, die der Benutzer sieht. Eine Änderung des Zustands entspricht zum Beispiel einer Benutzeraktivität. Das heißt Zustandsdiagramme sind, wie auch Aktivitätsdiagramme, in dieser Abstraktionsebene für die Modellierung der Präsentationsschicht geeignet. • Klassen und Zustandsautomaten: Klassen und Attribute von Klassen können bestimmte Zustände einnehmen. Ist die Anzahl der Zustände endlich, können auch diese mit einem Zustandsdiagramm dargestellt werden (z.B. Enumerationen) [Rupp05]. • Protokollzustandsautomaten: Diese spezielle Art von Zustandsdiagrammen dient zur Beschreibung eines Protokolls. Unter einem Protokoll wird hier ein abgeschlossenes System (z.B. eine Klasse) verstanden. Innerhalb dieser Klasse werden mögliche Zustände und Änderungen von Zuständen beschrieben. In dieser Form des Zustandsdiagrams dürfen nur bestimmte Protokollzustände und Protokolltransitionen verwendet werden. Unter Protokollzuständen versteht man Zustände ohne Aktivitäten. Protokolltransitionen haben folgenden Aufbau: „[Vorbedingung] Operation / [Nachbedingung]“ [Rupp05]. Als Beispiel wird ein Protokollzustandsdiagramm des Objektes „Warenkorb“ model- Seite 36 Softwareentwicklung mit UML liert (siehe Abbildung 7). Mittels Zustandsdiagrammen kann eine übersichtliche Darstellung der Zustände in einem Objekt modelliert werden. empty [no. products = 0] delete product [no. products > 0] delete product add product send order add product filled cancel order submit order ordered Abbildung 7: Protokollzustandsdiagramm „Shopping Cart“ Mögliche Zustände eines Warenkorbes in einer Online Anwendung sind üblicherweise „leer“, „befüllt“ und „bestellt“. Der Ausgangszustand eines Warenkorbs der Anwendung ist „leer“. Nach dem Hinzufügen des ersten Artikels ist der Warenkorb im Zustand „befüllt“. Werden weitere Artikel in den Warenkorb hinzugefügt bleibt der Zustand des Objektes gleich. Wird ein Artikel aus dem Warenkorb gelöscht, ändert sich der Zustand des Objektes nicht, außer wenn alle Artikel aus dem Warenkorb gelöscht wurden, dann ist der Warenkorb wieder im Zustand „leer“. Ist das Objekt Warenkorb im Zustand „befüllt“ kann die Bestellung durchgeführt werden. Nachdem die Bestellung durchgeführt wurde, nimmt das Objekt Warenkorb Softwareentwicklung mit UML Seite 37 den Zustand „bestellt“ ein. In diesem Zustand kann die Bestellung abgebrochen werden. Wird die Bestellung abgebrochen nimmt das Objekt Warenkorb wieder den Zustand „befüllt“ ein. Befindet sich das Objekt im Zustand „bestellt“, kann die Bestellung abschickt bzw. bestätigt werden. Bei dieser Änderung des Zustandes werden die Produkte im Warenkorb bestellt (die Bestellung wird gespeichert) und das Objekt Warenkorb nimmt wieder den Zustand „leer“ ein. 3.4 Sequenzdiagramm Das Sequenzdiagramm dient zur Modellierung von Interaktionen im System. Eine Interaktion spezifiziert die Art und Weise, wie Nachrichten und Daten zwischen verschiedenen Interaktionspartnern ausgetauscht werden [Hitz05]. Ein Sequenzdiagramm soll die Frage „Wie läuft die Kommunikation in meinem System ab?“ beantworten [Rupp05]. Einen guten Überblick über die verschiedenen Einsatzmöglichkeiten von Sequenzdiagrammen in Bezug auf die Phasen in einem Projekt soll Abbildung 8 zeigen. Abbildung 8: Anwendungen von Sequenzdiagrammen im Projekt [Rupp05] Das Sequenzdiagramm stellt ein sehr mächtiges Werkzeug für die Modellierung in UML 2.0 dar. Mittels Sequenzdiagrammen lassen sich Interaktionen auf verschiedensten Abstraktionsebenen modellieren. Diese Diagrammart erlaubt sowohl die Softwareentwicklung mit UML Seite 38 Modellierung des Systemkontexts, wie auch die Modellierung eines detaillierten Operationsablaufs. Bei der Modellierung des Operationsablaufs werden die Aufrufe einzelner Methoden modelliert. Diese Art von Sequenzdiagrammen stellt einen detaillierten Blick auf das System dar und ist vor allem für die Codegenerierung von Bedeutung. Das ist auch der Grund, wieso Sequenzdiagramme in vielen Phasen des Projekts sinnvoll eingesetzt werden können [Rupp05]. Sequenzdiagramme bieten auch eine gute Möglichkeit, um Architekturen und Designpatterns in einem System zu beschreiben. In der Praxis werden des Öfteren verschiedene Designpattern mit Hilfe eines Sequenzdiagramms erklärt (vergleiche z.B. [Sun08]). Der Nachteil beim Sequenzdiagramm ist, dass die Modellierung relativ aufwendig ist. Deshalb kann kein Projekt im angemessenen Zeitrahmen komplett mit Sequenzdiagrammen modelliert werden [Rupp05]. Ziel von Sequenzdiagrammen soll es eher sein, komplexe Abläufe in einem System zu beschreiben. Die folgenden Kapiteln zeigen, anhand vom Beispielen, den Einsatz des Sequenzdiagramms als Architekturbeschreibung, zur Beschreibung eines Designpatterns und ein weiteres Beispiel mit Operationsaufrufen. 3.4.1 Architekturbeschreibung Als Beispiel für eine Architekturbeschreibung soll ein allgemein gehaltenes Sequenzdiagramm modelliert werden, welches den Aufruf der einzelnen Schichten darstellt (siehe Abbildung 9). Mit Hilfe eines Sequenzdiagramms kann das 4-Schichten Modell („4-tierarchitecture“) und seine Datenflüsse gut und übersichtlich dargestellt werden. Die vier Schichten sind Client, Webserver, Anwendungsserver („applicationserver“) und Datenbankserver („databaseserver“). Ein Client schickt eine Anfrage („httpRequest“) an den Webserver. Dieser verarbeitet die Daten, und leitet eine entsprechende Anfrage an den Anwendungsserver weiter. Der Anwendungsserver, welcher die Businesslogik implementiert, speichert die empfangenen Daten in die Datenbank bzw. Seite 39 Softwareentwicklung mit UML liest die Daten von der Datenbank und schickt eine entsprechende Antwort an den Webserver zurück. Der Webserver verarbeitet diese Daten und schickt die Antwort an den Client zurück („httpResponse“). sd Java Enterprise 4-tier Model Client Webserver Applicationserver Databaseserver 1 : httpRequest() 2 : request() 3 : loadOrUpdateData() 4 : data 5 : response 6 : httpResponse Abbildung 9: Sequenzdiagramm 4-Schichtenmodell 3.4.2 Designpatterns Im folgenden Kapitel wird das DAO-Pattern („data access object“) mit Hilfe eines Sequenzdiagramms dargestellt. Weitere häufig verwendete Designpatterns, die ebenfalls mit Hilfe von Sequenzdiagrammen (und auch Klassendiagrammen) beschrieben wurden, befinden sich in der von Sun zur Verfügung gestellten Internetseite „Core J2EE Patterns“ [Sun08]. Wie in Abbildung 10 gut ersichtlich kapselt das DAO-Pattern die Zugriffe auf die Datenspeicherungsschicht. Das Business Objekt greift nicht direkt auf die Datenquelle zu, sondern nur auf das Datenzugriffsobjekt. Das ist der große Vorteil dieses Patterns, da die Datenquelle leicht austauschbar bleibt (z.B. von einer Datenbank zu XML Dateien). Bei einer Änderung der Datenquelle sind keine Änderungen an der Business Logik notwendig. Seite 40 Softwareentwicklung mit UML Dieses Beispiel soll das Laden eines Objekts demonstrieren, welches in weiterer Folge geändert, und wieder in die Datenbank geschrieben werden soll. sd Data Access Object BusinessObject DataAccessObject DataSource DomainObject <<create>> 1 : create() 2 : loadData() 3 : loadData() <<create>> 4 : create() 5 : setProperty() 6 : updateData() 7 : updateData() Abbildung 10: Sequenzdiagramm DAO-Pattern (basiert auf [Sun08]) 3.4.3 Detailmodellierung Als weiteres Beispiel soll der Lebenszyklus eines Java Servlets mit Hilfe eines Sequenzdiagramms modelliert werden. Dieses Beispiel soll demonstrieren, dass mittels Sequenzdiagrammen auch detaillierte technische Spezifikationen modelliert werden können (siehe Abbildung 11). Der Client schickt eine Anfrage („request“) an den Webserver. Dieser legt das Java Servlet an und initialisiert es. Nach dem Aufruf der „init()“ Methode, wird die Servicemethode aufgerufen. Hier wird nach der Requestmethode unterschieden („HTTP GET, POST, ...“). In der Servicemethode findet die eigentliche Verarbeitung statt, und das Antwortobjekt („response“) wird erzeugt. Das Java Servlet gibt das Antwortobjekt an den Webserver weiter, welcher dieses Objekt wieder zurück an den Client schickt. Danach wird das Java Servlet vom Webserver zerstört, nachdem die Seite 41 Softwareentwicklung mit UML Methode „destroy()“ aufgerufen wird. sd Servlet life cycle Client Werserver 1 : request() Servlet <<create>> 2 3 : init() 4 : service() 5 6 <<destroy>> 7 : destroy() Abbildung 11: Sequenzdiagramm Lebenszyklus Servlet (basiert auf [Ahme02]) 3.5 Kommunikationsdiagramm Das Kommunikationsdiagramm stellt das System auf einer relativ abstrakten Ebene dar. Es soll die Frage „Welche Teile einer komplexen Struktur arbeiten wie zusammen, um eine bestimmte Funktion zu erfüllen?“ [Rupp05] beantworten. In älteren Versionen von UML wurde das Kommunikationsdiagramm unter dem Namen Kollaborationsdiagramm geführt [Hitz05]. Ein Kommunikationsdiagramm bildet auf mittlerer Abstraktionsebene das Zusammenspiel von Kommunikationspartner zur Lösung einer gemeinsamen Aufgabe ab [Rupp05]. Bei diesem Diagramm steht, im Vergleich zum Sequenzdiagramm, die Übersicht im Vordergrund. Details und die zeitliche Abfolge sind beim Kommunika- Softwareentwicklung mit UML Seite 42 tionsdiagram nicht entscheidend [Rupp05]. Deshalb sind Kommunikationsdiagramme leichter zu modellieren und leichter zu lesen als Sequenzdiagramme. Kommunikationsdiagramme werden unter anderem für folgende Problemstellungen verwendet: • Kommunikationsdiagramme können verwendet werden, um die Implementierung eines Anwendungsfalls zu modellieren [Hitz05]. • Außerdem können Kommunikationsdiagramme für die Modellierung der Implementierung einer Operation verwendet werden [Hitz05]. • Das Kommunikationsdiagramm dient zur Darstellung von komplexen Strukturen auf eine übersichtliche Art und Weise [Rupp05]. • Mit Hilfe eines Kommunikationsdiagramms kann die grundsätzliche Struktur eines Systems modelliert werden [Rupp05]. Das heißt das Kommunikationsdiagramm ist, wie auch das Sequenzdiagramm, in Bezug auf die Abstraktionsebene sehr weit gestreut und kann in vielen Phasen im Projekt eingesetzt werden. Der Vorteil am Kommunikationsdiagramm, im Vergleich zum Sequenzdiagramm, ist dass neben den Interaktionen auch strukturelle Aspekte modelliert werden können. Dadurch ist, im Vergleich zu Sequenzdiagrammen, kein zusätzliches Diagramm notwendig um strukturelle Aspekte zu modellieren [Hitz05]. 3.6 Zeitdiagramm Das Zeitdiagramm zeigt das zeitliche Verhalten in einem System. Es wurde in UML 2.0 neu eingeführt und soll die Frage: „Wann befinden sich verschiedene Interaktionspartner in welchem Zustand?“ beantworten [Rupp05]. Zeitdiagramme werden für die Modellierung von zeitkritischen Systemen, wie es Echtzeitsysteme sind, verwendet [Hitz05]. Im Unterschied zu Sequenz- bzw. Kommunikationsdiagrammen können mittels Zeitdiagrammen der Ablauf nur exemplarisch darstellt werden, da laut Standard keine Kontrollstrukturen zur Verfügung stehen [Hitz05]. Softwareentwicklung mit UML Seite 43 Zeitdiagramme sind u. a. unter folgenden Bedingungen einzusetzen [Rupp05]: • Bei einem stark modularisiertem System mit stark abhängigen Zustandsdiagrammen, um die Kommunikation zwischen den Automaten darzustellen. • Wenn beim dem zu implementierenden System genaue zeitliche Übergänge wichtig sind. • Wenn für den zu modellierenden Sachverhalt lokale und globale Daten weniger interessant sind. • Wenn bei der Anwendung Interaktionen einfach gestrickt sind und Nebenläufigkeiten oder Kontrollelemente unnötig sind. Alle oben beschrieben Punkte treffen bei einer Enterprise Anwendung nur sehr wenig zu. 3.7 Interaktionsübersichtsdiagramm Das Interaktionsübersichtsdiagramm zeigt das Zusammenspiel verschiedener Interaktionen. Die Darstellung erfolgt in Form einer Abwandlung des Aktivitätsdiagramms [Rupp05]. Ein Interaktionsübersichtsdiagramm soll die Frage „In welcher Reihenfolge und unter welchen Bedingungen finden Interaktionen statt?“ beantworten [Rupp05]. Ein Interaktionsübersichtsdiagramms verwendet verschiedene Komponententypen aus anderen Diagrammarten. Deshalb wurde es öfters kritisiert, soll aber dennoch einen guten Überblick über die Ablaufreihenfolge verschiedener Interaktionsdiagramme geben [Hitz05]. 3.8 Klassendiagramm Ein Klassendiagramm zeigt die statische Struktur des Systems, indem es die statischen Eigenschaften einer Klasse und deren Beziehungen zueinander beschreibt. Das Klassendiagramm bildet den Kern der Modellierungssprache UML 2.0 [Rupp05] und ist dadurch die zentrale Diagrammart in fast jedem Projekt. Sie können in jedem Schritt der Softwaremodellierung in unterschiedlicher Abstraktionsebene verwendet Softwareentwicklung mit UML Seite 44 werden. Es soll die Frage „Wie sind die Daten und das Verhalten meines Systems im Detail strukturiert?“ beantworten [Rupp05]. Prinzipiell können zwei Arten von Klassendiagrammen unterschieden werden, wobei der Übergang fließend ist [Rupp05]: • Konzeptuell-analytische Modellierung: Die Konzeptuell-analytische Modellierung wird in der Analysephase eines Projekts eingesetzt. Das heißt ein Klassendiagramm soll in diesem Fall einen abstrakten Überblick über das System geben. Ziel auf dieser Ebene ist es, die korrekten Zusammenhänge im Projekt zu definieren. Das Klassendiagramm soll die Fachkonzepte und deren Beziehungen zueinander abbilden, dabei stehen konkrete Attribute und Operationen im Hintergrund [Rupp05]. • Logische, design-orientierte Modellierung: Die logische, design-orientierte Modellierung findet in einer späteren Phase im Projekt statt. Sie soll als Vorbild für die Implementierung verwendet werden. Diese Art des Klassendiagramms stellt die Basis für die Codegenerierung dar. Hier werden alle Attribute und Operationen, mit deren Datentypen bzw. Rückgabewerte und deren Sichtbarkeit beschrieben [Rupp05]. An dieser einführenden Beschreibung lässt sich schon erkennen, wieso Klassendiagramme ein sehr beliebtes Werkzeug für die Modellierung sind. Klassendiagramme sind gut lesbar, in jeder Phase des Projektes einsetzbar und erlauben große Unterschiede im Hinblick auf ihre Abstraktionsebene. 3.8.1 Konzeptuell-analytische Modellierung Ein Klassendiagramm kann in einer sehr hohen Abstraktionsstufe einen Überblick über die verwendete Systemarchitektur oder ein bestimmtes Designpattern geben. Dabei werden nur die essentiellen Attribute und Operationen modelliert. In der Literatur werden Patterns sehr oft mit einem Klassendiagramm und einem Sequenzdiagramm (vgl. Kapitel 3.4.2) beschrieben (vgl. z.B. [Sun08]). Abbildung 12 zeigt, wie das DAO-Pattern mittels Klassendiagramm beschrieben werden kann. Wie schon im vorigen Kapitel beschrieben kapselt das DAO-Pattern Seite 45 Softwareentwicklung mit UML die Datenzugriffslogik von der Businesslogik. Beide Klassen verwenden ein so genanntes Transferobjekt um miteinander zu kommunizieren. BusinessObject obtains/modifies TransferObject creates/uses uses DataAccessObject encapsulates DataSource Abbildung 12: Klassendiagramm DAO-Pattern [Sun08] In diesem Klassendiagramm lässt sich gut der Sinn dieses Pattern erkennen. Das Businessobjekt greift nicht direkt auf die Datenquelle zu, sondern kommuniziert mit Hilfe des Transferobjektes über das Datenzugriffsobjekt mit der Datenquelle. Dadurch ist die Datenquelle leicht austauschbar macht. Um die Datenquelle zu ändern, muss nur die Datenzugriffsklasse angepasst werden, die Businesslogik kann hingegen unverändert bleiben. Zusammengefasst kann gesagt werden, dass zur Modellierung von Designpattern, Klassendiagramme in Verbindung mit Sequenzdiagrammen am besten geeignet sind, wie es auch in der Literatur öfters verwendet wird (vgl. z.B. [Sun08]). 3.8.2 Logische, desgin-orientierte Modellierung Als logisches, design-orientiertes modelliertes Klassendiagramm wird hier das Domainmodell gezeigt (siehe Abbildung 13). Ein Domainmodellklassendiagramm gibt einen guten Überblick über das System und seine Meta-Daten. Es werden alle Klassen mit deren Attributen, Typen von Attributen und auch mögliche Defaultwerte modelliert. Jede dieser modellierten Klassen hat als Operatoren „getter“ und „setter“ Methoden, die zum Lesen und Setzen der Attribute dienen. Diese werden in der Praxis oft weg- Seite 46 Softwareentwicklung mit UML gelassen, um die Übersicht zu bewahren. Aus diesem Diagramm (vgl. Abbildung 13) könnten im Rahmen einer modellgetriebenen Softwareentwicklung Klassen generiert werden und auch teilweise Datenbankskripts zum Erstellen von Datenbanktabellen. Leider wird in UML 2.0 nur der Typ der Attribute angegeben und keine weiteren Informationen, wie z.B. die Feldlänge. ProductGroup Customer -id: Long -name: String -email: String -firstName: String -lastName: String 1 1 0..* 0..* Product Order -id: Long -description: String -name: String -price: BigDecimal -id: Long -date: Date 1 1 1..* 1 OrderItem -numberOfProducts: Integer Abbildung 13: Klassendiagramm Domainmodell Jeder Kunde („Customer“) tätigt mehrere Bestellungen („Order“). Eine Bestellung („Order“) besteht aus mehreren Teilen („OrderItem“). Jeder Teil einer Bestellung ist genau einem Produkt („Product“) zugewiesen. Diese Zwischenklasse wurde angelegt, um ein Produkt öfters bestellen zu können. Ein Produkt ist in genau einer Produktgruppe („Productgroup“), wobei eine Produktgruppe mehrere Produkte beinhalten kann, aber auch leer sein kann. Softwareentwicklung mit UML 3.9 Seite 47 Paketdiagramm Das Paketdiagramm dient zur Gliederung des Gesamtsystems in Pakete. Es soll die Frage „Wie kann ich mein Modell so darstellen, dass ich den Überblick behalte?“ beantworten [Rupp05]. Das Paketdiagramm bietet eine gute Möglichkeit, um einen Überblick des Gesamtsystems zu modellieren. Nachdem größere Softwareprojekte meist aus sehr vielen verschiedenen Klassen bestehen, müssen diese in Pakete zusammengefasst werden, um die Übersicht zu behalten. Allgemein können Paketdiagramme in zwei unterschiedliche Anwendungsgebiete eingeteilt werden [Rupp05]: • Funktionale Gliederung: Bei einer funktionalen Gliederung werden alle Teile, die funktional oder logisch im Zusammenhang stehen, zu einem Paket zusammengefasst. Diese Einteilung wird meist zu einem frühen Zeitpunkt im Projekt durchgeführt, da das modellierte Paketdiagramm einen guten Überblick gibt, welche Teile der Enterprise Anwendung zusammenhängend implementiert werden können [Rupp05]. • Definition von Schichten: Die Definition von Schichten dient zur Darstellung eines mehrschichtigen Systems, wie es auch Enterprise Anwendungen sind. In dieser Form von Paketdiagrammen werden die Pakete meist verschachtelt dargestellt. Paketdiagramme sind ein gutes Werkzeug, um die Struktur eines Projektes darzustellen. Bei dieser Diagrammart sind auch verschiedene Abstraktionsebenen zu beachten. So kann ein Paketdiagramm einen sehr groben Überblick über die verwendete Architektur geben, aber auch als Gliederung eines Klassendiagramms und dadurch als Implementierungsgrundlage dienen. 3.9.1 Funktionale Gliederung Das hier gezeigte Paketdiagramm (siehe Abbildung 14) zeigt eine funktionale Einteilung der gesamten Anwendung. Seite 48 Softwareentwicklung mit UML Dieses Beispiel soll einen groben Überblick über die funktionale Einteilung in Paketen geben. Shopsystem ProductService Customer Administrator <<access>> OrderService Abbildung 14: Paketdiagramm Shopsystem Übersicht Dieses Diagramm zeigt eine grobe Übersicht über das Gesamtsystem, ohne die Pakete näher zu beschreiben. Die gesamte Enterprise Anwendung teilt sich in zwei Pakete: • „Productservice“: Das Produktservice beinhaltet die gesamte Produkt- und Produktgruppenverwaltung. Zu diesem Service zählen Anwendungsfälle wie unter anderem „Produkt anlegen“, „Produkt ändern“ oder „Produktliste anzeigen“. • „Orderservice“: In diesem Paket sind alle Teile der Bestellung enthalten. Zu diesem Paket zählen unter anderem die Anwendungsfälle „Bestellung abschicken“ oder „Produkt zum Warenkorb hinzufügen“. Seite 49 Softwareentwicklung mit UML 3.9.2 Definition von Schichten Paketdiagramme bieten eine gute Möglichkeit, um eine Einteilung der Schichten zu modellieren [Hitz05]. Abbildung 15 zeigt ein Systemmodell einer Enterprise Anwendung. <<systemModel>> EnterpriseApplication Web-Subsystem Enterprise-Subsystem View Businesslogic User <<import>> <<access>> <<access>> Controller PersisentData Abbildung 15: Paketdiagramm Übersicht Enterprise Anwendung Der Aktor „User“ greift auf das „Web-Subsystem“ zu. In diesem Teilpaket befinden sich die Elemente der Präsentationsschicht und die Controllerelemente. Die Controllerelemente greifen auf das Enterprise Subsystem zu. In diesem Paket ist das Unterpaket Geschäftslogik, welches auf das ein weiteres Subpaket „persistierte Daten“ zugreift, um Daten aus der Datenbank zu lesen bzw. Daten in die Datenbank zu schreiben. In der Praxis werden Paketdiagramme und Klassendiagramme sehr oft in Kombination verwendet. So können die im vorigen Diagramm dargestellten Pakete die modellierten Klassen aus dem Klassendiagramm enthalten. Das UML-Modellierungstool StarUML sieht keine eigene Diagrammart „Paketdiagramm“ vor, sondern die Elemente des Paketdiagramms sind im Klassendiagramm Softwareentwicklung mit UML Seite 50 inkludiert [Reic06]. 3.10 Objektdiagramm Ein Objektdiagramm bietet die Möglichkeit Instanzen von Klassen, Komponenten, Knoten, Assoziationen und Attributen zu modellieren. Es soll die Frage: „Wie sieht ein Schnappschuss meines Systems zur Ausführungszeit aus?“ beantworten [Rupp05]. Eine Klasse wird als Objekt dargestellt, ein Attribut einer Klasse als konkreter Wert und eine Assoziation zwischen Klassen als Link. Der Aufbau eines Objektdiagramms, ist dem Klassendiagramm sehr ähnlich, mit dem Unterschied, dass bei Objektdiagrammen Instanzen von Klassen modelliert werden. Ein Vorteil des Objektdiagramms im Vergleich zum Klassendiagramm ist, dass sich Attribute von Klassen besser beschreiben lassen. Das Klassendiagramm erlaubt nur die Modellierung eines Defaultwertes, während beim Objektdiagramm konkrete Werte modelliert werden [Rupp05]. Das Klassendiagramm bietet einen abstrakten Überblick über Objekte. Im Vergleich dazu werden mit dem Objektdiagramm konkrete Anwendungen und Instanzen von Klassen modelliert. Das Objektdiagramm bietet aus diesem Grund eine detaillierte Sicht auf ein Teilsystem. Objektdiagramme haben im Projekt breit gestreute Anwendungsmöglichkeiten. Die Anwendungsmöglichkeiten im Projekt sind unter anderem [Rupp05]: • Objektdiagramme dienen zur Illustration rekursiver Strukturen im Klassendiagramm. Das Objektdiagramm zeigt die tatsächlichen Strukturen zwischen Instanzen gleicher Klassen. Diese rekursiven Strukturen sind im Klassendiagramm nicht ersichtlich. • Objektdiagramme können zur Überprüfung von Klassendiagrammen eingesetzt werden. Wird ein konkreter Fall in Form eines Objektdiagramms modelliert, können auch in einer frühen Phase des Projekts Fehler im Klassendiagramm aufgedeckt werden. Softwareentwicklung mit UML • Seite 51 Zum Finden von Klassen durch die Modellierung von Objektdiagrammen. Wird zuerst das Objektdiagramm modelliert, so kann aus diesem ein mögliches Klassendiagramm abgeleitet werden. • Für die Dokumentation von Architekturen, in denen Objekte durch abstrakte oder generische Fabriken erzeugt werden. Diese Objekte sind in einem Klassendiagramm nicht sichtbar und werden erst durch die Darstellung des konkreten Objekts sichtbar. • Für die Modellierung von Konfigurationen, falls diese dem Modell entnommen werden. Auch Konfigurationsdateien können mit Hilfe des Objektdiagramms dargestellt werden. Dies macht vor allem dann Sinn, wenn Konfigurationsdateien aus dem Modell generiert werden sollen. • Ein weiterer Anwendungsfall für Objektdiagramme ist die Modellierung von Testdaten. In diesem Fall werden konkrete Testdaten in Form eines Objektdiagramms modelliert. Objektdiagramme bieten für Enterprise Anwendungen eine gute Übersicht. In Enterprise Anwendungen gibt es meistens eine Vielzahl von Interfacedefinitionen und Implementierungen, dadurch ist es durchaus sinnvoll, eine konkrete Abbildung des Klassendiagramms in Form eines Objektdiagramms zu modellieren. Ein weiterer Anwendungsfall ist die Modellierung eines Objektdiagramms für Domainobjekte. Es stellt eine gute Überprüfung für das Klassendiagramms dar und der gleiche Arbeitsschritt ermöglicht die Modellierung von Testdaten. Als Beispiel soll für das Klassendiagramm aus Kapitel 3.8 (siehe Abbildung 13) eine konkrete Instanz modelliert werden. Es könnte sich dabei um Testdaten des Domänenmodells handeln. Anhand des Objektsdiagramms (siehe Abbildung 16) kann man gut erkennen, dass das vorher modellierte Klassendiagramm korrekt ist und in dieser Form angewendet werden kann. Durch die Modellierung dieses konkreten Beispiels wurde auch klar, dass es wohl nicht vorkommt, dass ein Kunde zur gleichen Zeit mehrere Bestellungen hat. Diese Seite 52 Softwareentwicklung mit UML 1:n Beziehung würde allerdings sehr wohl bei der Administration von Bestellungen Sinn machen. customer : Customer email = [email protected] firstName = Christian lastName = Sokop order1 : Order order2 : Order id = 2 date = 2008-05-23 id = 4 date = 2008-05-24 orderItem1 : OrderItem orderItem2 : OrderItem orderItem3 : OrderItem numberOfProducts = 1 numberOfProducts = 1 numberOfProducts = 2 product1 : Product product2 : Product product3 : Product id = 123 name = UML Glasklar price = 35 id = 47 name = UML@work price = 39 id = 39 name = WindowsVista price = 430 productGroup1 : ProductGroup productGroup2 : ProductGroup id = 2 name = Books id = 4 name = OS Abbildung 16: Objektdiagramm Testdaten Domänenmodellklassendiagramm 3.11 Kompositionsstrukturdiagramm Mit dem Kompositionsstrukturdiagramm lassen sich interne Strukturen von Komponenten und deren Interaktionen zu anderen Komponenten darstellen. Es soll die Frage „Wie sind die einzelnen Architekturkomponenten strukturiert und mit welchen Rollen spielen sie dabei zusammen?“ beantworten [Rupp05]. Softwareentwicklung mit UML Seite 53 Das Kompositionsstrukturdiagramm wurde in UML 2.0 neu eingeführt [Rupp05]. Prinzipiell kann zwischen zwei Arten von Kompositionsstrukturdiagrammen unterschieden werden [Hitz05]: • Kompositionsstrukturdiagramm für Klassen: Das Ziel des Kompositionsstrukturdiagramms für Klassen ist es, eine detaillierte Beschreibung der internen Struktur einer Klasse zu modellieren. Der Vorteil gegenüber dem Klassendiagramm ist es, dass im Kompositionsstrukturdiagramm die Zusammenhänge der Klassen aus Sicht einer bestimmten Klasse (Kontextklasse) modelliert werden. Dadurch ist ein Kompositionsstrukturdiagramm in vielen Fällen übersichtlichter als das Klassendiagramm, hat aber die gleiche Aussage. • Kompositionsstrukturdiagramm für Kollaborationen: Hier wird das Zusammenspiel der Komponenten modelliert. Das Hauptaugenmerk liegt dabei nicht auf das „wie und wann“, sondern wer mit welcher Komponente kommuniziert [Hitz05]. Diese Art des Kompositionsstrukturdiagramms eignet sich besonders gut, um Designpattern zu beschreiben, die in der Implementierung angewendet werden [Rupp05]. In den folgenden Kapiteln sollen für diese beiden Arten von Kompositionsstrukturdiagrammen Beispiele modelliert werden. 3.11.1 Kompositionsstrukturdiagramm für Klassen Mit Hilfe des Kompositionsstrukturdiagramms kann eine Art Klassendiagramm modelliert werden. Dazu wird eine Kontextklasse bestimmt und ausgehend von dieser Klasse werden die anderen Klassen und deren Zusammenhänge modelliert. In diesem Diagramm kommt die Navigation durch die Klassen gut zum Vorschein. In diesem Kapitel wird das Klassendiagramm aus Sicht des Kunden modelliert (siehe Abbildung 17). Dieses Kompositionsstrukturdiagramm gibt eine Übersicht über die einzelnen Klassen im Klassendiagramm aus Sicht der Klasse Kunde („Customer“). Ein Kunde kann mehrere Bestellungen („Order“) haben. Eine Bestellung wiederum besteht aus mehreren Teilen („OrderItem“). Diese werden genau einem Produkt Seite 54 Softwareentwicklung mit UML („Product“) zugewiesen, welches einer Produktgruppe („Produktgroup“) zugeordnet sein kann. Customer -email: String -firstName: String -lastName: String -order: Order[0..*] Order -id: Long -date: Date -orderItem: OrderItem[1..*] OrderItem -numberOfProducts: Integer -product: Product[1] Product -id: Long -description: String -name: String -price: BigDecimal -productGroup: ProductGroup[0..1] ProductGroup -id: Long -name: String Abbildung 17: Kompositionsstrukturdiagramm Kontextklasse „Customer“ Üblicherweise werden, anders als hier gezeigt, weitere Attribute der Klassen nicht modelliert, sondern nur die Attribute, die eine Verbindung zu einer anderen Klasse definieren. Diese Diagrammart gibt einen guten Überblick über das Zusammenspiel der Klassen. Im Vergleich zum Klassendiagramm lassen sich mit Hilfe des Kompositionsstrukturdiagramms die Zusammenhänge der Klassen übersichtlicher modellieren, da das gesamte Diagramm von einer Kontextklasse aus betrachtet wird. Softwareentwicklung mit UML Seite 55 3.11.2 Kompositionsstrukturdiagramm für Kollaborationen Kompositionsstrukturdiagramme für Kollaborationen bieten eine gute Möglichkeit um Designpattern zu beschreiben [Rupp05]. Die Beschreibung von Designpattern ist ein wichtiger Punkt in einer Enterprise Anwendung. In weiterer Folge können die modellierten Patterns in konkreten Beispielen angewendet werden. Im Kompositionsstrukturdiagramm für Kollaboration werden die benötigten Elemente und die Zusammenhänge zwischen den Elementen modelliert. Das Kompositionsstrukturdiagramm soll in dieser Abstraktionsebene eine Übersicht über ein Pattern geben und nicht den genauen Aufbau eines Patterns beschreiben. Für die Beschreibung des Aufbaus eines Patterns sind Klassen- bzw. Sequenzdiagramme besser geeignet. Abbildung 18 zeigt, das im Rahmen dieser Arbeit schon des Öfteren modellierte DAO-Pattern. Abbildung 18: Kompositionsstrukturdiagramm DAO-Pattern Im Falle des DAO-Patterns werden das Businessobjekt, das Datenzugriffsobjekt, das Transferobjekt und die Datenquelle modelliert. Diese Modellierung des Kompositionsstrukturdiagramms erlaubt in weiterer Folge die Modellierung eines konkreten Anwendungsfalls des Patterns, wie es Abbildung 19 demonstrieren soll. Wie in der in Abbildung 18 gezeigten Modellierung des DAO-Patterns werden ein Seite 56 Softwareentwicklung mit UML Businessobjekt, ein Transferobjekt, ein Datenzugriffsobjekt und eine Datenquelle benötigt. Die Datenquelle wird in diesem konkreten Beispiel nicht modelliert. ProductServiceImpl ProductDataAccessObject DAOPattern Product -id: Long -description: String -name: String -price: BigDecimal -productGroup: ProductGroup[0..1] Abbildung 19: Kompositionsstrukturdiagramm Anwendung DAO-Pattern Das Kompositionsstrukturdiagramm in Abbildung 19 zeigt die Anwendung des DAO-Patterns. Das Businessobjekt wird in Form der Klasse „ProductServiceImpl“ dargestellt. Als Datenzugriffsobjekt wird die Klasse „ProductDataAccessObject“ verwendet und als Transferobjekt die Klasse „Product“. Dieses Diagramm soll verdeutlichen, dass hier das DAO-Pattern verwendet wird. Da das Kompositionsstrukturdiagramm in UML 2.0 neu definiert wurde, wird es von StarUML noch nicht ausreichend unterstützt [Reic06]. 3.12 Komponentendiagramm Das Komponentendiagramm bietet die Möglichkeit, die Struktur eines Systems zur Laufzeit darzustellen. Es soll die Frage „Wie ist mein System strukturiert und wie werden diese Strukturen erzeugt?“ beantworten [Rupp05]. Der Begriff Komponente ist in UML 2.0 „ein modularer Teil eines Systems, der zur Abstraktion und Kapselung einer beliebig komplexen Struktur dient, die nach außen Seite 57 Softwareentwicklung mit UML wohldefinierte Schnittstellen zur Verfügung stellt“ [Hitz05]. Das Komponentendiagramm erlaubt „sowohl die interne Struktur einer Komponente abzubilden als auch die verschiedenen Wechselbeziehungen zwischen Komponenten“ [Rupp05]. Mit Hilfe des Komponentendiagramms lassen sich „sowohl physische als auch logische Modellierungsaspekte abdecken“ [Hitz05]. Aus diesem Grund sind Komponentendiagramme ein wichtiges Modellierungswerkzeug für verteilte Systeme, wie es auch Enterprise Anwendungen sind. Das Komponentendiagramm kann auch das Zusammenspiel zwischen physischen und logischen Komponenten darstellen. In einer Enterprise Anwendung werden sehr viele Interfaces und Implementierungen verwendet. Das Komponentendiagramm bietet eine gute Möglichkeit, um diese Interfaces darzustellen. Eine Java Enterprise Anwendung besteht aus mehreren Komponenten, die in Abbildung 20 dargestellt werden. UserInterface BusinessService BusinessMethods DataAccess PersistenceMethods Database DataSource Abbildung 20: Komponentendiagramm Java Enterprise Anwendung Das Komponentendiagramm in Abbildung 20 zeigt einen üblichen Aufbau einer Java Enterprise Anwendung. Die Datenbank stellt eine Datenquelle zur Verfügung, welche von den Datenzugriffsobjekten verwendet wird. Diese stellen wieder ein Inter- Seite 58 Softwareentwicklung mit UML face zur Verfügung (Persistenzmethoden), welches vom Businessservice verwendet wird. Die vom Businessservice zur Verfügung gestellten Businessmethoden werden vom Userinterface aufgerufen. Es kann sich dabei sowohl um physische, wie auch um logische Komponenten handeln. Weiters bieten Komponentendiagramme die Möglichkeit Artefakte und deren Inhalte darzustellen. Das Diagramm in Abbildung 21 soll das Zusammenspiel der Komponenten einer Java Enterprise Anwendung darstellen. <<artifact>> sample.ear <<artifact>> sample.war jsp-page controllerClasses <<artifact>> web.xml <<artifact>> sample-impl.jar implemetations BusinessMethods BusinessMethodsImpl <<artifact>> sample.jar interfaces Domainobjects <<artifact>> ejb-jar.xml Abbildung 21: Komponentendiagramm Java EE Web-Anwendung Das Komponentendiagramm der Java EE Web-Anwendung zeigt den Aufbau der „ear“ Datei. Eine „ear“ (Enterprise Archiv) Datei enthält alle Komponenten, die in Softwareentwicklung mit UML Seite 59 einer Java Enterprise Anwendung vorhanden sind. Das sind insbesondere eine „war“ (Web Archiv) Datei, die Interfaces der Businessmethoden (Enterprise Java Beans) und die Implementierung der Business Methoden. Die „war“ Datei enthält alle Komponenten, die für die Realisierung des Webteils benötigt werden. Die Interfaces enthalten neben den Definitionen der Businessinterfaces selbst, die gemeinsam verwendeten Domainobjekte und einen Deploymentdeskriptor („ejb-jar.xml“). Mit Komponentendiagrammen kann eine exakte Deploymentumgebung modelliert werden. Das ist bei Java Enterprise Web-Anwendungen relativ schwierig, da es, selbst bei sehr kleinen Projekten, eine genaue Anordnung der Komponenten vorsieht. 3.13 Verteilungsdiagramm Ein Verteilungsdiagramm beschreibt die Zuordnung von Artefakten auf Hardwareeinheiten. Mit Hilfe dieses Diagramms soll die Frage „Wie werden die Artefakte des Systems zur Laufzeit wohin verteilt?“ beantwortet werden [Rupp05]. Die Modellierung von Verteilungsdiagrammen eignet sich nur, wenn die Anwendung auf mehreren Hardwarekomponenten (Knoten) läuft [Rupp05]. Bei Enterprise Anwendungen ist die Entwicklung von Verteilungsdiagrammen daher sehr sinnvoll, da Enterprise Anwendungen zumindest theoretisch auf mehrere Knoten verteilt werden können. Verteilungsdiagramme enthalten neben den „normalen“ Knoten auch Ausführungsumgebungsknoten. Diese Ausführungsumgebungen können z.B. ein Betriebssystem oder ein Webbrowser sein [Hitz05]. Zusätzlich werden für die Modellierung eines Verteilungsdiagramms unter anderem Artefakte und „Deployment Spezifications“ angeboten [Hitz05]. Eine Java EE Web-Anwendung besteht üblicherweise aus drei verschiedenen physischen Konten. Der Benutzer greift mit seinem Client, auf dem in den meisten Fällen der Webbrowser läuft, auf den Anwendungsserver zu. In dieser Serverumgebung ist die Anwendung installiert. Der Anwendungsserver greift auf einen externen Datenbankserver zu. Dieses Diagramm gibt eine gute Übersicht über die verschiedenen Artefakte und deren Verteilung auf physischen Knoten. Es soll nicht unerwähnt bleiben, dass bei Seite 60 Softwareentwicklung mit UML kleinen Projekten der DB-Server und der Anwendungsserver auf demselben physischen Knoten liegen. Eine allgemeine Darstellung einer Java Enterprise Web-Anwendung ist in Abbildung 22 zu sehen. <<device>> Client <<executionEnvironment>> Webbrowser <<device>> Server <<internet>> <<executionEnvironment>> J2EE-ApplikationServer <<deployment spec>> ejb-jar.xml <<artifact>> serverlibs <<deploy>> <<artifact>> application.ear <<artifact>> application.war <<deployment spec>> web.xml <<ethernet>> <<device>> DbServer Abbildung 22: Verteilungsdiagramm Java EE Web-Anwendung Kapitel 4 UML Erweiterungen für Eclipse Das folgende Kapitel soll zunächst einen kurzen Überblick über die verschiedenen Plugins der Entwicklungsumgebung „eclipse“ geben. In weiterer Folge wird jedes dieser Plugins einzeln evaluiert. 4.1 Einleitung Es gibt eine Vielzahl von Plugins für die Entwicklungsumgebung „eclipse“. Für jede noch so spezielle Anforderung findet sich relativ schnell ein passendes Plugin (vgl. z.B. [Ecli08a]). Mit Stand Mitte Juni 2008 werden an dieser zentralen Stelle 1058 verschiedene Plugins vorgestellt, welche nach Kategorien eingeteilt sind. Unter dem Überbegriff UML werden 35 Plugins angeboten, weitere 65 Plugins sind unter dem Begriff „Modeling“ gelistet. Der erste Schritt im Rahmen dieser Diplomarbeit ist es, aus der Vielzahl der vorhandenen Plugins einige passende auszuwählen, die in weiterer Folge evaluiert werden sollen. Ziel ist es möglichst kostengünstige Plugins auszuwählen, die sowohl eine Modellierung mit UML, wie auch die Generierung von Java Quelltext aus den Diagrammen erlauben. Unter kostengünstig wird hier ein Betrag von 100 Euro pro Jahr oder weniger pro Lizenz angenommen. Bei der Auswahl wurde auch darauf geachtet, dass die Plugins am aktuellen Stand sind und wenn möglich laufend weiterentwickelt werden. Wurde die aktuellste Version des Plugins vor mehr als einem Jahr (Stand Mai 2008) zur Verfügung gestellt, wird dieses im Rahmen dieser Diplomarbeit nicht weiter beachtet. Außerdem wurde UML Erweiterungen für Eclipse Seite 62 darauf geachtet keine Beta-Versionen zu evaluieren. Ein weiteres Kriterium sind, die auf der Internetseite [Ecli08a] verfassten Benutzerkommentare. Wird in diesen Kommentaren von einer Vielzahl von Fehlern berichtet oder das Plugin von mehreren Personen als unbrauchbar eingestuft, wurde es im Rahmen dieser Diplomarbeit nicht näher evaluiert. Die hier ausgewählten Plugins sind nicht die einzigen die am Markt existieren, sondern eine Auswahl aus denen, die den oben genannten Anforderungen entsprechen. Folgende Plugins werden näher in betracht gezogen (in alphabethischer Reihenfolge): • Apollo for Eclipse [Apol08]: Dieses kostenpflichtige Plugin unterstützt nur eine Mischung aus dem Paket- und Klassendiagramm. Besonders interessant ist die Möglichkeit der Codegenerierung aus dem Diagramm und auch die Möglichkeit Diagramme aus dem Quelltext erzeugen zu lassen. Als besonderes Feature soll dieses Plugin den Quellcode und das Diagramm synchron halten. Im Rahmen dieser Diplomarbeit wurde Version 3.0.1 dieses Plugins evaluiert. • AmaterasUML [Amat08]: Dieses Plugin ist kostenlos verfügbar und unterstützt das Klassen-, Sequenz- und Anwendungsfalldiagramm. Außerdem soll Java Quelltext aus dem Klassendiagramm generiert werden können und Klassen sollen im Rahmen eines Reverse Engineering einfach ins Klassendiagramm importiert werden können [Ecli08a]. Im Rahmen dieser Diplomarbeit wurde Version 1.3.1 dieses Plugins evaluiert. • Blueprint Software Modeler [Blue08]: Dieses Plugin, oder besser gesagt diese auf Eclipse basierende Entwicklungsumgebung, bietet in einer kostenlosen Version mit dem Klassen-, Paket-, Komponenten-, Kompositionsstruktur-, Objekt-, Anwendungsfall-, Aktivitäts-, Zustands- und Sequenzdiagramm die, für die Entwicklung von Enterprise Anwendungen wichtigsten Diagrammarten an. Nicht unterstützt werden das Kommunikation-, Zeit-, Interaktionsübersichts- und leider auch das Verteilungsdiagramm. Diese Diagrammarten werden, mit Ausnahme des Verteilungsdiagramms, für die Modellierung einer Enterprise Anwendung nicht verwendet, wie das vorherige Kapitel zeigt. UML Erweiterungen für Eclipse Seite 63 Eine Transformation von UML in Java Quelltext ist leider erst ab der mit 800 Euro (Stand Mai 2008) relativ teuren Professional Version möglich. Deshalb wird im Rahmen dieser Diplomarbeit die Version 1.4.0 der „Free Community Edition“ evaluiert. • eUML [eUML08]: Von diesem Eclipse Plugin gibt es, neben der mit 590 Euro relativ teuren (Stand Mai 2008) Version, auch eine freie Version. Zusätzlich wird eine Lizenz für Universitäten angeboten. Mit der im Rahmen dieser Diplomarbeit evaluierten freien Version besteht die Möglichkeit Klassen-, Paket- und Sequenzdiagramme zu erstellen. Als weiteres Feature wird angegeben, dass eine „Realtime code/model synchronization“ möglich ist, was besonders im Hinblick auf eine modellgetriebene Entwicklung von großer Bedeutung ist. Im Rahmen dieser Diplomarbeit wurde die Version 3.1.0.20080415 dieses Plugins evaluiert. • green [gree08]: Dieses freie verfügbare Plugin wurde von der Universität in Buffalo entwickelt. Es wird das Klassendiagramm und eine automatisierte Codegenerierung angeboten. Außerdem soll es die Möglichkeit anbieten aus bestehenden Klassen, Diagramme zu erzeugen. Als weiteres Feature wird genannt, das sich Klassendiagramm und Quelltext automatisch synchronisieren. Im Rahmen dieser Diplomarbeit wurde die Version 3.0.0 des Plugins evaluiert. • MyEclipse [Myec08]: Die auf eclipse basierende Entwicklungsumgebung „MyEclipse“ bietet neben der Unterstützung von UML eine Vielzahl von weiteren Plugins an, die für die Entwicklung von Enterprise Anwendung eine große Hilfe darstellen. Das integrierte UML Plugin unterstützt das Anwendungsfall-, Klassen-, Sequenz-, Kollaborations-, Zustands-, Aktivitätsund Verteilungsdiagramm. Da man davon ausgehen kann, dass das Paketdiagramm im Rahmen des Klassendiagramms realisiert wurde, werden mit diesem Plugin die wichtigsten Diagrammarten angeboten. Der Preis von ca. 60 Euro pro Jahr (Stand: Mai 2008) ist für das gebotene durchaus akzeptabel. Im Rahmen dieser Diplomarbeit wurde die Version 6.0.1 GA dieser Entwicklungsumgebung evaluiert. • Slime UML [slim08]: Das freie Plugin „Slime UML“ bietet eine volle Unter- UML Erweiterungen für Eclipse Seite 64 stützung von Klassen-, Paket- und Anwendungsfalldiagrammen. Außerdem soll auch mit diesem Plugin eine automatische Anpassung der Diagramme bei Änderung des Codes erfolgen. Im Rahmen dieser Diplomarbeit wurde die Version 2.0.7 dieses Plugins evaluiert. • Violet UML Editor [Viol08]: Dieses freies verfügbare Eclipse Plugin bietet zwar leider keine Möglichkeit der Codegenerierung an, dafür werden mit dem Anwendungsfall-, Klassen-, Aktivitäts-, Sequenz-, Zustands- und Objektdiagramm die meist verwendeten Diagrammarten unterstützt. Dieses Plugin wirbt besonders mit einer unkomplizierten und intuitiven Erstellung von den oben genannten Diagrammen. Im Rahmen dieser Diplomarbeit wurde die Version 0.21 dieses Plugins evaluiert. Als nächster Schritt sollen die ausgewählten Plugins nach ihrer Funktionalität und Angebot gruppiert werden. Die Plugins „Apollo for Eclipse“ und „Green“ bieten nur das Klassendiagramm an, dafür wird bei diesen beiden Plugins die Codegenerierung realisiert. Die Plugins „eUML“, „AmaterasUML“ und „Slime UML“ bieten neben dem Klassendiagramm und der Möglichkeit der Codegenerierung noch zumindest eine weitere Diagrammart an. Das Plugin „Slime UML“ bietet zusätzlich das Anwendungsfalldiagramm, das Plugin „eUML“ das Sequenzdiagramm und das Plugin „AmaterasUML“ bietet sowohl das Anwendungsfall- wie auch das Sequenzdiagramm an. Die Plugins „Blueprint Software Modeler“ und „Violet UML Editor“ bieten eine Vielzahl der vorhandenen UML Diagrammarten an. Leider wird bei diesen beiden Plugins keine Codegenerierung angeboten. Einzig die auf eclipse basierende Entwicklungsumgebung „MyEclipse“ bietet einen Großteil der vorhandenen Diagramme und die Codegenerierung an. Für die folgenden Kapitel wurde folgende Gruppierung festgelegt: • „MyEclipse“: Diese erweiterte Entwicklungsumgebung bietet als einziges hier evaluierte Tool, sowohl eine Vielzahl von UML Diagrammen, wie auch UML Erweiterungen für Eclipse Seite 65 die Codegenerierung an. • UML Editoren: Hier werden die Plugins „Blueprint Software Modeler“ und „Violet UML Editor“ evaluiert. Diese beiden Plugins bieten nur die Möglichkeit UML Diagramme zu modellieren, allerdings keine automatisierte Codegenerierung. • Codegeneratoren: In diesem Kapitel werden die Plugins, die nur ein Klassendiagramm, bzw. ein um das Paketdiagramm erweitertes Klassendiagramm, und die automatisierte Codegenerierung anbieten, evaluiert. Es handelt sich dabei um die Plugins „Apollo for Eclipse“ und „Green“. • Erweiterte Codegeneratoren: Hier werden die Plugins, die sowohl die Codegenerierung aus Klassendiagrammen, sowie zumindest ein weiteres Diagramm anbieten, evaluiert. Es handelt sich dabei um die Plugins „eUML“, „AmaterasUML“ und „SlimeUML“. 4.2 MyEclipse Die auf der Entwicklungsumgebung „eclipse“ basierende Entwicklungsumgebung bietet neben der Unterstützung von UML, auch eine Reihe weitere Features und Erweiterungen an, die vor allem bei der Entwicklung von Enterprise Anwendungen sehr hilfreich sein können. Die evaluierte Version kostet für ein Jahr ca. 60 Euro (Stand Mai 2008). Die Installation dieser Entwicklungsumgebung ist relativ einfach. Auf der Internetseite wird die komplette Entwicklungsumgebung als Installationsdatei für Microsoft Windows angeboten. Für andere Betriebssysteme wird ein Update, welches auf „eclipse“ basiert angeboten. Der erste Eindruck ist sehr positiv, da der Start sehr einfach und vertraut ist. Nach Anlegen eines Projekts, können schon erste Diagramme modelliert werden. Der UML Teil der Entwicklungsumgebung bietet das Anwendungsfall-, Klassen-, Sequenz-, Kollaborations-, Zustands-, Aktivitäts- und Verteilungsdiagramm an. In den folgenden Kapiteln werden die einzelnen Diagrammarten einzeln evaluiert. UML Erweiterungen für Eclipse Seite 66 Den Aufbau der Benutzeroberfläche soll Abbildung 23 zeigen. Nach Erstellung einer „MyEclipse UML Datei“ können an diese Datei alle angebotenen Diagrammarten hinzugefügt werden. Im linken Bereich in Abbildung 23 werden die vorhandenen Diagramme gelistet. Der Hauptbereich teilt sich in diagrammbezogene Elemente (im oberen Bereich, hier Anwendungsfalldiagramm) und dem Diagramm selbst. Abbildung 23: MyEclipse: Benutzeransicht 4.2.1 Anwendungsfalldiagramm Das Erstellen eines Anwendungsfalldiagramms ist relativ einfach. Im oberen Bereich der Ansicht stehen die benötigten Elemente, wie Anwendungsfälle, Aktoren und Beziehungen zueinander zur Auswahl (siehe Abbildung 23). Allerdings wird nur die Basisfunktionalität angeboten. Soll ein Anwendungsfalldiagramm in Pakete eingeteilt werden, so ist dies nur händisch mittels Rechtecken möglich. Ein großer Pluspunkt, ist die Möglichkeit jedes Element im Diagramm (in jeder Dia- UML Erweiterungen für Eclipse Seite 67 grammart, nicht nur im Anwendungsfalldiagramm) mit einem Kommentar zu versehen. Dadurch kann bei der Modellierung eine, auf Text beschränkte, Beschreibung der Anwendungsfälle erfolgen. Zusätzlich wird die Möglichkeit geboten, UML Kommentare zu modellieren. Ein weiterer Vorteil sind die verschiedenen Exportmöglichkeiten, die diese Entwicklungsumgebung bietet. Die Diagramme können sowohl als XMI-Datei, wie auch in verschiedene Bildformate exportiert werden. Als praktische Anwendung wurde versucht das UML Anwendungsfalldiagramm aus Kapitel 3 des begleiteten Beispiels zu verfeiern. Das (exportierte) Ergebnis zeigt Abbildung 24. Abbildung 24: MyEclispe: Anwendungsfalldiagramm In Abbildung 24 wurden neben den Beziehungen zwischen Aktoren und Anwen- UML Erweiterungen für Eclipse Seite 68 dungsfälle die gezeigten Anwendungsfälle mit Hilfe von „extends“ und „include“ Beziehungen verfeinert. 4.2.2 Klassen- und Paketdiagramm Die Mischung aus Klassen- und Paketdiagrammen lässt sich, wie auch das Anwendungsfalldiagramm einfach modellieren. Im oberen Bereich werden wieder alle gängigen Elemente angeboten. Als Beispiel wurde das in Kapitel 3.8. Klassendiagramm modelliert. Es zeigt die Entitäten des begleitenden Beispiels. Das Ergebnis zeigt Abbildung 25. Abbildung 25: MyEclipse: Klassendiagramm Die Entwicklungsumgebung „MyEclipse“ bietet eine automatische Codegenerierung UML Erweiterungen für Eclipse Seite 69 aus diesem Modell an. Nach der Durchführung dieser Codegenerierung wurde der erzeugte Quelltext näher evaluiert. Der erzeugte Quelltext enthält einige Fehler, die hier kurz angeführt werden sollen: • Die standardmäßigen Zugriffsmethoden der privaten Attribute (sogenannte „Getter-“ und „Setter“-Methoden) werden zwar angelegt, aber nicht ordnungsgemäß implementiert. Die Zugriffsmethoden geben immer den Wert null zurück und die Schreibemethoden werden immer als leere Methoden generiert. • Bei den Zugriffsmethoden werden keine generischen Listen implementiert, was zu einer Warnung des Übersetzers („compiler“) führt. • Wird als Typ eines Attributs eine Java spezifische Klasse verwendet, so wird bei diesen Attributen der Name nicht richtig übernommen. So wird zum Beispiel bei der Klasse „Order“ ein Attribute „private Date Order____date;“ angelegt. • Bei der Auflösung der Beziehungen zwischen den Klassen tritt ein Fehler bei der Navigation durch die Klassen auf. Dieser Fehler tritt allerdings nur in einem Fall auf, die anderen Navigationen werden korrekt aufgelöst. Als weiteres Feature wird von der Entwicklungsumgebung „MyEclipse“ das Reverse Engineering angeboten. Nach der Realisierung des Java Quelltextes wurde als Ergebnis das Diagramm in Abbildung 26 generiert (Ausschnitt). Wie auf den ersten Blick ersichtlich ist das Ergebnis nicht sehr gut. Die Assoziationen werden falsch bzw. teilweise (zwischen den Klassen „Order“ und „OrderItem“) nicht generiert. Auch die Kardinalitäten (z.B. die 1 zu n Beziehung zwischen den Klassen „Product“ und „Productgroup“) werden nicht übernommen. Es wird auch keine Möglichkeit angeboten die „getter“- und „setter“-Methoden aus dem Diagramm auszublenden. Dieses Feature würde die Lesbarkeit des Klassendiagramms erhöhen. Das Zusammenspiel zwischen Klassendiagramm und Quelltext funktioniert nicht. Das Diagramm und der Quelltext werden nicht automatisch synchronisiert. Wird im UML Erweiterungen für Eclipse Seite 70 Modell ein Teil geändert, so muss die Klasse neu erstellt werden. Dabei werden mögliche Änderungen in der Klasse wieder überschrieben. Auch umgekehrt ist die Synchronisation nicht möglich, wird z.B. ein Attribut im Quelltext hinzugefügt, so muss es im Modell händisch nachgezogen werden und wird nicht automatisch übernommen. Abbildung 26: MyEclipse: Klassendiagramm Reverse Engineering 4.2.3 Sequenz- und Kollaborationsdiagramm Als Beispiel für ein Sequenz- bzw. Kollaborationsdiagramm wurde versucht der Anwendungsfall „Add Product“ von einer sehr technischen Sichtweise zu modellieren. Das resultierende Sequenzdiagramm zeigt Abbildung 27. Das erste Problem wurde beim Anlegen des Objektes „Administrator“ gefunden. So ist es nicht möglich Stereotypen zu verwenden. Bei der weiteren Vorgehensweise konnten weitere Einschränkungen und Fehler bei der Modellierung gefunden werden. Das Diagramm neigt dazu sich in die Länge zu ziehen und es besteht keine Möglichkeit das Diagramm händisch anzupassen. Wie in Abbildung 27 ersichtlich kann das UML Erweiterungen für Eclipse Seite 71 Diagramm nur händisch abgeschnitten werden. Zusammenfassend kann gesagt werden, dass die Darstellung des Sequenzdiagramms noch sehr fehlerhaft und noch nicht sehr weit fortgeschritten ist. Abbildung 27: MyEclipse: Sequenzdiagramm Ähnliche Einschränkungen wurden beim Kollaborationsdiagramm gefunden. Bei dieser Diagrammart wird die UML Notation nicht eingehalten. Es besteht auch keine Möglichkeit den Datenfluss mit Hilfe von Pfeilen darzustellen. Auch das Kollaborationsdiagramm wird den Ansprüchen von UML nicht gerecht. 4.2.4 Weitere Diagrammarten Neben den oben vorgestellten Diagrammarten bietet der UML Teil der Entwicklungsumgebung „MyEclipse“ die Möglichkeit Aktivitäts-, Zustands- und Vertei- UML Erweiterungen für Eclipse Seite 72 lungsdiagramme zu modellieren. Alle dieser drei Diagrammarten werden zwar von der Entwicklungsumgebung „MyEclipse“ angeboten, jedoch nicht ausreichend unterstützt, wie die folgenden Kapiteln zeigen sollen. Aktivitätsdiagramm Die Aktivitätsdiagramme werden in der Entwicklungsumgebung „MyEclipse“ nicht ausreichend unterstützt. So ist es nicht möglich einen Aktivitätsbereich darzustellen. Ein kleines Beispiel soll hier das speichern einer Bestellung gezeigt werden (siehe Abbildung 28). Abbildung 28: MyEclipse: Aktivitätsdiagramm Zusätzlich, zu den in Abbildung 28 gezeigten Notationen, werden mit Verzweigungs- bzw. Verbindungsknoten und den Parallelisierungs- bzw. Synchronisationsknoten die meist verwendeten Notationen angeboten. Zustandsdiagramm Für das Zustandsdiagramm wurde versucht das Beispiel aus dem vorigen Kapitel zu erstellen. Es handelt sich um das Protokollzustandsdiagramm „Warenkorb“. Abbildung 29 zeigt das Ergebnis der Modellierung. Wie aus Abbildung 29 ersichtlich konnte das gewünschte Ergebnis nicht erreicht werden. Es ist keine Beschriftung bei Änderungen von Zuständen möglich. Dadurch hat das gezeigte Diagramm wenig Aussagekraft. UML Erweiterungen für Eclipse Seite 73 Zusätzlich ist zwischen zwei Zustanden nur eine Beziehung in einer Richtung darstellbar. Dadurch ist dieser Teil der Entwicklungsumgebung nicht verwendbar und noch in der Entwicklungsphase. Abbildung 29: MyEclipse: Zustandsdiagramm Verteilungsdiagramm Mit Hilfe dieser Diagrammart können verteilte Systeme modelliert werden. Abbildung 30: MyEclipse: Verteilungsdiagramm UML Erweiterungen für Eclipse Seite 74 Als Beispieldiagramm wurde im Rahmen dieser Diplomarbeit versucht, den klassischen Aufbau einer Enterprise Anwendung zu modellieren. Wie Abbildung 30 zeigt, ist mit Hilfe dieser Diagrammart eine schöne Übersicht möglich. Leider werden beim exportieren des Diagramms in eine Bilddatei die Ecken abgeschnitten. Diese Modellart kann durchaus vor allem bei komplexeren verteilten Systemen sehr hilfreich sein. 4.2.5 Zusammenfassung Zusammengefasst kann gesagt werden, dass der UML Teil von der Entwicklungsumgebung „MyEclipse“ nicht zu empfehlen ist, da er noch ziemlich fehlerhaft ist. Die auf der Internetseite versprochenen Features sehen viel versprechend aus, leider existieren einige Bugs, die ein Arbeiten mit diesem Tool nicht ermöglichen. Es soll allerdings nicht unerwähnt bleiben, dass die Entwicklungsumgebung „MyEclipse“ eine große Menge an Plugins inkludiert, die bei der Implementierung einer Java Enterprise Anwendung sehr hilfreich sind. So werden mit dieser Entwicklungsumgebung unter anderem ein JavaScript Debugger, ein XML Editor oder die Unterstützung von Webservices mitgeliefert. 4.3 UML Editoren Als UML Editoren werden hier Plugins verstanden, die keine Möglichkeit der Codegenerierung anbieten, dafür aber eine breite Palette an UML Diagrammen anbieten. 4.3.1 Blueprint Software Modeler Das Plugin „Blueprint Software Modeler“ setzt sich als Ziel, einen modellgetriebenen Softwareentwicklungsprozess mit Hilfe eines Tools anzubieten. Leider wird dieser vollständige Prozess erst in der relativ teuren Professional Edition angeboten. Die, hier im Rahmen dieser Arbeit evaluierte, freie Version, bietet die Möglichkeit eine Vielzahl von UML 2.0 Diagrammen zu modellieren. Es wird die Modellierung von Anwendungsfall-, Klassen-, Paket-, Komponenten-, Kompositionsstruktur-, Objekt-, Aktivitäts-, Zustands- und Sequenzdiagrammen angeboten. Damit werden die meist verwendeten Diagrammarten angeboten, die bei der Modellierung einer Enter- UML Erweiterungen für Eclipse Seite 75 prise Anwendung verwendet werden. Die Installation dieses Plugins ist sehr einfach, da auf der Internetseite [Blue08] ein Gesamtpaket zum Download zur Verfügung gestellt wird. Die Benutzeroberfläche ist zu Beginn etwas gewöhnungsbedürftig, da dieses Plugin davon ausgeht den ganzen Softwaremodellierungsprozess zu unterstützen. Um ein einfaches Anwendungsfalldiagramm erstellen zu können muss zunächst ein ganzes Projekt und ein ganzer Prozess angelegt und beschrieben werden, wie in Abbildung 31 auf der linken Seite ersichtlich ist. Abbildung 31: Blueprint Software Modeler: Arbeitsbereich Anwendungsfalldiagramm Das Anwendungsfalldiagramm des Plugins „Blueprint Software Modeler“ bietet alle Notationen, um ein aussagekräftiges Diagramm zeichnen zu können. Leider besteht keine Möglichkeit das Diagramm als Bild zu exportieren. Als Beispiel wurde das Anwendungsfalldiagramm aus Sicht des Administrators mo- UML Erweiterungen für Eclipse Seite 76 delliert. Das Ergebnis zeigt Abbildung 32. Bei diesem Plugin werden eine Reihe von UML 2.0 (bzw. 2.1) Notationen geboten, die sonst kein anderes Plugin anbietet. So werden unter anderem für einen Anwendungsfall die Möglichkeit geboten „Constraints“ oder „Extension points“ zu modellieren. Abbildung 32: Blueprint Software Modeler: Anwendungsfalldiagramm Als weiterer guter Punkt kann zu jedem Element eine Dokumentation verfasst werden. So besteht auch hier die Möglichkeit einen Anwendungsfall zumindest mit Hilfe von Text im Rahmen des Modells zu beschreiben. Paket- und Klassendiagramme Das Plugin „Blueprint Software Modeler“ bietet leider nur die Möglichkeit ein Paketoder ein Klassendiagramm zu erstellen. Es besteht keine Möglichkeit diese beiden Diagrammarten in einem Diagramm darzustellen. Sehr gut sind die verschiedenen Darstellungsmöglichkeiten der Klassen im Klassen- UML Erweiterungen für Eclipse Seite 77 diagramm. So kann für jede Klasse einzeln bestimmt werden, welche Methoden angezeigt werden, und welche nicht. Dieses Feature erlaubt es übersichtliche Diagramme zu erzeugen, und zum Beispiel „getter“- und „setter“-Methoden aus dem Diagramm auszublenden. Als Beispiel wird hier ein Ausschnitt aus dem Domänenmodell gezeigt. Es zeigt das Zusammenspiel der Klasse „Product“ und der Klasse „Productgroup“ (siehe Abbildung 33). Abbildung 33: Blueprint Software Modeler: Klassendiagramm Auffallend ist, dass es nur wenige Möglichkeiten gibt, den Typ eines Attributes zu beschreiben. Die hier angebotenen Typen beschränken sich auf „Integer“, „String“, „Boolean“ und „UnlimitedNatural“. Weitere Diagrammarten Als weitere Diagrammarten werden Aktivitäts-, Zustands-, Sequenz-, Objekt-, Kompositionsstruktur- und Komponentendiagramme angeboten. UML Erweiterungen für Eclipse Seite 78 Im Rahmen dieser Diplomarbeit wird nur das Objektdiagramm näher betrachtet. Das Anlegen von Werten von Attributen ist relativ kompliziert gelöst. Es muss zu jedem Attribut ein Element („Slot Value“) angelegt werden, um Werte festzulegen. Dieser Wert wird allerdings nicht mit dem Diagramm synchronisiert. Daher ist es nicht möglich auf eine einfache Weise Objektdiagramme zu erstellen. Als Pluspunkt kann gesagt werden, dass es ein gutes Zusammenspiel mit dem Klassendiagramm gibt. Es können nur „echte“ Instanzen von Klassen angelegt werden. Zusammenfassung Das Plugin „Blueprint Software Modeler“ bietet eine Vielzahl von Diagrammarten an, die auch im vollsten Umfang unterstützt werden. Der Nachteil ist, dass die Generierung von Quelltext bei der evaluierten Version nicht implementiert ist. Das Anlegen von Diagrammen ist am Anfang etwas gewöhnungsbedürftig, da ein gesamter Softwareprozess angelegt werden muss. In der Praxis kann sich dies aber durchaus als Vorteil erweisen. Dieses Plugin ist gut, da es sich an den UML Standard hält. 4.3.2 Violet UML Editor Dieser UML Editor ist gratis verfügbar und relativ leicht zu erlernen. Das Tool wird neben dem Plugin auch als Standalone Programm oder auch als Java Applet angeboten. Für eine erste Evaluierung kann das Tool auch mittels Java Web Start (vgl. [WebS08]) gestartet werden. In diesem Tool wird eine Vielzahl von UML Diagrammarten angeboten. Mit Hilfe dieses Tool können Klassen-, Sequenz-, Zustands-, Objekt- und Anwendungsfalldiagramme modelliert werden. Leider besteht keine Möglichkeit den Quelltext aus den Diagrammen generieren zu lassen. Beim Projekt „Violet UML Editor“ handelt es sich um ein reines Zeichenprogramm, weshalb auch keine semantische Validierung der Modelle angeboten wird [Viol08]. Es handelt sich um ein kleines, freies Tool, welches bei zeichnen von UML Modellen unterstützen soll. Die aktuellste Version kann nicht in Eclipse inkludiert werden, da sie einige Fehler aufweist (siehe [Viol08]). Deshalb wird dieses Tool im Rahmen dieser Diplomarbeit UML Erweiterungen für Eclipse Seite 79 nicht näher in Betracht gezogen, da hier nur Tools evaluiert werden sollen, die sich in die Entwicklungsumgebung „eclipse“ integrieren lassen. 4.4 Codegeneratoren Die hier vorgestellten Plugins erlauben die Generierung von Quelltext aus einem Klassendiagramm bzw. die Generierung von Klassendiagrammen aus bestehenden Sourcecode. Beim Plugin „Apollo for Eclipse“ werden Teile des Paketdiagramms im Klassendiagramm integriert. Beim Plugin „GreenUML“ wird nur das Klassendiagramm angeboten, es besteht keine Möglichkeit Pakete zu modellieren. Dieses Punkt ist sicher als großer Nachteil zu betrachten, da selbst bei kleineren Projekten eine Unterteilung in Pakete von Vorteil sein kann. 4.4.1 Apollo for Eclipse Das Plugin „Apollo for Eclipse“ bietet eine Mischung aus dem Klassen- und Paketdiagramm an. Der Preis für dieses Tool beträgt etwa 5 Euro pro Monat (Stand Mai 2008), wählt man eine längere Mitgliedschaft, verringert sich dieser Betrag. Mit Hilfe dieses Plugins ist sowohl ein Forward Engineering (Automatisches Generieren von Quelltext aus dem Klassendiagramm), wie auch das Erstellen eines Klassendiagramms aus dem Quelltext (Reverse Engineering) möglich. Ein weiteres Feature dieses Plugin ist die automatische Synchronisation zwischen Quelltext und Diagramm. Wird das Diagramm geändert, so wird der Quelltext angepasst, wird der Quelltext zum Beispiel um ein Attribut erweitert, wird dieses Attribut automatisch im Diagramm übernommen. Forward Engineering Bei der Erstellung der Klassen mit Hilfe des Klassendiagramms wird die resultierende Java Klasse automatisch angelegt. Das Anlegen von Attributen kann entweder direkt im Quelltext oder im Klassendiagramm erfolgen. Dies kann auch ein Nachteil sein, wenn ein Klassendiagramm in einer hohen Abs- UML Erweiterungen für Eclipse Seite 80 traktionsebene modelliert werden soll und dieses nicht in Quelltext umgesetzt werden soll. Das heißt dieses Plugin ist sehr praxisnahe und nur für Klassendiagramme geeignet, die im Rahmen einer logisch, design-orientierte Modellierung (vgl. Kapitel 3.8.2) erstellt werden sollen. Mit Hilfe dieses Plugins wurde versucht einen Ausschnitt aus dem Domänenmodell (die Beziehung zwischen „product“ und „productgroup“) aus dem begleiteten Beispiel mit Hilfe des Klassendiagramms zu modellieren. Die Arbeitsumgebung ist sehr ansprechend, wie die Abbildung 34 zeigen soll. Wie man in Abbildung 34 sehen kann, werden alle notwendigen Elemente im rechten Bereich des Bildschirmes angeboten. Mit Hilfe dieser Elemente können unter anderem Pakete, Klassen, Interfaces aber auch Attribute oder Operationen angelegt werden. Abbildung 34: Apollo for eclipse: Arbeitsumgebung UML Erweiterungen für Eclipse Seite 81 Besonders hervorzuheben ist das Anlegen eines Attributes. Dieser Schritt erfolgt mit Hilfe von Java Quelltext. Der gleiche Mechanismus wird beim Anlegen von Methoden verwendet. Das heißt Methoden können direkt beim Anlegen implementiert oder zumindest kommentiert werden. Diese Vorgehensweise erlaubt eine sehr praxisnahe Modellierung und Implementierung, da diese zwei Schritte relativ einfach zu einem Schritt zusammengefasst werden. Den Aufbau dieses Features soll Abbildung 35 zeigen. Abbildung 35: Apollo for eclipse: Klassendiagramm Reverse Engineering Im Rahmen des Reverse Engineering wurde versucht aus dem implementieren Klassen des Domänenmodells ein Klassendiagramm zu erstellen. Die Vorgehensweise ist sehr einfach, nachdem die Klassen in den Arbeitsbereich importiert wurden, müssen die implementierten Klassen via Drag and Drop zum Diagramm hinzugefügt werden. Wie in Abbildung 36 zu sehen werden alle Assoziationen korrekt dargestellt und UML Erweiterungen für Eclipse Seite 82 gefunden. Es werden auch alle Methoden und Attribute richtig interpretiert. Der einzige kleine Nachteil ist, dass die Zugriffsmethoden („getter“ und „setter“Methoden) nicht ausgeblendet werden können. Das exportierte Ergebnis zeigt Abbildung 36. Abbildung 36: Apollo for eclipse: Klassendiagramm Zusammenfassung Das Plugin „Apollo for Eclipse“ kann eine große Hilfe in der Entwicklung darstellen. Leider wird nur eine Mischung aus Klassen- und Paketdiagramm angeboten, dafür ist die Qualität beachtlich. UML Erweiterungen für Eclipse Seite 83 4.4.2 GreenUML Das freie Plugin „GreenUML“ unterstützt sowohl das Forward Engineering, wie auch das Reverse Engineering. Dieses Plugin wurde von der Universität Buffalo entwickelt, um Studenten eine pädagogische Sicht auf das Design zu geben [Gree08]. Leider kann keine Einteilung in Paketen vorgenommen werden. Dieses Plugin erlaubt nur die Modellierung von Klassen in einem Paket. Es können keine Paketübergreifende Klassen graphisch dargestellt werden. Allerdings werden die Namen der Klassen um den Namen des Pakets erweitert. Forward Engineering Das Forward Engineering funktioniert sehr intuitiv und einfach. Es wurde wieder versucht einen Ausschnitt aus dem begleiteten Domänenmodell zu modellieren. Eine Ansicht auf die Benutzeroberfläche zeigt Abbildung 37. Die angebotenen Elemente werden auf der linken Seite des Arbeitsbereichs angezeigt. Abbildung 37: GreenUML: Benutzeransicht Wird eine Klasse im Klassendiagramm angelegt, so wird diese Klasse im gleichen Schritt auch im Quelltext angelegt. Diese Vorgehensweise bringt die gleichen Vortei- UML Erweiterungen für Eclipse Seite 84 le wie, die im vorherigen Kapitel beschriebenen mit sich. Reverse Engineering Wie oben beschrieben bezieht sich ein Klassendiagramm auf ein Paket. Im Rahmen des Reverse Engineering wird das fertige Klassendiagramm sofort mit den vorhandenen Klassen erstellt. Leider werden dabei die Assoziationen zwischen den Klassen nicht erkannt. Das Ergebnis des Reverse Engineering zeigt Abbildung 38. Abbildung 38: GreenUML: Reverse Engineering Zusammenfassung Das Plugin „GreenUML“ erlaubt ein einfaches Anlegen von Klassendiagrammen, wobei der Quelltext im gleichen Schritt erstellt wird. Bei Reverse Engineering sind noch etliche Probleme vorhanden. Ein großer Nachteil ist, dass mit Hilfe des Klassendiagramms keine Pakete erstellt werden können, deshalb kann dieses Plugin bei größeren Projekten leider nur bedingt eingesetzt werden, was auch nie Ziel dieses Plugins sein sollte. UML Erweiterungen für Eclipse 4.5 Seite 85 Erweiterte Codegeneratoren Als erweiterte Codegeneratoren werden hier Tools bzw. Plugins beschrieben, die neben der Möglichkeit Quelltext aus einem Klassendiagramm zu generieren, auch eine weitere UML Diagrammart unterstützen. Beim Plugin „eUML Modeler“ wird zusätzlich das Sequenzdiagramm angeboten, das Plugin „AmaterasUML“ bietet unter anderem ein Sequenzdiagramm wie auch ein Anwendungsfalldiagramm an, und das Plugin „Slime UML“ bietet ausschließlich ein Anwendungsfalldiagramm an. 4.5.1 eUML2 Modeler Das Eclipse Plugin „eUML Modeler“ bietet die Modellierung aus einer Mischung aus dem Klassen- und Paketdiagramms den Quellcode automatisch erstellen zu lassen. Zusätzlich ermöglicht die kostenpflichtige Version dieses Plugin Quellcode aus Sequenzdiagrammen zu erstellen. Klassendiagramm Dieses Plugin erstellt den Quellcode sofort im Modellierungsprozess aus dem modellierten Klassendiagramm. Dabei werden die Eclipse Standard Dialoge zum Erstellen der Klassen verwendet. Diese erstellten Klassen werden in einem anderen Fenster graphisch dargestellt, wie Abbildung 39 demonstrieren soll. Der Vorteil bei dieser Vorgehensweise ist, dass das Diagramm und der Quelltext synchron bleiben. Der Nachteil ist, wenn man in einer frühen Phase des Projekts ein Klassendiagramm entwerfen will, wird automatisch der Quelltext erstellt, obwohl das möglicherweise nicht erwünscht ist. Das heißt diese Vorgehensweise ist nur für eine logische, designorientierte Modellierung, nicht aber für eine konzeptuell-analytische Modellierung gedacht. Bei der Erstellung eines Attributes in der Klasse werden automatisch Zugriffsmethoden („getter“- und „setter“-Methoden) erstellt. Zusätzlich werden einige (konfigurierbare) Kommentare erstellt, wie Listing 2 zeigen soll. UML Erweiterungen für Eclipse Seite 86 Abbildung 39: eUML: Benutzeroberfläche Listing 2 zeigt einen Ausschnitt aus dem generierten Code der Klasse „Product“: public class Product { /** * @uml.property */ private Long id; name="id" /** * @return Returns the id. * @uml.property name="id" */ public Long getId() { return id; } /** * @param id The id to set. * @uml.property name="id" */ public void setId(Long id) { this.id = id; } } Listing 2: Source Code „Product“ (Auszugsweise) UML Erweiterungen für Eclipse Seite 87 Besonders bemerkenswert ist das Erstellen von Assoziationen zwischen den Klassen, wie die Abbildung 40 darstellen soll. Mit Hilfe dieses Dialogs können alle möglichen Formen der Assoziation dargestellt werden. Abbildung 40: eUML: Erstellen einer Assoziation Ein kleiner Nachteil beim Erstellen von Assoziationen ist, dass beim Auflösen einer 1 zu n Beziehung zwar der Typ der Liste angegeben werden kann, aber nicht die ge- UML Erweiterungen für Eclipse Seite 88 nerische Implementierung der Liste. Dieser fehlende Punkt führt seit der Einführung von Generics in Java (seit Version 1.5) zu einer Warnung im Übersetzer („compiler“). Das Zusammenspiel zwischen Quelltext und Modell funktioniert einwandfrei. Wird im Quellcode etwas geändert, so wird auch das Modell automatisch angepasst. Dieses Plugin bietet die Möglichkeit an, ein Diagramm als Bild zu exportieren. Das Ergebnis zeigt Abbildung 41. Abbildung 41: eUML: Klassendiagramm Wie in Abbildung 41 ersichtlich wird als Darstellungsform bei den Attributen keine gängige UML Notation verwendet, sondern es wird auf die Eclipse interne Darstellungsform zurückgegriffen. Das hat den Nachteil, dass Entwickler, die mit dieser Notation nicht vertraut sind, die Diagramme nicht auf Anhieb lesen können. UML Erweiterungen für Eclipse Seite 89 Sequenzdiagramm Bei der kostenpflichtigen Version besteht die Möglichkeit ein Sequenzdiagramm aus dem Quelltext erstellen zu lassen. Die hier evaluierte Free Edition erlaubt nur das händische Zeichnen von UML Diagrammen. Dabei wird von einer sehr praxisnahen Modellierung ausgegangen. Im oberen Bereich der Ansicht (siehe Abbildung 42) wird das UML Diagramm gezeigt, im unteren Bereich wird der Java Quelltext angezeigt. Auch hier werden, wenn es zu einem Methodenaufruf kommt diese gleich im Quelltext generiert. Abbildung 42: eUML: Sequenzdiagramm Das Erzeugen eines Sequenzdiagramms ist also sehr praxisnahe und der Quelltext wird im gleichen Schritt erstellt. Zusammenfassung Das Plugin „eUML Modeler“ bietet mit der gleichzeitigen Modellierung und Quell- UML Erweiterungen für Eclipse Seite 90 textgenerierung eine gute Möglichkeit für eine modellgetriebene Softwareentwicklung. Der Nachteil ist sicher, dass dieses Feature nicht immer gewünscht ist, wenn man z.B. ein Sequenzdiagramm zur Übersicht erstellen will, was aber nicht in Quelltext wiedergegeben werden soll. Zusammengefasst kann gesagt werden, dass dieses Plugin gut ist, aber es ist die Verwendung eines weiteren Tools notwendig, da erstens nicht alle Klassen- und Sequenzdiagramme abgebildet werden können und nur die Möglichkeit besteht ein Sequenz- bzw. ein Paket-/Klassendiagramm zu erstellen. Auch die verwendetet Notation ist nicht zu 100% mit der UML Notation gleich. Der Vorteil liegt sicher an der Praxisnähe. Es kann gleichzeitig mit der Implementierung ein brauchbares Diagramm z.B. für Dokumentationszwecke erstellt werden. 4.5.2 AmaterasUML Dieses Plugin unterstützt das Zeichnen von Klassen-, Sequenz- und Anwendungsfalldiagrammen. Außerdem erlaubt das Plugin eine Codegenerierung aus Klassendiagrammen und auch ein Reverse Engineering. Leider wird von diesem Plugin nur das Klassendiagramm unterstützt und keine Möglichkeit geboten die erstellten Klassen in Pakete einzuteilen. Die Installation dieses Plugins ist etwas komplizierter als bei den bisher evaluierten Plugins. Es wird kein Gesamtpaket angeboten und auch eine Installation über den in der Entwicklungsumgebung „eclipse“ integrierten Updatemanager ist nicht vorgesehen. Das heißt die Installation dieses Plugin muss manuell vorgenommen werden. Anwendungsfalldiagramm Das Plugin „AmaterasUML“ bietet eine einfache und schnelle Möglichkeit ein Anwendungsfalldiagramm mit allen Standardnotationen zu erstellen. Das erstellte Anwendungsfalldiagramm kann als Bilddatei exportiert werden. Als Beispiel wurde hier das Anwendungsfalldiagramm in der höchsten Abstraktionsebene modelliert. Das exportierte Bild zeigt Abbildung 43. UML Erweiterungen für Eclipse Seite 91 Abbildung 43: AmaterasUML: Anwendungsfalldiagramm Klassendiagramm Der Klassendiagrammeditor schaut sehr intuitiv und einfach aus, wie Abbildung 44 zeigen soll. Für diese Evaluierung wurde wieder versucht ein Ausschnitt aus dem Domänenmodell zu erstellen. Es wurde wieder die beiden Klassen „product“ und „productgroup“ ausgewählt. Abbildung 44: AmaterasUML: Ansicht Klassendiagramm Leider fehlt dabei die Möglichkeit das Klassendiagramm in Pakete einzuteilen. UML Erweiterungen für Eclipse Seite 92 Die Generierung von Quellcode ist relativ einfach möglich. Leider werden die Assoziationen nicht aufgelöst. Bei der Modellierung fehlt auch die Möglichkeit der Navigierung durch die Klassen anzugeben. Auch die Synchronisation zwischen Modell und Quelltext fehlt, das heißt der Quelltext bzw. das Modell müssten händisch angepasst werden. Bei Reverse Engineering können Klassen nur einzeln eingefügt werden, und nicht ganze Packages, was zur Folge hat, das keine Assoziationen erkannt werden. Sequenzdiagramm Mit dem Eclipse Plugin lassen sich relativ einfach kleine Sequenzdiagramme erstellen. Leider fehlen einige Notationen wie z.B. das Löschsymbol. Das heißt mit diesem Tool können nur sehr einfache Sequenzdiagramme erstellt werden, wie Abbildung 45 zeigen soll. Abbildung 45: AmaterasUML: Sequenzdiagramm Eine automatische Codegenerierung aus dem Sequenzdiagramm ist nicht vorgesehen. Weitere Diagramme Als weiteres Diagramm wird das Aktivitätsdiagramm angeboten. Diese Diagrammart wird im Rahmen dieser Diplomarbeit nicht näher evaluiert. UML Erweiterungen für Eclipse Seite 93 Zusammenfassung Beim Plugin „AmaterasUML“ funktioniert beim Anwendungsfalldiagramm die Exportfunktion nicht zu 100%. Das Klassendiagramm schaut zwar nett aus, es fehlen allerdings grundlegende Features, wie Pakete oder die Auflösung von Assoziationen. Auch das Modellieren von einfachen Sequenzdiagrammen ist mit Hilfe dieses Tools möglich, allerdings fehlen auch hier einige Notationen. 4.5.3 SlimeUML Dieses Plugin bietet eine einfache und schnelle Installation über den Eclipse Update Manager an. Es wird das Anwendungsfalldiagramm und eine Mischung aus dem Klassen- bzw. Paketdiagramm angeboten. Der Quellcode kann automatisch aus dem Klassendiagramm erstellt werden und es wird auch die Möglichkeit des Reverse Engineering angeboten. Anwendungsfalldiagramm Das Anwendungsfalldiagramm bietet alle verwendeten Notationen. Leider wird das exportieren der Diagramme in ein Bild nicht unterstützt. Abbildung 46: SlimeUML: Anwendungsfalldiagramm UML Erweiterungen für Eclipse Seite 94 Als kleines Beispiel wurde wieder versucht das Anwendungsfalldiagramm in einer hohen Abstraktionsebene zu modellieren. Besonders bemerkenswert ist die Möglichkeit, dass Diagramme mit Hilfe dieses Plugins gezoomt werden können. So ist es auch möglich große Diagramme übersichtlich anzuzeigen. Auffallend ist auch, dass keine Trennung zwischen Klassen- und Anwendungsfalldiagramm gemacht wird. Es gibt nur eine Diagrammart und man kann alle Elemente von beiden Diagrammen verwenden. Klassendiagramm Bei der normalen Modellierung eines Klassendiagramms konnten keine Attribute hinzugefügt werden. Die Dokumentation ist in dieser Beziehung auch mehr als spärlich, hier wird nur die Anleitung gegeben, wie das Reverse Engineering funktioniert. Es ist leider nur eine Dokumentation einer alten Version verfügbar. Beim Reverse Engineering werden Assoziationen nicht erkannt und müssten händisch nachgezogen werden. Wird allerdings ein Attribut im Quellcode geändert, so wird diese Änderung automatisch ins Klassendiagramm übernommen. Zusammenfassung Beim Plugin „SlimeUML“ ist nur das Anwendungsfalldiagramm zu verwenden. Das Klassendiagramm kann in dieser Form nicht verwendet werden. Kapitel 5 Zusammenfassung und Ausblick In diesem Kapitel werden die Erkenntnisse zusammengefasst und ein Ausblick auf weitere Tools gegeben. 5.1 Zusammenfassung Zusammengefasst kann gesagt werden, dass zwar UML 2.0 und Java Enterprise Anwendungen hervorragend zusammenspielen, sich allerdings die kostengünstige Toolunterstützung noch in der Entwicklungsphase befindet. Nichts desto trotz sollen hier einige evaluierte Plugins erwähnt werden. Der UML Teil der Entwicklungsumgebung „MyEclipse“ ist noch nicht sehr ausgereift, allerdings bietet diese Entwicklungsumgebung eine Vielzahl an anderen Plugins an, die für die Java Enterprise Entwicklung hilfreich sein können. Diese Entwicklungsplattform wird laufend weiterentwickelt, daher ist es nur eine Frage der Zeit, bis auch das UML Plugin den Ansprüchen gerecht wird. Als reiner UML Editor ist das Plugin „Blueprint Software Modeler“ am besten geeignet. Leider bietet dieses Plugin in der freien Version keine Möglichkeit Quelltext automatisch zu erzeugen. Bei der Codegenerierung schneiden die Plugins „Apollo for Eclipse“ und „eUML Modeler“ am besten ab. Mit Hilfe dieser Plugins wird das Klassendiagramm gleichzeitig mit dem Quelltext erstellt. Auch das Plugin „GreenUML“ bietet das gleiche Feature, allerdings keine Möglichkeit Klassendiagramme in Pakete aufzuteilen. Zusammenfassung und Ausblick 5.2 Seite 96 Ausblick Es existieren eine Vielzahl von Produkten und Plugins, die sich mit der Generierung von Code aus den Diagrammen (MDA - Model Driven Architecture - vgl. [OMG07b]) auseinandersetzen. Einige dieser, meist kostspieligen, Plugins sollen im Rahmen dieser Arbeit nicht unerwähnt bleiben: - IBM Rational [IBM08]: Ein Teil der IBM Rational Produktpalette ist der „Rational Software Architekt“. Mit Hilfe dieses umfassenden Produktes können sowohl standardisierte UML Diagramme, wie auch implementierungsnahe Diagramme erstellt werden. Die erstellten Diagramme können mittels manuell zu beschreibenden Konverter in Java umgewandelt werden. Mit Hilfe dieses Tools ist auch ein einfaches und umfassendes Reverse Engineering möglich. So kann man mit Hilfe dieses Tools unter anderem Sequenzdiagramme aus dem Quelltext (via Drag und Drop) erstellen. - Omondo [Omon08]: Das Plugin „EclipseUML 2008 Studio“ bietet alle 13 Diagrammarten von UML 2.0 an. Dabei werden die definierten Standards verwendet. Mit Hilfe dieses Plugins wird sowohl ein Forward Engineering wie auch das Backward Engineering von Anwendungen unterstützt. Zusammengefasst muss gesagt werden, dass in allen Fällen die kostengünstige Alternative meist nicht die bessere Variante darstellt. Literaturverzeichnis Seite 97 Literaturverzeichnis [Ahme02] K. Ahmed, C. Umrysh; Developing Enterprise Java Applications with J2EE and UML, Addison-Wesley, Indianapolis, 2002 [Amat08] AmaterasUML, http://amateras.sourceforge.jp [14.6.2008] [Apol08] Apollo for eclipse, http://www.gentleware.com/apollo.html [14.6.2008] [Blue08] Blueprint Software Modeler, http://www.atportunity.com/blueprintsm.php [14.6.2008] [Burn06] E. Burnette; Eclipse IDE kurz & gut, O’Reillys Taschenbibliothek, 2006 [Busc96] F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal; Pattern-oriented Software Architecture. A System of Patterns, Wiley, Chichester (England), 1996 [Ecli08] Eclipse - an open development platform, http://www.eclipse.org [4.6.2008] [Ecli08a] Eclipse plugin central (EPIC), http://www.eclipseplugincentral.com [5.6.2008] [eUML08] Soyatec - eUML2, http://www.soyatec.com/euml2 [14.6.2008] [Gamm95] E. Gamma, R. Helm, R. E. Johnson; Desgin Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley, Amsterdam, 1995 [gree08] green, http://green.sourceforge.net [14.06.2008] [Hitz05] M. Hitz, G. Kappel, E. Kapsammer, W. Retschitzegger; UML@work - Objektorientierte Modellierung mit UML 2, 3. Auflage, dpunkt, Heidelberg, 2005 [IBM08] IBM, Rational Software, http://www-01.ibm.com/software/rational [3.10.2008] [Jend06] E. Jendrock, J. Ball, D. Carson, I. Evans, S. Fordin, K. Haase; The Java EE 5 Tutorial - For Sun Java System Application Server Platform Edition 9, Third Edition, Addison-Wesley, USA, 2006 Literaturverzeichnis Seite 98 [Lang06] T. Langner, D. Reiberg; J2EE und JBoss - Verteilte Enterprise Anwendungen auf der Basis von J2EE, JBoss & Eclipse, Hanser, München, 2006 [Mari02] F. Marinescu; EJB Design Patterns - Advanced Patterns, Processes and Idioms, Wiley, New York, 2002 [Möss05] H. Mössenböck; Sprechen Sie Java?, dpunkt, Musterlösungen, 2005, http://www.ssw.uni-linz.ac.at/Misc/JavaBuch/Muster [5.6.2008] [Myec08] My eclipse - Infinite Possibilities, http://www.myeclipseide.com [14.6.2008] [Nass73] I. Nassi, B. Shneiderman; Flowchart techniques for structured programming, State University of New York, 1973 [OMG07] The Object Management Group (OMG), Unified Modeling Language (UML), http://www.omg.org/spec/UML/2.1.2 [4.6.2008] [OMG08] The Object Management Group (OMG), http://www.omg.org [4.6.2008] [OMG08a] The Object Management Group (OMG), CORBA Basiscs, http://www.omg.org/gettingstarted/corbafaq.htm [2.10.2008] [OMG08b] The Object Management Group (OMG), Model Driven Architecture, http://www.omg.org/mda [4.10.2008] [Omon08] Omondo - The live UML company, EclipseUML, http://www.uml2.org [3.10.2008] [Reic06] M. Reichold; Evaluierung des UML Modellierungswerkzeuges StarUML, Magisterarbeit, TU Wien, Oktober 2006 [Rupp05] C. Rupp, J. Hahn, S. Queins, M. Jeckle, B. Zengler; UML 2 glasklar Praxiswissen für die UML-Modellierung und Zertifizierung, Hanser, München, 2005 [Schä02] R. Schätzle, T. Seifert, J. Kleine-Gung; Enterprise JavaBeans Kritische Betrachtungen zu einer modernen Software-Architektur, Wirtschaftsinformatik 44, 2002, S. 217 - 224 [Schr02] D. Schramm; Eclipse - Die Entwicklungsumgebung für Java und andere Sprachen, Seminararbeit, FH Wedel, 2002, http://www.fhwedel.de/~si/seminare/ws02/Ausarbeitung/7.eclipse/eclipse0.htm [5.6.2008] [slim08] Slime UML - the lean and mean modeling tool, http://www.slimeuml.de [14.6.2008] [Soko07] C.Sokop; Java Enterprise Anwendungen und UML 2.0 - ein starkes Team?, Diplomarbeit (Wirtschaftsinformatik), TU Wien, 2007 Literaturverzeichnis Seite 99 [Soph05] Sophist Group; Vergleich von Nassi-Shneidermann-Struktogrammen und Aktivitätsdiagrammen, http://www.uml-glasklar.com; Link 13-1 [4.6.2008] [Star05] T. Stark; J2EE - Einstieg für Anspruchsvolle, Addison-Wesley, München 2005 [Star08] StarUML, The Open Source UML/MDA Platform, http://staruml.sourceforge.net/en [4.6.2008] [Sun08] Sun Microsystems, Core J2EE Patterns: Patterns index page, http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html [4.6.2008] [Tilm05] W. Tilman; Architektur und Konzepte von Eclipse 3, Seminararbeit, Freie Universität Berlin, WS 2004/05, 2005 [Viol08] Violet UML Editor, http://alexdp.free.fr/violetumleditor/page.php [14.6.2008] [WebS08] Java SE Desktop Technologies, Java Web Start Technology, http://java.sun.com/products/javawebstart/ [5.6.2008] [Zuse01] W. Zuser, S. Biffl, T. Grechenig, M. Köhle; Software-Engineering mit UML und dem Unified Process, Pearson Studium, 2001