Home

Abschlussbericht der PG 444 Eclipse Framework for

image

Contents

1. Class5_P4 Abbildung 14 6 Klassendiagramm des dargestellten Pakets 137 138 14 Beschreibung des ersten Release 14 6 1 Visuelle Tests Im Package Explorer soll die M glichkeit gegeben sein ein ausgew hltes Paket in einem neuen externen Fenster visualisieren zu lassen Testergebnis bestanden Anmerkung Es existiert nach Auswahl eines Pakets in dessen Kontextmen ein neuer Men punkt mit Namen Generate Scene der das geforderte Verhalten anst t Es ist m glich in der 3D Szene zu navigieren Testergebnis bestanden Anmerkung Es wird anhand der Pfeiltasten und der Tasten Bild Auf Bild Ab und ALT eine Navigation erm glicht Klassen sollen als W rfel dargestellt werden Testergebnis bestanden Anmerkung Durch das Navigieren in der Szene konnte verifiziert werden dass die Repr sentation der Klassen als eindeutig zu erkennende W rfel erfolgt Klassen sollen geeignet beschriftet werden Testergebnis bestanden Anmerkung Die Klassennamen erscheinen ber den W rfeln Hierbei ist allerdings zu beachten dass die Klassennamen erst ab einer bestimmten Entfer nung zum Bedrachter eingeblendet werden vergl Abb 14 5 Die Zuordnung der einzelnen Klassen zu einem Paket ist sofort durch ihre geh ufte Anordnung im Raum ersichtlich Testergebnis bestanden Anmerkung Es wurde visuell von allen Seiten berpr ft ob zu erkennen ist dass die zusammengeh ren
2. yon gay Abbildung 17 3 Geplantes Zustandsdiagramm des Automaten 17 Beschreibung des vierten Release 206 depuseHourejuogeouey oyu DEEN PIox BoueWayuIppe Vesjoog uonejoyanowar Leejooq uonejauppe Jaueuogpafoidado aupeuogpafoadadI euemen uonejaysse quadns uonepo awenpayenb logabeype dado s9ulEuogebeyaed ueejoogpatoa p ajo oq aBeypeqawesuluonepossy EEN EE EE USOS EE erstaunt Weueguohenossy ou pura waua guoneioossy awenpayenb upajo0g squawia yo94oH Weuspsnuaeg Wawe gspuang sosserdBunuawandu Boa pajuawajdw Suung Aueuipieguayddns weus suoneposse Bunig Aweupregqueyo eme Iengeuwueemes PS eseou Re ueajoog p uoppe Jouruogeourmayuiadd ies Zereteu gei JOU ees mue ul paugeupo ews sspuowz uonejousseioiedns jogaGeyedado eule ogabeyaed Juuidao 1eurewuogsasse QSupuaye Bunng awey payiyenb srrheny su ye0y 20ue siqpesinbo Uueejooq uonetoossyanoulal POSTE A9UIBINOOSSEDOO peiod uonsod EE alamop ueipei uy sainque Suns Amas saiiddng isreny spoyieus Ire sereten DEE 181009140109 w wag wawag ewig Jaurejuog abeyoegiuared soBeyoegqns 9 IsMaeuy isebexpeqans OIAMOPENPIMEANDUONEUNOJUN aanop iSu eqnguorewo ajanop y6eHeqnouoneuuo
3. 8 Das Eclipse Plugin Modell Plugin A Plugin B erweitert Extension Point k Extension implementiert Interface Klasse A erzeugt Instanz verwendet die Klasse Abbildung 8 3 Extension Zusammenhang zwischen zwei Plugins Eclipse Foundation 2003 e um welche Funktionen sie die Plattform erweitern und e um welche Funktionen das Plugin von anderen Plugins erweitert werden kann Um diese Informationen mitteilen zu k nnen werden die oben genannten Extension Points verwendet Definition 8 2 1 Erweiterungspunkt Ein Erweiterungspunkt definiert f r ein Plugin um welche Funktionalit t das Plugin von anderen Plugins erweitert werden kann Das hat nat rlich zur Konsequenz dass jedes Plugin mindestens auf einen oder mehrere Er weiterungspunkte zugreift und ber diese neue Funktionalit t in die Plattform mit einbringen Eclipse Foundation 2003 Optional kann ein Plugin ebenfalls eigene Erweiterungspunkte definieren Somit entsteht ein Netz von Abh ngigkeiten der Plugins untereinander sodass ein Plugin A mit einem anderen Plugin B in einer der folgenden Relationen stehen kann Bolour 2003 1 Abh ngigkeit Das bedeutet dass A das vorausgesetzte Plugin ist und B das von A ab h ngige A liefert also die Funktionalit t die B ben tigt um korrekt arbeiten zu k nnen 2 Extension Die Rollen in der Relation sind so verteilt dass A das Basisplugin ist und B d
4. Level of Detail LoD Objekte sollen ab einer bestimmten Distanz zur Kamera op tional automatisch ausgeblendet werden k nnen Testergebnis bestanden Anmerkung Diese Einstellung kann nicht optional ein bzw ausgeschaltet werden 179 180 16 Beschreibung des dritten Release Auf der Zeitachse des Diagramms soll eine automatische Kamerafahrt m glich sein Wegpunkte m ssen nicht frei bestimmt werden k nnen Testergebnis nicht bestanden Anmerkung Diese Userstory wurde auf Grund von Zeitmangel nicht implementiert F r das Diagramm soll die Semantik von Gil und Kent dienen jedoch ohne Objekt zust nde Testergebnis bestanden Anmerkung Es wurde ein visueller Vergleich der Semantik von Gil und Kent mit der graphischen Ausgabe des Plugins durchgef hrt Eine automatische Generierung des Diagramms aus vorhandenem Quellcode ist ge w nscht PG Versammlung 26 1 04 Testergebnis bestanden Anmerkung Ein entsprechender Men punkt wurde in das EFFECTS Popup Men eingef gt Um die Korrektheit zu testen wurde mittels Borland Together das in Abbildung 16 4 dargestellte Sequenzdiagramm erzeugt und der daraus generierte Quellcode in Eclipse importiert Anschlie end wur de visuell der zeitliche Ablauf zwischen dem Sequenzdiagramm und der vom Plugin generierten Darstellung verglichen Ebenso wurde der Inhalt der internen Datenstrukur mit dem von uns erwarteten Inhalt verglichen Bei beiden Vergleichen stimmte das erhalt
5. MethodObject parent MethodObject declaringInstance CallingObject MethodObject addMethodObjectAsChild void getldentifierFromArrayList String _ constructor boolean methodObjectListlterator Iterator parameterNames String parameterTypes String calledMethod lMethod declaringClass IType compilationUnit boolean declaringInstanceName String methodObjectListLength int SQLevelNumber int methodObjectList List parameterlDs ArrayList identifier String className String calledMethods RealObject xCoordinate double zCoordinate double xPosition double yPosition double zPosition double RealObject methodListlterator Iterator XCoordinate double ZCoordinate double incommingCalls int outgoingCalls int SQLevelNumber int methodList ArrayList XPosition double YPosition double ZPosition double label String type String Abbildung 16 2 Realisierte Architektur des Datenmodells 176 16 Beschreibung des dritten Release lt lt use gt gt a e CD FEIN al ig N 2 Ki Abbildung 16 3 Ubersicht der realisierten Plugin Struktur 16 5 Vorstellung der implementierten Architektur Regel HotSpot Eine bersicht der realisierten Berechnungsklassen findet sich in Abbil dung 16 3 Es wurden drei verschiedene Berechnungsklassen implementiert n mlich SOCalcu lation SQTierCalculation sowie SOObjectCalculation
6. bestanden manuelle berpr fung Die Regel zur Vergabe von Farben f r Pake te ist in der Klasse ColorCalculations implementiert Daher wird die XML Datei ge ndert indem der Verweis auf die das Interface Calculations implementierende Klasse ColorCalculations ent fernt wird Anschlie end wird berpr ft ob die Elemente im Diagramm farblos erscheinen Fehler sollen in der graphischen Benutzungsschnittstelle angezeigt werden Testergebnis Anmerkung nicht bestanden manuelle berpr fung In der XML Datei wird ein Verweis auf eine Klasse eingetragen die einen Fehler verursacht Dieser muss w hrend der Programmausf hrung angezeigt werden Des Weiteren wird in der XML Datei ein Verweis auf eine nicht existierende Klasse eingetragen Auch dieser Fehler soll in der graphischen Benutzungsschnittstelle ange zeigt werden Der Test wurde nicht bestanden da bei einem provozierten Fehler bez glich des Regel HotSpot keine Meldung in der graphischen Benutzungsschnittstelle angezeigt wurde 15 6 Kunden Akzeptanztest W hrend jeder Berechnung soll ein Informationsfenster angezeigt werden dass w n schenswerterweise eine Fortschrittsanzeige enth lt Testergebnis bestanden Anmerkung 1 visuelle berpr fung 2 manuelle berpr fung Die f r den Test geschriebenen Methoden werden nach Abschlu der Berechnung aufgerufen Sobald diese Methoden aufgerufen werden soll das Informationsfenster nicht mehr angezeigt werden
7. Das letzte Paket view3d interaction picking der Kernkomponenten dient zur Interak tion mit grafischen Objekten und erm glicht das anklicken dieser Objekte in einer Szene Folgende Klassen sind sind hierzu erforderlich e Ein Objekt der Klasse PickingHandler reagiert auf Mausklicks in der 3D Darstellung und ermittelt die angeklickten grafischen Objekte Zus tzlich haben beliebige andere Klassen bzw deren Objekte die M glichkeit sich ihrerseits beim PickingHandler 19 1 Die Kernkomponenten zu registrieren um dar ber informiert zu werden wenn grafische Objekte angew hlt wurden Diese Klassen m ssen das PickingListener Interface implementieren und erhalten dann eine Liste der angew hlten 3D Objekte e Die angeklickten Objekte werden vom PickingHandler in einem Container verwaltet Dieser Container wird durch die Klasse PickedObjectsContainer realisiert Durch die Verwendung eines Containers zur Verwaltung der angeklickten Objekte ist es m g lich zu jedem beliebigen Zeitpunkt die aktuelle Auswahl abzufragen Des Weiteren ist es so m glich die ausgew hlten Objekte in der 3D Darstellung zu markieren was durch einen Rahmen geschieht Dieser wird durch die Klasse HighlightBox zur Verf gung gestellt Wird also ein Objekt in den Container eingef gt so wird dem Anwender durch die automatische Markierung des Objekts in der Darstellung angezeigt dass dieses Objekt ausgew hlt ist Wird ein Objekt aus dem Container entfernt so wird a
8. meya nz ua nz a6 lt lt asn gt gt Abbildung 14 4 Realisierte Systemarchitektur Release 1 134 14 Beschreibung des ersten Release 14 5 3 Vergleich geplanter und realsierter Architektur Zun chst ist zu sehen dass die geplante MVC Architektur in der realiserten Architektur um gesetzt worden ist Die Komponente Menuepunkt aus der Systemmetapher entspricht im ak tuellen Modell der Klasse GenerateAction und bietet die geplante Funktionalit t aus dem Eclipse Pluginkern unser Effects Plugin aufzurufen Diese Klasse ist somit der Einstiegspunkt in unser Plugin Eine auff llige nderung in der Steuerung des Programmablaufs ist dass in der implemen tierten Architektur nun eine Klasse Controller existiert die die geplanten Komponenten UmrechnungIn3DModell und Editor nun zusammen repr sentiert Die Klasse Controller bernimmt die zentrale Steuerung aller Aktionen w hrend der Programmausf hrung und bein haltet nun keine Berechnung von Informationen mehr Weiterhin wurde das Eclipse Datenmodell um eigene Containerklassen erweitert um zu s tzliche Informationen wie Farbe Ebenen und Anordnung der entsprechenden Klassen und Pakete zu speichern Die Komponente Eclipsedatenmodell wurde in der realisierten Ar chitektur entsprechend des Eclipse internen Datenmodells durch die Interfaces IPackage Fragment IRessource und ICompilationUnit angepasst Hierbei wird au erdem deut lich an welcher Stelle das Ecli
9. A Kar ire 22 Ausblick Semih Seving Michael N the In diesem Abschnitt wird zun chst der momentane Stand des Frameworks und des Class PackageDiagram Plugins erl utert Des Weiteren wird auf die fehlenden Funktionalit ten und Erweiterungsm glichkeiten des Frameworks und des ClassPackageDiagram Plugins einge gangen Am Ende werden anhand eines kleinen Beispielprojekts die Unterschiede und Vor teile zwischen zweidimensionaler UML Notation und der dreidimensionalen Notation des EFFECTS Plugins dargestellt 22 1 Momentaner Stand Das ClassPackageDiagram stellt eine Integration von Klassen und Paketdiagrammen dar Es kann zum einem aus vorhanden Quellcode die Visualisierung der statischen Struktur eines Softwaresystems automatisiert erzeugt zum anderen ein neues Projekt graphisch angelegt und bearbeitet werden Aus dieser selbst erstellten Szene ist es dann m glich den Quellcode zu erzeugen Das Framework bietet eine Infrastruktur die es erm glicht effizient neue dreidi mensionle graphische Notationen zu implementieren 22 2 Erweiterungsm glichkeiten Da es sich bei den einzelnen Diagramm Plugins um prototypische Umsetzungen von Visuali sierungen handelt gibt es noch einige Schwachstellen bzw Erweiterungsm glichkeiten Zu n chst wird das ClassPackageDiagram betrachtet Ein wichtiges Feature das in diesem Dia gramm fehlt ist die M glichkeit Kollisionsabfragen zwischen Objekten im dreidimensionalen Raum durchzuf hren D
10. Domain HotSpot Das Modell des Domain HotSpots orientiert sich an der Aufgabenstel lung ein Sequenzdiagramm nach Gil und Kent 1998 zu erstellen Hierzu ist es notwendig zu einer Methode eines Objektes die Aufrufhierarchie zu speichern Der Domain Hotspot bietet die M glickeit zu einer Klasse ein Objekt welches das Container Interface implementiert zu hinterlegen Dieser Container muss das Abspeichern der Aufrufhierarchie f r jede Me thode erlauben Aus diesem Grund enth lt der SOContainer der das Interface Container implementiert eine Hashmap Diese erlaubt das Abspeichern der Aufrufhierarchie einer Me thode unter dem Schl ssel IMethodObject Das IMethodob ject ist Bestandteil der Eclip se internen Datenstruktur und repr sentiert eine Methode einer Klasse Abbildung 16 1 zeigt den oben erl uterteten Sachverhalt Die Aufrufhierarchie zu einer Methode wird dabei in ei nem MethodObject gespeichert das wiederum eine Liste von Methodenobjekten enth lt So l sst sich zu einer Methode ein kompletter Aufrufbaum in beliebiger Tiefe abspeichern Das Methodobject enth lt eine Reihe von Attributen die zur sp teren Darstellung ben tigt werden Diagramm HotSpot ber den Diagramm HotSpot werden die graphischen Elemente des zu realisierenden Diagramms festgelegt Daf r ist im Framework das Interface Graphical Object vorgesehen das jedes graphische Objekt implementieren muss F r das Sequenzdia gramm nach Gil und Kent werden folgende graph
11. und k nnen ausschlie lich Verzeichnisse und Dateien enthalten aber keine anderen Projekte hn lich wie Verzeichnisse wird beim Erzeugen eines Projektes ein Pfad auf das zugrunde liegende Verzeichnis in dem Dateisystem spezifiziert 8 1 2 Die Architektur der Eclipse Plattform Wie zu Anfang erw hnt ist die Eclipse Plattform unter dem Aspekt einer offenen Architektur entwickelt worden Eclipse Foundation 2003 Dies wurde dadurch erreicht dass es im We sentlichen einen kleinen Plattformkern gibt der daf r Sorge tr gt Plugins zu starten und zu verwalten Die oben beschriebene Workbench ist somit nur ein Teil der gesamten Eclipse Platt form In Abbildung 8 2 ist der schematische Plattformaufbau dargestellt Jede der dort darge stellten Komponenten ist wiederum als Plugin implementiert Die Funktionalit t der Plattform basiert also auf diesen Plugins In einer Standard Eclipse SDK Installation sind Plugins f r die Ressourcenverwaltung der grafischen Benutzeroberfl che dem Hilfesystem der Teamarbeit mittels CVS und nat rlich dem Plattformkern enthalten Als zus tzliche Plugins die nicht zur Eclipse Plattform selbst geh ren sind die JDT die Java Entwicklungsumgebung und das PDE die Plugin Entwicklungsumgebung enthalten Soll z B ein Plugin f r die Workbench mit Benutzeroberfl che entwickelt werden greift man unter anderem auf die schon vorhande nen Komponenten wie z B Views und Editoren der Workbench zu Zus tzlich bietet
12. while d s n t d d d ihe prints size_is t d foo n A 4 Die Einruckung 1 Die Tabweite betr gt exakt 4 Leerzeichen wobei Tabs den Leerzeichen vorzuziehen sind 2 Beispielcode in der Klassendokumentation sollte maximal 70 Zeichen lang sein 3 Eine Zeile darf nicht mehr als 255 Zeichen lang sein A 4 1 Codebl cke Codebl cke werden durch und gekennzeichnet Diese ffnende Klammer muss auf glei cher Ebene einger ckt sein wie die geschlossene Klammer es sei denn es handelt sich um einen leeren Block RICHTIG if irgendwas FALSCH true if irgendwas true A 4 Die Einr ckung A 4 2 Zeilenumbr che Falls eine Codezeile umgebrochen werden soll so gelten folgende Regeln f r den Zeilenum bruch 1 Nach einem Komma 2 Vor einem Operator 3 High Level sind Low Level Zeilenumbr che vorzuziehen 4 Die n chste Zeile wird a bei Zuweisungen auf das Niveau des Zuweisungsoperators plus ein Leerzeichen einger ckt b bei Funktionsaufrufen auf das Zeichen plus ein Leerzeichen einger ckt A 4 3 Beispiele Methodenaufrufe methodeEins int a int b int c String buffer String output int x x methodeZwei String a String b methodeDrei int y Zuweisungsoperatoren Handelt es sich um Zuweisungsoperatoren gilt das folgende Beispiel Hierbei kann man auch den Unterschied zwischen High Level und Low Level erke
13. 3 Paketvariablen Diese besitzen keinen Zugriffsbezeichner 4 private Instanzvariablen Die Reihenfolge der Instanzvariablen ist genau wie bei den statischen Klassenvariablen Konstruktoren Bei berladenen Konstruktoren sollten diese in aufsteigender Reihenfolge der m glichen Uber gabeparameter angegeben werden public class Klasse extends Irgendwas Klasse Klasse String a Klasse String a int b Methoden Um das Verst ndnis der Klasse zu erleichtern werden die Methoden nach Funktionalit t grup piert A 3 Leerzeilen und Leerzeichen A 3 1 Leerzeilen Zwei Leerzeilen werden eingef gt 1 Zwischen den Hauptabschnitten der Java Datei Eine Leerzeile wiederum wird in den folgenden F llen eingef gt 1 Vor jedem Kommentar ist eine Leerzeile einzuf gen 2 Folgt nach einer Deklaration einer Variablen keine weitere so wird eine Leerzeile ein gef gt 3 Methodendeklarationen werden durch eine Leerzeile getrennt N n A Code Konventionen 4 Zwischen jeder case Marke ist eine Leerzeile au er es folgen mehrere case Marken direkt aufeinander 5 Zwischen logischen Abschnitten in einer Methode A 3 2 Leerzeichen 1 Ein Leerzeichen hinter einem Komma 2 Ein Leerzeichen hinter einem Semikolon in einer for Schleife 3 Bin ren Operatoren werden von ihrem Operanden durch ein Leerzeichen getrennt 4 Un re Operatoren werden nicht von ihrem Operanden getrennt a e E a a
14. Aufgabe gut erf llen k nnen Sie m ssen sich leicht von den Objekten in der dreidimensio nalen Welt unterscheiden lassen gut lesbar sein aber trotzdem m glichst wenig von der Welt berdecken Wird ihr Bezugsobjekt bewegt sollen sie weiterhin nutzbar bleiben und sich da bei m glichst von selbst neu anordnen so dass diese Aufgabe dem Nutzer erspart bleibt Zu viele Feedbackelemente k nnen un bersichtlich wirken deshalb ist dynamisches Erscheinen sinnvoll Visualisierung Visualization Visualisierung ist der Prozess durch den eine Anwendung ihre Daten dem Nutzer pr sentiert Techniken zur Visualisierung sind in gro er Zahl vorhanden die beste Form f r eine Anwen dung h ngt von ihren Daten und Nutzern ab Da mit unserem Editor Klassendiagramme erstellt werden sollen sind wir im Bereich der abstrakten Daten die kein Analogon in der realen Welt haben F r das Design der virtuellen dreidimensionalen Welt stehen daher viele M glichkei ten offen wobei stets das Ziel angestrebt werden sollte dem Nutzer durch die Darstellung ein besseres Verst ndnis f r die Daten zu geben Bei der Visualisierung abstrakter Daten ist es wichtig eine k nstliche Orientierung einzuf hren damit der Nutzer wie gewohnt durch die dreidimensionale Welt navigieren kann In dreidimensionalen Welten tritt st ndig das Problem auf dass Objekte berdeckt gezeich net werden m ssen Hierzu existieren nach Barrilleaux 2001 unter anderem die L sungen X
15. Der Algorithmus des EasyViewer Projektes sollte benutzt werden 10 Stunden Der Algorithmus war nicht f r die interaktive Anordnung von Cone Trees ausgelegt und musste entsprechend angepasst werden Toplevel Pakete und Klassen Interfaces im DefaultPackage im Universum anord nen Beschreibung geplante Zeit reale Zeit Hier ging es darum aus dem Code zu erkennen ob eine Klasse oder ein Interface zum Defaultpackage geh rt oder nicht 10 Stunden Es traten im Vorfeld bereits Probleme mit der Paketdeklara tion auf 2 Stunden Die zuvor bef rchteten Probleme sind nicht aufgetreten Struktur zum Generieren eines Diagramms anlegen Beschreibung geplante Zeit reale Zeit Dieser Task besch ftigte sich mit dem Ansto en des Layoutalgorithmus 4 Stunden 4 Stunden 17 4 Reflexion ber die Tasks Syntaxpr fung Konzeptionelle Ausarbeitung des Syntaxchecks auf graphischer Ebene und dem Da tenmodell Beschreibung Hier gab es eine Unterteilung in zwei Bereiche Der erste Bereich befasst sich mit dem graphischen Syntaxcheck mit Hilfe einer Kollisionsabfra ge Es sollte gepr ft werden k nnen ob sich z B eine Klasse innerhalb eines Paketes befindet Der zweite Bereich beinhaltet eine Syntaxpr fung auf Codeebene die z B f r Erbungsbeziehungen zust ndig ist geplante Zeit 10 Stunden reale Zeit 10 Stunden Kollisionsabfrage realisieren Beschreibung Die Kollisionsabfrage ist eine Voraussetzung f r die
16. Der vorliegende Bericht gliedert sich wie folgt Teil 2 gibt die Verschriftlichung der Themen wieder die in der Seminarphase bearbeitet wurden Teil 3 umfasst kapitelweise die vier Entwicklungszyklen die die Projektgruppe durch laufen hat Jedes Kapitel folgt dem in Kapitel 9 vorgestellten Prozess des eXtreme Pro gramming und ist folglich gegliedert in die Beschreibung der User Stories der verwen deten Systemmetapher den erarbeiteten Tasks der implementierten Architektur sowie der Kundenakzeptanztests Teil 4 gibt einen berblick ber das entwickelte Framework und beschreibt seine Ver wendung Der Bericht schlie t in Teil 5 mit einem Fazit welches Ablauf und Organisation der Projektgruppe kritisiert und weiterf hrende Arbeiten skizziert Im Anhang finden sich die verwendeten Konventionen zur Codegestaltung sowie Hin weise ber die Lizenz unter der das erstellte Produkt genutzt werden darf TEIL 2 OA Seminarphase A KAPTE 4 Modellierung mit UML Semih Seving 4 1 Einleitung In dieser Ausarbeitung geht es um die Modellierung objektorientierter Software mit UML welche man in das statische und dynamische UML Modell einteilen kann Bei der Erstellung von Software werden meistens nur die altbekannten Klassendiagramme aus dem statischen Modell verwendet das dynamische Modell hingegen findet weniger Anwendung Aber genau wie das statische Modell mit den Anwendungsfall und Klassendiagrammen hat das dynami sche Modell
17. Die Namen der Operationen der Schnittstelle sowie deren Signatur be nennen die Klasse welche die Besuche Operation des Besuchers aufruft Der konkrete Be sucher implementiert die vom Besucher zuvor definierten Operationen Will ein Klient eine bestimmte Operation auf der Objektstruktur ausf hren dann erzeugt er einen konkreten Be sucher und bergibt ihn an die Objektstruktur Die Objektstruktur h lt die Elemente auf die die Besucher angewendet werden k nnen Bei der Anwendung eines Besuchers werden alle Elemente der Objektstruktur von diesem besucht Die abstrakte Klasse Element definiert die Schnittstelle f r die konkreten Elemente Diese Schnittstelle spezifiziert die Operation nimmEntgegen die von den konkreten Ele menten implementiert wird ber diese Operation nimmt ein konkretes Element einen an die Objektstruktur gerichteten Besucher entgegen Darauf hin ruft das Element die ihm entspre chende Operation des Besuchers auf und bergibt dabei eine Referenz auf sich selbst Des Weiteren implementieren die konkreten Elemente Operationen f r den Zugriff auf ihre inter nen Daten damit die konkreten Besucher ihre Aufgaben auf den konkreten Elementen durch f hren k nnen So erh lt der Besucher Zugriff auf das entsprechende Element ohne das dabei die Kapselung des Elementes verletzt wird 10 Entwurfsmuster Klient Besucher besucheKonkretesElementA kElementA KonkretesElementA void besucheKonkretesElem
18. Es ist hingegen aufwendig Klassen zu der Objektstruktur hinzuzuf gen da eine neue Klas se in der Objektstruktur eine neue Operation und deren Implementierung in jedem Besucher verlangt Daher sollte man sich vor Gebrauch des Besuchermusters Gedanken dar ber ma chen ob sich die Objektstruktur voraussichtlich ndern wird oder nicht Da die Methoden der Besucher die Ver nderungen an den Objekten der besuchten Struktur vornehmen ist es nat rlich n tig dass die Eigenschaften der Objekte von au en zug nglich sind Dies ist ein Nachteil des Besuchermusters denn hierdurch wird die Kapselung der Ob jektstrukturdaten aufgebrochen 10 4 2 Iterator Zweck Das Iterator Pattern zeigt eine M glichkeit auf auf zusammengesetzte Objekte sequentiell zuzugreifen ohne dabei deren innere Struktur preiszugeben 10 4 Verhaltensmuster Motivation Der sequentielle Zugriff auf zusammengesetzte Objekte bzw Aggregate von Objekten erfor dert exaktes Wissen ber Implemetierungsdetails des komplexen Objekts Bei solch einer zu sammengesetzten Struktur z B Liste ist es w nschenswert auf die Elemente zugreifen zu k nnen ohne dabei Interna offen legen zu m ssen Au erdem sollte die M glichkeit beste hen die Struktur auf verschiedene Arten und zeitgleich mehrfach zu traversieren Um dies zu realisieren bedient sich das Iteratormuster eines Iterator Objekts welches die Funktionalit t zur Traversierung zugewiesen bekommt so dass d
19. Es sollen mehrere Pakete gleichzeitig zur Visualisierung ausgew hlt und angezeigt werden k nnen Testergebnis bestanden Anmerkung automatische und visuelle berpr fung Es werden mehrere Pakete aus gew hlt und das Plugin ber den Men punkt gestartet Anschlie end wird in einem Testdialog eine von den Kunden erstellte XML Datei aus gew hlt die der Paketauswahl entspricht Nun werden die berechneten Daten automatisch mit den erwarteten Daten verglichen Die visuellen Diagrammelemente sollen zur besseren Orientierung ihren Schatten auf den Boden projizieren Testergebnis nicht bestanden Anmerkung visuelle berpr fung Dieser Test konnte nicht durchgef hrt werden da die User Story aus Zeitgr nden nicht implementiert wurde Es soll eine M glichkeit geboten werden das Plugin sowohl f r Linux als auch f r Windows auf einfache Weise zur Verf gung zu stellen Dazu ist eine Dokumentation erw nscht Testergebnis nicht bestanden Anmerkung manuelle berpr fung Die f r das Plugin zur Verf gung gestellten In stallationsdateien werden gem Dokumentation installiert Anschlie Bend wird Eclipse gestartet und berpr ft ob das Plugin zur Verf gung steht und korrekt funktioniert Dieser Test schlug fehl da bei den er stellten Plugins f r Windows nicht ber cksichtigt wurde das Java3D f r Windows in einer Version f r DirectX und OpenGL vorliegt 157 158 15 Beschreibung des zweiten Release 15 6 2
20. Jon 3D user interfaces with Java 3D Manning 2001 Battista u a 1994 BATTISTA Giuseppe D EADES Peter TAMASSIA Roberto TOL LIS Ioannis G Algorithms for Drawing Graphs an Annotated Bibliography Department of Computer Science Brown University USA 1994 Forschungsbericht Beck 1999 BECK Kent Extreme Programming A gentle introduction 1999 URL http www extremeprogramming org Zuletzt gesichtet 19 08 2004 Beck 2000 BECK Kent eXtreme Programming Addison Wesley Verlag 2000 Beck und Fowler 2001 BECK Kent FOWLER Martin eXtreme Programming planen Addison Wesley Verlag 2001 Beck und Gamma 2001 BECK Kent GAMMA Erich JUnit 2001 URL http www junit org Zuletzt gesichtet 19 08 2004 Boles 1994 BOLES Dietrich Das IMRA Modell Fachbereich Informatik der Universit t Oldenburg Diplomarbeit 1994 Bolour 2003 BOLOUR Azad Notes on the Eclipse Plug In Architec ture Juli 2003 URL http www eclipse org articles Article Plug in architecture plugin_architecture html Zuletzt gesichtet 19 08 2004 Booch u a 1999 BOOCH Grady RUMBAUGH Jim JACOBSON Ivar Das UML Benutzerhandbuch Addison Wesley 1999 Br derlein und Meier 2000 BRUDERLEIN Beat MEIER Andreas Computergrafik und geometrisches Modellieren Teubner 2000 Buschmann u a 1996 BUSCHMANN Frank MEUNIER Regine ROHNERT Hans SOMMERLAD Peter STAL Michael A System of Patterns Joh
21. Verhaltensmuster Erl utern wie Klassen und Objekte Zust ndigkeiten und die Zu sammenarbeit aufteilen Diese Einteilung l sst sich aber noch verfeinern indem wir die Entwurfsmuster noch da hingehend einordnen auf welchen strukturellen Bereich sie sich haupts chlich konzentrieren Klassenbasiert Beziehen sich auf Klassen Unterklassenbildung durch Vererbung Objektbasiert Beziehen sich auf Objekte Objektkomposition durch Delegation 10 Entwurfsmuster 10 1 5 Wie findet man das richtige Entwurfsmuster Das richtige Entwurfsmuster f r ein Problem zu finden gestaltet sich aufgrund der Vielzahl dieser Muster recht schwer vor allem wenn die Materie f r den Anwender noch neu ist Er schwerend kommt hinzu dass es keinen optimalen Weg gibt genau das richtige Muster her auszufinden Daher bieten sich einige unterschiedliche Herangehensweisen an das Problem an Einerseits k nnte man sich berlegen wie Entwurfsmuster die ihnen gestellten Probleme l sen So gibt es einige grundlegende Techniken die von vielen Mustern genutzt werden Zu nennen w ren da Vererbung Komposition und Delegation Wenn man diese versteht kann man sich das ungef hre Aussehen eines geeigneten Entwurfsmusters selber erarbeiten Im An schluss daran kann man dann in einem Katalog von Entwurfsmustern eine geeignete L sung heraussuchen und deren Konsequenzen vergleichen Eine andere M glichkeit ist es sich einfach die kurzen Intentionen aller Entwurfsm
22. c als Cone Tree in einem Information Cube Abbildung 12 3 Darstellung von Klassenhierarchien nach Engelen 2000 zelne Aspekte der Programmstruktur Um einen Gesamt berblick zu schaffen in den auch andere Beziehungsarten einflie en ist es n tig diese Techniken zu kombinieren anzupassen und sie ggf zu erweitern Ein Beispiel f r die Kombination von zwei Techniken ist in Abb 12 3 c zu sehen In dieser Darstellung sind sowohl Paketzugeh rigkeiten als auch eine Klas senhierarchie untergebracht Nicht in jedem Fall lassen sich verschiedene Visualisierungstechniken so problemlos wie oben in derselben Darstellung verwenden Falls z B au er den Erweiterungs auch noch Be nutzungsbeziehungen dargestellt werden sollen k nnen sich Probleme bei der Platzierung der Beziehungspfeile ergeben Zu den Pfeilen des Cone Tree der in einem solchen Fall die Er weiterungshierarchie abbildet w rden Beziehungspfeile kommen die im Inneren des Tree verlaufen Da der Innenraum u U bereits mit vielen Symbolen gef llt ist kann es zu ber schneidungen kommen Verst rkt wird dieses Problem noch durch die M glichkeit die einzel nen Kegel des Tree zu drehen denn die Benutzungspfeile m ssten immer wieder an die neue 12 3 J3Browser Abbildung 12 4 Kegeldarstellung Engelen 2000 Symbolanordnung angepasst werden Abhilfe schafft hier die Kegeldarstellung eine Variante der Cone Tree Technik Anstatt f r jeden Unterbaum einen eigenen K
23. das die jeweilige vom Be nutzer gew nschte Funktionalit t darstellt genutzt werden kann Ein Zustandsautomat kann genutzt werden wenn zwischen verschiedenen Modi wie zum Beispiel einem Navigations und einem Editiermodus gewechselt werden muss Jeder Modus wird als Zustand implementiert und erlaubt dann bestimmte Folgezust nde die dann eine Fol geaktion sind e Um eine 3D Szene mit Leben zu f llen m ssen grafische Objekte vorhanden sein Grundlegende geometrische Figuren wie Boxen Kugeln und Pfeile bietet das Paket N LA er LA N 19 Die Systemarchitektur pluginController CPDPluginCotroller 1 dataModelFacade dataModelFacade DataModelFacade stateMachine FSMinterface l l l l l l l 2 fsminterface l I l l l 3 setEditor FT updateEditors 3 1 1 CPDScene void scene CPDScene 3 1 2 setCurrentState 1 3 updateView 3 1 3 1 setSqene Ab hier wird auf Benutzereingaben reagiert Abbildung 19 5 Beispielhafter Ablauf beim Initialisieren des PluginControllers view3d primitives Alle in diesem Paket vorhandenen Primitive erben von der ab strakten Klasse GraphicalObjects und k nnen so in verschiedenen Diagrammen ein gesetzt werden e Das Paket view3d interaction objecttranslation erm glicht das Verschieden der Objekte im dreidimensionalen Raum auf Basis von Transaktionen wie sie aus dem B
24. die Unterscheidung zwischen anwendungsbezogenen darstellenden und inter aktiven Komponenten einer grafischen Benutzungsschnittstelle Die Modellkomponente bil det den funktionalen Kern einer Anwendung indem sie die Anwendungsdaten kapselt und Methoden zu deren Bearbeitung bereitstellt Sie realisiert den kontrollierten Zugriff auf die Anwendungsdaten und sorgt fiir deren korrekte Aktualisierung wozu sie insbesondere effi ziente Datenstrukturen ben tigt F r die komplette grafische Darstellung ist die Sichtkompo nente verantwortlich Sie f hrt sowohl die Visualisierung der Daten der Modellkomponente als auch die grafische Behandlung von Eingaben welche durch die Steuerungskomponente veranlasst wird durch Die grafische Eingabebehandlung bezieht sich hier auf nderungen die nur die Darstellung betreffen wie z B Zoomen oder Scrollen in der Ansicht Alle durch Nutzereingaben entstehenden Eingabeereignisse werden durch die Steuerungskomponente re gistriert und behandelt Sie leitet Anfragen gem der Eingabeereignisse an die Modellkom ponente Daten nderung oder an die Sichtkomponente Darstellungs nderung weiter Dieses Zusammenspiel der Komponenten verdeutlicht Abbildung 13 1 Der gro e Vorteil des MVC Musters liegt in der Trennung von Datendarstellung und Datenmodell Der funktionale Kern der Anwendung Modell ist hierdurch unabh ngig von der eigentlichen grafischen Benut zungsschnittstelle Sicht und Steuerung So lassen sich zu
25. die von der Klasse Scene er zeugt wird Die Klasse BranchGroup hingegen enth lt die von der Klasse Scene berechnente Struktur Bestandteil der BranchGroup ist SimpleCube der f r die graphische Darstellung von Klassen und Paketen sorgt Eine weitere Abweichung ist bei der Komponente Navigation zu finden Hier ist in der implementierten Architektur die Kontrollrichtung zwischen Szene3DModell und Navigation umgekehrt so dass also nun im Universe ehemals Szene3DModell eine Referenz auf den KeyNavigatorBehavior besteht Auch dies ist durch das tiefere Verst ndnis der Java3D API begr ndet KeyNavigatorBehavior und KeyNavigator verfeinern die urspr ngliche Komponente Navigation 14 6 Kunden Akzeptanztest Des Weiteren wird in der realisierten Architektur die Klasse FrameOpener von der Klasse Controller aufgerufen um eine tats chliche Darstellung des generierten Modells auf dem Bildschirm zu erhalten Dies korrespondiert weitgehend mit der Systemmetapher In der im plementierten Architektur ist noch eine Klasse Canvas3D zu erkennen die Java3D ben tigt um die entsprechenden Informationen dreidimensional zeichnen zu k nnen Im Gegensatz zum ersten Entwurf wurde statt des Eclipse Outline Views ein eigener Eclip se View erstellt Dies liegt darin begr ndet dass f r den Outline View ein interner Eclip se Editor genutzt werden muss Da von uns aber ein externes Swing Fenster f r die 3D Darstellung genutzt wird war die Eigenen
26. e Die Klasse FrameTimerBehavior realisiert einen Java3D Behavior Dieser ist so kon figuriert dass bei jedem Neuzeichnen eines Bildes der Szene die neue Kameraposition und blickrichtung berechnet wird Die Kamera wird nach der Berechnung an die ent sprechende Position verschoben und gedreht e Da der FrameTimerBehavior nur f r genau ein Bild die n tige Kamerabewegung berechnet ist eine Klasse notwendig die auf Tastatureingaben durch den Benutzer bzw auf die von der Interaktion mit der Maus erzeugten Ereignisse reagiert Diese Verarbeitung wird durch die Klasse FirstPersonNavigation erledigt welche vom FrameTimerBehavior erbt Die empfangenen und verarbeiteten Ereignisse werden dazu genutzt den Behavior zu steuern So werden zum Beispiel Mausbewegungen in Winkel umgerechnet und diese an den Behavior bergeben so dass die Kamera um den berechneten Winkel rotiert wird Um zus tzlich eine M glichkeit zu schaffen anderen Objekten nderungen der Kamera mitzuteilen wurde das Interface CameraChangedListener geschaffen Objekte welche die ses Interface implementieren und sich als Listener am FrameTimerBehavior oder respekti ve der erbenden Klassen registrieren werden ber Kamera nderungen informiert und erhalten ein Objekt vom Typ CameraStatus Diese Klasse enth lt Informationen ber die Blickrich tung der Kamera und deren Position im 3D Raum zu dem Zeitpunkt als das CameraStatus Objekt erzeugt wurde Ausw hlen von Objekten im Raum
27. ft ob irgendeine Paketfarbe mehr als einmal verwendet wird Sinnvolle interne Informationen z B Kameraposition oder Vaterklasse sollen ber ein geeignetes Interface abfragbar sein Methoden Testergebnis bestanden Anmerkung Ohne geeignete Methoden w ren die automatischen Tests nicht zu reali sieren gewesen Beschreibung der Domain und ihrer Entit ten ber eine textuelle Schnittstelle Nn 156 15 Beschreibung des zweiten Release Testergebnis Anmerkung bestanden manuelle berpr fung In der XML Datei kann ber das Tag Container das Eclipse Datenmodell erweitert werden Das f r dieses Release erstellte St at icMode1 Plugin stellt bereits einen Test f r den Domain HotSpot dar da die Domain dieses Plugins ein statisches Klas sendiagramm ist Um f r diese User Story einen weiteren Test durchf h ren zu k nnen m sste ein Diagramm f r einen anderen Anwendungsbe reich erstellt werden Beschreibung der visuellen Darstellung der Domainelemente ber eine textuelle Schnittstelle Testergebnis Anmerkung bestanden manuelle berpr fung Konfigurieren der XML Datei indem die einen W rfel implementierende Klasse ComplexCube durch die einen Tetra eder implementierende Klasse ComplexTriangle ausgetauscht wird Anschlie end wird berpr ft ob nun ein Tetraeder als Symbol f r eine Klasse angezeigt wird Beschreibung der Diagrammregeln ber eine textuelle Schnittstelle Testergebnis Anmerkung
28. int eingabe int index 10 if index lt eingabe String buffer temp 260 A Code Konventionen for int i 0 i lt eingabe i A 6 3 Initialisierungen Variablen die nicht von berechneten Werten abh ngen m ssen direkt bei ihrer Deklaration initialisiert werden A 6 4 Klassen und Interfacedeklarationen 1 Zwischen den Methodennamen und seiner Parameterliste steht kein Leerzeichen 2 Die Codebl cke sind wie oben beschrieben zu behandeln 3 Methodendeklarationen werden durch eine Leerzeile getrennt class Beispiel extends Object int a int b Beispiel int i int j a i b j void methodeEins A 7 Statements 1 Falls Statements teil einer Kontrollstruktur sind wie z B if else oder for Statments dann wird in jedem Fall ein Codeblock eingef hrt 2 Zwischen dem Schl sselwort und der ffnenden Klammer steht kein Leerzeichen FALSCH if wennwahrdann statement RICHTIG if wennwahrdann statement A 7 Statements A 7 1 Einfache Statements Jede Zeile enth lt maximal ein Statement FALSCH arv argv RICHTIG argv argctt A 7 2 for und while Statements Diese Strukturen k nnen abgek rzt werden wenn die Schleife leer Hierzu werden die Code bl cke durch ein ersetzt for Initialisierung Bedingung Update while Bedingung A 7 3 if if else if else if else Statements Diese Kontrollstruktur hat die hier
29. lt actionSet gt lt extension gt lt extension point org eclipse ui perspectives gt lt perspective name PG444 Perspektive icon icons perspektive bmp class PG444 pgPlug PerspectiveFactory id PG444 pgPlug perspective gt lt perspective gt lt extension gt lt plugin gt Eine Erweiterung wird mit extension eingeleitet und eindeutig mit einem Erweiterungs punkt verkn pft In dem Beispiel werden zwei Erweiterungen durchgef hrt Zum einen wird eine neue Perspektive zur Workbench hinzugef gt und zum anderen via ActionSets die Men s in Eclipse um zwei Eintr ge erweitert In einer Erweiterung auf einem Erweiterungspunkt k n nen nat rlich nur so viele Erweiterungen des Typs stehen wie das Erweiterungsschema dies ber minOccurs und maxOccurs erlaubt Die Angabe des Attributs class sorgt daf r dass das Basisplugin wei welche Klasse das jeweilige Interface f r das Element implementiert Definition 8 5 1 Callback Klasse Ein Plugin besteht in der Regel aus zus tzlichen normalen Javaklassen die ein bestimmtes Interface eines Erweiterungspunktes implementieren und dar ber die Funktionalit t zur Verf gung stellen Diese Klassen hei en Callback Klassen Die Kommunikation des Basisplugins und des erweiternden Plugins findet also ber die Callback Klassen statt Jedoch hat wie wir schon gesehen haben das erweiternde Plugin kei nen Einfluss darauf wann eine Instanz der Callback Klasse erzeugt wird
30. menh ngende Task Kollisionsabfrage wurden wegen zeitlicher und technischer Probleme weggelassen Des Weiteren wurden diese Tasks mit niedriger Priorit t ebenfalls nicht bearbei tet Berechnung der Proxies Graphische Repr sentation der Proxies erstellen Ver ndern des Mauszeigers und bergeordnete Assoziationen zwischen Paketen 17 5 Vorstellung der implementierten Architektur Stephan Eisermann Jan Wessling Sven Wenzel Im Nachfolgenden soll die in diesem Release implementierte Architektur vorgestellt werden Dazu wird zun chst die geplante Architektur beschrieben im Anschluss daran die realisierte Architektur geschildert Abschlie end werden beide verglichen 17 5 Vorstellung der implementierten Architektur 17 5 1 Beschreibung der geplanten Architektur Die von uns geplante Architektur gliedert sich in mehrere Teile Das Datenmodell Als erstes ist das f r das Plugin spezifische Datenmodell zu nennen Dieses gliedert sich in die zwei Teile JDT Erweiterung mit Containern und in die Klassen die nicht direkt an das JDT gebunden sind Wie in den vorangegangenen Releases auch wurde das von dem Plugin ben tigte Daten modell als Erweiterung der JDT Klassen unter der Zuhilfenahme von Containern geplant Hierbei handelt es sich um die Klassen CPDInterfaceConatiner CPDClassContainer CPDPackageContainer und CPDProjectContainer Es zeigte sich dass die f r das Plugin n tige Funktionalit t nicht all
31. muss zum einen f r die grafischen Elemente welche eine visu elle Sprache bilden eine Grammatik erstellt werden Zum anderen m ssen Datenstrukturen zur Verwaltung der komplexen syntaktischen Strukturen analog zu Syntaxb umen aufgebaut werden Die Realisierung der Syntaxsteuerung erfordert daher einen h heren Entwicklungs aufwand Demgegen ber steht die einfache M glichkeit der freien Editierbarkeit Wie mit Zeichenprogrammen k nnen die grafischen Elemente mit durch den Editor zur Verf gung ge stellten Mitteln frei ver ndert werden Bei unserem Editorframework kann nun die Eingabe frei syntaxgesteuert oder strukturori entiert erfolgen Auch Kombinationen dieser M glichkeiten sind durch Verwendung verschie dener Eingabemodi m glich Syntaxpr fungen k nnen aber auch explizit nach Erstellung ei nes Diagramms ausgef hrt werden Grafische Editoren werden heute in vielen Bereichen wie Softwareentwicklung CAD Netzwerkplanung und Bildbearbeitung eingesetzt 13 1 3 Die Benutzungsschnittstelle grafischer Editoren Die Entwicklung eines Editorframeworks zur dreidimensionalen Darstellung und Manipula tion von Softwarestrukturen beinhaltet die Entwicklung einer dreidimensionalen grafischen Benutzungsschnittstelle Dabei d rfen aber Aspekte die f r zweidimensionale grafische Be nutzungsschnittstellen relevant sind nicht au er Acht gelassen werden denn dreidimensio nale R ume sind meist in zweidimensionale grafische Benutzungsschnittst
32. rben eines W rfels Beschreibung Die zuvor bestimmte Farbe sollte dem jeweiligen 3D W rfel zugewiesen werden 130 14 Beschreibung des ersten Release geplante Zeit reale Zeit Eine Stunde Farbverwaltung unter Java 3D war unbekannt jedoch wur de vermutet dass es reichen w rde die einzelnen Knoten des W rfels einzuf rben Zehn Minuten Das Wissen war bereits aus dem Task der W rfelerstel lung vorhanden Merken der Farbe f r ein Paket Beschreibung geplante Zeit reale Zeit Da alle Klassen eines Pakets dieselbe Farbe haben sollten mussten sich die entsprechenden Informationen gemerkt werden Eine Stunde Zun chst sollten die Farben manuell vergeben werden k n nen Keine Die Farben werden nach einem deterministischen Algorithmus vergeben Somit war dieser Task im Task Sinnvolle automatische Wahl einer Farbe enthalten 14 4 11 Beschriftung Erzeugen einer Beschriftung aus dem Klassennamen Beschreibung geplante Zeit reale Zeit Um die einzelnen Klassen identifizieren zu k nnen sollten sie beschrif tet werden Zwei Stunden Die Idee hierbei war so genannte Billboards zu verwen den Eineinhalb Stunden Lie sich mit OrientedShape3D gut realisieren Einf gen der Beschriftung in den Szenegraphen Beschreibung geplante Zeit reale Zeit Die Beschriftung einer Klasse sollte auch in der Szene angezeigt werden Zwei Stunden Die Idee hierbei war so genannte Billboards zu v
33. tiert haben um weitere Funktionen wie z B das Darstellen von Text in einer Graphik erwei tern Bisher war der Editor nur in der Lage mit einfachen Strukturen wie Kreisen oder Linien umzugehen aber der Arbeitgeber meint dass diese Erweiterung f r uns kein Problem darstel len sollte da es ja gen gend Klassenbibliotheken gibt die den Umgang mit Text erleichtern Nat rlich l sst sich so eine Klassenbibliothek auch finden doch leider wird es wohl eher un wahrscheinlich sein dass diese zu unserer bestehenden Schnittstelle f r graphische Objekte passt Wir k nnten nat rlich versuchen die Klassen so anzupassen dass eine Kommunikation untereinander m glich ist doch w rde dies klar gegen den Gedanken der Wiederverwendbar keit sprechen Diese M glichkeit der Ab nderung besteht zumeist auch gar nicht da bei einem bestehenden Toolkit es eher unwahrscheinlich ist das wir Zugriff auf den Quellcode haben Eine L sung f r dieses Problem w re eine neue Klasse zu generieren die wir als Adapter zwischen die inkompatiblen Klassen setzen k nnen In unserem Fall w rde also diese Adap terklasse die Schnittstelle unserer Klasse f r graphische Objekte implementieren indem sie Methodenaufrufe an die neue Klassenbibliothek weiterleitet und daraus das gew nschte Ver halten definiert Diese gerade vorgestellte L sungsidee spiegelt die Objektversion des Adaptermusters wie der Nicht verschwiegen werden sollte dass es auch noch eine zweite Varian
34. wie etwa das KeyNavigatorBehavior zur Navigation im Raum das DistanceLOD f r die Detailtiefe von Objekten oder das OrbitBehavior zur Interakti on mit Gegenst nden 11 6 Fazit Java3D ist ein m chtiges Werkzeug f r die Erzeugung von 3D Objekten und ihre Interaktion Es ist so m chtig da es um es vorzustellen eine ganze Vorlesung f llen w rde Deshalb wurde hier Java3D auch nur ansatzweise und sicherlich unvollst ndig vorgestellt Wir hoffen jedoch da hiermit ein kleiner Einstieg in die Java3D Welt m glich ist Wenn man die Struktur hinter Java3D erst einmal verstanden hat ist sie einfach und flexibel zu handhaben Alles in allem ist Java3D ein durchdachtes Produkt da wir wahrscheinlich bald sowohl verfluchen als auch zu sch tzen wissen werden ee Kare 12 Dreidimensionale Visualisierungstechniken Michael N the 12 1 Einf hrung In dieser Ausarbeitung geht es um Konzepte und Techniken zur dreidimensionalen Visuali sierung von Software Insbesondere wird dabei auf die im 3 D Klassenbrowser f r Java im folgenden kurz J3Browser von Frank Engelen Engelen 2000 verwendeten Visualisierungs techniken eingegangen Im weiteren Verlauf dieses ersten Kapitels werden zun chst einige Grundlagen zum The menbereich der allgemeinen Visualisierung erl utert Das Kapitel 12 2 besch ftigt sich mit konkreten Techniken zur Darstellung von Informationen wobei jeweils kurz diskutiert wird f r welche Strukturierung sich eine
35. wie ihr Na me schon sagt besonders gut zur Definition von Graphstrukturen Dabei stehen verschiedene Kanten und Knotentypen zur Verf gung so dass sich auch komplexe Diagramme wie zum Beispiel ER Diagramme mit Hilfe von Graphgrammatiken definieren lassen Der deklarative Ansatz hingegen behandelt nicht ausschlie lich Graphstrukturen sondern Grafiken und ist damit an dieser Stelle etwas m chtiger W hrend Graphen aus Knoten und Kanten verschie denster Arten bestehen kann eine Deklaration auf die Menge aller geometrischer Figuren und beliebige Grafiken zur ckgreifen Dementsprechend ist die Funktionsweise der Graphgram matik von der Funktionsweise der Deklaration wie folgt zu unterscheiden 7 Der deklarative Ansatz 7 5 1 Produktion vs Deklaration Graphgrammatiken sind mit Stringgrammatiken vergleichbar und arbeiten mit einer Menge von Produktionen die auf Graphen angewendet werden Eine Produktion ist dabei die Zuord nung einer Graphstruktur A auf der linken Seite zu einer anderen gr eren Graphstruktur B auf der rechten Seite Sie ist als eine Art Regel zu verstehen mit der eine in dem Graphen vorhandene Struktur A durch die Struktur B ersetzt werden darf Die Graphstrukturen um fassen dabei sowohl Terminal als auch Nicht Terminal Symbole Bei der Erzeugung eines Graphen wird von einem Startsymbol meist einem leeren Graphen ausgegangen Dieser wird anschlie end mit Hilfe der Produktionen zu dem gew nschten Graph
36. ActionSet kann aber auch unbegrenzt viele enthalten Des Weiteren wird jedes der Elemente und Attribute mit einem Kommentar versehen aus dem sp ter die Referenzdokumentation erstellt werden kann 8 5 Erweiterungen extension actionSet menu selection enablement Abbildung 8 4 Baumstruktur des ActionSet Beispiels 8 5 Erweiterungen Um Funktionen zu einem Plugin hinzuzuf gen m ssen also die Erweiterungspunkte bekannt und beschrieben sein Die Aufgabe des Entwicklers ist es nun e der Plattform bekannt zu geben dass das entwickelte Plugin neue Funktionen einbindet und e die entsprechende Funktionalit t zu implementieren Hierzu m ssen die Erweiterungen in dem Plugin Manifest deklariert werden Dies geschieht mit dem XML Element extension Mithilfe des folgenden Beispiels wollen wir diesen Vor gang verdeutlichen lt xml version 1 0 encoding UTF 8 gt lt plugin name PG444 Beispiel Plugin id PG444 pgPlug version 1 0 0 provider name PG444 org gt lt Action Sets gt lt extension point org eclipse ui actionSets gt lt actionSet label Suche und Hilfe visible true id PG444 pgPlug ActionSet gt lt action id PG444 pgPlug HelpAction gt label amp Hilfe class PG444 pgPlug HelpContentsAction lt action gt lt action id PG444 pgPlug SearchPage label amp Suche class PG444 pgPlug SearchContentAction 8 Das Eclipse Plugin Modell lt action gt
37. Assoziationen sollten auch noch Erbungs und Implementierungsbeziehungen vorhanden sein geplante Zeit 10 Stunden reale Zeit 8 Stunden bergeordnete Assoziationen zwischen Paketen Beschreibung bergeordnete Assoziationen zwischen Paketen sollten durch Sammel pipes angezeigt werden geplante Zeit 15 Stunden reale Zeit Dieser Task wurde aufgrund der niedrigen Priorit t und aus Zeitmangel weggelassen 17 4 3 Fazit Im Wesentlichen wurden f r das Release 4a alle Tasks abgearbeitet bis auf die Tasks Aus blendung der Vorderseiten von Information Cubes Virtuelle Klassen Proxies sollen nicht ausw hlbar sein und Kardinalit ten Diese drei Tasks wurden in das Release 4b bernom men und bearbeitet Die gesch tzte Gesamtzeit f r diesen Task lag bei 161 Stunden Letztend lich wurden aber 226 Stunden f r Release 4a ben tigt Dies lag vor allem an den Tasks As soziationen Kontrollerkonzept erstellen und Objekte verschieben die sich als technisch schwierig herausstellten F r das Release 4b kann man zusammenfassend sagen dass fast alle Tasks erfolgreich abgearbeitet wurden Insgesamt wurden f r dieses Release ca 255 Stunden ben tigt geplant waren dagegen ca 336 Stunden Aufgrund der mangelnden Zeit konnten die folgenden Tasks nicht abgearbeitet werden die alle zusammen ca 75 Stunden Zeitersparnis einbrachten Der Task Syntaxcheck auf graphischer Ebene realisieren und der damit zusam
38. Bereiche Das Model repr sentiert die Daten einer Anwendung kann deren Zustand liefern und Ver nderun gen an ihnen vornehmen Der View dient der graphischen Darstellung der Daten und somit einer visuellen Darstellung des Models Der Controller definiert wie der View Zugriff auf das entsprechende Modell hat Im den folgenden Abschnitten wird gezeigt wie diese einzelnen Bereiche in unserem Projekt umgesetzt worden sind Einen berblick ber die so entstandene 14 3 Systemmetapher Architektur bietet das Klassendiagramm in Abbildung 14 2 14 3 1 Model Im Modell werden die Informationen zu den Daten gehalten F r das Release sind dabei die Informationen wichtig die zur Darstellung von Objekten im dreidimensionalen Raum ben tigt werden Dabei beruht das in dem ersten Release verwendete Datenmodell auf dem von der benutzten Entwicklungsumgebung Eclipse bereitgestellten Datenmodell und wird mit der Klasse EclipseDatenmodell realisiert Allerdings erweitert es dieses noch um f r das Re lease notwendige Punkte Dieses sind Informationen die f r die entsprechende Anordnung eines Objektes im dreidimensionalen Raum ben tigt werden Die Anordnung ist abh ngig von der Paketzugeh rigkeit sowie der Vererbungsbeziehung einer Klasse Weiterhin wird die berechnete logische Ausrichtung abgespeichert Das Speichern geschieht dabei in Klassen bzw Paket Containern die an das bereitgestellte Modell angehangen werden 14 3 2 View Die zum Vi
39. Bewegungen in Blick richtung sowie Drehungen der Blickrichtung m glich sind Zus tzlich existiert die Funktion Suchen mit deren Hilfe die virtuelle Kamera automatisch an ein angew hltes Objekt hera f hrt Die interaktive Symbolanordnung bei Cone Trees besteht wie in Abschnitt 2 1 1 erl u tert darin durch Drehung von Unterb umen ein Element in den Vordergrund zu holen Auch f r die Kegelanordnung ist diese M glichkeit implementiert hierbei wird der gesamte Kegel um das Wurzelelement gedreht Dies sind die wesentlichen dynamischen Funktionen die im J3Browser implementiert sind 12 4 Fazit Diese Ausarbeitung sollte einige Grundlage der Computervisualisierung vermitteln ausge w hlte Visualisierungstechniken kurz vorstellen und schlie lich zeigen wie diese Methoden in dem Visualisierungssystem J3Browser eingesetzt werden Die benutzten Techniken haben sich bew hrt es bleibt jedoch noch Raum f r Erweiterungen und Verbesserungen Zum Ab schluss soll erw hnt werden dass hier nicht alle Funktionen des J3Browsers beschrieben wer den konnten sondern nur eine Auswahl F r Detailinformationen sei auch hier auf die Litera tur vor allem auf Engelen 2000 verwiesen A KAPITEL 13 Grafische Editoren und dreidimensionale Benutzungsschnittstellen Kai Gutberlet 13 1 Einleitung Im Rahmen der Projektgruppe 444 des Fachbereichs Informatik der Universit t Dortmund soll ein Editorframework f r Entwurfsnotationen zur dre
40. Bulls SUENO Heuereteoe nb 1 ueajoog sseigenowa t uesjoog abeyoedqngonowais ueajooq abeyoegqngppe Uuee 00g Bo ya UJenowe ueejoog eoenaluippe vesjoog ssejoppe eujeluogabegoedado E joeyajuyedng pequlog uonysod Aeuv suonejayssaro unuawardu Bumng awenpay renb mheny suoneloosse Ienfeuwsenen sry heuy saynqune logaBeysegado 10uleuogebeyaed ene sais ravejiatupednsppe 10988 UONIgdO BurWogesenaiulddO ABUELO SIE AMOO Datenmodell Realisiertes Idung 17 4 i Abb 17 5 Vorstellung der implementierten Architektur zu erreichen Dies bedeutet dass man neue Klassen Interfaces und Pakete auch in bestehen den Paketen erzeugen kann Beim Verschieben kann man wahlweise ein Objekt in dem momentan sichtbaren Raum verschieben oder es im ObjectMovementwithCamera Mode an die Kamera binden und das Objekt so ber gr ere Strecken im Raum bewegen Abb 17 5 zeigt den realisierten Zustandsautomaten Die Plugin Kontrollstruktur Es gibt nun zwei M glichkeiten das Plugin anzusto en und ein Diagramm zu erstellen Auf der einen Seite gibt es den NewDiagramWizard der beim Erstellen eines neuen und lee ren Diagramms aufgerufen wird und auf der anderen Seite den Men punkt Generate Class PackageDiagram from Project Von diesen beiden wird die Generierung des ClassPackage Diagramms angesto en Dabei wird der CPDInitializer welcher von Pl
41. Daten kann dabei durch Listen Tabellen B ume oder Graphen erfolgen je nach ihrer Art Diese weiteren Darstellungsm glichkeiten k nnen die Verwaltung der dreidimensionalen Daten erleichtern So kann z B die Suche nach Objekten in geordne ten Listen einfacher sein als die ganze dreidimensionale Welt zu erkunden Auch das Ver schieben von hierarchischen Daten in B umen l sst sich eventuell schneller durchf hren F r Datenobjekte welche h ufig in die dreidimensionale Welt eingef gt werden bietet sich eine Datenpalette an in der die Objekte f r den schnellen Zugriff als Icons dargestellt sind Eine weitere M glichkeit Objekte in die dreidimensionale Welt einzuf gen ist die Verwendung einer Vorschau So kann das Objekt erst in der Vorschau bearbeitet und anschlie end einge f gt werden Da der Bereich der Zugriffskomponente sich mit Datenbearbeitung au erhalb der dreidimensionalen Welt befasst sind hier wieder Aspekte zweidimensionaler grafischer Benutzungsschnittstellen zu ber cksichtigen 13 3 Fazit Dieser erste berblick ber das Thema grafischer Editoren und dreidimensionaler grafischer Benutzungsschnittstellen liefert einige Anhaltspunkte f r das zu entwickelnde Editorframe work Die Art der Benutzerinteraktion frei strukturorientiert syntaxgesteuert ist zu beden ken F r die Gestaltung der Benutzeroberfl che sind Anforderungen wie gute intuitive Benut zerf hrung und Softwareergonomie sowie die Einbettung in die
42. Der zeitliche Verlauf der Kommunikation zwischen den Objekten der beim Sequenzdia gramm im Vordergrund steht wird beim Kollaborationsdiagramm durch Nummerierung der Nachrichten verdeutlicht Dadurch ist leider die Abfolge der Nachrichten nicht mehr so leicht ersichtlich wie im Sequenzdiagramm Aber daf r hat man mehr Freiheit bei der Anordnung der Objekte wodurch man Objekte mit intensiven Verbindungen nahe beieinander platzieren kann Somit kann die Struktur betont und die Lesbarkeit verbessert werden Genau wie Se quenzdiagramme sind auch Kollaborationsdiagramme geeignet einzelne Ablaufvarianten mit der Intention zu beschreiben die Zusammenarbeit mehrerer Objekte in einem Anwendungs 4 Modellierung mit UML Zeichenflaeche Steuerung Wuerfel Figur 1 1 1 setzteStatus aktualisiereAnsicht 1 Abbildung 4 3 Sequenzdiagramm f r das Selektieren eines Objekts gt MIN fall darzustellen Sie sind jedoch nicht dazu geeignet ein Verhalten pr zise oder vollst ndig zu definieren Hierzu sind Zustandsdiagramme die bessere Wahl Ein Kollaborationsdiagramm f r das Verschieben eines Objektes wird in der Abbildung 4 4 dargestellt Damit ein Benutzer einen W rfel verschieben kann l st er vorher mehrere Mouse Events aus In diesem Falle ein Event zum Selektieren und ein weiteres Event zum Verschieben des W rfels Der W rfel bergibt die neuen Koordinaten der Steuerung welche die Werte berpr ft Falls die n
43. Die Klasse SOCalculation berechnet unter der Nutzung des angepassten Call Hierarchie Plugins die zu einer gew hlten Methode geh rende Aufrufhierarchie Diese initiale Berech nung der Aufrufhierarchie wird im Container Met hodOb ject vgl Abbildung 16 2 gehalten und bildet die Grundlage unseres Datenmodells Die Klasse SQTierCalculation errechnet aus der in unserem Datenmodell gespeicherten Aufrufhierarchie die Anzahl der Schichten die sp ter im Diagramm zu sehen sein werden F r jede Methode wird dieser Wert als H heninformation im jeweiligen MethodInformation Wrapper gespeichert Zuletzt werden die vorhanden Objekte ihre Verteilung auf den verschiedenen Schichten so wie ihre logische Positionierung errechnet Diese Funktionali t wird von der Klasse SQOb ject Calculation bereitgestellt Die Informationen werden in der Klasse MethodInformation Wrapper gehalten Entsprechend der Frameworkstruktur muss das diagrammspezifische Plugin in das Kern plugin eingef gt werden Dieses geschieht durch Implementierung des vom Kernplugin zur Verf gung gestellten Extension Point Controller 16 5 3 Vergleich zwischen geplanter und realisierter Archi tektur Anhand der drei HotSpots werden abschlie end die geplante und die realisierte Architektur verglichen Domain HotSpot Im Datenmodell ergeben sich die folgenden Unterschiede zwischen der geplanten und der realisierten Architektur In der Hashmap der Klasse SoClassContainer werden nun nic
44. Dies wird vom Ba sisplugin gesteuert Allerdings ist es nicht immer f r jede Erweiterung notwendig eine Callback Klasse zu im plementieren Es gibt Elemente die nur dazu dienen Information an das Basisplugin weiter zuleiten Beispielsweise wird f r das ActionSet keine Callback Klasse implementiert jedoch intern ein Objekt erzeugt In diesem Fall haben Plugin Entwickler dann nichts weiter zu tun Bei der Entwicklung eigener Erweiterungspunkte jedoch muss dann solch eine Klasse imple mentiert werden Bolour 2003 8 6 Plugins und Fragmente In der Regel besteht ein Plugin aus der Plugin Manifest Datei und den Javaklassen inklusive der notwendigen Ressourcen Somit bekommt der Anwender ein gro es Paket mit dem Plugin Daum 2003 Jedoch ist es gerade bei dem Fall der Internationalisierung sinnvoll das Plugin in Pakete aufzuteilen 8 6 Plugins und Fragmente Definition 8 6 1 Fragment Ein Fragment ist ein vom Plugin unabh ngiger Zusatz der Teile des Plugins enth lt Fragmente k nnen also unabh ngig vom Rest des Plugins entwickelt werden falls das ei gentliche Plugin die Basisfunktionalit ten enth lt Es ist also darauf zu achten dass das Plugin selbst auch ohne das Fragment l uft Beispielsweise k nnen bei der Internationalisierung ei nes Plugins die einzelnen Sprachdateien in Fragmenten untergebracht sein Besteht ein Plugin aus dem Basisplugin und Fragmenten so wird es auch als logisches Plugin bezeichnet Eclip se
45. Eclip se mit dem Standard Widget Toolkit und JFace eine Alternative zu der von Sun gelieferten Swing AWT L sung zur Entwicklung von grafischen Benutzeroberfl chen Vorteil von SW T JFace liegt in der Geschwindigkeit und dem nativen Look and Feel welches bei Suns L sung nicht gegeben ist Daum 2003 Jede Eclipse Installation besitzt ein Verzeichnis Namens Plugins in welchem die Plugins installiert werden Jedes Plugin besitzt ein eigenes Verzeichnis in dem die ben tigten Ressour cen wie z B Icons Javaklassen und die das Plugin beschreibende Manifestdatei plugin xml liegen 8 2 Das Plugin Modell im Detail Eclipse Plattform Workbench Editoren Team Views Dialoge Wizard ER SWT JFace Hilfe Workspace Resourcen Plattformkern Abbildung 8 2 Die Komponenten der Eclipse Plattform Daum 2003 Definition 8 1 4 Plugin Manifest Als Plugin Manifest bezeichnet man eine Datei die Informationen ber den strukturellen Aufbau des Plugins der Plattform zur Verf gung stellt Beim Start von Eclipse werden die Informationen aus den in dem Plugins Verzeichnis lie genden Manifestdateien ausgelesen und in einem Teil des Plattformkerns der Plugin Registry registriert Mittels dieses Repositoriums wird bei Bedarf eine Instanz des Plugins erzeugt Da durch dass nur Instanzen der Plugins erzeugt werden die auch tats chlich gebraucht werden wird eine gute
46. Ein kompletter Szenegraph Eine ganz wesentliche Klasse die zur Erstellung eines kompletten Szenegraphen ben tigt wird ist die Klasse Locale Diese definiert eine geographische Region innerhalb des virtu 95 11 Java3D ellen Universums ber ein weiteres Objekt dem HiResCoord wird f r die Locale der Ursprung die Gr e und die Skalierung des Koordinatensystems festgelegt Da die Locale in direktem Bezug zu dem virtuellen Universum liegt ist sie im Szenegraphen direkt unter dem VirtualUniverse angeordnet siehe Abbildung 11 9 Dies geschieht automatisch bei der Instanziierung einer Locale da ihr zwingend ein VirtualUniverse als Para meter bergeben werden muss ihr also gesagt werden muss in welchem Universum sie das Gebiet aufspannen soll Wichtig ist weiterhin dass die Locale ein Sammelkontainer f r Sub graphen ist Das heisst an ihr k nnen beliebig viele BranchGroups angehangen werden F r eine bersichtliche Strukturierung wird der Szenegraph in zwei verschiedene Berei che unterteilt Das ist zum einen der so genannte ContentBranch und zum anderen der Viewbranch Diese Trennung findet an der im obigen Abschnitt erl uterten Locale statt wie in Abbildung 11 9 zu sehen ist Deshalb besitzt sie sinvollerweise immer mindestens zwei BranchGroups Einer dieser Subgraphen stellt den ViewBranch dar die restlichen stel len den ContentBranch dar Konkret kann man als Beispiel f r einen ContentBranch den oben in Abbildung 11 8
47. Einteilung in sechs Komponenten bietet eine genauere funktionale Gliederung der drei dimensionalen Benutzungsschnittstelle und kann als Erweiterung des MVC Musters angese hen werden Die Steuerungskomponente des MVC Modells ist in die Komponenten Steue rung Navigation Manipulation und Zugriff aufgegliedert In den beiden Komponenten Vi sualisierung und Feedback findet sich die Sichtkomponente des MVC Musters wieder Ein Analogon zur Modellkomponente fehlt allerdings in dieser funktionalen Einteilung da der Schwerpunkt auf der Interaktion mit dem Nutzer gelegt wurde Die Datenobjekte Objects in Abbildung 13 2 weisen aber darauf hin dass sich hinter den in der dreidimensionalen Welt dargestellten Objekten die Anwendungsdaten verbergen welche nach dem MVC Muster von einer Modellkomponente verwaltet werden sollen Die Modellkomponente ist somit zu dieser Einteilung hinzuzuf gen Sowohl die Manipulations als auch die Zugriffskomponente steuern das Ver ndern von Daten der dreidimensionalen Welt wobei die Manipulationskomponente die Darstellung vorhandener Daten in der dreidimensionalen Welt ndert w hrenddessen die Zugriffskomponente neue Daten einf gt oder entfernt Die Daten in der dreidimensionalen Welt sind Visualisierungen der eigentlichen Anwendungsdaten welche in der Modellkompo nente verwaltet werden Daher werden nderungen durch die Manipulations oder Zugriffs komponente in der dreidimensionalen Welt als Anfragen an die Modellkompo
48. Explorer soll die M glichkeit gegeben sein ein ausgew hltes Paket in ei nem neuen externen Fenster visualisieren zu lassen Testergebnis bestanden Anmerkung manuelle berpr fung Es soll ein Paket ausgew hlt und ber einen Men punkt das Plugin gestartet werden 1 Nn 154 15 Beschreibung des zweiten Release Es soll m glich sein in der dreidimensionalen Szene zu navigieren Testergebnis bestanden Anmerkung manuelle berpr fung mittels Tastatur in der dreidimensionalen Szene navigieren Klassen sollen als W rfel dargestellt werden Testergebnis bestanden Anmerkung visuelle berpr fung Klassen sollen geeignet beschriftet werden Testergebnis bestanden Anmerkung visuelle berpr fung Die Zuordnung der einzelnen Klassen zu einem Paket soll sofort durch ihre geh ufte Anordnung im Raum ersichtlich sein Testergebnis bestanden Anmerkung visuelle berpr fung Es soll eine M glichkeit geben die Sicht auf einen vorher definierten Startpunkt zu r ckzusetzen Testergebnis bestanden Anmerkung visuelle berpr fung Es sollen Informationsfenster existieren die Statusinformationen zur 3D Ansicht ent halten Testergebnis bestanden Anmerkung manuelle berpr fung unter Window Show View Other den neuen View des Plugins aufrufen Die W rfelobjekte Klassen sollen bei der Szenegenerierung fest platziert werden Testergebnis bestanden 15 6 Kunden Akzeptanztest An
49. Fassade de klariert eine abstrakte Schnittstelle und vereinfacht so die Benutzung des Subsystems Motivation Ein System wird oft in Subsysteme unterteilt um seine Komplexit t zu reduzieren Die Kli entenklassen m ssen jedoch alle Klassen des Subsystems kennen auf deren Schnittstelle sie zugreifen wollen um die Methoden einer bestimmten Klasse aufrufen zu k nnen Das Fassademuster sieht ein Fassadeobjekt vor welches eine einzelne vereinfachte Schnitt stelle zu den Funktionen des Subsystems bietet Anwendbarkeit Das Fassademuster findet Verwendung wenn ein komplexes Subsystem von Klassen vorhan den ist f r das eine einfache Schnittstelle angeboten werden soll Die Fassade bietet f r den Klienten einen leichten Zugriff auf das Subsystem Wenn zwischen den Klienten und den Subsystemklassen viele Abh ngigkeiten bestehen sollte das Muster als Entkopplung des Systems eingesetzt werden um die Unabh ngigkeit zu f rdern Ebenfalls eingesetzt werden sollte das Muster wenn Subsysteme in Schichten aufgeteilt werden sollen Die Fassade dient dann als Eintrittspunkt zu jeder Schicht Dadurch werden die Abh ngigkeiten zwischen den Schichten auf die Fassade begrenzt 10 3 Strukturmuster Abbildung 10 6 Fassadenstruktur Technische Realisierung Der Klient nutzt die Schnittstelle der Klasse Fassade Diese Klasse definiert die Schnittstelle f r den Zugriff auf das Subsystem Wenn der Klient eine Anfrage stellt dann leitet
50. Kategorien Information und Steuerung einteilen 13 2 Bestandteile von dreidimensionalen grafische Benutzungsschnittstellen W hrend Feedbackelemente zur Information die Datenobjekte und Objektbeziehungen be schreiben geben Feedbackelemente zur Steuerung konkrete Handlungshinweise Um diese Aufgaben zu erf llen k nnen laut Barrilleaux 2001 die im Folgenden vorgestellten Grun delemente verwendet werden Bezeichner Identifiers wie Labels oder Icons geh ren direkt zum Erscheinungsbild des zugeh rigen Objekts in der dreidimensionalen Welt und benennen dies Hingegen sind Ausrufe Callouts Beschreibungen die nicht mit der Darstellung des Ob jekts verbunden sind Sie lassen sich frei neben ihrem Bezugsobjekt platzieren und sind meist durch eine Linie mit ihm verbunden Von modernen grafischen Benutzungsschnittstellen be kannt sind Arbeitshinweise Tooltips deren gro er Vorteil im Gegensatz zu Ausrufen darin besteht dynamisch erscheinen zu k nnen Zur Steuerung dienen Indikatoren Indicators und Griffe Handles die suggestiv geformt sind um dem Nutzer einen Handlungshinweis wie z B Rotieren eines ausgew hlten Objekts zu geben Zum Anzeigen der ausgew hlten Aktion dient die Mauszeigerform welche in vielf ltiger Weise ge ndert werden kann Des Weiteren k nnen auch durch Soundeffekte Handlungshinweise gegeben werden An das Design und die Visualisierung von Feedbackelementen werden einige Anforderungen gestellt damit sie ihre
51. Multiset Grammars Chok und Marriott 1995 und Picture Layout Grammars Golin 1991 Bei diesen Grammatiken wird nicht zwi schen Knoten und Kanten unterschieden Alle Beziehungen der Objekte werden ber ihre Attribute und Beschr nkungen ihrer Werte definiert Sie sind also nur implizit vorhanden Werden nun in Produktionen Attribute neu zugewiesen so entstehen unter Umst nden neue Beziehungen zu Objekten die nicht im aktuellen Kontext der Produktion enthalten sind Es muss also genau darauf geachtet werden den Attributen nur solche Objekte als Werte zuzu weisen die in der Produktion benutzt werden Neben den Seiteneffekten durch solche falschen Zuweisungen hat der Ansatz des implizi ten Einbettens den Nachteil dass die Informationen ber Beziehungen nicht leicht erkennbar sind Ein Parser ben tigt viel Zeit und Resourcen die Beziehungen aus den Attributen aller Objekte auszulesen und zu verarbeiten Spezielle Einbettungsregeln Der dritte Ansatz besteht darin f r die verschiedenen Situationen in denen Unklarheit ber die zu setzenden Beziehungen besteht verschiedene Regeln anzubieten Somit gibt es eine we sentlich gr ere Menge von Produktionen da f r alle m glicherweise auftretenden Sonderf l le eine eigene Produktion vorhanden ist Daher ist eine Grammatik die mit diesen speziellen Einbettungsregeln arbeitet nur schwer zu verstehen Auch einzelne Produktionen sind nicht sehr handlich da immer genau darauf geacht
52. Ray overlay und Line of sight Bei der X Ray overlay Technik besitzt ein Objekt zwei For men eine f r normale Sichtbarkeit und eine f r berdeckung Beispiele f r berdeckungs formen sind Semitransparenz gestrichelte Linien oder Helligkeit Eine intelligente L sung des Problems stellt die Line of sight Technik dar Die Anwendung entscheidet aktiv ob Ob jekte in der Sichtlinie des Nutzers zu seinen Beobachtungsobjekten liegen und macht diese automatisch unsichtbar Eine weitere f r den Nutzer angenehme Visualisierungstechnik sind mehrfache Sichten Multiple views Durch den Einsatz von mehreren Darstellungen wie z B einer berblickskarte und einen Detailausschnitt beh lt der Nutzer leichter die Orientierung 115 116 13 Grafische Editoren und dreidimensionale Benutzungsschnittstellen Navigation F r die Ver nderung des Nutzerstandortes in der virtuellen Welt sorgt die Navigationskompo nente Man unterscheidet dabei laut Barrilleaux 2001 zwei Navigationsformen R umliche und kontextuelle Navigation Die r umliche Navigation bezieht sich auf die Steuerung von Sichtobjekten wobei man generell drei M glichkeiten hat Aus der Sichtweise einer ersten Person ist der Nutzer selbst das Sichtobjekt und kontrolliert es aus dieser Perspektive Au tofahren ist hierf r ein sehr gutes Beispiel Navigation aus der Sicht einer zweiten Person ben tigt Interaktion mit Objekten und Steuerungselementen in der dreidimensionalen Wel
53. Systems mit Begriffen aus der realen Welt beschrieben Letztlich entwickelt man so eine gemeinsame Sprache Vokabular um ber die Arbeitsweisen und das zu erstellende System diskutieren zu k nnen 9 3 4 Einfaches Design Das Design sollte m glichst einfach gehalten werden Ein einfaches Design erf llt dabei fol gende Eigenschaften e Besteht alle Tests e Hat keine Redundanzen 9 eXtreme Programming Einf hrung e Selbsterkl render Code e Geringst m gliche Anzahl von Klassen und Methoden Aufgrund der geringen nderungskosten sollte man nur das implementieren was f r die derzeitige Funktionalit t n tig ist Das Design erf llt also zu jedem Zeitpunkt die genannten Kriterien ohne dass auf zuk nftige Arbeiten R cksicht genommen wird 9 3 5 Testen Das Testen ist eine der Kerneigenschaften von XP F r jede logische Programmeigenschaft existieren Tests Es darf erst weiter gearbeitet werden wenn alle Testf lle erfolgreich waren Die Tests sollten realisiert durch bestimmte Testumgebungen automatisch ausf hrbar sein Getestet wird durch Komponententests der Programmierer und durch Funktionstests des Kun den Wichtig ist in diesem Zusammenhang auch die Reihenfolge des Programmierens von Tests und Programmcode Bei XP wird zuerst der Test f r eine Funktion geschrieben Dann f ngt man an die Funktion zu programmieren Dieses wird als testgetriebenes Programmieren be zeichnet Sobald alle Tests bestanden sind is
54. Teams meistens ausrei chend wenn allerdings sp ter jemand etwas ndern soll der nicht in das Projekt involviert war k nnten Probleme auftreten Die XP Praktiken setzen funktionierende Tests voraus Durch das st ndige Refactoring m s sen aber auch diese Tests angepasst werden so dass es vorkommen kann dass die Tests das Falsche testen Die einzige Kontrolle ob die Tests richtig geschrieben wurden erfolgt einzig durch den Programmierpartner beim Programmieren in Paaren Auch das gemeinsame Code Eigentum kann Probleme verursachen Durch das Fehlen von Dokumentation m ssen die Programmierer das Design auswendig kennen Da es aber st ndig ge ndert wird Refactoring ist dies fast unm glich so dass unter falschen Voraussetzungen codiert wird Au erdem kann es zu konkurrierenden nderungen an denselben Klassen kom men was Integrationsproblemen nach sich zieht Dies muss aber kein reines XP Problem sein sondern kann auch ein Zeichen von allgemeinen Kommunikationsproblemen der Entwickler sein Ferner ist XP bis jetzt unzureichend dokumentiert Beispielsweise wird kaum beschrieben wie die Systemmetapher gew hlt werden sollte und wie diese auszusehen hat Au erdem gibt es keine Daten die nachweisen dass XP anderen Vorgehensweisen berlegen ist Uns sind jedenfalls keine empirischen Untersuchungen bekannt die etwas ber den Erfolg von XP aus sagen XP funktioniert nach Beck nur dann wenn alle Techniken w hrend der Entwicklung ko
55. Umgang mit Java3D und Matrizen das Hauptproblem waren Die L sung bestand darin den Start und Endpunkt auf dem Canvas in einen Punkt im Raum umzurech nen und aus der Differenz der beiden den Richtungsvektor zu erhalten Dieser wird dann entsprechend skaliert je nachdem wie weit die Ob jekte entfernt sind Dies f hrte zu einem weiteren recht zeitaufw ndi gen Teilproblem n mlich der Berechnung der Distanz eines Objektes zur Ebene die von der x und y Achse der Kamera aufgespannt wird Es wird jetzt hierzu der Normalenvektor der Ebene berechnet und im CameraChangedListener mit bergeben Der ObjectTranslator berechnet den Abstand des Objekts zur Ebene Ausgew hlte Objekte sollten gel scht werden k nnen 1 Stunde 1 Stunde 17 4 Reflexion ber die Tasks Objekte anlegen Beschreibung Es sollte m glich sein neue Objekte anzulegen geplante Zeit 3 Stunden reale Zeit Dieser Task ist im Task Zustandsautomat realisieren enthalten Neue Objekte automatisch benennen Beschreibung Neu angelegte Objekte sollten einen eindeutigen Namen bekommen geplante Zeit 1 Stunde reale Zeit Dieser Task wurde im Task Aktualisieren der Szene behandelt Schattenwurf Alle Elemente sollten einen Schatten auf den Boden projizieren Beschreibung Es sollte ein Konzept fiir den Schattenwurf erstellt werden geplante Zeit 2 Stunden reale Zeit Ben tigt wurde 1 Stunde Folgendes Ergebnis wurde erarbeitet Java3D unterst tzt ke
56. Zuordnung zwischen einem Element aus dem dar zustellenden Domain und der graphischen Entit t durch die das Element dargestellt werden soll fest Ein Beispiel ist die Regel dass Klassen als W rfel dargestellt werden sollen komplex Eine komplexe Regel beschreibt Zusammenh nge zwischen mehreren Ele menten des Domains Ein Beispiel ist dass Vererbung durch die vertikale Anordnung der W rfel dargestellt werden soll User Stories des ersten Release Alle User Stories aus dem ersten Release m ssen erf llt bleiben Die entsprechenden User Stories finden sich in der Beschreibung zum ersten Release Exception Handling Fehler sollen in der graphischen Benutzungsschnittstelle angezeigt werden Berechnungsstatus W hrend jeder Berechnung soll ein Informationsfenster angezeigt wer den Als Grafik f r den Hintergrund des Fensters bietet sich das PG Logo an Innerhalb dieses Fensters ist eine Fortschrittsanzeige die ber den Status der Berechnungen Auskunft gibt w nschenswert Deployment des Plugins Es soll eine M glichkeit geboten werden dass Plugin sowohl un ter Linux als auch unter Windows auf einfache Weise zu installieren Zu der Installation ist eine Dokumentation erw nscht Paketauswahl Es sollen mehrere Pakete gleichzeitig zur Visualisierung ausgew hlt werden k nnen die anschliessend visualisiert werden Schatten zur Orientierung Die visuellen Diagrammelemente sollen zur besseren Orientie rung ihren Schatten auf den Boden
57. aktuellen Daten des JDT die der CodeController bereitstellt aufzubereiten und damit das EFFECTS Datenmodell zu f llen So sollte es dann m glich sein ein beliebiges Java Projekt einzulesen und als dreidimensionale Szene darzustellen geplante Zeit 10 Stunden F r das Testen der Funktionalit t und einer erwarteten ho hen Anzahl von Problemf llen wurde relativ viel Zeit veranschlagt reale Zeit 14 Stunden Die gesch tzte Zeit wurde um fast die H lfte berschritten da das Testen nicht so realisiert werden konnte wie geplant Dazu kam es aufgrund von Kommunikationsschwierigkeiten zwischen den Entwick lern des Datenmodells und der Codegenerierung bspw wurden zeitwei se die falschen Aktualisierungsmethoden f r das Datenmodell verwen det Inspekor Propertybox Property View anlegen Beschreibung Der bereits in Eclipse existierende Property View sollte mit den dia grammspezifischen Daten erweitert werden geplante Zeit 10 Stunden reale Zeit 14 Stunden Der Mechanismus zur Benutzung des Property Views war schlecht dokumentiert Namen f r Pakete Klassen und Interfaces im Property View Beschreibung Der Property View soll die Namen f r Pakete Klassen und Interfaces anzeigen und editierbar machen k nnen 197 198 17 Beschreibung des vierten Release geplante Zeit 5 Stunden reale Zeit 2 Stunden Die Funktionalit t konnte aus den vorherigen Releases ber nommen werden Assoziationskardinalit ten im P
58. analog verh lt es sich beim Senkenknoten 6 Graphgrammatiken production ErzeugeZweige end Abbildung 6 1 Beispiel f r eine Produktion 6 2 3 Das Einbettungsproblem bei Graphgrammatiken Im vorigen Beispiel sind die beiden Knoten der linken Seite auch auf der rechten Seite noch vorhanden Dies ist aber nicht zwingend gefordert Es kann also vorkommen dass Knoten durch eine Produktion gel scht werden Dabei muss nat rlich beachtet werden dass der Kno ten unter Umst nden noch mit Knoten verbunden war die nicht in der Produktion erfasst worden sind Dies ist ein besonderes Problem von Graphgrammatiken In Grammatiken f r Zeichenketten tritt dieses Problem nicht auf Sie sind linear aufgebaut es gibt in kontextfreien Grammatiken genau ein Zeichen vor einem Nichtterminalzeichen und genau eins dahinter In kontextsensitiven Grammatiken kann statt des einzelnen Nichttermi nalzeichens auch eine Folge von Terminal und Nichtterminalzeichen stehen Diese Folge entspricht einer kompletten linken Seite einer Produktion Bei Graphen k nnen die sogenannten Kontextelemente also Knoten mit denen ein Nicht terminalzeichen in Beziehung steht nahezu beliebig um das Nichtterminalzeichen herum an geordnet sein Es kann also nicht genau gefolgert werden wo die nach der Produktion neu enstandenen Elemente in diese Beziehungen eingef gt werden m ssen So k nnte es z B sinn voll sein eine Kante die zu dem ersten Knoten in der Produktio
59. as Plon ss annumesauf PIOA P9ZIS9Y OMUOD PIon panoyyjoNuoo Plon seauegazisal palgo eydepyjeb PIOA 1a 0 JUODPeOjal Pour PIoA sYanesop PIOA anegop PIOA SNI9019S Plon awres4 MYyUedo PIOA O UODLe delen 4Jopa ueajoog A jnjssacons Buipeo ASISMUN ISISAUN CESBAUe O SeAuBo ueajooq noddnsaweuewalul Ssodwog juared SUeJSf 9ueJy eua xe SWEISWEIJTEWANUI 496607 18660 2 uaos JOYP3 1011P9 3109 S19949 01S 9P Jausjs Jpebueygeiswegd 19U8JSIJONUOD HERE d erequogezieues erequonezijellas ssejo ssejguezienlul abegAnsdordswayg a egAnadod Bunmg owenpay enb ebegaumoJuajuoy ebe qauljinQuoypa JO Joe Iemgmuen PlOA sI8ureJuO o yajejep PIOA SMIBaJo Is r euystauleluogle PIOAISIPOUIEJUOHO LPPe Joe opera ISIS UNeJUOOIJOH J9UIBJUO 19UIBJUOD1OB PIOA JaUIEJUODIES AuedoJgsio9y3 Auado Jajelauab pion Auadolgas ed Plon seuedoldMmoys ploa soypzayepan Jauo guU Nd Ist euy siaurejuogied SWENPAWIENO ANVN GalsvNo sajjonuoguibnig w6njd e109 syaeya EA A A wesbeiqayerausb yur 2 Bung eoinossyejeguazieniunab bBums swenssejQla JeyjoNuoguinid weu eigejeieua J9 JONUOQUIBN ef YUl deyuseH isoalqoieaiydesui6n qje6 TAN TENSIITAX196 ploa sasse QApualsibaly bes Jeu ufnug Abbildung 19 3 Die wichtigsten Komponenten des Frameworks im berblick Byuogweu eig Byuoo 196B07 18l dazyeniujus6n d U
60. change it By contrast the GNU General Public License is intended to guarantee your freedom to share and change free software to make sure the software is free for all its users This General Public License applies to most of the Free Software Foundation s software and to any other program whose authors commit to using it Some other Free Software Foundation software is covered by the GNU Library General Public License instead You can apply it to your programs too When we speak of free software we are referring to freedom not price Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software and charge for this service if you wish that you receive source code or can get it if you want it that you can change the software or use pieces of it in new free programs and that you know you can do these things To protect your rights we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibili ties for you if you distribute copies of the software or if you modify it For example if you distribute copies of such a program whether gratis or for a fee you must give the recipients all the rights that you have You must make sure that they too receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two steps 1 c
61. dann nur noch die passende Aufl sungsstufe ausgew hlt und die Pixel zwischen den Textur Eckkoordinaten der gew hlten Aufl sung auf das Polygon im Bildraum transformiert 11 2 Grundlagen y Abbildung 11 6 Textur und K rper mit projizierter Textur Br derlein und Meier 2000 e WW lu v ENTE TOPE Er Em mon Fi Bla al Da ae Sa ad z 4 zZ Ei x y z gt x y r Abbildung 11 5 Perspektivisches Textur Mapping Br derlein und Meier 2000 11 Java3D 11 3 Einf hrung in Java 3D Zuerst wird eine allgemeine Einf hrung in Java3D gegeben und anschlie end auf deren Klas senbibliotheken eingegangen 11 3 1 Allgemeines zu Java3D Java3D ist eine optionale Erweiterung der Java2 Plattform Ver ffentlicht wurde Java3D 1 0 1998 zur Zeit September 2003 ist die Version 1 3 1 aktuell Somit stellt es sowohl ein aus gereiftes Produkt dar als auch ein modernes im Vergleich mit OpenGL welches Anfang der 90er Jahre erschienen ist Das Java3D Application Programming Interface dient zur Erstel lung Darstellung und Animation von dreidimensionalen Szenen Ferner nutzt Java3D die Hardwarebeschleunigung aus da es auf einer der beiden folgen den Low Level APIs basiert entweder OpenGL SGI oder DirectX Microsoft je nach der Java3D Version die installiert wurde Somit stellt Java3D einen plattformunabh ngigen Wrap per um diese Bibliothek dar Java3D f llt die L cke zwischen Low Le
62. darauf geachtet dass weder zu wenig noch zu viel einbezogen wird e Den einzelnen Funktionen m ssen Priorit ten zugeordnet werden Welche Funktionen sollen direkt implementiert werden welche sind nicht so wichtig e Die Zusammensetzung von Versionen muss bestimmt werden Wann macht ein erstes Release von Gesch ftsseite Sinn Welche Funktionen m ssen dann bis zum n chsten Release implementiert werden e Letztendlich m ssen Liefertermine festgelegt werden Die Programmierer unterst tzen die Gesch ftsseite dabei indem sie folgende Entscheidun gen treffen e Sch tzung des Aufwands zur Implementierung jeder einzelnen Funktion e Technische Konsequenzen bei Entscheidungen der Gesch ftsseite f r eine bestimmte Alternative beispielsweise f r eine bestimmte Datenbank e Strukturierung der Teamarbeit bezogen auf die Umgebung e Genaue Terminplanung f r die Implementierung der Funktionen nach den Priorit ten der Gesch ftsseite 9 3 2 Kurze Releasezyklen XP fordert kurze Releaszyklen von einigen Monaten um auf Feedback aus dem Kundenbe trieb zur ckgreifen zu k nnen Dabei sollte man aber nur vollst ndig implementierte Releases ausgeliefert werden 9 3 3 Metapher Die Metapher ersetzt bei XP das was sonst als Architektur bezeichnet wird Alle techni schen Komponenten sollten in dieser Metapher beschrieben werden so dass man durch sie die Funktion der Software leichter verstehen kann Dabei werden die Komponenten des
63. dargestellte Form if wahr statement if wahr statement else statement if wahr statement else if bedingung statement else statement 261 262 A Code Konventionen A 7 4 try catch Blocke Ein try catch Block hat die Form try statement catch ExceptionClass e statement A 7 5 switch Statements 1 Jedes switch Statement besitzt eine default Marke 2 Jede default Marke besitzt ein break Kommando 3 die default Marke ist immer die letzte Marke im switch Statement 4 Falls in einem case kein break verwendet wird wird an dessen Stelle ein Kommentar hinzugef gt der darauf hinweist Dieser Kommentar muss auf h hr der case Anweisung einger ckt sein 5 Zwischen jeder case Marke ist eine Leerzeile Ausnahme Falls mehrere case Marken aufeinander folgen gelten die Punkte 4 und 5 nicht switch Bedingung case ABC statement Kein break case DEF statement break case GHI case JKL statement break default statement break ee ANHANG B The GNU General Public License Version 2 June 1991 Copyright 1989 1991 Free Software Foundation Inc 59 Temple Place Suite 330 Boston MA 02111 1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed Preamble The licenses for most software are designed to take away your freedom to share and
64. den technischen Gegeben heiten von Eclipse an 17 6 Kundenakzeptanztest Armin Bruckhoff Sven Wenzel Andr Kupetz Michael N the Da zwei offizielle Releaseabnahmen stattfanden werden an dieser Stelle die Akzeptanztests und Ergebnisse f r beide Abnahmen aufgef hrt 17 6 1 Akzeptanztest Release 4a In diesem Abschnitt werden die Abnahmetests beschrieben so wie sie aus den User Stories hervorgehen In diesem Release war es allerdings aufgrund der vorwiegend visuellen Anfor derungen nicht m glich die Testf lle zu automatisieren Folglich wurden nur visuelle Tests durchgef hrt Ein Objekt soll sichtbar markiert werden k nnen Testergebnis bestanden Anmerkung Interfaces sind nicht ausw hlbar Mehrere Objekte sollen sichtbar markiert werden k nnen Testergebnis bestanden Anmerkung Interfaces sind nicht ausw hlbar 17 6 Kundenakzeptanztest Die ausgew hlten Objekte sollen verschoben werden k nnen Testergebnis bestanden Anmerkung Assoziationen zwischen Klassen werden nicht mit verschoben Das Ver schieben von Klassen die in einem Paket liegen das selbst nicht im Ursprung liegt liefert falsche Ergebnisse Die Kamera muss nach dem Beginn des Verschiebevorgangs einmal kurz bewegt werden um eine normale Verschiebegeschwindigkeit zu erhalten Die ausgew hlten Objekte sollen gel scht werden k nnen Testergebnis bestanden Anmerkung Die Eigenschaften ausgew hlter Objekte sollen ver ndert werden k n
65. der Ebenen und die Analyse des r umlichen Zusammenhangs welche ebenfalls von eigenen Klassen durchgef hrt werden Die logischen Informationen werden in dem erweiter ten Eclipse Datenmodell gespeichert 14 5 2 Beschreibung der realisierten Architektur Abbildung 14 4 zeigt die implementierte Architektur welche sich wie folgt unterteilt Die Aspekte des Modells rot dargestellt bernimmt das Paket datamodel Dieses Paket besteht aus den Klassen ClassContainer Container und DataModelController Die Klassen ClassContainer und PackageContainer erweitern das Eclipse Datenmodell und neh men unsere spezifischen Informationen auf Diese Erweiterung wird ber das Eclipse interne Interface IRessource m glich dass sowohl von den PackageFragements als auch von den ICompilationUnits implementiert wird Dieses Interface erlaubt es unsere Container objekte an die entsprechenden Objekte des Elipse Datenmodells zu binden welche einzelne Klassen oder Pakete darstellen Der Zugriff auf diese Objekte erfolgt ebenfalls ber das In terface IRessource Die Klasse DataModelController initialisiert die Erweiterung des Eclipse Datenmodells Den Controlleraspekt gelb dargestellt in unserer Implementierung spiegelt die Klasse Controller wieder Von ihr wird die Berechnung der logischen Informationen die Berech nung der Darstellung sowie die Visualisierung angesto en Die drei Klassen ColorCalculation LevelCalculation und ClusterCalculation nutzen als Grundl
66. die Deklarationen mit Hilfe logischer Programmiersprachen realisiert wer den Helm und Marriott 1991 Das Kernproblem der Erzeugung ist demnach die Abbildung der Deklaration einer Grafik auf die jeweilige Programmiersprache in der die Anwendung im plementiert wird die die visuelle Sprache verwendet So erweist es sich f r das Erzeugen als sinnvoll wenn die Deklaration bereits in der Programmiersprache der Anwendung formuliert ist A Kart 8 Das Eclipse Plugin Modell Christian Mocek 8 1 Einf hrung in Eclipse Das unter der Schirmherrschaft von IBM entworfene Softwaresystem Eclipse wurde unter dem Aspekt einer offenen erweiterbaren Architektur entwickelt Eclipse Foundation 2003 Ziel ist es hierbei dem Entwickler ein Werkzeug zur Verf gung zu stellen um Applikationen auf Basis von Plugins zu entwickeln In der Regel werden dies Entwicklungsumgebungen f r z B Java CH C oder auch ATEX sein es k nnen jedoch im Prinzip auch Produkte f r einen Endanwender auf Eclipse basieren Im Folgenden geben wir zur Einf hrung zun chst einen kleinen berblick ber die Ober fl che und Terminologie von Eclipse bevor in Kapitel 8 2 eine Beschreibung des Prinzips der Plugin Architektur von Eclipse folgt 8 1 1 Die Workbench Die Workbench dient zur Interaktion zwischen dem Endanwender und der Eclipse Plattform Sie verwaltet die Ressourcen und die Steuerelemente der Plugins Jede Workbench besteht also neben der Verwaltung der Ress
67. die Fassade diese an das zust ndige Subsystemobjekt weiter Die Subsystemklassen implementieren die Funktionalit t des Subsystems und werden von der Fassade aufgerufen Sie kennen die Fassade jedoch nicht sie haben also keine Referenz auf die Fassade Konsequenzen Das Subsystem wird durch die Reduzierung von zu verwaltenden Objekten einfacher nutzbar da nur die Fassade verwaltet werden muss die den Benutzer von den einzelnen Subsystem komponenten abschirmt Weiterhin wird die lose Kopplung zwischen Klienten und Subsystem gef rdert wodurch Komponenten des Subsystems leichter ausgetauscht werden k nnen so dass die Implementierung der Fassade angepasst werden muss Die Verwendung von Subsystemklassen wird jedoch nicht verhindert so dass Anwendun gen bei Bedarf weiterhin direkt auf das Subsystem zugreifen k nnen Dies l sst die Schluss folgerung zu dass sich durch das Fassademuster keine Nachteile ergeben 10 Entwurfsmuster 10 3 3 Adapter Zweck Das Adaptermuster l sst Klassen zusammenarbeiten die aufgrund inkompatibler Schnittstel len sonst nicht miteinander kommunizieren k nnten Das Muster dient also der Schnittstellen konvertierung Motivation Bei der Entwickelung einer Anwendung kann man sich eine Menge Arbeit ersparen wenn man auf Funktionalit ten aus bereits bestehenden Toolkits zur ckgreifen kann Nehmen wir an wir m ssten einen Graphikeditor den wir vor einiger Zeit f r einen Arbeitgeber implemen
68. e Die Klasse Container bildet die Basis zur Erweiterung des Eclipse internen Daten modells Um diese durchzuf hren wird an eine Ressource in dem Arbeitsbereich von Eclipse ein Objekt dieses Containers angeh ngt Eine Ressource wird in Eclipse als IResource dargestellt Eine IResource ist eine Modellklasse die entweder ein Pro jekt ein Verzeichnis eine Datei oder den Vaterknoten aller Projekte repr sentiert Sollte bei der Verwaltung der Container ein Fehler auftreten so wird eine Ausnahme vom Typ ContainerListException ausgel st e Die Zuordnung von Containertyp zu einer IResource wird in einem Objekt der Klasse DiagramConfig gespeichert e Der EffectsXMLParser liest eine zuvor angelegte XML Datei ein in welcher die oben genannte Zuordnung persistent gespeichert wird Der Zusammenhang zwischen diesen Klassen ist aufgrund der Funktionalit t der Einzel klassen ersichtlich Der XML Parser liest die Zuordnungen aus der XML Datei Anschlie 226 19 Die Systemarchitektur Bend werden die entsprechenden Container Objekte angelegt und an die Ressource gebunden Au erdem werden die Zuordnungen in dem Objekt der Klasse DiagramConfig gespeichert Visualisieren des Datenmodells im Property View Um Eigenschaften eines beliebigen Objektes ndern zu k nnen bietet Eclipse die M glichkeit den so genannten Property View zu verwenden Diese M glichkeit wird genutzt um Werte des Datenmodells anzuzeigen und ggf zu ndern Um dies z
69. e n f t assign statement sequence BEER BASS ior ont E rocess Ss Lef ork join add process asynchronous send message while statement if statement Abbildung 6 3 Graphgrammatik f r Process Flow Diagrams 6 4 1 Beispiel In Abbildung 6 2 ist ein Process Flow Diagram PFD dargestellt PFDs besitzen lineare Ab l ufe von Aktionen die durch if und while Schleifen gesteuert werden k nnen Es k nnen dar berhinaus noch parallele Abl ufe gebildet werden Alle diese m glichen Konstrukte sind im Graph in Abbildung 6 2 vorhanden Die Graphgrammatik f r PFDs ist in Abbildung 6 3 dargestellt Sie kommt mit lediglich sieben Produktionen aus die alle n tigen Elemente er zeugen k nnen Die in der Abbildung grau unterlegten Knoten sind dabei Kontextknoten die vor und nach Anwenden der Produktion unver ndert vorhanden sind Neu hinzugekommene Knoten sind wei dargestellt Um nun aus dem Graphen aus Abbildung 6 2 das Axiom herzuleiten muss nach Knoten konstellationen gesucht werden die der rechten Seite einer Produktion entsprechen Das ist f r Produktion 5 der Fall Danach kann in beiden parallelen while Schleifen jeweils einmal die Produktion 3 und einmal die Produktion 2 r ckw rts angewendet werden Anschlie end las sen sich die while Schleifen mit Produktion 6 entfernen Das verbleibende fork join Konstrukt 6 4 Parsen verschwindet durch umgekehrtes Anwenden der Produktion 4a Nun besteht der G
70. eXtreme Programming Einfuhrung 9 1 IG ea p a et ee ele a 9 2 Allgemeine Einf hrung in XP 9 2 1 WAU APE EE AAA 9 2 2 Voraussetzungen und Funktionsweise von XP 2 2 2 2 22 nennen 9 2 3 RP WONG a ee AA A 924 enee 2 40 Se ee we a et a e o Re ee ee ee 93 Die T23P Teehniken ss cc b ew Oh ee ee ee ee A Re ee 9 3 1 Das Planimngssplel gt 002 a er Hw ee Be we HE ee e HS 9 3 2 Kurze Relgasezuklen occ ns ER Es 9 3 3 METAS o Abe e EAE A Bl SE ee SE ee ee BS 9 3 4 PEWS DES a en owe aa Ra ee ASR i ae we Oe BSG a t 9 35 TESEN A ee 9 3 6 FEISCHOMNG eh oho E E e e ade ee nr em ws 9 3 7 Programmieren M Paaren oe d we e A a 9 3 8 Gemeinsame Verantwortlichkeit 93 9 Fortlaufende Integration lt lt lt lt ewe eae nme hrs 9 3 10 40 Btunden Woche 2 4 4 0 0 25 werke nenn RE 93 11 Kunde v r Ort ee a a E EE ER 9 3 12 Programmierstandards s e se e s sosoo eo o 9 4 PAT lt a e o a e A A a AR her 9 4 1 AROS a e a A s 9 4 2 AP Nachteile dE A AA A KAPITEL 10 Entwurfsmuster 10 1 Was ist ein Entwurfsmuster 2 2 2 on 10 1 1 Die Geschichte der Entwurfsmuster o oaoa e Inhaltsverzeichnis 10 1 3 Beschreibung von Entwurfsmustern e 65 10 1 4 Klassifizierung von Entwurfsmustern 65 10 1 5 Wie findet man das richtige Entwurfsmuster 222m 65 10 2 Ein einf hrendes Beispiel 66 10 21 MYG interaktion lt o ooo o 20a wos nr ee EE
71. eine Planung des Gesamtziels der PG als Workshop durchf hrt um eine gemeinsame Systemmetapher zu entwickeln Im ersten Semester gab es neben der eigentlichen Implementierungsarbeit auch zwei Grup pen die die Aufgabe hatten Konzepte f r die Syntax und Semantik der Modellierungsnota tionen und die Benutzungsschnittstelle zu entwickeln Jedoch wurden die Ergebnisse dieser beiden Gruppen nicht in der weiteren Arbeit der PG verwendet Die Erstellung der Dokumentation des PG Berichts war stets releasebegleitend Dies hatte 243 21 Reflexion ber das Vorgehensmodell und die PG Organisation den sehr gro en Vorteil dass man nicht erst gegen Ende der Projektgruppe alles aufschreiben musste Des Weiteren war dieses Vorgehen auch sinnvoll da man nach jedem abgeschlossenen Release die einzelnen Details noch im Ged chnis hatte Die Gruppensitzungen fanden zweimal pro Woche statt Nach dem zweiten Release wurde die Rolle des Chief of the week eingef hrt Dieser hatte die Aufgabe in jeder Sitzung ber den Stand der Dinge zu berichten Diese Rolle war sehr vorteilhaft sowohl f r die Betreuer als auch f r die Entwickler weil beide einen Ansprechpartner hatten der einen Gesamt berblick ber den aktuellen Stand des Projektes besa Die Betreuer sorgten durch ihre Aufgeschlossenheit gegen ber Vorschl gen der Teilneh mer und ihre konstruktive Kritik f r ein sehr angenehmes Arbeitsklima Auch die Teilnehmer harmonierten gut miteinander
72. eine wichtige Aufgabe bei der Modellierung Es soll das Verhalten des Systems mit Hilfe von entsprechenden Diagrammen wiedergeben In dieser Ausarbeitung wird daher der Fokus auf das dynamische Modell von UML gelegt und nicht n her auf das statische UML Modell eingegangen Die allgemeine Syntax und Semantik von UML werden vorausgesetzt so dass nicht im Detail auf die einzelnen Elemente eines Diagramms eingegangen wird son dern lediglich auf die f r das Diagramm wesentlichen Elemente Es sei noch zu erw hnen dass sich diese Arbeit auf die UML Version 1 4 bezieht und als Literatur UML Work Hitz und Kappel 2002 verwendet wurde In Kapitel 4 2 wird nach einer kurzen Motivation zur Modellierung mit UML eine grafische bersicht der UML Diagramme dargestellt Im dar auf folgenden Kapitel wird auf das dynamische Modell eingegangen und die entsprechenden Diagramme mit je einem Beispiel vorgestellt Im letzten Kapitel erfolgt ein Res mee 4 2 Motivation Moderne Software wird meist objektorientiert entwickelt Aber bevor man objektorientierte Software programmiert ist es sinnvoll sie zu modellieren Die Modellierung hat unter an derem den Vorteil dass man im Vorfeld der Implementierung schon eventuelle Probleme er kennen und beseitigen kann Zur Modellierung von objektorientierter Software wird meist die Sprache UML verwendet Sie bietet f r die Modellierung der unterschiedlichen Aspekte eines Systems verschiedene Diagrammtypen an Die Unified M
73. erstellt werden 16 4 9 Sequenzdiagramme Grundlagen der Semantik nach Gill und Kent erarbeiten Beschreibung Um auf der Basis der Ausarbeitung von Gill und Kent Gil und Kent 1998 ein Sequenzdiagramm mit dem EFFECTS Plugin darstellen zu k nnen sollte eine detaillierte Ausarbeitung des Thesenpapiers erfolgen siehe Abschnitt 16 1 geplante Zeit Eine Stunde da nur die wichtigsten und f r unser Vorhaben relevanten Punkte aus dem Thesenpapier herauszuarbeiten waren reale Zeit Eine Stunde wurde in etwa auch ben tigt Graphisches Objekt Quader anlegen Beschreibung Dieser Task sollte ein graphisches Objekt einen Quader erzeugen um die Objekte im Sequenzdiagramm visualisieren zu k nnen geplante Zeit Zwei Stunden da das vorhandene graphische Objekt W rfel aus dem statischen Diagramm bernommen werden konnte und nur an bestimmte Parameter angepasst werden musste reale Zeit Zwei Stunden Graphisches Objekt Lebenslinie anlegen 167 168 16 Beschreibung des dritten Release Beschreibung geplante Zeit reale Zeit Hier sollte ein neues graphisches Objekt die Lebenslinie eines Objektes erzeugt werden Sie soll als d nner Zylinder visualisiert werden Drei Stunden da im Gegensatz zum vorherigen Task ein neues Objekt entworfen werden musste Drei Stunden wurden auch f r die Implementierung gebraucht Graphisches Objekt Finalisierungskreuz anlegen Beschreibung geplante Zeit reale Zeit Z
74. erzeugten Teilgraphen nehmen der an die Locale angehangen wird Dies geschieht mit myLocale addBranchGroup myBG Im Folgenden wird nun der ViewBranch n her beschrieben Prinzipiell befasst sich dieser mit der Ausgabe der Szenerie auf einen Bildschirm Er endet in dem Blatt der ViewPlatt form Diese ist so etwas wie eine virtuelle Plattform auf die der Benutzer steht sich die Szenerie anschaut und sich in ihr bewegt Wenn der Benutzer beispielsweise seine Blickrichtung auf die Szenerie ndert geschieht dies mit Hilfe der direkt bergeordneten TransformGroup Wenn in einer Szenerie zwischen mehreren vorgegebenen Kamerapositionen gewechselt wer den soll so kann dies mit Hilfe mehrerer ViewPlatt formen realisiert werden Dem View Objekt wird eine ViewPlatt form zugeordnet und fa t nun alle zur Projekti on des aktuellen Bildes notwendigen Informationen zusammen Die so gerenderte Szene wird dann auf dem Canvas3D einer GUI Komponente mit einem darin integrierten Darstellungs fenster projiziert und in der Regel ber den Bildschirm ausgegeben 11 5 Realisierung einiger Problemstellungen In diesem Kapitel wird die Realisierung einiger einfacher Anwendungsbeispiele erl utert und deren Implementierung dargestellt Ferner wird dabei auch auf spezielle weitere Eigenschaften in Java3D eingegangen Auf Grund der imensen Komplexit t der Behaviors werden die se nur sehr oberfl chlich behandelt k nnen aber wegen ihrer Wichtigkeit nicht weggelasse
75. es den Men punkt des Frameworks soweit an zupassen dass es m glich ist mehrere Pakete gleichzeitig auszuw hlen und dann in der 3D Sicht zusammen anzuzeigen geplante Zeit Geplant wurde eine Stunde 147 148 15 Beschreibung des zweiten Release reale Zeit Die geplante Zeit war ausreichend Controller anpassen Beschreibung geplante Zeit reale Zeit Im Zusammenhang mit dieser User Story war es ebenfalls n tig den Controller anzupassen um die Funktion der Mehrfach auswahl zu erm glichen Da der Controller bisher nur ge nau ein IPackageFragment akzeptierte mussten hier Ver nderun gen vorgenommen werden so dass nun eine Collection von IPackageFragments verarbeitet werden kann Die gesch tzte Dauer betrug zwei Stunden Tats chlich wurde f r diesen Task ungef hr eine Stunde ben tigt DataModelHelper f r Mehrfachauswahl anpassen Beschreibung geplante Zeit reale Zeit Um diese User Story zu erf llen war es abschlie end noch n tig die verschiedenen Hilfsfunktionalit ten des DataModelHelpers anzupas sen Dabei sollten alle bisherigen Hilfsfunktionen an die mehrfache Pa ketauswahl angepasst werden F r diesen Task wurde eine Zeit von etwa zwei Stunden eingeplant Dieser Task wurde in ca dreieinhalb Stunden erf llt Ein dabei aufge tretenes Problem war das Korrigieren der Auswahl Es war erforderlich dass keine Unterpakete eines Pakets die ebenfalls selektiert sind in der Auswahl
76. hier die Beachtung der Wahrnehmungspsychologie bei der Gestaltung von Bildschirmmasken die Erwartungskonformit t bei der Nutzerinteraktion und die Fehlerro bustheit der Anwendung zu nennen 13 2 Bestandteile von dreidimensionalen grafische Benutzungsschnittstellen Nach der Betrachtung zweidimensionaler grafischer Benutzungsschnittstellen steht nun die Untersuchung dreidimensionaler grafischer Benutzungsschnittstellen an die einige Ansatz punkte f r die Gestaltung der Benutzungsschnittstelle des geplanten Editors liefern kann Der gro e Vorteil von dreidimensionalen grafischen Benutzungsschnittstellen ist die M glichkeit intuitivere Benutzungsschnittstellen erstellen zu k nnen da wir t glich unsere reale dreidi mensionale Welt erfahren und diese Erfahrungen im Umgang mit der grafischen Benutzungs schnittstellen nutzen k nnen Um diese Erfahrungen nun wirklich zu nutzen sollte die model lierte Welt die Realit t nachahmen wobei aber stets zu beachten ist welcher Grad an Realit t f r den Zweck der Anwendung sinnvoll ist Zum Beispiel kann in einer Simulation das Ver schieben von Kisten nur durch Gabelstapler erlaubt sein w hrenddessen dies beim Entwurf einer Lagerverwaltung u erst ung nstig ist So sind also stets die Anwendung und ihre An forderungen der Ausgangspunkt f r das Design der Benutzungsschnittstelle 13 2 1 Grundlegende Begriffe f r dreidimensionale grafische Benutzungsschnittstellen Zuerst sind die f r d
77. kann auch nachverhandelt werden 9 2 3 XP Werte XP beruht auf 4 Werten Kommunikation Einfachheit Feedback und Mut Diese Werte sol len die genannten Probleme herk mmlicher Softwareentwicklung zuerst auf relativ abstrakte Weise angehen sp ter werden gezielte XP Prinzipien daraus entwickelt Aus diesen Prinzipi en entstehen dann letztlich die eigentlichen XP Techniken 9 2 Allgemeine Einf hrung in XP Kommunikation Viele Probleme resultieren aus mangelnder Kommunikation dass jemand etwas Wichtiges nicht mit den anderen bespricht Beck 2000 Seite 29 Die mangelnde Kommunikation betrifft s mtliche Bereiche der Entwicklung Dies k nnen z B nicht besprochene Design n derungen Missverst ndnisse mit dem Kunden oder falsche Annahmen der Manager ber den Projektstatus sein Diese Art von Kommunikationsdefizit ist durch bestimmte Faktoren be dingt z B die Bestrafung des Programmierers wenn er dem Manager den wahrhaftigen Projektstatus mitteilt und demnach nderbar Einfachheit Der zweite Wert dem XP folgen soll ist Einfachheit Das Team muss sich immer wieder die Frage stellen wie die zu l senden Probleme am einfachsten angegangen werden k nnen What is the simplest thing that could possibly work Beck 2000 Seite 30 Dies verlangt dass man sich nur mit den Dingen besch ftigt die das momentane Problem l sen Hierzu muss man jegliche Art von zwanghaftem Vorausdenken abstellen Dieser Wert resul
78. lage f r das Datenmodell dienen und die aus dem ersten Release bernommen wurden Es sind die von Eclipse bereitgestellten Klassen IType ICompilationUnit sowie das Inter face IResource Ebenfalls bernommen wurden die Klassen die f r die Darstellung einer Szene verantwortlich sind Dazu z hlen die Klassen Universe und viewController sowie die von Java3D bereitgestellten Klassen Canvas3D und BranchGroup Die Navigation durch die 3D Darstellung erm glichen weiterhin die Klassen KeyNavigator und KeyNavigator Behaviour Die f r die Berechnung zust ndige Klasse Scene ist zu einer abstrakten Klasse geworden da die Berechnung jetzt f r die verschiedenen Diagrammtypen unterschiedlich ver l uft Um eine Schnittstelle zu den entsprechenden Plugins der Diagrammschnittstelle zu haben stellt das Kernplugin verschiedene Interfaces bereit Zur Speicherung der Informationen der entsprechenden Diagrammtypen wird ein Interface Container zur Verf gung gestellt Um diese Information graphisch darzustellen existiert das Interface GraphicalObject Schlie lich gibt es f r die Festlegung der zu verwendenden Regeln das Interface Calculation Um die entsprechenden diagrammtypspezifischen Plugins in das Kernplugin einzuh ngen gibt es Extension Points In diesem Release sind die beiden Klassen Controller und In formationView die Extension Points Deren Funktionalit t hat sich gegen ber dem ersten Release allerdings nicht ge ndert Der Controller dient wei
79. nutzt also Adapaterobjekte um seine Anfragen bearbeiten zu lassen Konsequenzen Ein Objektadapter kann mit mehreren adaptierten Klassen zusammenarbeiten n mlich mit der adaptierten Klasse selbst und all ihren Unterklassen Er kann weiterhin neue Funktionalit t zu allen adaptierten Klassen hinzuf gen Diese neue Funktionalit t wird im Adapter implemen tiert Erschwert wird allerdings die berschreibbarkeit von Verhalten der adaptierten Klasse da im Objektadapter folgender Umweg gegangen werden muss Um das Verhalten der zu adaptierenden Klasse zu berschreiben f gt man eine neue Klasse hinzu die von der zu adaptierenden Klasse erbt und das Verhalten berschreibt Der Adapter muss anschlie end die neue Klasse adaptieren Der Implementierungsaufwand kann durchaus unterschiedlich ausfallen Es richtet sich da nach wie verschieden die anzupassenden Schnittstellen zueinander sind Der Aufwand kann von einfachem Anpassen der Methodennamen bis zu komplexen Algorithmen zur Umwand lung reichen Ferner kann es problematisch sein dass der Adapter nicht f r alle Klienten transparent ist Ein durch Adapter angepasstes Objekt ist nicht mehr konform zu der Schnittstelle der adaptierten Klasse Aus diesem Grund kann ein adaptiertes Objekt nicht ohne weiteres wie ein nicht adaptiertes Objekt der adaptierten Klasse eingesetzt werden 10 3 4 Vergleich zwischen Fassade und Adapter Das Fassadenentwurfsmuster kann als Adapter f r eine gr ere Anz
80. on Intervals April 2003 Klaus Alfert Jorg Pleumann Jens Schr der A Framework for Lightweight Object Oriented Design Tools April 2003 138 139 140 141 142 143 144 145 146 147 148 149 150 K Alfert A Fronk Ch Veltmann Hrsg Stefan Borggraefe Leonore Brinker Evgenij Golkov Rafael Hosenberg Bastian Krol Daniel M lle Markus Niehammer Ulf Schellbach Oliver Szymanski Tobias Wolf Yue Zhang Endbericht der Projektgruppe 415 Konzeption und Implementierung eines digitalen und hypermedialen Automo bilcockpits HyCop Mai 2003 Volker Gruhn Malte Hilder Sami Beydeda Hrsg Endbericht der Projektgruppe 409 Entwicklung von ortsbasierten Diensten fiir UMTS Mobilfunkger te mCube Mai 2003 Ernst Erich Doberkat Congruences for Stochastic Relations Juli 2003 Marion Kamphans Sigrid Metz G ckel Anja Tigges Wie Geschlechteraspekte in die digitalen Medien integriert werden k nnen das BMBF Projekt MuSofT September 2003 Ernst Erich Doberkat Semi Pullbacks for Stochastic Relations over Analytic Spaces Januar 2004 Volker Gruhn Lothar Sch pe Hrsg 1 Workshop des Verbundforschungsprojektes Mobile Spedition im Web SpiW Oktober 2002 Ernst Erich Doberkat Stochastic Relations Interpreting Modal Logic Oktober 2003 Alexander Fronk Ernst Erich Doberkat Johannes Bergemann Ulrich Walter Gans Ein interdisziplin res methodisches Vorgehen zur Gestaltu
81. passende Fabrikklasse mit dieser Aufgabe Dazu wird eine abstrakte Klasse abstrakteFabrik eingef hrt die die Schnittstelle f r alle konkreten Fabriken definiert Die konkreten Fabriken implementieren diese Schnittstelle und sind f r die Erzeugung der entsprechenden Elemente zust ndig Die konkrete Fabrik Bal kenFabrik ist somit f r die Erzeugung der Komponenten eines Balkendiagramms zust ndig also f r die im Diagramm aufgezeigten Objekte von BalkenSkala und BalkenKomponente siehe Abbildung 10 3 Durch die einheitliche Schnittstelle ist es nicht mehr n tig f r jede andersartige View eine spezifische Implementierung der Klasse View zu haben Es gen gt eine einzige Implementie rung der Klasse View die lediglich verschiedene Fabriken z B BalkenFabrik TortenFabrik 10 Entwurfsmuster f r die gew nschte Darstellung nutzt In der Klasse View k nnte z B eine Operation zeichne Komponente aufgerufen werden die dann eine konkrete Fabrik dazu auffordert seine Kom ponente zu zeichnen 10 3 Strukturmuster Strukturmuster befassen sich mit der Komposition von Klassen und Objekten um gr ere Strukturen zu bilden Gamma u a 2001 Welche Beweggr nde hierf r existieren lassen sich allerdings nicht einheitlich zusammenfassen Es gibt Entwurfsmuster die sich direkt mit dem Zusammensetzten von Objekten zu komplexen Strukturen befassen oder dem Benutzer ein Objekt als Stellvertreter anbieten welches da
82. projizieren Alle hier aufgef hrten User Stories wurden von den Entwicklern angenommen und in zu geh rige Tasks aufgeteilt 15 4 Reflexion ber die Tasks 15 3 Systemmetapher Semih Seving Das Model View Controller Konzept das auch in der implementierten Architektur des ersten Releases Anwendung findet hat sich als geeignet erwiesen Daher wurde diese Systemmeta pher auch f r das zweite Release bernommen 15 4 Reflexion ber die Tasks Armin Bruckhoff Michael Pflug Im Nachfolgenden wird ber die Tasks des zweiten Release reflektiert Hierzu werden die einzelnen Tasks kurz vorgestellt und insbesondere auf die signifikanten Probleme und die Differenzen in den Zeitabsch tzungen eingegangen Die gegebenen User Stories wurden zun chst wie folgt als zw lf explizite Anforderungen aufgeschl sselt und in einzelne Tasks unterteilt F r jeden der Tasks wurde anschlie end die Zeit abgesch tzt die zur Umsetzung als n tig empfunden wurde 15 4 1 Konzeptionelle Tasks bei den Hotspots Unterschied zwischen Kernfunktionalit t und erweiterten Funktionen Beschreibung Dieser Task hatte zur Aufgabe die konzeptionellen Aufgaben f r die entsprechende User Story zu erarbeiten und dabei herauszufinden was Kernfunktionalit t des Frameworks bzw was die speziellen Eigenschaf ten der Erweiterungen sein sollen geplante Zeit Die geplante Zeit betrug vier Stunden reale Zeit F nf Stunden Dieser Task wurde zusammen mit dem n chst
83. r OpenGL und eine f r DirectX 15 4 8 W hrend jeder Berechnung soll ein Infofenster an gezeigt werden inkl Logo Eine Fortschrittsanzeige ist w nschenswert Statusfenster und Logo erstellen in SWT Beschreibung Um als Anwender erkennen zu k nnen ob bei der Generierung einer 3D Szene der Vorgang aktiv ist oder nicht soll ein Fenster erstellt werden dass dieses signalisiert Das Fenster soll dabei eine SWT Komponente sein und das Logo der PG enthalten geplante Zeit Die geplante Zeit betrug zwei Stunden reale Zeit Die ben tigte Zeit betrug zwei Stunden Die Aufgabe bestand nur darin das Design des Fensters zu erstellen Fortschrittsanzeige Beschreibung Neben dem zu erstellenden Fenster das w hrend des Ladevorganges an gezeigt wird soll eine Fortschrittsanzeige implementiert werden Damit soll dem Benutzer signalisiert werden dass das System Berechnungen durchf hrt und sich nicht in einem Deadlock befindet geplante Zeit Die zeitliche Vorgabe lag f r diesen Task bei zwei Stunden Da die Eclip se API bereits einen Fortschrittsbalken als Standardkonstrukt zur Verf gung stellt wurde diese geringe Dauer als ausreichend erachtet reale Zeit Auch hier mussten lediglich die entsprechenden SWT Komponenten eingebunden werden 15 4 9 Es sollen mehrere Pakete gleichzeitig zur Visualisie rung ausgew hlt und angezeigt werden k nnen Anpassen des Men punktes zur Mehrfachauswahl Beschreibung Ziel dieses Tasks war
84. sein d rfen Da dies jedoch der Fall sein kann musste hier mehr Zeit investiert werden als zun chst eingeplant war 15 4 10 Die visuellen Diagrammelemente sollen zur besse ren Orientierung ihren Schatten auf den Boden wer fen Lichtquelle in das Universum einbauen Beschreibung geplante Zeit reale Zeit Dieser Task sollte eine Lichtquelle zu der 3D Szene hinzuf gen so dass alle auftretenden Objekte einen Schatten auf den Boden projizieren Die geplante Zeit betrug hier acht Stunden Aus zeitlichen Gr nden wurde diese Aufgabe nicht bearbeitet Die Erle digung der User Story Schattenwurf wird in das n chste Release ver schoben 15 5 Vorstellung der implementierten Architektur 15 4 11 Fazit Zusammenfassend kann gesagt werden dass fast alle zu erledigenden Aufgaben auch erledigt wurden Lediglich die Implementierung der Objektschatten wurde in diesem Release nicht realisiert F r die konzeptionellen Aufgaben wurde insgesamt zu viel Zeit veranschlagt f r die Hotspots wurde zun chst keine Zeitabsch tzung gemacht da die Aufgaben aus den Er gebnissen der konzeptionellen Arbeiten zu nehmen waren Damit wurde die eingesparte Zeit aus den konzeptionellen Tasks wieder verbraucht so dass insgesamt die Zeitabsch tzung mit der tats chlich ben tigten Zeit im Wesentlichen bereinstimmte 15 5 Vorstellung der implementierten Architektur Andre Kupetz Stephan Eisermann Daniel Unger Jan Wessling Im Nachfolge
85. verdeutlichen Der folgende Ausschnitt ist aus der Schemadatei der schon oben erw hnten Action Sets lt schema targetNamespace org eclipse ui gt lt Wurzel des Baums gt lt element name extension gt lt complexType gt lt sequence gt lt element ref actionSet 49 8 Das Eclipse Plugin Modell minOccurs 1 maxOccurs unbounded gt lt sequence gt lt attribute name point type string use required gt lt attribute gt lt attribute name id lt attribute name name lt complexType gt lt element gt lt Element Action Set gt lt element name actionSet gt lt complexType gt lt sequence gt lt element ref menu minOccurs 0 maxOccurs unbounded gt lt element ref action lt sequence gt lt attribute name id lt attribute name label lt complexType gt lt element gt lt eine Aktion innerhalb des Action Sets gt lt element name action gt lt complexType gt lt choice gt lt element ref selection lt element ref enablement lt choice gt lt attribute name id lt attribute name label lt complexType gt lt element gt lt schema gt In dieser gek rzten Version der Schemadatei kann man die Baumstruktur ableiten wie sie in Abbildung 8 4 dargestellt ist Zus tzlich erkennt man hier den Sinn der minOccurs und ma xOccurs Parameter ein ActionSets Erweiterungspunkt enth lt mindestens ein
86. was zus tzliche Entwicklungszeit 21 2 Allgemeine Organisation der Projektgruppe kostete So h tte man nach dem Erstellen der dreidimensionale Szene zun chst auf die Inter aktion eingehen und zuletzt das Framework realisieren sollen Die Task Cards boten eine gute bersicht der zu erledigenden Aufgaben wobei die Zeit absch tzung oft nicht realistisch waren da der Umgang mit neuen Technologien unvorher sehbare Probleme mit sich brachte Die Ableitung der Task Cards aus den User Stories war dabei nicht immer trivial so dass sehr viele Tasks erst sp ter aufgestellt wurden Dies l sst darauf schlie en dass es sinnvoll sein k nnte einen Zwischenschritt einzuf hren in dem aus den User Stories zumindest eine grobe Architektur entworfen wird ehe die Tasks identifiziert werden Es war zun chst geplant das Projekt mit dem Test First Ansatz zu bearbeiten d h es wird zun chst ein Test geschrieben und dann erst die Klasse implementiert Diese Technik erwies sich jedoch als nicht praktikabel was mehrere Gr nde hatte Der Test First Ansatz setzt ei ne detailierte Planung der zu implementierenden Klassen voraus F r diese genaue Planung im Voraus fehlte neben der erforderlichen Zeit auch die Erfahrung der Entwickler mit die sem Ansatz zu arbeiten Jedoch wurden zu Beginn JUnit Tests nach der Implementierung der Klasse geschrieben Aber aufgrund der st ndigen Milestone Wechsel von Eclipse und damit der verwendeten API waren die JU
87. welche in dem jeweiligen Diagrammtyp dargestellt werden sollen F r den im ersten Release implementierten Diagrammtyp beispielsweise sind diese Ele mente Klassen und Pakete Das Interface GraphicalObject stellt den Diagramm Hotspot zur Verf gung in dem die graphische Darstellung festgelegt wird F r das obige Beispiel des dreidimensionalen Klassendiagramms wird im Diagramm Hotspot festgelegt dass Klassen als W rfel dargestellt werden Der Regel Hotspot schlie lich wird vom Interface Calculation bereitgestellt Hier werden die Regeln zur Anordnung der graphischen Elemente in der Dar stellung festgelegt Im Beispiel sind solche Regeln etwa die Ebenenanordnung der Klassen 149 150 15 Beschreibung des zweiten Release nach ihrer Position in der Vererbungshierarchie oder die r umlich nahe Anordnung von Klas sen eines Pakets 15 5 2 Beschreibung der realisierten Architektur In diesem Release wurden die Anforderungen so erweitert dass verschiedene Diagrammty pen eingebunden werden k nnen Diese Anforderungen f hrten auch zu grundlegenden Ver nderungen in der Architektur Diese besteht jetzt aus einem Kernplugin und aus den f r die Diagramme spezifischen Plugin Fragementen Die implementierte Architektur wird in Abbil dung 15 2 auf Seite 152 gezeigt Zum Kernplugin geh ren nur noch die Klassen die allgemeine Funktionalit t bereitstel len welche f r alle Diagrammtypen gleich sind Dazu geh ren die Klassen die als Grund
88. werden vorgestellt und bewertet 2 5 Exkursion und Fachgespr ch Den Abschluss der Projektgruppe bildet eine Exkursion zu einem dem Projektgruppenthema angemessenen Ziel Daneben wird ein Fachgespr ch stattfinden in dem die Projektgruppenteilnehmer den Fach bereich ber den Ablauf und die Ergebnisse der Projektgruppe informieren Dieses Fachge spr ch wird im Rahmen des Diplomanden und Doktorandenseminars des LS 10 stattfinden 2 6 Zeitlicher Ablauf Folgender zeitlicher Ablauf ist geplant 1 Semester 16 Wochen Oktober bis Februar e Einarbeitungsphase 3 Wochen e Erste Releases erstellen mit dem Ziel technologische Kenntnisse zu erwerben 11 Wochen Eclipse PlugIn Manipulation des Syntaxbaums Java3D graphische Notation als Basisprimitive Release 1 Technische Erfahrungen sammeln mit PlugIn Schnittstelle von Eclip se und der Java3D API 2 Geplantes Vorgehen PlugIn dass eine Menge von Klassen als W rfel darstellt Zus tzlich m ssen in dem Diagramm folgende Regeln gelten Die Vaterklasse muss oberhalb der Sohnklasse angeordnet werden Klassen die zu einem Paket geh ren m ssen gruppiert angeordnet werden In dem Diagramm sind somit eine Reihe von impliziten Strukturen ent halten x Domainentit ten die betrachtet werden Klassen Pakete Vererbungs relation Paketenthaltenseinsbeziehungen Diagrammenti ten die verwendet werden Regeln wie die Domainentit ten im Dia
89. wird Daum 2003 A Karime eXtreme Programming Einf hrung Michael Pflug Daniel Unger 9 1 Einleitung Ziel dieser Ausarbeitung ist es extreme Programming XP Beck 1999 als Programmier methode vorzustellen um es dann innerhalb der Projektgruppe 444 einsetzen zu k nnen Da w hrend der Projektgruppe Eclipse Eclipse Foundation 2004 als Entwicklungsumgebung eingesetzt werden soll wird auf zwei XP Techniken die besonders gut mit Hilfe von Eclipse realisierbar sind genauer eingegangen Dieses sind die Techniken Testen und Refactoring Wir beginnen mit einer allgemeinen Einf hrung in XP und sagen warum es im Gegen satz zu konventionellen Techniken erfolgsversprechend erscheint Anschlie end zeigen wir die Funktionsweise von und die Voraussetzungen f r den erfolgreichen Einsatz von XP auf Dann geben wir die Werte an auf denen XP beruht Zum Abschluss des ersten Kapitels wer den dann die Prinzipien erl utert die in gewisser Weise als Leitlinien bei der Anwendung von XP eingehalten werden sollten Im zweiten Kapitel gehen wir dann detailliert auf die 12 einzelnen XP Techniken ein die das eigentliche Herzst ck dieses Softwareentwicklungsprozesses bilden Besonderes Augen merk wird dabei wie bereits erw hnt auf die Techniken Refactoring und Testen gelegt Jeweils in einem eigenen Unterkapitel wird der Einsatz der Techniken in Eclipse vorgestellt Abschlie end wird im dritten Kapitel die Softwareent
90. z B Objekte indirekt erzeugen wodurch wir die M glichkeit erhalten die Implementation sp ter zu ver ndern ohne dabei die Schnittstelle anpassen zu m ssen Des Weiteren k nnen wir durch dieses Muster Hard und Softwareplattformabh ngigkeiten begrenzt werden Ein anderes von uns diskutiertes Muster Iterator erlaubt es dass algo rithmische Abh ngigkeiten vermieden werden k nnen Die Erweiterung der Flexibilit t durch Komposition statt Vererbung erreichen wir mit dem Kompositummuster Wie man sieht haben wir nun schon ein stattliches R stzeug f r nderungen erhalten Zu guter letzt wollen wir aber nicht verschweigen dass Entwurfsmuster kein Allheilmittel sind Es ist nur sinnvoll sie anzuwenden wenn man sich im Klaren dar ber ist welche Vor und Nachteile mit ihnen verbunden sind Entwurfsmuster bringen i d R Flexibilit t und sollten auch nur dann eingesetzt werden wenn diese Flexibilit t auch gebraucht wird Der Trade off ist fast immer dass die Struktur unseres Entwurfs komplizierter wird und man meist auch mit Performanzeinbu en leben muss Entwurfsmuster sind also keine fertige Schablone f r ein zu erstellendes Programm en kat 11 Java3D Andr Kupetz Jan Wessling 11 1 Einleitung Das Referat soll einen berblick ber die Programmierung in Java3D geben Dabei wird ins besondere auf die Hintergr nde eingegangen die allgemein einer Programmierung von 3D Szenen zu Grunde liegen Zu diesem Zweck werden
91. zweidimensionale grafische Benutzungsschnittstelle von Eclipse zu beachten Die durch das MVC Muster gezeigte Tren nung von Model und Darstellung erm glicht es austauschbare Sichten auf die Daten zu reali sieren Bei der Erstellung von dreidimensionalen grafischen Benutzungsschnittstellen sind die sechs funktionalen Komponenten Steuerung Feedback Visualisierung Navigation Manipu lation und Zugriff zu entwerfen Dabei ergeben sich im Bereich der Steuerung Navigation und Manipulation Fragen zur Umrechnung der zweidimensionalen Mauseingaben zur Sichtweise erste zweite und dritte Person und zur Beschr nkung der Steuerung Im Bereich der Visua lisierung ist die Darstellung abstrakter Daten und das Problem der berdeckung anzugehen Sehr wichtig f r das Ziel einer intuitiven grafischen Benutzungsschnittstelle ist die vern nftige Verwendung von Feedbackelementen 117 TEIL 3 E Releasebeschreibungen A Knee 14 Beschreibung des ersten Release 14 1 Einleitung Kai Gutberlet Das Ziel des ersten Release ist es einen einfachen Diagrammtypen zu erstellen der stati sche Java Klassenstrukturen dreidimensional darstellt Der neue Diagrammtyp soll dabei die im Folgenden beschriebene Syntax haben Klassen sollen als Wiirfel dargestellt werden Die Zugeh rigkeit von Klassen zu ihren Paketen soll durch die Farbe der zugeh rigen W rfel eindeutig erkennbar sein Alle Klassenw rfel eines Pakets sollen die gleiche Farbe besitzen Des Wei
92. 2 2 2 2 m nn 239 20 3 5 DasDatenmodell 240 20 3 6 Anlegen eigener graphischer Objekte e 240 20 4 East een 240 5 Fazit KAPITEL 21 Reflexion ber das Vorgehensmodell und die PG Organisation EE Be re Aa ee oe 242 21 1 orgshensmsdell a we we Se ee ee eae EO we AS 242 21 2 Allgemeine Organisation der Projektgruppe 0 243 KAPITEL 22 AUSDICK ppe pee eb E ed eR eee bee eee RR EE de RS 245 22 1 Mamentaner Stand gt lt o 22 4 4s ra Soe ee Sok 245 Inhaltsverzeichnis 22 2 Erweiterungsm glichkeiten 245 22 3 E TC lt p Pee wa eh 246 6 Anhang KAPITEL A Code Konventionen 2 2 2 2 n a 250 A1 Namenskonventionem 2 2 44054 62402 a ee rs 250 A 1 1 PAIS he de eh Bo o Brei et A 250 A 1 2 Klassen und Interfaces e 250 A1 3 Methoden lt c ccs 6 64 4 8 y ann SRE EL HA ewe eee 250 AtA Variablen c sra 24 Aue RAS Ge A ae E 250 A15 EEN 250 A 2 Aufbau der Java Dateien 251 A 2 1 DerAnfangskommentar 251 A 2 2 Die Paketdefinition 251 A 2 3 Die lmportanweisungen 251 A 2 4 Klassen und Interfacedeklarationen 252 A 3 Leerzeilen und Leerzeichen 22 2 2 CC ee o e 253 A31 leerzeilen occ 0a REAR A a d A 253 AS 2 Leerzeichen mn a a RE Dee Ban 254 A4 ASEDIO EEN a ee ERE we a 254 A 4 1 Codebl cke noo l a l 254 A42 Zeilenumbr che gt a s saapas rrena en em 255 AAS Bepe so a eg A A 255 A5 Dokumenlaliah 2 6640 25 2a baw ee ee eee ann
93. 2 2 222mm nme 19 2 Die Kernkomponenten des Frameworks 2 2 2 2 2m nme 19 3 Die wichtigsten Komponenten des Frameworks im berblick 19 4 Ablauf beim ffnen einer efx Datei 19 5 Beispielhafter Ablauf beim Initialisieren des PluginControllers 19 6 Die Hilfskomponenten des Frameworks 19 7 bersicht der grafischen Primitive 20 1 Neues Projekt erstellen ABBILDUNGSVERZEICHNIS XV 20 2 Basisplugin festlegen 237 22 1 Zweidimensionale Darstellung von Klassenstrukturen mitOmondo 247 22 2 Dreidimensionale Darstellung von Klassenstrukturen mit EFFECTS 248 ABBILDUNGSVERZEICHNIS TEIL 1 AN Einf hrung in die Projektgruppe EFFECTS ee Kar re Einleitung Alexander Fronk Jens Schr der Visualisierung und grafische Methoden sind in der Softwaretechnik weit verbreitet In den meisten F llen werden dabei zweidimensionale Grafiken eingesetzt wie es im Ingenieurswe sen seit langer Zeit blich ist Der gro e Vorteil von zweidimensionalen Zeichnungen ist dass sie alleine mit Papier und Bleistift erstellt werden k nnen Die Dreidimensionalit t bietet eine Reihe von Vorteilen insbesondere wenn man die Re duktion auf Papier und Bleistift als alleinige Werkzeuge aufgibt e Transparenz von Objekten die das Innere von Objekte visuelle zugreifbar macht e Tiefeneindruck der im Zweidimensionalen nicht existiert e Anordnung im Raum e Bewegung von Objekten wie etwa die Rotation von
94. 3D nicht dem JavaBean Standard entsprechen Es wurde eine eige ne JavaBean konforme Klasse zur Speicherung von Tripeln angelegt 17 4 Reflexion ber die Tasks Speicherung des Datenmodells in einer efx Datei Beschreibung Dieser Task befasst sich mit der eigentlichen Serialisierung in die efx Datei Das Format der Datei ist XML geplante Zeit 6 Stunden reale Zeit 6 Stunden Laden des Datenmodells aus einer efx Datei Beschreibung Die Szene soll anhand der Objekte und deren Positionsinformationen in der efx Datei wiederhergestellt werden k nnen geplante Zeit 8 Stunden reale Zeit 6 Stunden Neuanlegen von Elementen sowohl durch graphisches Einf gen als auch mit Hilfe eines Dialogs Einf gen durch den Wizard den Eclipse bereitstellt und Synchronisation Beschreibung Das eingef gte Element musste in das Datenmodell aufgenommen und von dort in die Szene bertragen werden geplante Zeit 4 Stunden reale Zeit Dieser Task wurde an dieser Stelle nicht bearbeitet Wie sich herausstell te deckte der Task Codesynchronisation s 17 4 2 diesen Fall bereits ab Einf gen von Elementen an die aktuelle Kameraposition Beschreibung Es sollte m glich sein Elemente vor der Kameraposition in die Szene zu legen geplante Zeit 6 Stunden reale Zeit 6 Stunden Autolayout Konzeptionierung der Anordnung Beschreibung Beim Generieren eines Diagramms aus dem Quellcode mu te eine An ordnung der Elemente entworfen
95. 5 2 4 enee 2 ee Ee e een 5 2 5 Exkursion und Fachgespr ch 0 2 0 ee ee eee ee 5 UE SEENEN AR A 5 2 7 Nergehensm dell sia 5 4 5 a ka EEN sa y 7 KAPITEL 3 bersicht Uber den Abschlussbericht 8 2 Seminarphase KAPITEL 4 Modellierung mit UM 10 4 1 VEmlelling 25 5 ses aha di e E 10 4 2 WIGAN coe A EE ee Rad 10 4 3 Das dynamische UML Modell 0 0 00 2 11 4 3 1 Aktivitatsdiagramm 12 4 3 2 Sequenzdiagaamm 0 2 20 eee eee eee es 12 4 3 3 Kollaborationsdiagramm gt gt lt s s sor es sean ena s poua 13 4 3 4 Zustandsdiagramm 14 4 4 Zusammenlassung cs e saa e604 e EN E EE ne 16 iv Inhaltsverzeichnis KAPITEL 5 Constraint Multiset Grammars 17 5 1 EMG eos e a ui E ee A E G 17 5 2 IMAGINE EE 17 5 2 1 Abgrenzung EBNFund CMG cc ss Es re nn 17 5 2 2 Formale Definition der CMG 18 52 3 Beispiel EE E mo o EE eh E ee 19 5 2 4 Bedingungen s s Bor Be 20 5 3 IROMPIERITAS oi ee ne a e 22 5 3 1 Inkrementelles Parsen 2 2 2 aa 22 5 4 Zusammenfassung a 23 KAPITEL 6 Graphgrammatiken e 24 6 1 TSI es ea ee a e ee ee ee eg 24 6 2 Einf hrung zu Grammatiken 24 6 2 1 Grammatiken f r Zeichenketten e 24 6 2 2 Graphgrammatiken 25 6 2 3 Das Einbettungsproblem bei Graphgrammatiken 26 6 3 Beschreibungsans tze e 27 6 3 1 Mengentheoretischer Ansa
96. Andernfalls erfolgt die Oberaktivit t Datei Speichern graue Box die wiederum die Aktivit ten Dateiname einge ben und Datei berschreiben beinhaltet Der Benutzer wird aufgefordert einen Dateinamen einzugeben Falls dieser Name bereits vorhanden ist kann er die Datei unter einem anderen Namen speichern oder die bereits vorhandene Datei vom Editor berschreiben lassen W h rend die Datei gespeichert wird sichert ein Controller parallel dazu die Editoreigenschaften wie z B die Ansichteigenschaften und das Programm wird beendet 4 3 2 Sequenzdiagramm In der Analyse und Entwurfsphase siehe Abb 4 1 kommen die Interaktionsdiagrammtypen Sequenz und Kollaborationsdiagramme zum Einsatz Ein Sequenzdiagramm modelliert dabei den konkreten Ablauf eines Anwendungsszenarios unter Einbeziehung der beteiligten Objek te Durch die Betonung auf den zeitlichen Ablauf wird der Nachrichtenaustausch der Objekte leicht ersichtlich Den Objekten werden Lebenslinien zugeordnet und der zeitliche Verlauf der Nachrichten wird entlang dieser Lebenslinie modelliert Die einzelnen Nachrichten werden als waagerechte Pfeile zwischen den Lebenslinien gezeichnet Auf ihnen wird die Nachricht notiert Die Antwort auf eine Nachricht wird als gestrichelter Pfeil mit offener Pfeilspitze dar gestellt Die Zeit in der ein Objekt aktiv ist wird im Sequenzdiagramm durch ein schmales Rechteck auch Aktivierungsbalken genannt entlang der Lebenslinie dargeste
97. Bn d 9109 S 999 01S 9p 19 2 Die Hilfskomponenten efx File editor IFile Editor User oi 1 load Ty 1 open 1 1 1 1 PluginInitializer 1 1 init 11 xmiParser 1 1 EffectsXMLParser EffectsXMLParser 1 1 1 1 2 DiagramConfig 1 1 1 2 init ie SS 2 gt gt pluginController 1 1 1 2 1 PluginController PluginController 1 1 1 3 setSessionProj Sep 1 1 1 4 setEditor Ab hier diagrammspezifisch H T 1 Abbildung 19 4 Ablauf beim ffnen einer efx Datei setScene die Scene neu gesetzt Dieser Aufruf erfolgt nach jedem Neuzeichnen der Scene und f hrt dazu dass sich die Anzeige im Editorfenster gem des neuen Inhalts aktualisiert Der weitere Ablauf h ngt ab hier nur noch von Benutzereingaben ab Das Reagieren auf Benutzereingaben muss nat rlich diagrammspezifisch erfolgen Hierzu kann man einen Zu standsautomaten verwenden 19 2 Die Hilfskomponenten Christian Mocek Michael Pflug Daniel Unger Die Hilfskomponenten stellen h ufig gebrauchte Funktionen bereit sowie Funktionen die den Umgang mit Eclipse internen Klassen erleichtern Sie werden in Abbildung 19 6 dargestellt Folgende Komponenten k nnen hierbei unterschieden werden e Das Paket fsm enth lt alle notwendigen Klassen um einen konkreten Zustandsauto maten zu erstellen der dann in einem Plug In Fragment
98. Cone Trees Heutzutage werden in den Ingenieurswissenschaften oft dreidimensionale CAD Systeme eingesetzt wohingegen bei der Visualisierung gro er Softwaresysteme die dritte Dimension nur selten genutzt wird Im Gegensatz zu den Produkten die im klassischen Ingenieursbereich konstruiert werden ist Software abstrakt da sie keine physikalische Manifestation hat Es ist daher eine Herausforderung geeignete dreidimensionale visuelle Konzepte zu finden In einer Reihe von Arbeiten wurde am Lehrstuhl f r Software Technologie ein System zur dreidimensionalen Visualisierung von statischen Relationen zwischen Java Klassen ent wickelt In dem System wurden verschiedene Visualisierungstechniken wie Cone Trees oder Information Cubes in Verbindung mit Federmodelle f r eine graphbasierte Visualisierungs metapher eingesetzt siehe Abb 1 1 Das bisher am Lehrstuhl f r Software Technologie entwickelte System bietet ausschlie lich eine Visualisierung der Softwarestruktur an eine Manipulation der visualisierten Struktur ist hingegen nicht m glich Daher ist es w nschenswert ein neues System zu konstruieren das zus tzlich die graphische Manipulation der dreidimensionalen Visualisierung unterst tzt d h wir ben tigen einen graphischen Editor f r dreidimensionale Visualisierungen Da bei dieser Manipulation immer auch die visualisierte Software in unserem Fall Java Programme ge ndert wird wird der Editor in die Java Entwicklungsumgebung Eclipse ein
99. Die Beschreibung der grafischen Elemente ist schachtelbar und somit hierarchisch strukturiert So verweist der Knotentyp ActorUser auf eine Subgrafik Stickman der die Parameter H he 30 und Breite 20 mitgegeben werden Die Subgrafik Stickman wie in Abbildung 7 3 gezeigt wird wiederum aus den Subgra fiken Kreis und Linie zusammengesetzt Auch hier erkennt man wieder eine Angabe von von Bedingungen die erf llt werden m ssen In diesem Fall wird gepr ft dass ein Strichm nn chen immer im positiven Koordinatenbereich gezeichnet wird und seine H he gr er als seine Breite ist Der zweite grundlegende Bestandteil einer Deklaration ist somit ein Block von Bedingun gen den sogenannten constraints Diese stellen bestimmte Rahmenbedingungen sicher die f r eine Grafik oder Teilgrafik immer erf llt sein m ssen Auf diesem Weg kann die Syntax 7 Der deklarative Ansatz graph type UseCase 20 25 vertex type Ac graphics S vertex type Ac Diagram torUser String name hape Stickman ExtendX torOther String name ExtendY 30 20 graphics Shape Rectangle ExtendX 30 ExtendY 50 vertex type UseCase String title graphics Shape Oval ExtendX 30 ExtendY 70 edge type Relation graphics Style Solid edge type Include graphics Style Dashed Head Triangle Label lt lt include gt gt Relationen nur von Actor zu UseCase predicate Relat
100. Eclipse Extension Point genannt definiert werden Diese Aufgabe sollte von diesem Task bernommen werden Die geplante Zeit betrug vier Stunden Auch die ben tigte Zeit betrug vier Stunden Nach der Trennung der Kernfunktionalit t von den Erweiterungen fiel es recht leicht die ent sprechenden Schnittstellen zu definieren Format f r XML festlegen Beschreibung geplante Zeit reale Zeit Eine weitere Anforderung dieses Release war es eine Konfigurations datei im XML Format zur Verf gung zu stellen Damit soll es m glich sein bestimmte Klassen beispielsweise f r verschiedene Darstellun gen der Diagrammelemente auszutauschen Eine Definition der Datei bzw des entsprechenden Schemas musste also gefunden werden Es wurde eine Zeit von f nf Stunden eingeplant F r die tats chliche Durchf hrung wurden nur zwei Stunden ben tigt Die Struktur der Datei ergab sich im Laufe der Arbeiten an den obigen konzeptionellen Tasks fast selbstst ndig so dass an dieser Stelle ledig lich die Ergebnisse zusammengefasst werden mussten und der Zeitauf wand somit gering gehalten werden konnte 15 4 2 Domain Hotspots Implementierung der konzeptionellen Ergebnisse Beschreibung Dieser Task sollte wie auch die Tasks Diagramm Hotspot und Regel Hotspot erledigt werden sobald die Ergebnisse der Tasks zu den kon zeptionellen User Stories vorliegen Diese Ergebnisse sollten dann je weils in entsprechenden User Sto
101. Element void KonkretesAggregat Konkreterlterator erzeugelterator Konkreterlterator H 1 L return new Korkrterteratrthi Abbildung 10 9 Iteratorstruktur fiir interne oder externe Iteratoren zu entscheiden Der Namensgebung intern oder extern wird dadurch gepr gt wer die Kontrolle tiber die Traversierung hat Wenn der Client die Kontrol le hat spricht man von einem externen Iterator d h die Steuerung ist extern zum Iterator Wenn dagegen der Iterator selbst die Kontrolle beh lt spricht man von einem internen Itera tor Beim Verwenden eines externen Iterators muss der Klient das jeweils aktuelle Element des Aggregates explizit anfordern und den Schritt zur n chsten Position explizit verlangen Bei internen Itertoren dagegen berreicht der Client dem Iterator eine Operation die an jedem Element auszuf hren ist und l sst ihn machen der Iterator ist in diesem Fall sehr selbst ndig Auf weitere bekannten Variation dieses Entwurfsmusters wollen wir nicht eingehen sondern nur auf das Buch der Gang of Four Gamma u a 2001 verweisen Konsequenzen Die Traversierung eines Aggregates mit Iteratoren macht es unn tig Traversierungsmethoden in der Schnittstelle von Aggregate vorzusehen Dadurch wird die Komplexit t der Aggre gatschnittstelle vereinfacht Da jeder Iterator die Information ber seine aktuelle Position in seinen Zustandsdaten beh lt kann mehr als ein Iterator auf e
102. Extensions zur Eclipse Plattform hinzugef gt werden Dies k nnten zum Beispiel Men erweiterungen und PerspectiveExtensions sein um die N We 20 Vorgehensweise zum Erstellen eines neuen Diagrammtyps EFFECTS Perspektive zu erweitern F r n here Informationen wird an dieser Stelle auf die Eclipse interne Hilfe verwiesen 20 3 Implementierung wichtiger Klassen In diesem Abschnitt wird n her auf das Zusammenspiel der einzelnen Klassen eingegangen und die wichtigen Schritte erl utert die durchgef hrt werden m ssen um ein neues Diagramm lauff hig zu machen 20 3 1 Der neue Eclipse Wizard Paket de 1s10 effects core plugin wizards Wie oben erw hnt ist es f r jedes Diagramm notwendig einen eigenen Wizard zu implemen tieren Hierzu m ssen mindestens zwei Klassen angelegt werden Zum ersten der eigentliche Wizard welcher von der Klasse Effect sNewDiagramWizard erbt und folgende Aufgaben erf llen muss e Erzeugen und Registrieren der einzelnen Wizard Seiten e Festlegen des Diagramm Namens e Festlegen der SerializationData die Beschreiben wie das Diagramm persistent gespeichert werden kann Die zweite anzulegende Klasse erbt von der Klasse Ef fect sNewDiagramWizardPage Mit Hilfe dieser Klasse wird das Layout des Wizards spezifiziert Die einzelnen Seiten m ssen von der Klasse Ef fect sNewDiagramWizardPage abgelei tet werden und stellen das Aussehen der Seiten und Erfassen der Eingabedaten bereit Diese D
103. Fazit Nach Durchf hrung aller Akzeptanztests wurde das zweite Release trotz kleiner M ngel von den Kunden sowie der Gesch ftsleitung abgenommen Die wichtigste Anforderung das Plu gin strukturell zu einem Framework umzubauen wurde erfolgreich erf llt Kleinere M ngel beziehen sich auf das Deployment des Plugins unter Windows auf die Fehleranzeige in der graphischen Benutzungsschnittstelle und auf die Projektion von Schatten Bei dem Deploy ment wurde nicht ber cksichtigt dass f r OpenGL und DirectX jeweils unterschiedliche Bi bliotheken verwendet werden Der Mangel der Fehleranzeige ist es dass nicht alle Fehler korrekt in der graphischen Benutzungsschnittstelle angezeigt werden Des Weiteren konnte aus Zeitgr nden der Task zur Projektion von Schatten nicht bearbeitet werden Da dieser Task jedoch mit der niedrigsten Priorit t eingestuft war f llt dieser Mangel gegen ber den beiden anderen nicht so sehr ins Gewicht Eine berarbeitung der fehlerhaften Tasks soll parallel zur Entwicklung des dritten Releases stattfinden ee KAPITEL 16 Beschreibung des dritten Release 16 1 Einleitung Daniel Unger Semih Seving Ziel dieses Releases war es einen neuen Diagrammtyp zu erstellen Als Grundlage hierf r diente das 3D Sequenzdiagramm von Gil und Kent 1998 Es handelt sich dabei um eine Kombination aus Sequenz und Kollaborationsdiagramm in dreidimensionaler Darstellung Ein Sequenzdiagramm stellt den konkreten Ablauf eines An
104. Federmodelle werden die Knoten des Graphen als Verbindungspunkte angesehen zwischen denen Federn gespannt sind Diese Federn haben als Attribute eine Ruhel nge und eine Federkonstante und k nnen unter Einwirkung von Zug und Druckkr f ten gedehnt bzw gestaucht werden Mit Hilfe dieser Federn kann man einen Graph z B so modellieren dass durch Kanten verbundene Knoten sich nicht allzu weit voneinander entfer nen oder dass die Knoten untereinander bestimmte Abst nde wahren Nach der Modellierung wird das entstandene mechanische System in einen energetisch optimalen Zustand gebracht Es wird also berechnet wie sich die Knoten aufgrund der Federkr fte verteilen 12 2 3 Das Fokus und Kontextproblem Das Fokus und Kontextproblem besteht darin eine M glichkeit zu finden dem Betrachter sowohl Detailinformationen als auch einen m glichst umfassenden Gesamt berblick ber das darzustellende System zu bieten Ein Konzept zur L sung dieses Problems stellen Fish Eye Views FEV nach Furnas 1981 dar Es gibt zwei unterschiedliche Arten von FEVs Verzerrungs FEVs und Filter FEVs Die Verzerrungs FEVs simulieren ein Fischaugenobjek tiv Sie stellen das Zentrum des Blickfeldes den Fokus stark vergr ert und die Umgebung stark verkleinert dar Dadurch soll erreicht werden dass mehr Kontextinformationen eines ge rade fokussierten Objektes dargestellt werden k nnen als ohne Verwendung des FEVs Filter FEVs hingegen blenden selektiv einige O
105. Foundation 2003 Fragmente sind in eigenen Unterverzeichnissen im Plugin Verzeichnis untergebracht und besitzen eine eigene Manifest Datei Namens fragment xml Das Frag ment selbst bildet aber kein eigenes Plugin und implementiert somit nicht eine eigene Plugin Klasse 8 6 1 Internationalisierung mit Hilfe von Fragmenten Zum Schluss wollen wir noch kurz auf die Internationalisierung von Plugins eingehen um den Nutzen von Fragmenten zu verdeutlichen Wir beschr nken uns in dem Beispiel auf das Ersetzen von Textkonstanten obwohl es auch durchaus L nderunterschiede in der Anordnung von GUI Elementen usw haben kann siehe hierzu Kehn 2002 Im Wesentlichen sind f r uns zwei F lle m glich Textkonstanten im Programm Hier bietet Eclipse eine Funktion Externalize Strings an mit dessen Hilfe alle verwendeten Stringkonstanten gesucht und angezeigt werden Es wird dann eine Properties Datei generiert und die entsprechenden nderungen am Sourcecode automatisch durchgef hrt So gen gt es die Properties Datei zu bersetzen Textkonstanten in Manifest Dateien Bei den Manifest Dateien muss man diese Properties Datei selbstst ndig anlegen Die Dateien plugin properties etc k nnen dann bersetzt werden Die Verkn pfung zwischen der Properties Datei und dem entsprechenden Eintrag in der Manifest Datei entsteht indem man in der Manifest Datei aus den Stringkonstanten die Leerzeichen entfernt werden und diesen ein Zeichen vorangestellt
106. Funktion ist jedoch nur beispielhaft Funktionen sind frei definierbar und stellen wiederum zusammengefasste Bedingungen dar die zur mehrfachen Verwendung nicht immer neu de finiert werden m ssen Ihre Struktur ist also vergleichbar mit der der Grafiken die sich aus Teilgrafiken zusammensetzen Sind die Bedingungen alle erf llt so wird das Zeichnen der Subgrafiken angesto en Innerhalb dieser wird dann analog vorgegangen So wird hier das Zeichnen der Linie aufgerufen Als Parameter werden in diesem Fall der Start und der End punkt der Linie sowie ein Linientyp mitgegeben Beim Zeichnen der Linie wird zum Beispiel gepr ft ob der Start und der Endpunkt tats chlich zwei verschiedene Punkte sind und das Zeichnen der Linie m glich ist Das Zeichnen einer Grafik geschieht also im Allgemeinen wie folgt 1 Pr fen ob alle Bedingungen erf llt sind 2 Im Erfolgsfall Rekursives Zeichnen der Subgrafiken Bei diesem Vorgehen erfolgt das Zeichnen einzelner Teilgrafiken wie zum Beispiel ei nes Akteurs relativ freiz gig Das Strichm nnchen k nnte zun chst an beliebiger Position gezeichnet werden Erst durch die Pr fung der einzelnen Bedingungen wird das Zeichnen verifiziert und anschlie end ausgef hrt So k nnte zum Beispiel ein Akteur innerhalb einer Anwendungsfallblase gezeichnet werden Erst die bisher nicht vorgestellte Bedingung dass die Zeichenposition nicht bereits durch ein anderes Objekt belegt sein darf verhindert dass das Stric
107. Grammatik n tig und k nnen in der Implementierung frei belegt werden Bei Produktionen spricht man meist von linken und rechten Seiten Die linke Seite enth lt die Ausgangssituation vor dem Anwenden die rechte Seite entsprechend das Ergebnis der Produktion Produktionen k nnen nacheinander in beliebiger Reihenfolge und beliebig oft auf einen Graphen angewendet werden solange im Graph Nichtterminalzeichen vorhanden sind die der linken Seite einer Produktion entsprechen Begonnen wird dabei immer mit dem Axiom Das Axiom ist eine spezielle Produktion bei der aus dem leeren Graph der initiale Startgraph generiert wird Der leere Graph ist dabei analog zum leeren Wort der Grammatiken f r Zeichenketten definiert Durch Anwenden der Produktionen entstehen dann die Graphen die diese Grammatik er zeugen kann Die Menge der erzeugbaren Graphen ist die Sprache der Grammatik Analog zu Grammatiken f r Zeichenketten werden die Graphen als Worte der Sprache bezeichnet Ein willk rliches Beispiel f r eine solche Produktion ist in Abbildung 6 1 zu sehen Die linke Seite enth lt zwei Knoten die ber eine gerichtete Kante verbunden sind Auf der rechten Seite sind diese beiden Knoten noch immer vorhanden Die Kante zwischen ihnen ist durch zwei neue Knoten und vier gerichtete Kanten ersetzt worden Die Richtung der neuen Kanten entspricht der Richtung der vorher vorhandenen Kante Der Quellknoten im Ausgangsgraph ist auch im neuen Graph der Quellknoten
108. However parties who have received copies or rights from you under this License will not have their licenses terminated so long as such parties remain in full compliance You are not required to accept this License since you have not signed it However nothing else grants you permission to modify or distribute the Program or its derivative works These actions are prohibited by law if you do not accept this License Therefore by modifying or distributing the Program or any work based on the Program you indicate your acceptance of this License to do so and all its terms and conditions for copying distributing or modifying the Program or works based on it Each time you redistribute the Program or any work based on the Program the reci pient automatically receives a license from the original licensor to copy distribute or modify the Program subject to these terms and conditions You may not impose any further restrictions on the recipients exercise of the rights granted herein You are not responsible for enforcing compliance by third parties to this License If as a consequence of a court judgment or allegation of patent infringement or for any other reason not limited to patent issues conditions are imposed on you whether by court order agreement or otherwise that contradict the conditions of this License they do not excuse you from the conditions of this License If you cannot distribute so as to satisfy simultane
109. Internationalized Eclipse Plug In Au gust 2002 URL http www eclipse org articles Article TVT how2TestIl8n html Zuletzt gesichtet 19 08 2004 K hne 2002 K HNE Thomas Skript Programmiermethodik TU Darmstadt 2002 Leisering 1999 LEISERING Horst Neues grosses W rterbuch Fremdw rterbuch Com pact M nchen 1999 Link 2002 LINK Johannes Unit Tests mit Java dpunkt Verlag 2002 Lippert u a 2002 LIPPERT Martin ROOCK Stefan WOLF Henning Software entwi ckeln mit XP dpunkt Verlag 2002 Marriott 1994 MARRIOTT Kim Constraint multiset grammars In IEEE Symposium on Visual Languages 1994 Rechenberg 1999 RECHENBERG Peter Formale Sprachen und Automaten In RECHEN BERG Peter Hrsg POMBERGER G Hrsg Informatik Handbuch Carl Hanser Verlag M nchen 1999 S 89 110 Rechenberg und Pomberger 2002 RECHENBERG Peter Hrsg POMBERGER Gustav Hrsg Informatikhandbuch Hanser 2002 Reichenberger und Steinmetz 1999 REICHENBERGER Klaus STEINMETZ Ralf Vi sualisierungen und ihre Rolle in Multimedia Anwendungen In Informatik Spektrum 22 1999 S 88 98 Rekers und Sch rr 1997 REKERS Jan SCH RR Andy Defining and Parsing Visual Languages with Layered Graph Grammars In Journal of Visual Languages and Computing 8 1997 Nr 1 S 27 55 Rekimoto und Green 1993 REKIMOTO Jun GREEN Mark The Information Cube Using Transparency in 3D Information Visualization Dep of C
110. Ladezeit der Plattform und ein verbessertes Ressourcenmanagement gew hr leistet Zus tzlich hat der Entwickler ber die Plugin Registry API die M glichkeit Infor mationen ber die installierten Plugins zu erhalten Bolour 2003 Ein wesentlicher schwa cher Punkt in der Entwicklung von Plugins f r Eclipse liegt jedoch darin dass Plugins nicht w hrend des laufenden Betriebs installiert werden k nnen Dies liegt an der oben genannten Tatsache dass die Manifest Dateien nur beim Start von Eclipse gelesen werden Somit ist der Entwickler gezwungen eine zweite Workbench zu starten in der das Plugin getestet werden kann Allerdings bietet das PDE auch hier gute M glichkeiten so dass trotz dieser Tatsache eine effiziente Plugin Entwicklung gew hrleistet werden kann Allerdings stellt sich nun die Frage inwiefern Plugins miteinander kommunizieren und aufeinander aufbauen k nnen Wegen der offenen Architektur von Eclipse muss es solch eine M glichkeit geben sonst muss jeder Plugin Entwickler from the scratch also von Grund auf immer alles neu entwickeln Hierzu stellen wir im n chsten Kapitel das Kernkonzept der Plugin Architektur vor die so genannten Extension Points und gehen auf die m glichen Rela tionen zwischen Plugins und deren Aufbau Beschreibung und Kommunikation untereinander n her ein 8 2 Das Plugin Modell im Detail Der zentrale Punkt des Plugin Konzeptes ist die M glichkeit anderen Plugins mitteilen zu k nnen
111. M Richard JOHNSON Ralph VLIESSI DES John Entwurfsmuster Elemente wiederverwendbarer objektorientierter Software Addison Wesley 2001 Ghezzi u a 1999 GHEZZI Carlo JAZAYERI Mhedi MANDRIOLI Dino Fundamentals of Software Engineering Prentice Hall 1999 Gil und Kent 1998 GIL Y KENT S Three Dimensional Software Modelling In Proceedings of ICSE98 TEEE Press September 1998 URL http www cs ukc ac uk pubs 1998 790 Zuletzt gesichtet 19 08 2004 Gille 1999 GILLE Marc Diagramm Editoren Spektrum 1999 Golin 1991 GOLIN Eric J Parsing visual languages with picture layout grammars In Journal of Visual Languages and Computing 2 1991 Nr 4 S 371 394 Helm und Marriott 1991 HELM Richard MARRIOTT Kim A Declarative Specification and Semantics for Visual Languages In Journal of Visual Languages and Computing Ausgabe 2 1991 S 311 331 Helm u a 1991 HELM Richard MARRIOTT Kim ODERSKY Martin Building visual languages parsers In Conference Proceedings on Human Factors in Computing Systems CHP 91 1991 S 105 112 SC 272 LITERATURVERZEICHNIS Herrmann 2001 HERRMANN Thomas Kompendium zur Grundvorlesung Informatik und Gesellschaft Universit t Dortmund Fachbereich Informatik Lehrstuhl f r Informatik und Gesellschaft 2001 Hitz und Kappel 2002 HITZ Martin KAPPEL Gem UML work 2 Auflage dpunkt Verlag 2002 Kehn 2002 KEHN Dan How to test your
112. N e 66 10 2 2 EntwurfsmusterinMVC 2 oo ee ee 67 10 3 SMUKT a pad sm E RI a CR RAS 70 10 31 Kompesiliin s s e epos Boe Boe oe ER Da 70 10 38 27 FE eeler ah CPR eae ee bob he ee ee ec 72 10 3 3 Adapter ss 542 246 44504 be ey a eed e eta eBay aes 74 10 3 4 Vergleich zwischen Fassade und Adapter 0 75 10 3 5 Zusammenfassung lt s u 0 00 a en 76 10 4 Yerhalterismuster o 280 A A A 76 10 4 1 Besucher lt o s s e eoe e aeea a EEN eee ew aes 77 E MAME aora a AR RR AI R R 78 10 4 3 Vergleich zwischen Besucher und Iterator 81 10 4 4 Zusammenfassung 2222 nn nn 81 10 5 Sehlusstolgerungen o os p ss bee ewe A ee Bann ees 81 KAPITEL 11 Java D ee bbe eee ed CREEL ASH A RE wR ea 83 11 1 EMI coa a A a a a es EN A 83 11 2 Grundlagen 2 2 283 eae ee a ee eA A ee RE we E 83 11 2 1 Mathematische Grundlagen 2 22 2 2 7 nn 83 11 2 2 Farben Beleuchtung und Renderingtechniken 2 2 22 85 11 3 piano na EN sois ae en Ehe nahe 92 11 3 1 Allgemeines zu Java 92 11 3 2 Die Klassenbibliothek gt 2 2 oe ck sn nun 262 nn 92 11 4 DerScenegraph 2 2 2 22mm o nen 93 11 4 1 Grundlagen des Szenegraphen 2 22 2 2 2 mm nn 93 11 4 2 Basiselemente des Szenegraphen 93 11 4 3 Konstruktion eines Teilgraphen 2 22 2 o nn 95 11 4 4 Ein kompletter Szenegraph 222 2 2 2 nn nn 95 11 5 Realisierung einiger Problemstellungen 96 11 5 1 Verschieben eines Gegenstands 2 2 2 o nn n
113. Nach Beschreibung der Kernkomponenten werden dann die Hilfskomponenten n her erl utert Abschlie end wird das Gesamtsystem und sein Ablauf beschrieben 19 1 Die Kernkomponenten Michel Kersjes Christian Mocek Als Kernkomponenten werden die Teile des EFFECTS Plugins bezeichnet welche n tig sind die Basisfunktionalit t anzubieten Ohne diese ist es nicht m glich das Framework als solches zu nutzen eigene Diagrammtypen zu entwickeln und in Eclipse darzustellen Die Kernkomponenten sind in Abbildung 19 2 dargestellt und befinden sich in folgenden Paketen e Das Paket datamodel realisiert durch seine Klassen die Verwaltung eines eigenen Da tenmodells welches das Eclipse interne Datenmodell erweitert e Die Aufgabe des Pakets datamodel properties ist die Visualisierung des eigenen Datenmodells in dem Eclipse Property View e Der Editor wird im gleichnamigen Paket editor realisiert und dient der Darstellung und Manipulation des Diagramms durch den Anwender 19 1 Die Kernkomponenten lt lt import gt gt lt lt import gt gt Abbildung 19 1 Die Kernkomponenten im Uberblick lt lt import gt 3 y N 05 224 19 Die Systemarchitektur Das Diagramm persistent zu speichern und zu laden erm glichen die Klassen des Pa kets io Die Schnittstelle zwischen Eclipse und dem Framework wird im Paket plugin be schrieben Zus tzlich wird hier die EFFECTS Perspektive erzeugt Das Paket plugin wi
114. New Programs If you develop anew program and you want it to be of the greatest possible use to the public the best way to achieve this is to make it free software which everyone can redistribute and change under these terms To do so attach the following notices to the program It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty and each file should have at least the copyright line and a pointer to where the full notice is found one line to give the program s name and a brief idea of what it does Copyright C yyyy name of author This program is free software you can redistribute it and or modify it under the terms of the GNU General Public License as published by the Free Software Foundation either version 2 of the License or at your option any later version This program is distributed in the hope that it will be useful but WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public Li cense for more details You should have received a copy of the GNU General Public License along with this program if not write to the Free Software Foundation Inc 59 Temple Place Suite 330 Boston MA 02111 1307 USA Also add information on how to contact you by electronic and paper mail If the program is interactive make it output a short notice like this when it starts in an interactive
115. Release 16 4 Reflexion ber die Tasks Daniel Unger Michael Pflug Im Nachfolgenden wird ber die Tasks des dritten Release reflektiert Hierzu werden die ein zelnen Tasks kurz vorgestellt und insbesondere auf die signifikanten Probleme und die Diffe renzen in den Zeitabsch tzungen eingegangen Die gegebenen User Stories wurden zun chst wie folgt als elf explizite Anforderungen auf geschl sselt und in einzelne Tasks unterteilt F r jeden der Tasks wurde anschlie end die Zeit abgesch tzt die zur Umsetzung als n tig empfunden wurde 16 4 1 Popup Men Men punkt EFFECTS im Package Explorer Beschreibung geplante Zeit reale Zeit Das Ziel dieses Tasks war es einen eigenen EFFECTS Men punkt im Kontextmen des Package Explorers zu schaffen Die Funktionalit t des entsprechenden EFFECTS Plugins soll nun immer unter diesem Men punkt zu finden sein Eine Stunde wurde veranschlagt da ein Men punkt ja schon vorhanden war aus den Releases davor und nur eine neue Hierarchie eingef hrt werden sollte Der Task wurde wie zeitlich geplant erf llt 16 4 2 Schattenwurf Lichtquellen sollen Schatten projizieren Beschreibung geplante Zeit reale Zeit Dieser Task wurde schon aus den vorherigen Releases hierher verlagert Aus Zeitgr nden und aufgrund der niedrigen Priorit t wurde dieser Task allerdings wieder nicht bearbeitet Jedoch sind Lichtquellen und Schat ten f r den in diesem Release entwickelten
116. Sequenzdiagrammtyp auch nicht sonderlich relevant Sie w rden keine wichtigen zus tzlichen In formationen zur Anordnung der Objekte im Raum liefern wie es beim statischen Modell der Fall w re Zehn Stunden wurden f r die Bearbeitung gesch tzt Null Stunden da der Task aus zeitlichen Gr nden nicht erledigt wurde 16 4 3 Integration von Java 3D in Eclipse Editor anlegen 16 4 Reflexion ber die Tasks Beschreibung geplante Zeit reale Zeit AWT in SWT Beschreibung geplante Zeit reale Zeit Aufgabe sollte sein ein Fenster bzw Editor in Eclipse anzulegen so dass die Anzeige der generierten Szene direkt in diesem Editor in Eclipse statt in einem externen Fenster m glich w re Gesch tzte Zeit vier Stunden Im Wesentlichen war dieser Task kein Problem da das Wissen einen Edi tor zu erstellen bei der Erstellung des Viewprototypen gewonnen wur de Einziges Problem war das Abspeichern und Schlie en des Editors da vergessen wurde dem Editor den IEditorInput bekannt zu ma chen Dieser stellt den Inhalt des Editors dar und wird f r das Speichern und Schlie en ben tigt Diese Aufgabe konnte somit sogar in nur drei Stunden erledigt werden Dieser Task sollte nun die Kombination von AWT Komponenten mit den Eclipse eigenen SWT Komponenten erm glichen Damit ist die 3D Darstellung direkt in Eclipse m glich und es muss nicht unbedingt mehr ein externes Fenster ge ffnet werden Diese M glichkeit ist a
117. Sie enth lt an den ersten drei Stellen einen Perspektivtransforma tionsanteil und an der letzten Stelle einen Skalierungsfaktor Nur durch diese letzte Zeile wird sp ter eine perspektivische Transformation ausgedr ckt Dabei entsteht meist ein nicht homo genisierter Punkt x y z w mit w 1 Um ihn zu homogenisieren ist jedes Element durch w zu teilen Translation Unter einer Translation versteht man das Verschieben eines Punktes Objektes um Ax Ay Az Diese Transformation l t sich durch eine Vektoraddition in Form von a b c Aa Ab Ac a Aa b Ab c Ac ausdr cken oder durch die homogene Translationsmatrix Sie ist 1 0 0 Ax 1010 Ay a lo 01 000 41 Skalierung und Spiegelung Eine Skalierung bedeutet eine Streckung oder Stauchung der Koordinaten eines Punktes Ob jektes bzgl des Koordinatenursprungs Briiderlein und Meier 2000 S 41 Die zugeh rige homogene Matrix ist coos Somo ooo ooo 11 2 Grundlagen F Fy F sind dabei die Skalierungsfaktoren mit denen in die jeweilige Richtung gestreckt wird Durch negative Skalierungsfaktoren dr ckt man eine Spiegelung aus z B ist F Fy 1 eine Spiegelung am Ursprung Rotation Beim Rotieren im dreidimensionalen muss man sich f r eine Achse entscheiden um die man das Objekt rotieren will So ist eine Rotation um die z Achse mit dem Winkel O durch cos sin 0 0 sin cos 00 0 0 1 0 0 0 01 A gegeben Analog dazu existieren auch
118. Technik eignet und was ihre Vor und Nachteile sind Kapitel 12 3 schlie lich stellt den J3Browser vor und beschreibt wie die zuvor aufgef hrten Techniken verwendet werden um eine Visualisierung zu erstellen 12 1 1 Grundlagen In diesem Unterkapitel soll der Begriff Visualisierung genauer betrachtet werden Dazu wird zun chst anhand einer Definition kurz erl utert was im Zusammenhang dieser Arbeit unter Visualisierung zu verstehen ist Anschlie end wird der Einsatzbereich festgelegt f r den die hier vorgestellten Darstellungstechniken verwendet werden Begriffskl rung Der Begriff Visualisierung wird in UseNet Gruppe 2004 folgenderma en definiert Visualization is the use of computer generated media based on data in the service of human insight learning Die Aufgabe einer Visualisierung besteht also darin Daten so darzustellen dass sie f r einen Betrachter gut und schnell zu erfassen sind Unter dem Begriff visualisieren ist daher zu n chst nichts anderes zu verstehen als Daten f r das Auge gef llig zu gestalten Leisering 1999 Ein wichtiges Qualit tsmerkmal einer Visualisierung ist demzufolge ihre Expressivit t also ihre Ausdrucksst rke und bersichtlichkeit Reichenberger und Steinmetz 1999 12 2 berblick ber die vorhandenen Visualisierungstechniken Einsatzbereiche f r Visualisierungen Es existieren verschiedene Anwendungsbereiche f r Visualisierungen z B die wissenschaft
119. Tracing Strahlenverfolgung Beim Ray Tracing werden im Gegensatz zu den direkten Schattierungsverfahren von oben die Pixel des Bildraumes erst in den Objektraum transformiert wo die Beleuchtungsph nome ne geometrisch und teilweise auch physikalisch genau berechnet werden k nnen Ausgehend vom Bildraster in der Projektionsebene erzeugt man durch jeden Pixel des Rasters einen Strahl vom Augenpunkt Ursprung des Kamerakoordinatensystems wie in Abb 11 3 dargestellt F r jeden Strahl wird der erste Schnittpunkt mit einem Objekt berechnet Durch Bestimmen der Normalenrichtung der Oberfl che des Lichteinfallswinkels und des Winkels des Betrachters gegen ber der Normalen kann dann zusammen mit den Materialeigenschaften die diffuse und spekul re Lichtreflexion nach dem Phong Modell berechnet werden Rekursives Ray Tracing Die eigentlichen Vorteile des Ray Tracing kommen erst zum Vorschein wenn man es rekursiv ausf hrt Dabei werden mehrfach spekul r spekul re Lichtreflexionen durch ideale Spiege lung angen hert Jeder Strahl der auf ein Objekt auftrifft wird also durch Reflexion weiterge leitet und kann noch auf mehrere andere Objekte treffen Dabei schw cht der Strahl allerdings mit der Zeit ab Jedoch unterst tzt Java3D dies nicht 11 2 Grundlagen amp Lichtquelle Abbildung 11 3 RayTracing Briiderlein und Meier 2000 Textur Mapping und Texturen Beim Textur Mapping wird ein 2D Rasterbild auf ein 3D Modell appliz
120. UNIVERSIT T DORTMUND Fachbereich Informatik Lehrstuhl f r Software Technologie MEMO Nr 150 Abschlussbericht der PG 444 Eclipse Framework for Editing Complex Three Dimensional Software Visualizations Ernst Erich Doberkat Alexander Fronk Jens Schr der Hrsg Armin Bruckhoff Stephan Eisermann Kai Gutberlet Mich l Kersjes Andr Kupetz Christian Mocek Michael N the Michael Pflug Ren Sch nlein Semih Seving Daniel Unger Sven Wenzel Jan Wessling August 2004 Internes Memorandum des Lehrstuhls f r Software Technologie Prof Dr Ernst Erich Doberkat Fachbereich Informatik Universit t Dortmund Baroper Stra e 301 D 44227 Dortmund ISSN 0933 7725 A Abschlussbericht der PG444 Eclipse Framework for Editing Complex Three Dimensional Software Visualizations Lehrstuhl f r Software Technologie Universit t Dortmund Dieses Dokument wurde verfasst von Armin Bruckhoff Stephan Eisermann Kai Gutberlet Michel Kersjes Andr amp Kupetz Christian Mocek Michael N the Michael Pflug Ren Sch nlein Semih Seving Daniel Unger Sven Wenzel Jan Wessling Projektleitung Alexander Fronk Jens Schr der Inhaltsverzeichnis Abbildungsverzeichnis xiii 1 Einf hrung in die Projektgruppe EFFECTS KAPITEL 1 1 oe ced atk es Seen A aie a Bae A 2 KAPITEL 2 Geplantes Vorgehen 00 0000 00005 4 21 Eipgapaeumon os ae oe RRA DER ER en 4 2 2 Anforderungsanalyse 2 2 CC mon 4 2 3 QS ct A ERA ARA
121. UseNet 2004 URL news comp graphics visualization Webnox Corporation 2003 WEBNOX CORPORATION Hyper Dictionary 2003 URL http www hyperdictionary com computer Zuletzt gesichtet 19 08 2004 Westphal 2000 WESTPHAL Frank Homepage 2000 URL http www frankwestphal de Zuletzt gesichtet 19 08 2004 Yacoub und Ammar 1998 YACOUB Sherif M AMMAR Hany H Finite state machine patterns Computer Science and Electrical Engineering Department West Virginia Univer sity Morgantown West Virginia WV26506 1998 Technical report N 13 Interne Berichte des Lehrstuhls Software Technologie ISSN 0933 7725 125 126 127 128 129 130 131 132 133 134 135 136 137 Ernst Erich Doberkat A Remark on A Edalat s Paper Semi Pullbacks and Bisimulations in Categories of Markov Processes Juli 2002 Alexander Fronk Towards the algebraic analysis of hyperlink structures August 2002 Markus Alvermann Martin Ernst Tamara Flatt Urs Helmig Thorsten Langer Ingo R pling Clemens Sch fer Nikolai Schreier Olga Shtern Ursula Wellen Dirk Peters Volker Gruhn Project Group Chairware Final Report August 2002 Timo Albert Zahir Amiri Dino Hasanbegovic Narcisse Kemogne Kamdem Christian Kotthoff Dennis M ller Matthias Niggemeier Andre Pavlenko Stefan Pinschke Alireza Salemi Bastian Schlich Alexander Schmitz Volker Gruhn Lothar Sch pe U
122. Verarbeitung s mtlicher Eingaben zust ndig ist 10 2 1 MVC Interaktion Das Model Objekt stellt den internen Zustand des Systems dar Dieser Zustand wird von einem View Objekt pr sentiert Es k nnen jedoch auch mehrere verschiedene View Objekte den Zu stand wiedergeben wie Abbildung 1 zeigt Daher muss das Model Objekt die View Objekte benachrichtigen sobald sich an seinem Zustand etwas ndert so dass die View Objekte sich die aktuellen Daten holen und pr sentieren Die dritte Komponente das Controller Objekt nimmt Eingaben entgegen Diese Eingaben 10 2 Ein einf hrendes Beispiel View Objekte Fenster Fenster Fenster lla lb Ic x 160 30 10 iz 80 10 10 Model Objekt Abbildung 10 1 Beziehung zwischen Model und View Objekten Gamma u a 2001 ndern den Zustand des Model Objekts und somit indirekt auch die Darstellung Die Un terscheidung zwischen View und Controller f llt mitunter recht schwer da Views ebenfalls Eingaben erlauben k nnen siehe z B Abbildung 10 1 linker View 10 2 2 Entwurfsmuster in MVC Im MVC Konzept kann man mehrere Entwurfsmuster wieder finden Von diesen wollen wir nun zwei exemplarisch vorstellen Die Beziehung zwischen der Model Komponente und den verschiedenen Sichten von MVC ist ein Beispiel f r das Beobachtermuster Dies ist genau deshalb der Fall da es eine Registrierungs und Benachrichtigungsinteraktion zwischen die sen beiden Komponenten gibt Sollte sich etwa
123. a eh 256 A 5 1 Aufbau der Implementierungskommentare o 257 A 5 2 Aufbau der Dokumentationskommentare 2m nn 258 Ap Deklarationen 259 A 6 1 Deklarationen pro Zeile 259 A 6 2 Anordnung der Deklarationen 259 A 6 3 Initialisierungen o o se eadar o 260 A 6 4 Klassen und Interfacedeklarationen 260 A7 SIAlEMENIE 224 c anean a RS a A re 260 A 7 1 Einfache Statements o ua e pa EEN a SR EEN e 261 A 7 2 for und while Statements 2 2 2 2 Hmm nn 261 A 7 3 if if else if else if else Statements 261 A7 4 tryscatch Bl cke o nr Re Ren ae 262 A 7 5 switch Statements e 262 KAPITEL B The GNU General Public License 263 xii Inhaltsverzeichnis Literaturverzeichnis Abbildungsverzeichnis 1 1 dreidimensionale Darstellung einer Klassenstruktur 3 4 1 UML Modelle nach W von Gudenberg 11 4 2 Aktivit tsdiagramm zur Abspeicherung einer Datei 13 4 3 Sequenzdiagramm f r das Selektieren eines Objekts 14 4 4 Kollaborationsdiagramm f r das Verschieben eines Objekts 15 4 5 Zustandsdiagramm f r das Editieren von Objekteigenschaften 15 5 1 Beispiel f r ein Zustands bergangsdiagramm 20 6 1 Beispiel f r eine Produktion 26 6 2 Process Flow DiagraM 29 6 3 Graphgrammatik f r Process Flow DiagraMS 30 7 1 UML Anwendungsfalldiagramm 34 7 2 Deklaration des Anwendungsfalld
124. adurch w ren folgende Funktionen m glich e Umstrukturierung auf graphischer Ebene Die Zugeh rigkeit eines Elementes zu einem Paket soll anhand ihrer r umlichen Lage in der Szene bestimmt werden k nnen d h es soll z B m glich sein einen Klassenw rfel in ein Paketw rfel zuziehen und dadurch auf Codeebene eine Javaklasse in ein Paket zu verschieben Weiterhin sollten Cone Trees graphisch editierbar sein insbesondere soll man eine Klasse in einen Cone Tree ein h ngen k nnen in dem man sie an die Unterseite eines Cones verschiebt Um die r um liche N he von Klassenw rfeln und Cone Trees sowie die Lage eines Klassenw rfels in einem Paketw rfel erkennen zu k nnen ist eine Kollisionsabfrage erforderlich 246 22 Ausblick e Syntaxpr fung auf graphischer Ebene Es ist im ClassPackageDiagram m glich Ele mente so anzuordnen dass aus dem Diagramm kein korrekter Javacode erzeugt wer den kann Solche F lle treten z B auf wenn man zwei Klassen ineinander verschiebt oder eine Klasse so anordnet dass sie teilweise innerhalb und teilweise au erhalb ei nes Paketw rfels liegt Eine berpr fung der Kollision zwischen den zu verschiebenen W rfeln kann diese F lle in der Szene erkennen und dem Benutzer melden Ein weiteres nicht implementiertes Feature betrifft Beziehungen ber Paketgrenzen hinweg Im Falle von Vererbungsbeziehungen war es vorgesehen sogenannte Proxies zu benutzen siehe 17 2 f r alle ander
125. age f r die Berechnungen der logischen Informationen das erweiterte Eclip se Datenmodell Die von diesen drei Klassen berechneten Informationen werden in dem er weiterten Datenmodell gespeichert Die Berechnung der 3D Darstellung erfolgt durch die Klasse Scene Diese nutzt die im erweiterten Datenmodell abgespeicherten logischen Informationen als Grundlage f r die Er zeugung der 3D Szene Aus dieser Berechnung resultieren Java3D Komponenten welche die Visualisierung der logischen Informationen wiederspiegeln Die Darstellung gr n dargestellt unterteilt sich in Java3D und Swingkomponenten Die Klasse FrameOpener enth lt die Swingkomponente JFrame welche die Java3D Komponente Canvas3D aufnimmt Alle anderen Java3D Komponenten werden an das Canvas3D gebunden Die Klasse Universe enth lt die von der Klasse Scene berechnete 3D Darstellung und die Navigation Zus tzlich schafft die Klasse noch einen Rahmen f r die Darstellung wie z B einen Boden und hnliches 133 14 5 Vorstellung der im plementierten Architektur lt lt ajeluejsup gt nz org ES lt lt ayenuesu gt gt ua euge uereg nz ya6 N uebeyge uaea AN A A N N wen lt lt oyequeysup gt y meng x x S N er Weissen pam l l meyn l I l AAA lt lt asn gt gt lt lt asn gt gt lt lt asn gt gt lt lt asn gt gt nz ai lt lt asn gt gt mus
126. agramm in das Framework migriert werden Beim genaueren Ausarbeiten des vierten Release insbesondere der User Stories stellte sich dann aber heraus dass die Implementierung des neuen Diagramms und Einbindung der Inter aktion zu umfangreich f r einen Releasezyklus von f nf Wochen sind Dar berhinaus muss die Verschiebung der Interaktion in das Framework schon direkt bei der Konzeptionierung im vierten Release beachtet werden Daher kann sie direkt im Framework umgesetzt werden Das f nfte Release der urspr nglichen Planung kann somit entfallen und die dadurch eingesparte Zeit f r das vierte Release aufgewandt werden Daraus ergab sich folgende Neuaufteilung der ausstehenden Aufgaben von Release 4 In Release 4a wird zun chst das Klassenpaketdiagramm und grundlegende Interaktion Aus w hlen Verschieben von Objekten etc implementiert In Release 4b kommen dann Code synchronisation und Syntaxpr fung hinzu Dadurch wird es m glich sowohl das Diagramm in Quellcode zu berf hren als auch Quellcode zu analysieren und in einem Diagramm dar zustellen Release 4a und 4b haben beide am jeweiligen Ende eine Abgabe mit Abnahmetest der Kundengruppen Diese Neuaufteilung bewirkt allerdings einen Bruch mit dem XP Prozess Es gibt nun kei ne klare Trennung der beiden Releases Das Ende von Release 4a markiert lediglich einen Zwischenstand der Gesamtentwicklung des ganzen Release 4 die erst am Ende von Release 4b abgeschlossen ist 17 2 User St
127. ahl von Klassen angese hen werden Dies steht im Gegensatz zu dem ein Klassenadapter der durch das Adapter muster realisiert wird Der Begriff ein Klassenadapter soll hierbei bedeuten dass wir uns nur mit der Adaptierung einer Klasse besch ftigen und nicht eine einheitliche Schnittstelle f r 78 10 Entwurfsmuster ein Subsystem realisieren wollen Dieser Vergleichsansatz verbirgt jedoch dass das Adapter muster zwei bereits existierende Schnittstellen kompatibel zueinander macht wobei hingegen das Fassadenmuster eine neue Schnittstelle f r das Subsystem einf hrt 10 3 5 Zusammenfassung Wir haben an dieser Stelle nat rlich nur einen kleinen Teil der Strukturmuster vorgestellt Beim Studium eines Buches ber Entwurfsmuster wie das Werk der Gang of Four Gamma u a 2001 oder auch das Buch von Buschman Buschmann u a 1996 wird man feststel len dass es nat rlich noch einige Strukturmuster mehr gibt Unsere Auswahl soll deshalb nur einen repr sentativen berblick dar ber geben mit welchen Konzepten diese Muster arbeiten um ihre Ziele zu erreichen Unser Anliegen war vielmehr aufzuzeigen dass sich die Muster obwohl sie auf einer kleinen Menge von Entwurfsmechanismen beruhen stark in ihrer Ziel setzung unterscheiden Auch wenn die Muster in ihrer Struktur sehr hnlich sind verfolgen sie doch immer unterschiedlich geartete Ziele Wichtig ist halt nur dass man bei der Benutzung von Strukturmustern beso
128. ann aus den beiden Zeichen vom Typ circle und vom Typ text entstehen Die Produktion kann aber nur angewendet werden wenn die Zeichen die Bedingungen erf llen die durch die where Klausel aufgef hrt werden In diesem Beispiel m ssen die Mittelpunkte der beiden Zeichen circle c und text t gleich sein der Durchmesser des Zeichens c muss gr er oder gleich der H he des Zeiches t sein gleiches gilt f r die Breite des Zeichens t Sind diese drei Bedingungen erf llt k nnen c und t zu einem Zeichen s vom Typ state zusammengefasst werden Der Mittelpunkt von s entspricht dann dem Mittelpunkt von c der Radius von s entspricht dem Radius von c und der Name von s dem von t Die Belegung des Attributes kind mit normal zeigt an dass es sich um einen einfachen Zustand handelt also nicht um einen Endzustand 5 2 4 Bedingungen Bedingungen nehmen bei der Spezifikation f r eine visuelle Sprache eine Schl sselstellung ein Sie erm glichen es Informationen ber das r umliche Layout und Beziehungen zwischen einzelnen Elementen direkt in der Grammatik zu codieren Des Weiteren werden sie genutzt um zu berpr fen ob eine Produktion angewendet werden kann oder nicht Sie definieren die Attribute der Zeichen auf der rechten Seite der Produktion durch Ausdr cke der Attribute von Zeichen auf der linken Seite siehe auch Kapitel 2 3 Negative Bedingungen sind einer der Hauptunterschiede zwischen CMGs und anderen For malismen mit denen visuell
129. apitel 12 2 verschiedene einzelne Visualisierungstechniken vorgestellt wurden wird nun anhand des J3Browsers beschrieben wie diese Techniken in einem konkreten Visua lisierungssystem eingesetzt werden k nnen Im ersten Abschnitt wird kurz erl utert welche Techniken zur Darstellung einzelner Beziehungen benutzt werden Im darauffolgenden Ab schnitt geht es darum wie diese Techniken kombiniert werden um ein Javaprogramm mit verschiedenen Beziehunge zu visualisieren Einsatzgebiet von Einzeltechniken Eine M glichkeit eine Visualisierung eines objektorientierten Programms zu erstellen ist es anhand der Erweiterungsstruktur seiner Klassen darzustellen Da es in Java keine Mehrfacher bung unter Klassen gibt ergibt sich dabei eine baumartige Struktur Im J3Browser k nnen f r ihre Darstellung sowohl Cone Trees Abb 12 3 a als auch in einer Ebene angeordnete B ume Walls Abb 12 3 b benutzt werden Eine weitere M glichkeit ein Javaprogramm zu visualisieren ergibt sich durch die Dar stellung seiner Paketstruktur Dies geschieht im J3Browser mit Hilfe von Information Cubes siehe Abb 12 2 b Gleichzeitige Benutzung mehrer Darstellungstechniken Ein Javaprogramm l sst sich auf mehrere Arten darstellen z B anhand seiner Paket oder Er weiterungsstruktur Diese verschiedenen M glichkeiten zeigen jedoch i d R immer nur ein 12 Dreidimensionale Visualisierungstechniken a als Cone Tree b als Baum in der Ebene
130. as erweiternde Plugin B erweitert die Funktionalit t von Plugin A In Abbildung 8 3 ist dieser Zusammenhang verdeutlicht Plugin A deklariert einen Erweite rungspunkt und ein Interface welches mit dem Erweiterungspunkt verkn pft wird Da Plugin B den Erweiterungspunkt verwendet implementiert B das Interface von A in einer Klasse Die se Klasse erweitert also den Extension Point aus A und A ruft dann die Methoden des Interface in der Klasse aus B auf 8 3 Das Plugin Manifest Einer der wesentlichsten Bestandteile eines Plugins ist die schon erw hnte plugin xm1 Datei im Hauptverzeichnis des Plugins Somit startet die Entwicklung eines Plugins in der Regel 8 4 Erweiterungspunkte mit der Erstellung solch einer XML Datei In dieser Datei werden neben einer allgemeinen Beschreibung des Plugins auch die Relationen deklariert Die Minimaleintr ge der Manifest datei bestehen aus e einem Namen f r das Plugin e einer eindeutigen ID e der Versionsnummer des Plugins Bei der ID ist zu beachten dass diese plattformweit eindeutig sein muss Um dies zu gew hr leisten ist es sinnvoll den kompletten Paketnamen zu verwenden In den n chsten Abschnitten werden wir n her auf die Eintr ge in der Manifest Datei eingehen Der folgende XML Code zeigt wie eine minimale Manifest Datei aussieht Zus tzlich ist in diesem Code vermerkt wie man den ersten Teil der m glichen Relationen die Abh ngigkeit deklariert Hierzu gen gt es d
131. aten m ssen vom eigentlichen Wizard ausgelesen werden k nnen damit dieser die Infor mationen dazu verwenden kann die ben tigten Aktionen durchzuf hren Diese Aktionen sind i d R diagrammspezifisch und bestehen zum Beispiel im Vorbelegen von Werten f r das Dia gramm oder hnliches 20 3 2 Der Controller Paket de 1s10 effects core plugin Der Controller welcher in der fragment xml spezifiziert wurde bildet das Kernst ck des Diagramms Er wird durch den PluginInitializer erzeugt und sorgt unter anderem da f r dass alle Zugriffe auf das Datenmodell gesteuert sowie eigene Ressourcen an das Eclipse interne Datenmodell gebunden werden Diese Bindung ist die Schnittstelle zum eigenen Da tenmodell Der Controller erbt von der Klasse PluginController aus dem Paket plugin und bekommt zur Identifizierung einen eindeutigen Namen zugewiesen Dies geschieht durch berschreiben der Methode get QualifiedName 20 3 Implementierung wichtiger Klassen Des Weiteren muss die Methode updateEditors berschrieben werden um den aktuellen Editor ber nderungen in der Szene zu informieren Hierzu ist es n tig die aktuelle Szene mittels setScene zu ndern Der oben erw hnte PluginInitializer muss in der Methode getInitializerClass des Controllers angegeben werden Hierzu kann man den Befehl Class forName ver wenden 20 3 3 Der Plugin Initializer Paket de 1s10 effects core plugin Die von PluginInitializer erbende Kla
132. auf der vorherigen Seite 15 4 4 Regel Hotspots Implementierung der konzeptionellen Ergebnisse Beschreibung geplante Zeit reale Zeit 15 4 5 Alle User Stories aus Release 1 m ssen erf llt blei ben siehe Abschnitt 15 4 2 auf der vorherigen Seite siehe Abschnitt 15 4 2 auf der vorherigen Seite siehe Abschnitt 15 4 2 auf der vorherigen Seite Tests f r alle Klassen hinzuf gen Beschreibung Um alle Anforderungen an das erste Release zu erf llen m ssen nach tr glich noch alle Tests f r jede existierende Klasse hinzugef gt werden 145 146 15 Beschreibung des zweiten Release geplante Zeit Es wurde grob gesch tzt dass f r 18 Klassen zu denen es noch keine Testklassen gab jeweils ca zwei Stunden ben tigt werden So ergab sich dann eine gesch tzte Zeit von 36 Stunden reale Zeit Die reale Zeit betrug etwa die H lfte der gesch tzten Dauer Dies lag daran dass sich das Programmiererpaar nach einiger Zeit in das Test schreiben eingearbeitet hatte und sich die Bearbeitungszeit pro Test klasse dementsprechend verringerte 15 4 6 Fehler sollen in der GUI angezeigt werden Exception Handling Fehlerdialog erstellen Beschreibung Hier war gefordert einen Fehlerdialog zu erstellen der alle auftretenden Exceptions in einem SWT Dialog anzeigt geplante Zeit Der Aufwand wurde bei diesem Task mit zwei Stunden angegeben reale Zeit In ca eineinhalb Stunden wurde der Task ohne besondere Vorkomm
133. bar definieren Beschreibung Die Toolbar sollte erweiterbar gestaltet werden damit sp ter weitere Buttons leichter angef gt werden k nnen geplante Zeit 3 Stunden wurden geplant reale Zeit Dieser Task wurde aus Zeitg nden nicht bearbeitet 188 17 Beschreibung des vierten Release Interaktion Objekte ausw hlen Beschreibung Objekte sollten ausw hlbar sein Es sollte auch eine mehrfache Auswahl geplante Zeit reale Zeit m glich sein 3 Stunden Ben tigt wurden 6 Stunden da die Umsetzung des Pickings komplexer als zun chst erwartet war Ausgew hlte Objekte graphisch hervorheben Beschreibung geplante Zeit reale Zeit Die Auswahl von Objekten sollte graphisch dargestellt werden 4 Stunden Dieser Task wurde in 2 Stunden abgeschlossen da lediglich die vorhan dene Bounding Box des jeweiligen Elementes gezeichnet werden muss te Objekte verschieben Beschreibung geplante Zeit reale Zeit Objekte l schen Beschreibung geplante Zeit reale Zeit Ausgew hlte Objekte sollten verschiebbar sein 4 Stunden Ben tigt wurden f r diesen Task ber 25 Stunden Es gab zun chst er hebliche Probleme die Translationen mit der Maus durchzuf hren da diese ein zweidimensionales Eingabemedium ist und diese Eingabe auf einen dreidimensionalen Richtungsvektor abgebildet werden muss Auf grund der eigentlich trivialen L sung kann man hier von einem typi schen Fall ausgehen wo mangelnde Erfahrung im
134. ber auch weiterhin vorhanden Diese Umsetzung ist seit der Eclipseversion 3 0M6 m glich Eine Stunde da ein Prototyp bereits vorhanden war und dieser nur als Editor umgesetzt werden musste Eine Stunde Event Listener anlegen Beschreibung geplante Zeit reale Zeit 16 4 4 Tests Ziel war es einen Event Listener f r den Editor zu implementieren da mit der Editor bspw auf Gr en nderungen reagieren kann Geplante Zeit waren zwei Stunden Eine Stunde reale Bearbeitungszeit Der Editor musste nur das Interface ControlListener implementieren um die gew nschten Aufgaben zu erf llen Tests an die Framework Architektur anpassen Beschreibung geplante Zeit Auch in diesem Task waren noch restliche Aufgaben aus dem Vorg nger Release zu erf llen S mtliche Tests mussten noch an die neu geschaffe ne Framework Architektur angepasst werden Acht Stunden wurden f r die Erledigung des Tasks gesch tzt da die Bearbeitung fast alle Testklassen bzw Testmethoden betraf 163 164 16 Beschreibung des dritten Release reale Zeit Die Dauer der Bearbeitung stimmte im Wesentlichen mit der gesch tzten Zeit berein Sie betrug sieben Stunden Leider erwiesen sich einige An passungen im Laufe der Implementierung als nicht mehr m glich Der inzwischen verwendete Milestone 8 von Eclipse erm glicht das Nach laden von Klassen durch Fragmente nicht mehr Dadurch konnten auch einige Tests nicht mehr an die Framewor
135. bjekte aus der Darstellung aus Abh ngig von dem Objekt welches sich im Fokus befindet wird f r alle anderen Objekte der Degree of Interest DOD bestimmt Dies ist ein Wert der die Relevanz eines jeden Objektes angibt Die Aus wahl der in der Darstellung verbleibenden Objekte wird anhand des DOI getroffen Liegt der DOI f r ein Objekt unterhalb eines Schwellenwertes so wird es nicht mehr angezeigt Eine Auswahl weiterer L sungen f r das Fokusproblem ist in Engelen 2000 zu finden 103 104 12 Dreidimensionale Visualisierungstechniken 12 3 J3Browser Nachdem sich die ersten beiden Kapitel mit Grundlagen und Techniken der Visualisierung befasst haben geht es nun darum den J3Browser vorzustellen Die Funktion des J3Browsers besteht in der dreidimensionale Visualisierung des Aufbaus von Java Software Engelen 2000 Seite 47 Im weiteren Verlauf dieses Kapitels wird zun chst auf die zur Darstellung verwendete Notation eingegangen Abschnitt 12 3 1 bevor in Abschnitt 12 3 2 die Techniken zur r umlichen Anordnung der einzelnen Darstellungskomponenten n her betrachtet werden Abschlie end werden in Abschnitt 12 3 3 Methoden zur Verbesserung der Darstellung wie FEVs und Filter sowie dynamische Aspekte der Visualisierung beschrieben 12 3 1 Notation Bevor auf graphische Einzelheiten der Notation eingegangen werden kann muss zun chst gekl rt werden welche Objekte in die Darstellung aufgenommen werden Hierbei muss man z
136. bl ufe nicht sofort erfassbar sind Leider geht die Einfachheit und Klarheit der In teraktionsdiagramme rasch verloren wenn man komplizierte Prozesse mit vielen Schleifen und Fallunterscheidungen hat Zustandsdiagramme beschreiben erlaubte Aufrufreihenfolgen f r die Operationen auf ei nem Objekt und modellieren somit den Lebenszyklus eines Objektes Mit all diesen Diagrammen des dynamischen Modells kann das Verhalten eines Systems gut wiedergeben werden Durch die Kombination der Interaktionsdiagramme kann man die Nachteile eines Diagramms durch die Vorteile des anderen kompensieren Die dynamische Modellierung stellt zusammen mit dem statischen Modell eine wichtige und hilfreiche Rolle bei der Entwicklung von Software dar A KaT S5 Constraint Multiset Grammars Stephan Eisermann 5 1 Einleitung Constaint Multiset Grammars CMG definieren die Syntax von visuellen Sprachen Visuelle Sprachen werden zur Beschreibung und Erkennung von graphischen Eingaben wie beispiels weise Diagrammen eingesetzt In dieser Arbeit wird eine informelle Einf hrung der Syntax zur Beschreibung von textu ellen Sprachen der erweiterten Backus Naur Form EBNF und ihre Abgrenzung gegen ber der CMG gegeben Im Anschlu hieran folgt die formale Definition der Constranint Multi set Grammars Ein Beispiel soll den Einsatz der CMG verdeutlichen Abschlie end werden die Komplexit t verschiedener Klassen von Constraint Multiset Grammars und eine m gliche algor
137. cenegraph In diesem Kapitel wird der Szenegraph erl utert das wesentliche Konzept in Java3D Mit dessen Hilfe wird auch die Realisierung einiger Java3D Konstrukte veranschaulicht Ferner werden in diesem Kapitel zahlreiche englische Fachtermini eingef hrt Der Grund liegt darin dass die Literatur zu Java3D sowohl im Internet als auch in Buchform fast ausschlie lig in englischer Sprache zu finden ist und so der Leser mit den Begriffen bei eigener Recherche schon vertraut ist 11 4 1 Grundlagen des Szenegraphen Ein Szenegraph ist eine hierarchische Datenstruktur in Form eines gerichteten azyklischen Graphen Grob l sst sich sagen der Szenegraph spezifiziert den Inhalt der gerendert wer den soll In ihm werden alle graphischen Objekte zusammen mit den Betrachtereigenschaften gespeichert Java3D rendert den Szenegraph am Bildschirm und sorgt f r eine korrekte per spektivische Darstellung und ist auch f r die Renderingreihenfolge zust ndig 11 4 2 Basiselemente des Szenegraphen Ein Szenegraph besteht aus verschiedenen Elementen die im Folgenden beschrieben werden und deren Zusammenspiel erl utert wird Eine 3 dimensionale virtuelle Welt mit all ihren geometrischen Objekten wird in Java3D als VirtualUniverse bezeichnet Dies stellt die Wurzel eines jeden Szenegraphen dar und sorgt f r eine Kapselung f r den Fall dass mehrere Szenegraphen gleichzeitig vorhanden sind Die Knoten an sich in einem Szenegraphen stellen instanziierte Objekt
138. cheinlicher wird Wie schon bei den Strukturmustern werden wir uns auch an dieser Stelle nur mit den ob jektbasierten Verhaltensmustern befassen 10 4 Verhaltensmuster 10 4 1 Besucher Zweck Eine auf den Elementen einer Objektstruktur auszuf hrende Operation wird als eigenst ndiges Objekt gekapselt So erm glicht das Muster die Einf hrung einer neuen Operation ohne die Klassen der von ihr bearbeiteten Elemente zu ver ndern Motivation Eine Objektstruktur soll um Operationen erweitert werden Dabei m ssten alle Objekte um die entsprechende Operation erweitert werden sofern sie auf allen Objekten ben tigt wird Um zu verhindern dass alle Objekte ge ndert werden m ssen kapselt das Besuchermuster die Operationen jeder Klasse als separates Objekt Dieses Objekt wird den Elementen bei Bedarf bergeben Anwendbarkeit Das Besuchermuster wird verwendet bei Klassen einer Daten oder Objektstruktur die sich nicht oder nur sehr selten ndern die auf ihnen auszuf hrenden Operationen sich hingegen h ufig ndern Ebenso benutzt man das Besuchermuster wenn man eine gro e Anzahl von Operationen hat die auf den Objekten eine Objektstruktur ausgef hrt werden m ssen Die verwandten Operationen k nnen dann aus den Objekten herausgenommen werden und in eigene Objekte gekapselt werden Technische Realisierung Die abstrakte Klasse Besucher definiert die Schnittstelle f r alle konkreten Besucher z B KonkreterBesucher1
139. chlie end wird grob die Funk tionsweise von XP aus der Vogelperspektive dargestellt Die letzen beiden Kapitel des Abschnittes zeigen zum einen die Werte auf auf denen XP beruht Kapitel 9 2 3 und zum anderen die daraus resultierenden Prinzipien nach denen die Anwender von XP handeln sollen Kapitel 9 2 4 9 2 1 Warum XP In diesem Abschnitt werden die Grundprobleme der herk mmlichen Softwareentwicklung dargestellt so dass klar wird warum berhaupt eine neue Methode entwickelt wurde bzw wie XP versucht diese Probleme zu verhindern Ein h ufiges Problem bei der konventionellen Softwareentwicklung ist dass es immer wie der zu Terminverz gerungen kommen kann Diese Verz gerungen werden bei XP in ertr gli chem Rahmen gehalten da zuerst die wichtigsten Funktionen implementiert werden so dass die Funktionen die zum Liefertermin noch fehlen von geringerer Bedeutung f r den Kunden sind Zudem sind kurze Releasezyklen von einigen Monaten gefordert Falls es bei herk mmlichen Projekten zu solchen Terminverz gerungen kommt die durch starke Probleme in der Entwicklung bedingt sind k nnte dies zum Projektabbruch f hren oh ne dass es ein einziges Release des Programms gegeben hat XP versucht jetzt diese Probleme zu minimieren die bei der Entwicklung auftreten k nnen So wird vom Kunden gefordert aus seinem Anforderungskatalog die Systemmerkmale auszuw hlen die ihm am wichtigsten sind Diese Funktionen werden als ersten im
140. chreibt das Problem festzustellen ob eine bestimmte Familie von Zeichen in einer bestimmten Sprache enthalten ist oder nicht Voraussetzung ist dass das Membership Problem entscheidbar ist um einen entsprechenden Algorithmus zu entwickeln Die Entscheidbarkeit ist f r eine beliebige CMGs nicht geben Marriott 1994 Das Problem l sst sich nur f r kreisfreie CMGs entscheiden Eine CMG wird genau dann kreisfrei genannt wenn keine Produktion existiert die ein nicht terminales Zeichen in ein anderes nicht terminales Zeichen umformen kann Allerdings ist das Membership Problem f r kreisfreie CMGs immer noch NP hart 5 3 1 Inkrementelles Parsen Um das Membership Problem f r kreisfreie CMGs zu l sen hat Marriot in Marriott 1994 einen effizienten inkrementellen bottom up Parsing Algorithmus entwickelt Diesem fehlte al lerdings noch die M glichkeit mit negativen Bedingungen zu arbeiten In Chok und Marriott 1995 wurde dieser Algorithmus entsprechend weiterentwickelt Hier soll kurz die Arbeitsweise eines einfachen Algorithmus der nur auf Grammatiken mit positiven Bedingungen arbeitet vorgestellt werden Der Algorithmus startet mit einer Menge von terminalen Zeichen Auf dieser Menge werden wiederholt Produktionen ausgef hrt was dazu f hrt dass terminale Zeichen zu nicht terminalen Zeichen zusammengefasst werden und Parseb ume entstehen Ein Parsebaum ist ein Baum von Zeichen in dem jedes Blatt eine assoziierte Produktion hat Die
141. chrieben werden die diese Container ver walten geplante Zeit 2 Stunden reale Zeit 1 Stunde Verweis auf IJavaElement im Container intern nur noch als String speichern und Zugriffsmethoden bereitstellen Beschreibung Dieser Task war ebenfalls notwendig um das Speichern zu erm glichen Das IJavaElement sollte nicht als Objekt gespeichert werden sondern nur ein Verweis darauf geplante Zeit 3 Stunden reale Zeit 3 Stunden Verwaltung einer internen Liste aller benutzten Container im PluginController Beschreibung Diese Aufgabe sollte das Speichern erleichtern Es war mit Hilfe dieser Liste besonders einfach alle Container zu speichern da nicht erst das gesamte Datenmodell traversiert werden musste geplante Zeit 1 Stunde reale Zeit 1 Stunde Flag im Container ob es sich um einen sogenannten MainContainer handelt d h ob er direkt an einer Resource h ngt oder nicht Beschreibung Es gibt zu jedem Element einen MainContainer und potentiell eine Liste mit weiteren Containern z B f r Assoziationen an einer Klasse geplante Zeit 1 Stunde reale Zeit 1 Stunde Container dem JavaBean Standard anpassen Beschreibung Die Container mussten zur Serialisierung in eine efx Datei dem Ja vaBean Standard angepasst werden Das bedeutet dass fiir alle Attribute Get und Set Methoden eingef gt werden mussten geplante Zeit 3 Stunden reale Zeit Ben tigt wurden 4 Stunden Es stellte sich heraus dass die Klassen von Java
142. chtung Licht und Schatten gezeichnet wird w hrend es bei Textur Mapping darum geht eine Textur auf ein 3D Objekt zu legen 11 Java3D Blau 0 0 1 Zyan 0 1 1 Gr n 9 1 0 Rot 1 0 0 Gelb 1 1 0 Abbildung 11 1 Der RBG W rfel Br derlein und Meier 2000 Das RGB Farbmodell Java3D st tzt sich auf das RGB Modell Hierbei wird jede Lichtquelle in drei Farbanteile zerlegt Es entstehen die drei Lichtquellen der Farben Rot Gr n und Blau Sie k nnen als unabh ngige Koordinaten lt R G B gt eines dreidimensionalen Raumes wie in Abb 11 1 dargestellt werden Die Werte der Koordinaten zwischen 0 und 1 entsprechen der relativen Lichtst rke der einzelnen Quellen R G B zwischen 0 und 100 Der Koordinatenursprung entspricht dabei schwarz der Punkt lt 1 1 1 gt entspricht wei Weitere Farbmodelle sind das CMY Modell und das HSV Modell allerdings werden beide in Java3D nicht benutzt und daher hier auch nicht erkl rt Beleuchtungsmodell Das in Java3D benutzte Beleuchtungsmodell ist das Beleutungsmodell nach Phong Es unter scheidet zwischen diffuser spekulativer und ambienter Reflexion Dabei wird die Leuchtdichte I das Ma f r die Helligkeit einer beleuchteten Oberfl che bzw einer Lichtquelle an einem Punkt berechnet Diffuse Reflexion ergibt sich wenn das Licht nicht direkt von der Lichtquelle reflektiert wird sondern erst etwas unter die Oberfl che eindringt und von dort in alle Richtungen re flek
143. dS au4ngesd93 19 suayBun 91s1eg Jep 11818 j9ujjao janausb mum lepowiageuezs younp ya neu uonebiaen epowuajegasd 93 A Jeugis u f ns dS Pundanu N jopuam an joyue s Hyundue s usuyosogiyundyue g 16naz o 5 Yays adsapusm an Spo nuyoa Irepoygeu bunuyasu ue esoe ue 1ss90 s UB 1ssa0 s usjneHas jeuy ususqyas jeuy usqueJas jeuy Abbildung 14 2 Klassendiagramm der geplanten Architektur 14 Beschreibung des ersten Release 126 usqueyas jeuy pun u u qg s jeuy u jnepos jeuy sne 1ya sog Bunuysauag nz sojuj ajoy UE iepowuaeg sd 3 I pouueipOescha Hayolds Uz ue 1589018 US ueuyoeieg pundye s JOURIS 2 lepowagulBunuyseswn JOMP3 uabunuydeieg Hepowaeujbunuyoeiwij J0NP3 mas pungenuey pungenueyy Abbildung 14 3 Sequenzdiagramm des Berechnungsvorgangs 14 4 Reflexion ber die Tasks ffnen eines Fensters f r 3D View Beschreibung Da die Anzeige von Java3D Komponenten innerhalb von Eclipse nicht m glich ist wurde ein eigenes Fenster zur Anzeige dieser Komponenten ben tigt geplante Zeit Zwei Stunden wurden eingeplant reale Zeit Die geplante Zeit konnte ein
144. danach eine Produktion C ausgef hrt die alle unabh ngig voneinander verwendet werden k nnen In einem weiteren Suchvorgang w rde dann erst Produktion B dann A und danach C ausgef hrt Das Zwischenergebnis w re das gleiche wie in der ersten Suche Der Algorithmus w rde die f r dieses Zwischenergebnis schon vorher erfolglos durchgef hrte Tiefensuche noch einmal berechnen Der zweiphasige Algorithmus den Rekers und Sch rr vorschlagen verfolgt daher den An satz der Breitensuche 1 Von einem bestehenden Graph werden zun chst in einer Bottom Up Phase alle Pro duktionen bestimmt die umgekehrt ausgef hrt werden k nnen Durch umgekehrtes Anwenden einer Produktion entsteht eine sogenannte Produktionsinstanz PI Die im ersten Durchgang entstandenen P s werden nun ihrerseits auch wieder berpr ft Das ganze wiederholt sich solange bis die einzelnen PIs so weit reduziert worden sind dass keine Produktionen mehr r ckw rts angewendet werden k nnen Bei der Suche auftretende doppelte P s werden erkannt und nur einmal abgespeichert Am Ende der Bottom Up Phase ist dann eine Sammlung aller Produktionsinstanzen entstanden die mit PPI bezeichnet wird Zwischen den einzelnen Produktionsinstanzen bestehen noch Abh ngigkeiten So kann es sein dass PI nur dann erzeugt werden kann wenn zuvor PI erzeugt wurde oder dass sich Pi und PI gegenseitig ausschlie en Diese Abh n gigkeiten werden w hrend dieser ersten Phase des Algorithmus be
145. dass immer zwei Programmierer zusammen an einem Rechner arbeiten sollen Der Entwickler der Maus und Tastatur bedient macht sich Gedanken ber die zurzeit zu implementierende Funktion Der andere berlegt ob der Ansatz zur Implementierung ber haupt funktioniert macht sich Gedanken ber Testf lle die scheitern k nnten und ob es M g lichkeiten zum Refactoring gibt Dabei tauschen die beiden Entwickler regelm ig in kurzen Zeitabst nden die Rollen Auf diese Weise werden der Code der Entwurf und die Tests ei ner kontinuierlichen Begutachtung unterzogen Die Programmiererpaare sind hierbei nicht unver nderlich Diese Wechsel unterst tzen wie das gesamte Programmieren in Paaren den Grundwert der Kommunikation im Team Die dynamische Paarbildung hat den positiven Ne beneffekt dass sich das Wissen ber alle Aspekte des Systems auf alle Entwickler verbreitet 9 3 8 Gemeinsame Verantwortlichkeit Der Code gilt unter XP nicht als Privateigentum desjenigen der ihn programmiert hat sondern ist Gemeineigentum Bei der herk mmlichen Art Software zu entwickeln wurde der Code meist nur von dem ge ndert der ihn auch selber geschrieben hat Wollte man dennoch diesen Code selber ndern geschah dieses meistens nur mit Absprache desjenigen der den Code erstellt hat Folglich fand Refactoring auch nur nach solcher Absprache statt Unter XP wird von jedem Programmierer erwartet dass er wenn er eine Verbesserungsm glichkeit sieht diese sofo
146. den Anmerkung F r diese Funktion fehlte die Kollisionsabgfrage Wenn beim Verschieben einer Klasse der Klassenw rfel teilweise innerhalb und teil weise au erhalb eines Paketw rfels abgelegt wird soll die Syntaxpr fung dieses als Fehler anzeigen bzw die Verschiebung zur ckgesetzt werden Testergebnis nicht bestanden Anmerkung F r diese Funktion fehlte die Kollisionsabgfrage 17 6 Kundenakzeptanztest F r ein ausgew hltes Objekt soll entweder ein Schatten auf den Boden oder Lote in alle drei Richtungen projiziert werden Testergebnis bestanden Anmerkung Es wurden Lote projiziert Beim manuellen Einf gen einer Erbungsbeziehung soll der Cone Tree automatisch angeordnet werden Testergebnis bestanden Anmerkung Beim Verschieben einer Klasse die sich in einem Cone Tree befindet soll die Klasse vom Cone Tree abgekoppelt werden und mit ihrem Unterbaum an die neue Position verschoben werden Testergebnis bestanden Anmerkung Nach dem graphischen Aufbau eines Cone Trees und dem Bet tigen des Write To Code Buttons soll sich die Erbungsbeziehung im Code der beteiligten Klassen nie derschlagen Testergebnis bestanden Anmerkung Ebenso funktioniert jetzt das Umbenennen einer Klasse im Property View und das Schreiben des neuen Namens in den Code Der Versuch eine zyklische Erbung oder eine Mehrfacherbung in das Diagramm ein zuf gen soll fehlschlagen Testergebnis bestanden Anmerkung Sowoh
147. den Klassen auch r umlich nah beieinander stehen Es gibt eine M glichkeit die Sicht auf einen vorher definierten Startpunkt zur ck zu setzen Testergebnis bestanden Anmerkung Das geforderte Verhalten wird mittels Druck auf die Taste H erzielt 14 6 Kunden Akzeptanztest 139 Es existieren Informationsfenster die Statusinformationen zur 3D Ansicht enthalten Testergebnis bestanden Anmerkung Unter Window Show View Other existiert nun ein neuer View mit Namen EFFECTS Information View In diesem View werden alle interessanten Informationen zur dargestellten 3D Szene aufbereitet 14 6 2 Auto visuelle Tests Die W rfel Objekte Klassen werden bei der Szenengenerierung fest platziert Testergebnis bestanden Anmerkung Durch das mehrmalige Aufrufen der 3D Szenegenerierung konnte vi suell berpr ft werden dass die W rfelobjekte immer an der gleichen Position platziert werden solange sich an dem darzustellenden Projekt nichts ndert Die automatische berpr fung wurde mittels Speicherung der W rfel Positionen in einer XML Datei erreicht Die XML Datei wird dann bei einem erneuten Aufruf der Szenegenerierung mit den neu en internen Daten verglichen Kindklassen stehen immer auf einer graphisch tiefer liegenden Ebene auch ber Pa ketgrenzen hinaus zu ihren Vaterklassen Testergebnis bestanden Anmerkung Um die Korrektheit der dargestellten 3D Szene zu berpr fen wurden die Ebeneninformati
148. der 1 ersetzt werden kann wobei die Bedeutung von wird zu hat und die eines oder Operators Eine Bin rziffer kann also O oder 1 sein Bis hier ist die Definition der Grammatiken gleich Es folgt die formale Definition der CMG die auch auf die Unterschiede eingeht 5 2 2 Formale Definition der CMG Zeichen Grafische Zeichen sind verglichen mit textuellen Zeichen viel komplexer Um alle Informa tionen zu einem grafischen Zeichen aufzunehmen ben tigt man eine Liste von Attributen Dieses wird klar wenn man sich beispielsweise die Beschriftung eines Pfeiles in einem Zu stands bergangsdiagramm anschaut Es gibt Attribute die eher geometrische Informationen darstellen Mittelpunkt H he und Attribute die semantische Informationen darstellen Typ der Beschriftung z B string oder int Entsprechend lassen sich auch die Attribute von Zei chen im allgemeinen grob in zwei Gruppen einteilen n mlich in die Gruppe die geometrische Informationen darstellt und in die Gruppe die semantische Informationen darstellt Zeichen in der CMG k nnen wie in der EBNF terminal oder nicht terminal sein wobei nicht terminale Zeichen durch eine Produktion durch eine Menge von terminalen und nicht terminalen Zei chen ersetzt werden k nnen Marriot definiert ein Zeichen dann wie folgt Marriott 1994 Definition 5 2 1 Ein Zeichen T O besteht aus einem Typen T und einer Folge von Elementen aus einer Liste von Attributen computati
149. der Hashmap der Klasse SQClassContainer unter dem Schl ssel IMethodObject gespeichert Jeder MethodInformationWrapper enth lt ein Methoden objekt als Wurzel unter dem die komplette Aufrufhierachie gespeichert wird Zus tzlich wer den alle verwendeten Objekte aus der Aufrufhierarchie in einer Hashmap gespeichert Die Informationen eines Objekts wie z B seine logische Position werden in der Klasse Real Object abgelegt Der oben erl uterte Sachverhalt wird in Abbildung 16 2 dargestellt Diagramm HotSpot Die in der Anforderung beschriebenen graphischen Diagrammelemen te wurden in den Klassen SQComplexArrow SOComplexCylinder SQComplexQuad SQ LifeLine SQComplexLayer und SQComplexRecursiveArrow implementiert Sie imple mentieren das Interface SOGraphicalObject das diagrammspezifische Hilfsmethoden f r die graphischen Objekte bereitstellt Die Level of Detail Funktionalit t der Klasse SOComplex Arrow wurde in das Interface SQArrowLoDVector ausgelagert Dieses geschah im Hinblick auf eine weitere Verwendung in sp teren Releases 16 5 Vorstellung der implementierten Architektur Container SQClassContainer calledMethodHierarchy Map fi Der Key f r die Hashtable Eintrag ist das IMethod Objekt Der Wert besteht aus dem MethodInformationWrapper f r die Methode MethodinformationWrapper 1 has rootMethod MethodObject tierCount int objectHashMap HashMap rootMethod
150. der Rasterumwandlung die z Werte mitberechnet Beim Abspeichern in den Bildspeicher wird dann jedes Pixel mit dem im Bildspeicher aktuellen Pixel verglichen Der Pixel mit dem niedrigeren z Wert also der Pixel der n her am Betrachter ist wird in den Bildspeicher ber nommen Dieses Verfahren hat gegen ber dem Painter s Algorithmus den Vorteil da der z Wert je Pixel und nicht je Polygon betrachtet wird Somit k nnen auch sich durchdringende Polygone korrekt dargestellt werden Transparenz Grafikbibiliotheken wie OpenGL auf der Java3D aufbaut unterst tzen die Darstellung halb transparenter Objekte Daf r wird jedem Pixel ein Opazit tswert amp zugeordnet der angibt wie transparent ein Objekt dargestellt wird Bei amp 0 ist das Objekt v llig transparent und bei 1 ist es v llig opak Uberlappen sich nun zwei Polygone in der Projektionsebene so wird der Farbwert der Mischfarbe aus den beiden Polygonfarbwerten und den beiden Opazit tswerten berechnet Dabei wird die Farbe nach folgender Formel berechnet Farbe a x Vordergrund farbe 1 0 x Hintergrund farbe So wird z B eine gelbe Glasscheibe vor rotem Hintergrund im berlappungsbereich Oran ge erscheinen Der resultierende z Wert ist der des vorderen Polygons Deshalb m ssen die halbtransparenten Fl chen auch von hinten nach vorne berechnet werden Es ist also eine Sor tierung der halbtransparenten Fl chen wie beim Painter s Algorithmus n tig Ray
151. der Zeitachse einzuzeichnen ist Neue Objekte erscheinen erst auf der Zeitachse wenn sie erzeugt werden Aktivit tsbalken Die Aktivit tsbalken sollen als R hre um die Lebenslinie herum dargestellt werden Ebenen Pro Methodenaufruf ist eine Ebene erforderlich auf der neben dem Methodenauf ruf auch noch der Parameteraufruf mittels eines Pfeils einzuzeichnen ist Die beiden Pfeilarten sollen unterschiedliche Farben besitzen 16 3 Systemmetapher Semih Seving Zur Entwicklung des neuen Diagrammtyps wurde die Framework Architektur des zweiten Release Kapitel 15 5 2 weiterhin benutzt Da das Framework nur um ein Plugin f r den neu en Diagrammtyp erweitert werden sollte konnte die selbe Systemmetapher ebenfalls weiter hin verwendet werden Als Grundlage f r die Vorgehensweise bei der Implementierung wurde damit wie bereits bei den ersten beiden Releases auch das Model View Controller Konzept als Systemmetapher benutzt Dieses Konzept l sst sich in drei Bereiche einteilen Das Modell stellt die Daten einer Anwendung dar kann deren Zustand liefern und Ver nderungen an ih nen vornehmen Der View ist f r die graphische Darstellung der Daten zust ndig und dient somit als visuelle Darstellung des Modells Der Zugriff des Views auf das entsprechende Mo dell wird durch den Controller definiert Im Abschnitt 14 3 wird gezeigt wie diese einzelnen Bereiche in unserem Projekt umgesetzt worden sind 161 162 16 Beschreibung des dritten
152. diagrammspezifische PluginController erzeugt der nach Aufruf von setEditor den weiteren Ablauf je nach Diagrammtyp steuert Dieser ist am Beispiel vom ClassPackageDiagramm aus Release 4 in Abbildung 19 5 dargestellt Der CPDPluginController erzeugt bei seiner Instantiierung eine DataModelFacade die das Datenmodell kapselt und zus tzliche Methoden auf dem Datenmodell bereitstellt Des Weiteren wird der Zustandsautomat des Diagramms instanziiert Sobald der Editor wie schon in Abbildung 19 4 beschrieben die Methode setEditor aufruft wird die diagramms pezifische Darstellung der Scene neu berechnet Dazu ruft der CPDPluginController die eigene Methode updateEditors auf welche dann eine neue Scene erstellt den Startzu stand im Zustandsautomaten speichert und updat eView aufruft Dort wird im Editor mittels 229 19 Die Systemarchitektur 30 2 JOule LOQJUaN ebeg uadold 19 01uogu Bng 1a1onuoguibnid a dn 9 qez1jeuas uo soy eJaueo a dn 91qez1jeuas uo o911geJaueo ebeuypeang Joysusalos J9 puey Bunolg eppueHBunjord P 0 98 A UONISOJJUSJINO UONeBIAENUOSI3 g1S114 JapueHuonebineu aesenueg gesenueo PEIOSNUONISOANEIS u u 9S ueajooq uIp UBa 00q pamo ysyanes uea 00g papsanasojguganes Bued jouequoNezilensin d 4810 NUOQUI NId Ppion pa ueygeleweo PlOA 914XJ3 1915 B91 ueajooq peoj Plon anes ploa asodsip Plon 3s anlunoLPPe Plon szIs uIpunogaslenlun
153. die Position der Maus auf dem selektierten Objekt ist die Aktionsfolge Pop Up Men anzeigen ein und das Men wird sichtbar Beim Loslassen der rechten Maustaste wird dieses Men gel scht und das Objekt ist immer noch selektiert Mit der ESC Taste wird die Markierung des Objektes aufgehoben und der Editor befindet sich im Zustand Bereit W hrend das Men sichtbar ist wird bei jeder Cursorbewegung der Men eintrag markiert Nachdem man einen Men eintrag ausgew hlt hat wird das Objekt dementsprechend ge ndert und der Editor befindet sich erneut im Startzustand Bereit 4 Modellierung mit UML 4 4 Zusammenfassung Die einzelnen Diagramme des dynamischen Modells begleiten die Softwareentwicklung w h rend des Entwicklungsprozesses Durch Aktivit tsdiagramme kann man am Anfang der Soft wareentwicklung schon ein grobes Verst ndnis f r die Abl ufe des zu modellierenden Systems haben In der Analyse und Entwurfsphase verdeutlichen Interaktionsdiagramme das ablauforien tierte Verhalten von Operationen Dabei machen Sequenzdiagramme zeitliche Abl ufe auf ei nem Blick deutlich Jedoch leidet die bersichtlichkeit wenn viele Objekte mit einem hohen Nachrichtenaustausch dargestellt werden Dieser Nachteil kann mit Kollaborationsdiagram men durch die freie Anordnung der Objekte verringert werden um so strukturelle Zusam menh nge zu verdeutlichen Ihr Nachteil gegen ber Sequenzdiagrammen besteht darin dass zeitliche A
154. die Realisierung ben tigt Der eigent liche Plugin Rahmen war nicht so komplex wie erwartet Daf r musste mehr Zeit in den Task Men punkt investiert werden Men punkt Szene generieren f r Package Explorer Beschreibung In diesem Task wurde der eigentliche Men punkt f r das Ausl sen der Szenengenerierung implementiert Hierzu war es n tig den entspre chenden Extension Point von Eclipse zu verwenden 14 4 Reflexion ber die Tasks geplante Zeit Zwei Stunden Es waren im Wesentlichen nur die entsprechenden Exten sion Points zu ermitteln und die Frage zu kl ren wie eingestellt werden kann dass der Men punkt nur auf bestimmte Eintr ge im Package Ex plorer reagiert reale Zeit Vier Stunden Aufgrund der mangelnden Erfahrungen war die Realisie rung des Men punkts umfangreicher als erwartet Datenmodell realisieren Beschreibung Das Datenmodell von Eclipse musste f r unsere Bed rfnisse erweitert werden Alternativ stand die Implementierung eines eigenen Modells zur Wahl geplante Zeit 14 Stunden Es war urspr nglich geplant das Datenmodell komplett selbst zu implementieren d h es h tte auch ein entsprechender Parser f r die Java Dateien geschrieben werden m ssen reale Zeit Zehn Stunden Das Datenmodell von Eclipse war gut dokumentiert und lie sich ber Ressourcen erweitern so dass es nicht n tig war eine eigene Datenstruktur zu entwickeln 14 4 2 Darstellung der Klassen Darstellen
155. e Sprachen definiert werden Ohne die Verneinung w re es schwie rig viele existierende visuelle Sprachen z B Zustands bergangsdiagramme oder bin re B u me mit einer deterministischen Grammatik zu beschreiben Ohne deterministische Gramma tik ist es schwierig einen Parser zu bauen der eine auf dieser Grammatik basierende Sprache effizient erkennen soll siehe auch Kapitel 3 Hierbei werden die folgenden Arten von Bedin gungen unterschieden 5 2 Grammatiken Topological constraints erlauben es mit Hilfe von Tests ber die r umliche Anordnung von unterschiedlichen Zeichen z B A enth lt B zu berpr fen ob eine Produktion durchgef hrt werden soll oder nicht Eine beispielhafte Produktion hierf r beschreibt einen Endzustand aus dem Diagramm in Abbildung 1 Der Endzustand muss aus zwei Kreisen bestehen wobei ein Kreis in dem ande ren enthalten sein muss contains und der innere Kreis ein Textfeld enthalten muss state Parea Pname Pkind circle Qarea circle Rarea 1ext Tarea Tstring where Qarea contains Rarea Ryadius contains Tarea and Parea Qarea Prame string Pring final Minimization constraints werden haupts chlich dazu genutzt das beste beispielsweise das in der unmittelbaren N he befindliche Objekt auszuw hlen das die Bedingungen erf llt Als Beispiel dient hier die Beschreibung eines Pfeiles mit einer Beschriftung Abbildung 1 Dabei muss das Textfeld die Entfernung seines Mittelp
156. e dar Wenn Objekte an den Szenegraphen angehangen werden so nennt man es in Java3d they become live In Java3D wird zwischen Knoten mit Kindern den so genannten GroupNodes und den Knoten ohne Kindern also den Bl ttern auch LeafNodes genannt unterschieden Beides stellen abstrakte Oberklassen dar welche aus der Klasse node abgeleitet wurden GroupNodes GroupNodes haben genau einen Elternknoten und abz hlbar viele Kindknoten wobei die se dann ebenfalls wieder GroupNodes oder Bl tter sein k nnen Die folgende Abbildung 11 7 soll dies verdeutlichen Ferner werden hier zwei wesentliche Knotentypen eingef hrt die von der Klasse der zuvor erw hnten GroupNodes abgeleitet werden Dies sind die BranchGroups und TransformGroups Erstere stellen die Wurzel von weiteren eigen st ndigen Teilgraphen dar Wenn Elemente eines Szenegraphen zur Laufzeit entfernt werden sollen kann dies nur ber die entsprechende BranchGroup geschehen Mit dem Methoden aufruf test1 detach wird die BranchGroup mit dem Namen test 1 und allen an ihr befindlichen Kindern aus dem Szenegraphen entfernt 93 11 Java3D Branchgroup Transformgroup Leaf Abbildung 11 7 Auschnitt aus einem Szenegraphen Eine zweite wichtige Klasse von GroupNodes sind die TransformGroups Diese beinhalten Verschiebungs Rotations und Skalierungsinformationen die an all ihre Kinder weitergeben werden Wird also eine Transformation auf die TransformGroup im
157. e leitet die Komponente an das Kompositum oder Blatt weiter Das Kompositum stellt den Beh lter f r die Kindob jekte dar und h lt Referenzen auf diese Es implementiert die Methoden zur Verwaltung der Kindobjekte siehe Abbildung 10 4 Kompositum Operationsaufrufe f hrt das Kompositum aus indem es sie an alle seine Kindobjekte weiterleitet Das Blatt implementiert letztlich diese Operation Konsequenzen Das Kompositionsmuster definiert Klassenhierarchien auf Basis von Klassen f r primitive und zusammengesetzte Objekte Primitive Objekte k nnen zu komplexeren Objekten zusammen gesetzt werden was wieder rekursiv fortgesetzt werden kann Vor dem Klienten wird also verborgen ob er mit einem primitiven Objekt oder einer Komposition von Objekten kom muniziert Dadurch wird die Komplexit t des Klienten vereinfacht da er beim Zugriff keine R cksicht auf strukturabh ngige Besonderheiten nehmen muss Des Weiteren ist die Struktur leicht erweiterbar da beim Hinzuf gen neuer Blattklassen keine anderen Klassen angepasst werden m ssen Dies birgt jedoch den Nachteil dass man keine Kontrolle dar ber hat welche Objekte in einem Kompositum zusammengefasst werden k nnen Es kann ja durchaus sein dass man nicht m chte dass bestimmte Objekte komponiert werden 10 Entwurfsmuster Klientenklassen Abbildung 10 5 Fassade 10 3 2 Fassade Zweck Es soll fiir Schnittstellen eines Subsystems eine einzige Schnittstelle bieten Die
158. e verteilt sind wobei die 29 Klassen in verschiedenen Vererbungsbeziehungen zueinander stehen Die Tests die von den Kunden durchgef hrt wurden lassen sich in zwei Kategorien einteilen Zum einen in rein visuelle Tests also Tests die alleine durch das Betrachten der vom Plugin dargestellten Informationen erfolgen Zum anderen in eine Kombination aus automatischen und visuellen Tests Die auto matischen Tests vergleichen hierbei erwartete Ergebnisse mit Ergebnissen die vom Plugin bei der Ausf hrung generiert werden Alle ausgef hrten Tests spiegeln die Anforderungen in den von den Kunden verfassten User Stories wieder Hier nun eine bersicht aller Tests die an dem Plugin ausgef hrt wurden Zu beachten ist dass zuerst alle rein visuellen Tests stattfanden und dann die visuell automatischen Tests 1 W 14 Beschreibung des ersten Release Abbildung 14 5 Screenshot aus der Anwendung 14 6 Kunden Akzeptanztest packt_c4 pack2_C7 Cast Pi Class1_P2 Class3_P2 Class5_P2 Class2_P2 Class6_P2 Class7_P2 Class4_P1 pack3_c4 packs_cs Classt_P3 Class2_P3 Class3_P3 Class4_P3 pack5_C6 Class1_P4 Classi_P5 Class5_P5 i Class3_P 4 Class3_P5 Class6_P5 Class4_P5
159. e von Aggregat nat rlich auch noch der verwaltende Teil also wie Elemente zu einem Aggregat hinzugef gt oder entfernt werden definiert wird Das Konkre teAggregat implementiert die Operationen zum Erzeugen eines konkreten Iterators indem es ein Objekt der passenden Konkreterlterator Klasse an den Klienten zur ckgibt Der Klient ver wendet nun ausschlie lich die Schnittstellen Operationen des Iterators um seine gew nschten Traversierungsfunktionalit ten zu erhalten ohne dabei irgendwelche Implementierungsdetails zu ben tigen Dieser Konkretelterator verwaltet nun die aktuelle Position im Aggregat und kann die nachfolgende Position errechnen Bevor wir nun zu den Konsequenzen des Iteratormusters kommen wollen wir noch erw h nen dass durchaus einige Variationen dieses Musters existieren Diese Variationen besch fti gen sich z B mit der Frage nach der Robustheit eines Iterators also wie er auf nderungen der Struktur des Aggregats w hrend der Traversierung reagiert Dies k nnte den Iterator ja durch aus verwirren Solch ein robuster Iterator garantiert dass eine Traversierung von eventuellen Einf ge und L schoperationen im Aggregat nicht gest rt wird ohne das Aggregat vorher zu kopieren Eine andere M glichkeit der Variation die man beim Iteratormuster hat besteht darin sich 10 Entwurfsmuster Aggregat Klient Iterator erzeugelterator void start void weiter void fertig void aktuelles
160. ealisiert wurde erm glicht f r gerichtete und ungerichtete Assoziationen die Angabe von Kardinalit ten die im Diagramm entspre chend angezeigt werden TEIL 4 OA Beschreibung des Frameworks A KAPITEL 18 Einleitung Sven Wenzel 18 1 Motivation Eine dreidimensionale Darstellung von Softwarestrukturen erm glicht die Veranschaulichung von Sachverhalten die in herk mmlichen Diagrammen mit nur zwei Dimensionen nicht oder nur sehr schwierig zu zeigen sind Des Weiteren k nnen dreidimensionale Diagramme bei spielsweise die bersicht erh hen und den Informationsgehalt steigern Als Beispiel kann man hierzu das UML Sequenzdiagramm und das Diagramm aus Release 3 heranziehen Es veranschaulicht die Struktur der Methodenaufrufe zwischen verschiedenen Objekten Bei einer gro en Anzahl von Objekten wird dieses Diagramm sehr un bersicht lich da die Anzahl der Aufrufpfeile zunimmt Au erdem ist eine Anordnung in der Objekte mit vielen Aufrufbeziehungen in r umlicher N he zueinander angeordnet werden auf einer zweidimensionalen Fl che nur eingeschr nkt m glich Das Sequencediagram aus Release 3 nutzt den dreidimensionalen Raum aus um Objekte die durch viele Aufrufpfeile verbunden sind r umlich nahe beieinander anzuordnen und Objekte mit weniger vielen Methodenauf rufen weiter entfernt zu positionieren Dar berhinaus k nnen die Aufrufpfeile kreuzungsfrei angeordnet werden wodurch sich die bersichtlichkeit erh ht Um dr
161. ef hrt Je nach Anforderung kann es m glich sein weitere Funktionalit t zu implementieren Hier bietet EFFECTS eine Sammlung von Basisklassen an die zur freien Verf gung gestellt werden Zum Beispiel existieren Klassen zur Realisierung eines Zustands automaten oder zum verschieben von Objekten N here Informationen befinden sich in der API Dokumentation und der Beschreibung der Systemarchitektur TEIL 5 Fazit AA Kar 21 Reflexion ber das Vorgehensmodell und die PG Organisation Semih Seving Michael N the Im Folgenden wird ber das in der Einleitung s Kapitel 2 7 erl uterte Vorgehensmodell dis kutiert Es werden die Vor und Nachteile der benutzen XP Techniken diskutiert und einige Verbesserungsvorschl ge angegeben Danach erfolgt eine Reflektion ber die allgemeine Or ganisation der Projektgruppe 21 1 Vorgehensmodell Die einzelnen Tasks sollten von jeweils zwei Entwicklern mittels Pair Programming bear beitet werden damit jeder an m glichst allen Aufgaben des Projektes beteiligt ist Im ersten Release wurden nach jedem abgearbeiteten Task die Paare gewechselt Aber bereits ab dem zweiten Release kam es nicht mehr zu immer komplett wechselnden Paaren Es bildeten sich meist Teilgruppen in den einzelnen Aufgabengebieten Die Teilgruppen setzen sich aus min destens einem Experten und wechselnden Entwicklern zusammen Gr nde hierf r waren die Verteilung des Expertenwissens f r das jeweilige Themengebiet und die Zeite
162. egel zu benutzen wird hier der gesamte Baum auf dem Mantel eines einzigen Kegels angeordnet Dadurch bleibt der Innenraum dieses Gebildes frei f r andere Beziehungspfeile Abb 12 4 Eine weitere M glichkeit dem Problem der Darstellung unterschiedlicher Beziehungs strukturen zu begegnen besteht in der Lockerung der Regeln f r die Symbolanordnung Auf diese Weise k nnen ebenenf rmige oder auch top down Darstellungen entstehen F r n here Ausf hrungen zu diesen alternativen Techniken siehe Engelen 2000 Seite 54 ff 12 3 3 Techniken zur Verbesserung der Expressivit t Zum Abschluss der Vorstellung des J3Browswers sollen Methoden vorgestellt werden mit deren Hilfe sich die bersichtlichkeit der Darstellung erh hen l sst Dazu z hlen u a Filter eine Fokustechnik und nicht zuletzt auch die dynamischen Aspekte des vorliegenden Visuali sierungssystems Fish Eye Views und Filter Die gleichzeitige Anzeige aller Elemente und Beziehungen eines Programms f hrt i d R al lein aufgrund der hohen Anzahl der Symbole und Pfeile zu einer stark berladen wirkenden Darstellung Daher sind Techniken n tig die die bersichtlichkeit der Darstellung gew hr leisten Eine einfache Vorgehensweise ist die Benutzung von Filtern f r Beziehungspfeile Die gezielte Ausblendung von Elementsymbolen und ihren Beziehungspfeilen ist eine andere M glichkeit Die dritte Technik die angewendet wird ist eine Abwandlung des Fish Eye 108 12 Dreidi
163. eidimensionale Diagramme sinnvoll f r den im Softwareentwicklungsprozess einzu setzen sollten diese in eine Entwicklungsumgebung integriert werden So ist es m glich integriert in den Entwicklungsprozess Diagramme zu betrachten und zu bearbeiten ohne das Werkzeug wechseln zu m ssen 18 2 Unterst tzung durch das Framework Zu der Entwicklung eines solchen Diagramms z hlen insgesamt vier Kernaufgaben 1 Entwurf des dreidimensionalen Diagramms also verschiedene Symbole und eine Gram matik 2 die technische Umsetzung der einzelnen Komponenten dieses Diagramms also z B Figuren Symbole oder Anordnungsalgorithmen Grammatikregeln 18 2 Unterst tzung durch das Framework 3 die technische Umsetzung des Rahmens f r das dreidimensionale Diagramm und der damit verbundenen Eigenschaften wie z B der Navigation sowie 4 die Integration des Diagramms in die Entwicklungsplattform Die Entwicklung eines neuen dreidimensionalen Diagrammtyps wird durch die Verwen dung des EFFECTS Framework entscheidend vereinfacht EFFECTS stellt ein Applikati onsrahmen bereit der es erlaubt Diagramme zur dreidimensionalen Visualisierung von Soft warestrukturen zu erzeugen und sie in die Entwicklungsplatform Eclipse zu integrieren Die Aufgaben des Entwicklers reduzieren sich hierbei auf die ersten beiden Kernaufgaben Den Entwurf des Diagramms sowie die technische Realisierung der einzelnen Diagrammkom ponenten kann das Framework dem En
164. eine durch die Contai ner zu realiseren war Aus diesem Grund waren noch weitere Klassen f r Assoziationen und Subpaketstrukturen wie AssociationElement ImplementsElement ExtendsElement und CPDSubPackageContainer n tig die nicht direkt mit dem Eclipse Datenmodell ver bunden sind da es f r sie keine quivalente im JDT gibt Die Struktur der Subpakete ist durch den CPDSubPackageContainer gegeben Hierzu hat der CPDSubPackageContainer eine Referenz auf das Oberpaket sowie auf alle seine Kindelemente Relationen werden direkt mit dem CPDProjectContainer assoziert da sie nicht immer eindeutig einem bestimmten Paket zuzuordnen sind Die geplante Architektur der Datenmodells zeigt Abb 17 1 Der Zustandsautomat Als zweites ist das Modell des Zustandsautomaten zu nennen Das vierte Release unterscheidet sich insofern von den vorangegangenen Releases als dass hier Interaktion vorgesehen ist und somit auf Nutzereingaben reagiert werden muss Das Verhalten der GUI wird durch einen Zustandsautomaten definiert Als Grundlage f r den Zustandsautomaten wurden aus dem Artikel Yacoub und Ammar 1998 die Patterns Meally Interface State Driven und Exposed genommen Es wurde geplant dass der Hauptteil des Automaten im Core Plugin realisiert wird Die Klasse FSMInterface ist hier der Kern des Automaten Sie implementiert diverse Listener bspw Mouse und Keyboardlistener und bietet Metho den zum expliz
165. eines W rfels in Java3D Beschreibung Erzeugen eines Java3D W rfelobjekts geplante Zeit Eine Stunde Es mussten nur die entsprechenden Koordinaten in einem Objekt gespeichert werden aus dem dann ein Shape3D erzeugt wird reale Zeit Sechs Stunden Die Einarbeitung in Java3D war zeitaufwendiger als erwartet da Java3D viele komplexe M glichkeiten bereitstellt 3D Objekte zu visualisieren Des Weiteren mu te f r den Level of detail LOD die Klasse des W rfels erheblich erweitert werden 14 4 3 Viewer Szenegraph generieren Beschreibung Um die W rfel im Raum geordnet anzuzeigen muss f r Java3D eine Szene generiert werden geplante Zeit Acht Stunden Es lag zur Zeitabsch tzung noch keine Erfahrung mit Ja va3D vor von daher wurde die Zeit gesch tzt reale Zeit 15 Stunden Wie im Task f r den W rfel wurde auch hier die Einarbei tung in Java3D untersch tzt 14 Beschreibung des ersten Release aumnoasd pa wauaua 9 SuNnoesd p3 L L younp paneu 6 1 Jesua4Bunjlejsieg euyao y i uabeyge dS p j 1 PUBIS J nazia z T Iepowassuszs Sc 1 1ISPOWAESUSZS uge 1 10 p3 uone inen Iapowaeujsunuypauun Punganuayy SE uoneBinen 11aponaeujbunuyssaun Plungenusy Abbildung 14 1 Sequenzdiagramm zur Erzeugung der Darstellung 14 4 Reflexion ber die Tasks uabeyqe
166. eingegangen 185 186 17 Beschreibung des vierten Release 17 4 1 Taskreflexion Release 4a Neue Syntaxelemente Information Cubes Beschreibung Pakete sollten als durchsichtige Information Cubes dargestellt werden geplante Zeit 2 Stunden reale Zeit Dieser Task wurde in 1 5 Stunden erledigt da die Cubes aus dem ersten Release bernommen werden konnten Ausblenden der Vorderseite von Information Cubes Beschreibung Bei der Darstellung eines Paketes sollten die dem Betrachter zugewand ten W nde ausgeblendet sein geplante Zeit 8 Stunden reale Zeit Dieser Task wurde aufgrund der niedrigen Priorit t und des Zeitmangel nicht bearbeitet Cone Trees ohne drehbare Teilb ume Beschreibung Die Erbungshierarchie von Klassen sollte mit Cone Trees dargestellt werden geplante Zeit 12 Stunden reale Zeit 10 Stunden wurden f r diesen Task ben tigt F r die Berechnung der Anordung der Klassen auf dem Cone wurde der Algorithmus von Car riere and Kazman LITREF EINBAUEN in einer Implementierung des Diplomanden Ingo R pling verwendet Klassenw rfel aus dem Staticmodel bernehmen Beschreibung Die Klasssenw rfel aus dem ersten Release sollten bei diesem Task ber nommen und ggf angepasst werden geplante Zeit 1 Stunde reale Zeit 1 Stunde Virtuelle Klassen Proxies sollten nicht ausw hlbar sein Beschreibung Bei Erbung ber Paketgrenzen hinaus sollten sogenannte Proxies benutzt werden um die Klass
167. ekt ergeben dann m sste man beim Zugriff auf diese Objekte zwischen simplen und zusammengesetzten Objekten unterscheiden Um diese Unterscheidung zu vermeiden und den Zugriff zu vereinheitlichen schl gt das Kompositionsmuster eine uniforme Repr sentation vor Realisiert wird dies durch eine ab strakte Klasse welche sowohl simple Objekte als auch ihre Beh lter repr sentiert Anwendbarkeit Das Kompositionsmuster verwendet man wenn man Teil Ganzes Hierarchien von Objekten darstellen m chte Man sollte es ebenfalls verwenden wenn man den Zugriff auf primitive und 10 3 Strukturmuster Klient Komponente operation void fuegeHinzu komponente Komponente void entferne komponente Komponente void gibKindobjekt i int void Blatt Kompositum operation void operation void f alle g in kindobjekte generation fuegeHinzu komponente Komponente void entferne komponente Komponente void gibKindobjekt i int void Abbildung 10 4 Kompositumstruktur zusammengesetzte Objekte vereinheitlichen m chte so dass der Klient nicht mehr zwischen diesen unterscheiden muss Technische Realisierung Der Klient greift ausschlieBlich auf die abstrakte Klasse Komponente zu Diese definiert die Schnittstelle welche den Zugriff auf die Kindobjekte erm glicht wobei Kindobjekte Bl tter Blatt sowie Komposita Kompositum sein k nnen Operationsaufruf
168. ektmanipulation stehen stan dardm ig die bekannten M glichkeiten Selektieren Skalieren Verschieben Rotieren und F rben zur Auswahl Zus tzlich gibt es die wichtige M glichkeit logische Verbindung zwi schen Elementen erstellen zu k nnen Allerdings sollten dem Nutzer nicht in jedem Fall alle Objektmanipulationen zu Verf gung stehen sondern vielmehr nur die die im Einklang mit den M glichkeiten des Anwendungsbereichs liegen Hier besteht ein Ansatzpunkt zur Um setzung einer Syntaxsteuerung Bei der Durchf hrung von Objektmanipulationen wird der Nutzer durch relationale Feedbackelemente unterst tzt Zur Hervorhebung von selektierten Objekten eignet sich die Markierung ihrer Konturen Outlines Wenn der Abstand eines Ob jekts zum Boden angezeigt werden soll wird von den Objektumrissen aus hnlich eines lan gen Rocks das Lot zum Boden gef llt Skirts Durch Verbindungspunkte wird angezeigt ob und wo Objekte miteinander kombiniert werden k nnen Snaps Um nun auch die inter nen Eigenschaften eines Datenobjekts wie z B Methoden von Klassen zu ndern gibt es Spezifikationsm glichkeiten Sie k nnen unter anderem durch gesonderte Dialoge oder ob jektspezifische Men s realisiert werden 13 3 Fazit Zugriff Access Das Bearbeiten von Daten au erhalb der dreidimensionalen Welt und das Hinzuf gen und Entfernen von Daten zur dreidimensionalen Welt wird in der Zugriffskomponente zusammen gefasst Die Pr sentation der
169. elease 4b 191 17 43 Pal y u ee E eR REEL E E A 200 17 5 Vorstellung der implementierten Architektur 200 17 5 1 Beschreibung der geplanten Architektur 201 17 5 2 Beschreibung der realisierten Architektur 204 17 5 3 Vergleich zwischen geplanter und realisierter Architektur 207 1754 Feat as sep RE p aip NEIE A we Ee e NEE A 210 17 6 Kundenakzeptanztest 210 17 6 1 Akzeptanztest Release Aa 210 17 6 2 Akzeptanztest Release 4b 2 CC nn nn 213 17 6 3 Anschlie ende Korrekturen 217 Inhaltsverzeichnis 4 Beschreibung des Frameworks KAPITEL 18 ENIGI RAE 220 18 1 K ttgabewr lt lt 2 os ae a LE ee a A A ee ae are 220 18 2 Unterst tzung durch das Framework 2 2 2 2 2 2 CE mn 220 KAPITEL 19 Die Systemarchitektur 222220 oo o 222 19 1 Die Kernkomponenten 222 19 11 DiePaketeim Deet o s acc sa cepa Es 8 Es wen na E 225 19 1 2 Das Zusammenspiel der Komponenten 229 19 2 Die Hilfskomponenten 231 19 2 1 Die einzelnen Hilfskomponenten im Detail 232 KAPITEL 20 Vorgehensweise zum Erstellen eines neuen Diagrammtyps 236 20 1 Anlegen des Projektes 2 CC o nn 236 20 2 Hinzuf gen von Fragment Extensions 237 20 3 Implementierung wichtiger Klassen 238 20 3 1 Der neue Eclipse Wizard 238 20 32 Der Controller 440624 u doe eae en ee Ss 238 20 3 3 Der Pl gininitllallzer lt lt ooo sr Dr ER se ee A 239 20 3 4 Die Beschreibung der Szene
170. ellen eingebettet Grundelemente einer zweidimensionalen grafischen Benutzungsschnittstelle sind mausorien tierte Eingabe Fenstersteuerung Men f hrung Buttonleisten f r Standardoperationen und Iconleisten f r grafische Elemente Des Weiteren gibt es die M glichkeit Attribute selek tierter Objekte ber kontextsensitive Popupmen s gesondert zu editieren Grafische Benut zungsschnittstellen unterst tzen den Benutzer h ufig durch das WYSIWYG What You See Is What You Get Konzept bei dem er stets unmittelbar das Ergebnis seiner Eingabe auf dem Bildschirm sieht Bei der Gestaltung von Benutzungsschnittstellen soll nach Rechenberg und Pomberger 2002 und Herrmann 2001 auf die folgenden Ziele und Anforderungen R cksicht genom men werden Allgemein soll eine gute Benutzerf hrung es dem Nutzer m glichst einfach und komfortabel machen seine Arbeit zu erledigen Eine bedeutende Rolle spielt der Erlernbar 13 2 Bestandteile von dreidimensionalen grafische Benutzungsschnittstellen keitsaspekt Gute Oberfl chen versetzen den Nutzer in die Lage ohne gro es Handbuchstu dium oder aufwendige Schulung nach kurzer Einarbeitung mit seiner Arbeit zu beginnen und bieten zus tzlich oft gute Hilfsfunktion an Moderne Benutzungsschnittstellen sollen auch Grunds tze der Softwareergonomie unter der man die Anpassung der Nutzungsbedingun gen an Eigenschaften der Benutzer versteht beachten Als wichtige Beispiele ergonomischer Grunds tze sind
171. elt worden Die zweite nderung geschah aufgrund der Realisierung des MVC Konzepts damit s mtliche Zugriffe auf das Datenmodell durch den Controller gesteuert werden k nnen Der Zustandsautomat Der Zustandsautomat wurde in der realsierten Version bez glich der Namensgebung der Zu st nde berarbeitet Die verschiedenen Einf gemodi sind nun einheitlich benannt Die gene relle Trennung in Einf gemodi und einen Selektionsmodus wurde beibehalten Es zeigte sich dass die M glichkeit einem Paket Unterpakete und Klassen hinzuf gen zu k nnen ben tigt wird Entsprechend wurde der Ob jectSelectedMode so erweitert dass von hier aus die ent 207 SC a g des vierten Rele E 17 Beschreibun payaligenow peseojeybns opowerswegw muawsnomelgo passerg ns paxolgioafgo pexoouasujebeyoed Poyon guasu ssejo PeOepoel sin paxolgluayo apoyypapajasioalgo J payooaeep p y payoiganow paxaltojeoueo peyoljquesujeoepseyut pieoueo paxorgioalgo Payo Qaspjejunasut apoyyuesujaoej anu por laoueo pajiasujeoejJaju Poyo ossejouasul Spowerawegyadd payauigualddnguoneioossy peyoiqueriddns payoyou sujuope osse pauasujssejo payaygjeoueo apoyJesu ssejo EE payooabeyoeduasu papesujeGeyoed apoyesujuonejo
172. emitransparent um die in einem W rfel enthaltenen 12 2 berblick ber die vorhandenen Visualisierungstechniken Elemente sichtbar zu machen Die Semitransparenz hat au erdem den angenehmen Effekt dass W rfel die zu tief verschachtelt sind aufgrund der Aufsummierung der Transparenzwer te praktisch automatisch ausgeblendet werden Damit der Benutzer auch innere W rfel n her betrachten kann besteht die M glichkeit in die W rfel hinein zu navigieren Nach Rekimo to und Green 1993 lassen sich auch mit dieser Methode bis zu tausend Elemente in einer Visualisierung unterbringen Ein Nachteil dieser Visualisierungstechnik besteht in der fehlen den bersichtlichkeit bei gro en und tief verschachtelten Systemen da die in der Hierarchie oberen Elemente die unteren zu sehr verdecken Andererseits ist diese Visualisierungstechnik sicherlich gut daf r geeignet etwa eine Enthaltensein Relation darzustellen z B eine Java Paketstruktur 12 2 2 Eine Technik zur Darstellung beliebig strukturierter Daten Neben Hierarchien m ssen bei der Programmvisualisierung auch weniger stark strukturierte Zusammenh nge dargestellt werden Diese beliebigen Graphen treten z B bei der Betrachtung verschiedenartiger Beziehungen zwischen den Klassen eines Java Programms auf Vorgestellt wird hier die Technik der Federmodelle F r einen allgemeinen berblick ber den Bereich des Graphlayout sei auf Battista u a 1994 verwiesen Bei der Methode der
173. en Beschreibung Neben der EFFECTS Perspektive sollte ein zus tzlicher Men eintrag in der Men leiste erscheinen in dem zun chst 2 Eintr ge Screenshot und Help zu finden sind geplante Zeit Eine Stunde reale Zeit Drei Stunden Wie auch im vorherigen Task wurde die geplante Zeit zu kurz gesch tzt Aufgrund von fehlender Erfahrung beim Anlegen eines neuen Men s wurde mehr Einarbeitungszeit ben tigt 16 4 7 Steuerung Tastatursteuerung berarbeiten Beschreibung Hier sollte die bisherige Steuerung in soweit berarbeitet werden dass eine Kombination von Tastatur und Maussteuerung m glich ist geplante Zeit 16 Stunden wurden gesch tzt Es musste ein komplett neues Behavior implementiert werden da die verf gbaren Java Behaviors nicht den An forderungen entsprachen reale Zeit Null Stunden Dieser Task wurde im Wesentlichen mit dem Task Maus naviagtion einf gen erledigt da sich die Aufgaben weitestgehend ber schnitten Mausnavigation einf gen Beschreibung Die Hauptaufgabe bestand darin ein Mausbehavior zu implementieren Die Navigation sollte mit Tastatur und Maus m glich sein geplante Zeit 16 Stunden da hier ebenfalls wie auch bei der Tastatursteuerung ur spr nglich angenommen ein eigenes Behavior f r die Maussteuerung notwendig war 165 166 16 Beschreibung des dritten Release reale Zeit 15 Stunden Bei der Realisierung hat sich gezeigt dass die beiden Tasks Tastatursteuerun
174. en die nicht in dem jeweiligen Paket sind dort an zeigen zu k nnen Diese virtuellen Klassen sollen aber nicht selektierbar sein geplante Zeit 2 Stunden reale Zeit Aus Zeitgr nden wurde dieser Task nicht bearbeitet 17 4 Reflexion ber die Tasks 187 Interfaces Beschreibung Interfaces sollten als Kugel dargestellt werden geplante Zeit 2 Stunden reale Zeit 2 Stunden Assoziationen Assoziationen Beschreibung Skalierbare Pfeile sollten die Assoziationen zwischen Elementen dar stellen geplante Zeit 8 Stunden reale Zeit F r diesen Task wurden 60 Stunden ben tigt Es gab hier sehr viele Pro bleme mit der Rotation der Pfeile in beide Richtungen Letztendlich wur de eine Methode aus dem EasyViewer bernommen Kardinalit ten Beschreibung Die Kardinalit ten f r Assoziationen zwischen zwei Elementen sollte dargestellt werden geplante Zeit 1 Stunde reale Zeit Da dieser Task die Priorit t drei hatte und nicht mehr genug Zeit vorhan den war wurde er nicht bearbeitet Toolbar erstellen Men leiste und Toolbar erstellen Beschreibung Es sollte eine Men leiste und eine Toolbar zum Ausw hlen der Werk zeuge erstellt werden geplante Zeit 1 Stunde reale Zeit Ben tigt wurden 4 Stunden Die Klasse JToolBar musste gekapselt werden um ein einzelnes kontrolliertes Ereignis erzeugen zu k nnen Die Ereignis und Listenerverwaltung musste ebenfalls implementiert werden Extension Point f r die Tool
175. en Arten von Beziehungen sollten paket bergreifende Assoziatio nen siehe 17 2 verwendet werden Auch das den Diagrammen zugrundeliegende Framework ist noch verbesserungsf hig Zu nennen w ren hier die Navigation die man etwas intuitiver gestalten k nnte Es kann m g licherweise vorteilhaft sein ein dreidimensionales Eingabeger t zu verwenden Eine Studie zur Bewertung der Benutzerf hrung k nnte wertvolle Hinweise zur Verbesserung der Bedien barkeit des EFFECTS Tools liefern Dies war jedoch im Rahmen der Projektgruppe nicht m glich Die bereits erw hnte Kollisionsabfrage beim ClassPackageDiagram sollte in das Framework mit aufgenommen werden damit dieses Feature ebenfalls f r weitere Diagramm Plugins zur Verf gung steht 22 3 Beispiel Zum Schluss wird anhand eines kleinen Beispiels versucht darzustellen dass die dreidimen sionale Visualierung von Klassenstrukturen im Gegensatz zur zweidimensionlen Darstellung vorteilhafter ist Dabei wird ein kleines Beispielprojekt erzeugt wobei schon zugunsten einer bersichtlicheren Darstellung in der zweidimensionalen UML Notation auf eine komplexe Paketverschachtelung verzichtet wurde Dieses Beispielprojekt wurde zun chst in 2D s Ab bildung 22 1 mit dem Modellierungswerkzeug Omondo und dann in 3D s Abbildung 22 2 mit EFFECTS visualisiert Sicherlich ist dieses kleine Beispiel nicht sehr aussagekr ftig und repr sentativ f r alle An wendungsf lle Dazu m sste man eine e
176. en Rekers und Sch rr eine neue Klasse von Grammatiken die soge nannten Layered Graph Grammars LGG definiert LGGs sind eine Verfeinerung der kon textsensitiven Graphgrammatiken Auf beiden Seiten der Produktionen d rfen Teilgraphen stehen Es wird dabei aber gefordert dass die linke Seite einer Produktion lexikographisch kleiner sein muss als die rechte Seite Somit ist es nicht mehr m glich zyklische Ableitun gen zu bilden Eine zyklische Ableitung w re das Ausf hren zweier oder mehr Produktionen nacheinander an der gleichen Stelle des Graphen das dann wieder zur urspr nglichen Situati on f hren w rde Durch das Ausschlie en der zyklischen Ableitungen wird das Problem vermieden Produk tionen von kontextsensitiven Graphgrammatiken unkontrollierbar oft ausf hren zu k nnen Ein Parsingalgorithmus muss hier extra auf m gliche Zyklen achten D h er muss mitproto kollieren welche Produktionen schon ausgef hrt wurden und die Zwischenrepr sentationen mitspeichern um die neuen Zwischenergebnisse mit ihnen vergleichen zu k nnen Der von 6 4 Parsen Abbildung 6 2 Process Flow Diagram Rekers und Sch rr entwickelte Algorithmus kann also diese Zykluserkennung einsparen und gewinnt dadurch an Performanz Der Algorithmus wird in Abschnitt 6 4 2 beschrieben 6 4 Parsen Sinn und Zweck einer Grammatik besteht immer darin einen Formalismus bereitzustellen mit dem eine Sprache genau bestimmt werden kann Das ist bei Grammati
177. en Task Plugin Fragment oder Reflections f r Erweiterungen durchgef hrt Da beide Tasks inhaltlich sehr hnlich waren wurde das Bearbeiten der Aufgabe zusammen ausgef hrt Die abgesch tzte Gesamtzeit von zw lf Stunden konnte dadurch so stark unterboten werden dass die Analy se zum einem zu viert durchgef hrt wurde Zum anderen lie sich die Trennung recht einfach zumindest theoretisch durchf hren Plugin Fragment oder Reflections f r Erweiterungen Beschreibung Das Ziel dieses Tasks war es eine Entscheidung dar ber zu treffen wie die Diagramme genau realisiert werden sollten Dabei sollte festgelegt werden wie zum einen die Definition der HotSpots Domain Regel Diagramm durchgef hrt werden soll und zum anderen in welcher Form die Diagrammerweiterungen vorliegen werden 143 15 Beschreibung des zweiten Release geplante Zeit reale Zeit Hier wurde bei der Planung zun chst ber cksichtigt dass einige tech nische Aspekte zu untersuchen sind bevor ber das weitere Vorgehen entschieden werden konnte Daher wurde eine Zeit von acht Stunden eingeplant Siehe Task Unterschied zwischen Kernfunktionalit t und erweiterten Funktionen Extension Points definieren Beschreibung geplante Zeit reale Zeit Um einem Kernplugin weitere Funktionalit t mittels eines angeh ngten Plugins oder Plugin Fragments zur Verf gung zu stellen mussten f r das Kernplugin die entsprechenden Schnittstellen in
178. en an um auf das Eclipse Datenmodell zuzugreifen So k nnen beispielsweise alle direkten Unterpakete eines ausgew hlten Pakets abgefragt werden oder Pakete entfernt werden die leer sind Der IPackageFragmentComparator implementiert das Java Comperator Interface und erm glicht den Vergleich zweier IPackageFramgent Namen welche die Repr sentation eines Java Pakets im Java Development Toolkit sind Die Klasse MessageBoxHelper vereinfacht die Verwendung von Infofenstern Es wer den verschiedene statische Methoden angeboten die das Infofenster automatisch so einstellen dass nur noch die anzuzeigende Nachricht angegeben werden muss Zum Beispiel erzeugt die Methode zur Anzeige einer Frage ein Infofenster mit einem Frage zeichen als Icon und einem Ja bzw Nein Knopf Das Framework enth lt einen Fortschrittsdialog welcher in der Klasse ProgressWindow realisiert ist Dieser Dialog kann neben dem Fortschrittsbalken zus tzliche Nachrichten anzeigen ber den aktuellen Vorgang anzeigen 19 2 Die Hilfskomponenten Cone a de Is10 effects core view3d GraphicalObject Ga Sphere DEFAULT HEIGHT float labelBg BranchGroup DEFAULT_RADIUS float fontsize int Sphere logger Logger j Sphere fone useWireframe boolean Sphere ER 5 Sphere Cone GraphicalObject Sphere Cone update void p update void capabilities com sun j3d utils geometry radius float height float appearance Appearance col
179. en der Deklaration gepr ft Eine Grafik wird hier als Wort der visuellen Sprache bezeichnet wenn eine v llige Aufteilung in Teilgrafiken m glich ist und s mtliche Bedingungen erf llt sind Gegen ber der Graphgrammatik die pr ft ob ein vorliegender Graph ein Wort der von ihr beschriebenen Sprache ist beschr nkt sich der deklarative Ansatz nicht allein auf die Syntax des vorliegenden Graphen Wie in Kapitel 7 4 2 am Beispiel der Linie zwischen Oval und Rechteck gezeigt worden ist gibt die Deklaration nicht nur Aufschluss dar ber dass eine Linie vorliegt sondern auch dass es sich um eine Relation handelt Damit ist also auch eine semantische Information durch die Erkennung des Graphen bekannt geworden 7 6 Fazit Nach der Untersuchung des deklarativen Ansatzes und seiner Arbeitsweise sowie dem Ver gleich mit Graphgrammatiken ist deutlich geworden dass dieser Ansatz durchaus eine sinn volle M glichkeit zur Definition visueller Sprachen ist Die Deklarationen stellen hierbei eine 7 6 Fazit gut lesbare Repr sentation einer visuellen Sprache dar Beim Betrachten der Deklaration kann man sich vorstellen wie die W rter bzw Grafiken der Sprache aussehen werden Die Deklara tion beschr nkt sich hierbei nicht auf Graphstrukturen sondern unterst tzt komplexe Grafiken Bedingt durch die Wiederverwendbarkeit der einzelnen Teilgrafiken ist zudem eine hierarchi sche Komposition von Elementen m glich was wiederum die Bildung komplexe
180. en geformt Durch die Vorgabe der Produktionen ist f r das Erzeugen eines Graphen eine recht genau definierte Vorgehensweise gegeben Aufgrund dessen ist der neue Graph zu jedem Zeitpunkt seiner Erzeugung syntaktisch korrekt und somit ein Wort der durch die Grammatik beschrie benen Sprache Damit unterscheidet sich der deklarative Ansatz deutlich von den Graphgram matiken Die Deklarationen geben keine Ordnung zur Grapherzeugung vor sondern lassen eine willk rliche Reihenfolge der Erstellung zu und pr fen erst w hrend des Zeichnens ob die Bedingungen alle erf llt sind 7 5 2 Erkennung Bei der Erkennung von Graphen unterscheidet sich der deklarative Ansatz ebenfalls von der Vorgehensweise der Graphgrammatiken Die einzige hnlichkeit besteht darin dass der de klarative Ansatz die gegebenen Deklarationen und die Graphgrammatiken ihre Produktionen verwenden Die Graphgrammatiken wenden ihre Produktionen nun in umgekehrter Richtung an Es wird untersucht ob irgendwo die rechte Seite einer Produktion mit dem Graphen ber einstimmt Ist dies der Fall so wird dieser Teilgraph durch die linke Seite der Produktion re duziert Dieser Vorgang wird solange wiederholt bis das Startsymbol der Grammatik erreicht ist Daraus folgt dass es sich bei dem Graphen um ein Wort der visuellen Sprache handelt Der deklarative Ansatz versucht durch Vergleiche Teilgrafiken herauszufiltern die einer Deklaration entsprechen Dar ber hinaus werden die Bedingung
181. ene Ergebnis mit dem erwar tenten Ergebnis berein Es soll m glich sein bei der Erzeugung eines neuen Diagramms das aktuelle Projekt als Basis zu verwenden Testergebnis bestanden Anmerkung Da die automatische Generierung des Diagrammes anstelle der Erzeu gung eines leeren Diagramms und anschlie ender manueller Bearbei tung gew nscht wurde ist es somit auch m glich aus einem Projekt eine Funktion auszuw hlen und daraus das entsprechende Modell zu ge nerieren Ein Objekt soll als flacher Quader angelegt werden wobei von diesem Quader eine Lebenslinie auf der Zeitachse einzuzeichnen ist Neue Objekte erscheinen erst auf der Zeitachse wenn sie erzeugt werden Testergebnis bestanden Anmerkung Visueller Test 16 6 Kunden Akzeptanztest 181 Teststart E E Start Testklasse2 Testklasse1 Customer 7 1 root void A 1 1 Testklasset Testklasse1 1 2 A_10 void 1 3 E_1 void D Testklasse3 l I T l 1 4 Testklasse3 l T I I 1 5 A_1 void y 1 6 B_1 void 1 7 D_2 void 1 8 B_2 void I T I 1 9 E_1 void l I i 1 10 B_1 void 1 11 A_20 void 1 12 Testklasse1 1 13 C_10 void 1 14 D_1 void 1 15 E_1 void 1 16 E_3 void Abbildung 16 4 Sequenzdiagramm f r den Kundentest Die Aktivit tsbalken sollen als R hre auf der Lebenslin
182. enn dies in die ffentliche Dokumentation mit aufgenommen werden soll und niemals innerhalb einer Deklaration EE Diese Klasse tut nichts 27 public class IrgendeineKlasse AA Den braucht man eigentlich nicht 7 public String buffer A 6 Deklarationen Va Die Methode ist sinnlos param wert ein sinnloser Eingabeparameter return der eingegebene Wert ZZ int getEingabe int wert return wert A 6 Deklarationen A 6 1 Deklarationen pro Zeile 1 Pro Zeile wird maximal eine Variable deklariert 2 Bei einem Block von nicht ffentlichen Variablen bei denen der Kommentar an das Ende der Zeile verschoben wurde m ssen alle Variablennamen und alle Kommentare untereinander angeordnet sein 3 Folgt nach einer Deklaration keine weitere so wird eine Leerzeile eingef gt 4 Variablen mit gleichem Namen sollten vermieden werden um die Variable auf h herem logischem Level nicht zu berdecken 5 Die Sichtbarkeit sollte f r Methoden und Variablen m glichst minimal sein Es ist also wo immer m glich private zu verwenden int level Ebene des Eintrags int size Groesse des Eintrags Object currentEntry Der selektierte Eintrag A 6 2 Anordnung der Deklarationen Deklarationen werden immer zu Beginn eines Codeblocks eingef gt Im Code deklarierte Variablen sind nicht zul ssig Ausnahme Bei einer for Schleife darf die Z hlvariable lokal deklariert werden void methodeEins
183. ensional darzustellen Bei er neuter Generierung der 3D Szene muss beim selben Paket das gleiche Bild geliefert werden 120 14 Beschreibung des ersten Release Zur Darstellung der Klassen ist vorgegeben dass diese als gleich gro e W rfel dargestellt werden sollen und bei der 3D Szenengenerierung sinnvoll und nicht verschiebbar platziert werden Des Weiteren ist f r die Klassen vorgesehen dass Kindklassen immer auf einer gra phisch tieferen Ebene als ihre Vaterklassen angeordnet werden Dies soll auch ber Paketgren zen hinaus erf llt sein Bei der Darstellung der Klassen als W rfel soll durch ihre geh ufte Anordnung im Raum die Zuordnung der einzelnen Klassen zu einem Paket sofort ersichtlich sein Jede sinnvolle interne Information beispielsweise die Kameraposition oder der Name der Vaterklasse soll ber ein geeignetes Schnittstelle abfragbar sein Eine weitere Anforde rung der Kunden ist ein Informationsfenster welches die Statusinformationen zur 3D Ansicht beinhalten soll wie z B die Koordinaten der Sicht Anzahl der eingelesenen Klassen oder die Anzahl der gezeichneten Klassen Weiterhin soll es m glich sein in der 3D Szene zu navigie ren wobei eine einfache Navigation mit der Tastatur ausreicht Die Zuordnung der einzelnen Klassen zu einem Paket soll durch ihre einheitliche Farbgebung ersichtlich sein Zus tzlich ist erw nscht dass die Klassen geeignet beschriftet werden Dabei w rde eine Beschriftung der Klassen durch e
184. entB kElementB KonkretesElementB void A KonkreterBesucher1 KonkreterBesucher2 besucheKonkretesElementA kElementA KonkretesElementA void besucheKonkretesElementA kElementA KonkretesElementA void besucheKonkretesElementB kElementB KonkretesElementB void besucheKonkretesElementB kElementB KonkretesElementB void Objektstruktur 4 Element eme nimmEntgegen b Besucher void A KonkretesElementA KonkretesElementB i b gt besucheKonkretesElementA this nimmEntgegen b Besucher void nimmEntgegen b Besucher void 4 b gt besucheKonkretesElementB this operationA void operationB void Abbildung 10 8 Besucherstruktur Konsequenzen Das Besuchermuster erlaubt es neue Operationen auf einfache Weise zu einer Objektstruktur hinzuzuf gen indem einfach ein neuer Besucher eingef hrt wird Die Klassen der Objekt struktur m ssen dabei nicht angepasst werden Ebenso verhindert das Muster dass Operatio nen die ein hnliches und zusammengeh rendes Verhalten implementieren ber die Klas sen der gesamten Objektstruktur verteilt werden Diese zusammengeh renden Operationen werden dazu in einer Besucherklasse gekapselt Dieses Ausgliedern der Operationen aus den Klassen der Objektstruktur macht es unn tig alle diese Klassen neu zu bersetzen wenn sich an einer gemeinsamen Operation etwas ndert
185. entar in eine Zeile zu schreiben Dies ist ein kein Blockommentar einzeilige Kommentare 1 Werden mittels eingeleitet 2 Es diirfen keine mehrzeiligen Kommentare in dieser Form geschrieben werden 3 Der Kommentar ist auf die gleiche Tiefe einger ckt wie der Code N K Nn 8 A Code Konventionen 4 Diirfen nicht ans Ende einer Codezeile gestellt werden es sei denn es handelt sich um die Deklaration einer private oder protected Klassen bzw Instanzvariablen 5 Der Begrenzer darf genutzt werden um mehrere Zeilen Code auszukommentieren Hierbei muss das am Anfang der Zeile stehen if wahr hier wird was deklariert int alpha 10 Das hier brauchen wir nicht mehr for int i 0 i lt alpha i t Sil System out printin i toString else return false A 5 2 Aufbau der Dokumentationskommentare Dokumentationskommentare folgen den Regeln der Javadoc Spezifikation Diese ist zu finden unter http java sun com products jdk javadoc writingdoccomments html F r die ffentlichen Dokumentationskommentare gelten die folgenden Regeln 1 Werden mittels eingeleitet 2 Das erste Zeichen jeder Zeile eines Kommentars ist ein Asterix w Jeder Kommentar hat mindestens drei Zeilen 4 Der Kommentar ist auf die gleiche Tiefe einger ckt wie der Code 5 Steht direkt vor der Deklaration einer Methode einer Klasse eines Interface und eines Feldes w
186. entierte grafische Objekte zur Verf gung die als Symbole in einem Diagramm verwendet werden k nnen Der Entwickler eines neuen Diagramms kann also die meisten Umgebungseigenschaften vernachl ssigen und das Augenmerk auf die Entwicklung des eigentlichen Diagramms legen wobei er durch das EFFECTS Framework weitesgehend unters tzt wird N A Karime 19 Die Systemarchitektur Im Folgenden wird die Systemarchitektur des EFFECTS Plugins beschrieben Alle hier auf gef hrten Komponenten und Klassen sind in dem Java Paket de 1s10 effects core zu finden Abbildung 19 1 zeigt einen berblick ber das Paket Betrachtet man zun chst ganz allgemein das System so l sst es sich grob in zwei Teile gliedern 1 Die Kernkomponenten bilden die Basis des Plugins Diese Komponenten werden ben tigt um Diagramme darzustellen zu speichern und zu laden Des Weiteren erm glichen sie die Navigation durch die dreidimensionale Welt und die Interaktion mit Objekten 2 Die Hilfskomponenten kapseln h ufig ben tigte Funktionen welche z B die Nutzung des Eclipse internen Datenmodells sowie die Handhabung von Java3D erleichtern In dem n chsten Abschnitt wird n her auf die Kernkomponenten eingegangen Es wird beschrieben aus welchen Paketen diese bestehen und wozu sie im einzelnen dienen Das all gemeine Konzept des Systems wird dabei erl utert Anschlie end werden die Klassen inner halb der Pakete beschrieben und deren Zusammenarbeit dargestellt
187. er inhaltlichen Einarbeitung hat die Projektgruppe die Gelegenheit sich in die tech nische Arbeitsumgebung einzufinden und an ihre Bediirfnisse anzupassen 2 2 Anforderungsanalyse In dieser Phase wird die Projektgruppe die spezifischen Anforderungen an einen graphischen Editor fiir dreidimensionale Visualisierung herausarbeiten Ein Ziel dabei ist es eine geeignete Systemmetapher zu entwickeln die als Voraussetzung fiir einen XP basierten Konstruktions prozess ben tigt wird 2 3 Konstruktion 2 3 Konstruktion Die Entwicklung des Editorframeworks in der Konstruktionsphase folgt dem XP Ansatz Auf Grund der ganzheitheitlichen Teamorientierung und der Eigenverantwortlichkeit der einzel nen Entwickler die auch die selbstst ndige Planung der auszuf hrenden T tigkeiten umfasst bietet sich XP als Entwicklungsprozess f r diese Projektgruppe an Dem XP Ansatz folgend ergibt sich eine inkrementelle Entwicklung mit vielen kleineren Releases bei der die fr hen Releases einen eher prototypischen Charakter haben die dann zu einen vollst ndigen System evolvieren 2 4 Berichte Die gesamten Arbeiten werden jeweils durch einen Zwischen und einen Abschlussbericht dokumentiert Der Zwischenbericht dokumentiert die Ergebnisse des ersten Semesters insbesondere die Anforderungsanalyse und die ersten Releases des zu erstellenden Systems Der Abschlussbericht wird den gesamten Projektverlauf festhalten Die Ergebnisse der ein zelnen Phasen
188. er zugewandten W nde ausgeblendet sein Testergebnis bestanden Anmerkung Nach diesem Test sollte auf Wunsch der Gesch ftsleitung eine Klasse mit Hilfe der Toolbar in das Diagramm eingef gt werden Ein gera de erstelltes Paket ist automatisch selektiert wodurch eine neue Klasse dem Paket direkt hinzugef gt wurde Die Klasse wurde jedoch an der akuellen Kameraposition eingef gt was dazu f hrte dass der Paketw r fel drastisch vergr ert wurde um die Klasse mit einzuschlie en Hier wurde angemerkt dass stattdessen besser die Klasse in den Paketw rfel verschoben werden sollte damit dieser nicht zu gro wird Der Mauszeiger soll sich beim Wechsel von Bearbeitungsmodi ver ndern Testergebnis nicht bestanden Anmerkung Aufgrund der niedrigen Priorit t und des Zeitmangels wurde dieser Task nicht umgesetzt Es soll eine Klasse in das Diagramm eingef gt werden Diese Klasse soll automatisch benannt und der Name im Diagramm angezeigt werden Testergebnis bestanden Anmerkung Es soll nicht m glich sein Elemente wie Klassen und Interfaces iiberlappend in der Szene anzuordnen Testergebnis nicht bestanden Anmerkung F r diese Funktion fehlte die Kollisionsabgfrage Die im vorherigen Test eingef gte Klasse soll in das ebenfalls vorher angelegte Paket verschoben werden k nnen Nach der Bet tigung des Write To Code Buttons soll die Paketdeklaration im Sourcecode der Klasse erscheinen Testergebnis nicht bestan
189. erbei ist zu beachten dass Im portanweisungen aus einem Paket in der Reihenfolge zusammenstehen N 232 A Code Konventionen FALSCH import java awt color import java lang ref import java awt geom RICHTIG import java awt color import java awt geom import java lang ref A 2 4 Klassen und Interfacedeklarationen Im folgenden Abschnitt werden die Teile einer Klassen bzw Interfacedeklaration in der Rei henfolge ihres Auftretens erl utert 1 Dokumentation der Klasse bzw des Interface 2 Deklaration 3 Non Javadoc Implementierungsdokumentation optional 4 statische Klassenvariablen 5 Instanzvariablen 6 Konstruktoren 7 Methoden Dokumentation der Klasse bzw des Interface 1 Die Dokumentation folgt den Javadoc Richtlinien und wird mit eingelei tet 2 Die Dokumentation sollte knapp aber pr zise die Funktion der Klasse wiedergeben 3 Gegebenenfalls sollte ein kurzer Beispielcode die Anwendung der Klasse verdeutlichen Deklaration Nach der Dokumentation folgt die Deklaration der Klasse bzw des Interface Non Javadoc Implementierungsdokumentation Gegebenenfalls folgt nach der Deklaration eine Dokumentation in der Informationen stehen die nicht in die Javadoc Dokumentation enthalten sein sollen Eingeleitet wird diese mittels PR a EL A3 Leerzeilen und Leerzeichen statische Klassenvariablen Die Reihenfolge der static Klassenvariablen ist 1 public 2 protected
190. erdings von Eclipse unterbunden wird Somit ist es rein technisch nicht mehr m glich die Tests durchzuf hren 16 6 Kunden Akzeptanztest Es soll eine eigene EFFECTS Perspektive generiert werden In dieser Perspektive ist ein Men hinzuzuf gen Testergebnis bestanden Anmerkung Visueller Test Es soll m glich sein Screenshots von der aktuellen Ansicht zu generieren Testergebnis bestanden Anmerkung Visueller Test Es gibt einen entsprechenden Men punkt in der EFFECTS Perspektive ber den ein Screenshot der aktuell angezeig ten Szene erstell und gespeichert werden kann Die Steuerung soll auf Maus und Tastatursteuerung angepasst werden Testergebnis bestanden Anmerkung Visueller Test Die neue Steuerung wurde auf Basis eines Ego Shooters implementiert also Bewegung ber Pfeiltasten und Blickwinkel nde rung ber die Maus Die Extension Points m ssen beschrieben werden Testergebnis bestanden Anmerkung Sie wurden in der Hilfe beschrieben Es soll ein Tutorial zur Implementierung f r eigene Diagrammtypen geschrieben wer den Testergebnis bestanden Anmerkung Das Tutorial ist in die Hilfe Funktion integriert Die Hilfe zu den Extension Points und ein Tutorial zur Implementierung eigener Dia grammtypen soll als Online Hilfe in Eclipse eingebunden werden Testergebnis bestanden Anmerkung Visueller Test Die Hilfe ist im Eclipse Men Help ber den Men punkt Help Contents erreichbar
191. ereich der Datenbanken bekannt sind e Um immer wieder ben tigte Funktionen bereitzustellen wurden Hilfsklassen geschrie ben die in dem Paket utils liegen Alle oben aufgef hrten Pakete sind als eigenst ndige Komponenten zu sehen Jede Kompo nente bzw jedes Paket bietet seine eigene Funktionalit t welche unabh ngig von den anderen Paketen ist so dass ein Zusammenhang zwischen diesen Komponenten nicht gegeben ist 19 2 1 Die einzelnen Hilfskomponenten im Detail Nachfolgend wird auf die Klassen und Interfaces der einzelnen Pakete eingegangen Dabei soll der Verwendungszweck der einzelnen Klassen er rtert werden so dass die Bedeutung dieser Klassen deutlich wird Realisierung von Zustandsautomaten Das Paket sm bietet ein Entwurfsmuster zur Erstellung von endlichen Zustandsautomaten an Zun chst werden die beiden daf r ben tigten Klassen erl utert 19 2 Die Hilfskomponenten Abbildung 19 6 Die Hilfskomponenten des Frameworks e Das Interface FSMInterface dient dazu auf die auftretenden Ereignisse in einem Au tomaten zu reagieren Mit Hilfe dieses Interfaces k nnen alle Zugriffe auf die Zust nde des implementierten Automaten realisiert werden ohne dass die jeweiligen Zust nde konkret bekannt sein m ssen e Die abstrakte Klasse FSMState ist die Basisklasse f r die verschiedenen Zust nde in einem Automaten Jeder Zustand in einem speziellen Automaten muss von dieser Klasse erben und die entsprechenden Methode
192. erstanden wurden und die Software die Probleme des 9 eXtreme Programming Einf hrung Kunden nicht l st XP versucht dies zu verhindern indem der Kunde zum Teil des Teams gemacht wird Ein Kunde ist bei der Programmierung f r Fragen st ndig zugegen so dass solche Missverst ndnisse nicht auftreten k nnen Ein weiter Vorteil dieser Ma nahme ist es dass ge nderte W nsche des Kunden in die Entwicklung einflie en k nnen 9 2 2 Voraussetzungen und Funktionsweise von XP Um extreme Programming als Methode zur Softwareerstellung innerhalb eines Entwickler team erfolgreich einsetzen zu k nnen bedarf es einiger Vorraussetzungen Alle Beteiligten Programmierer Management und Kunde m ssen sich auf die genannten Praktiken einlassen Zum Beispiel muss der Kunde bereit sein einen Mitarbeiter zur Verf gung zu stellen Ebenso sollten alle Programmierer am gleichen Ort und zu den gleichen Zei ten arbeiten da sonst Programmierung in Paaren und Kommunikation erschwert werden Die Testf lle m ssen alle automatisch ausf hrbar sein und Testdurchl ufe sollten nicht zu lange dauern Weiterhin d rfen die nderungskosten mit der Zeit nicht so stark ansteigen da sonst st ndiges Refactoring zu teuer wird Insgesamt ist XP f r kleine Teams von 10 15 Entwicklern gedacht weil die XP Techniken in gr eren Gruppen kaum mehr umzusetzen sind An dieser Stelle wollen wir einen kurzen Einblick in die Funktionsweise geben Im Gegensatz zu he
193. ert werden die dann f r zwei Bl tter benutzt werden soll W hrend beide Bl tter eine eigene Textur auf den selben geometrischen K r u 11 4 Der Scenegraph myGeom myAppear Abbildung 11 8 Der zu implementierende Teilgraph per legen also beide eine eigene Knotenkomponente f r die Erscheinung appearance NodeComponent besitzen benutzen aber beide die selbe Geometrieknotenkomponente 11 4 3 Konstruktion eines Teilgraphen Im Folgenden wird nun die Realisierung eines Teilgrafen in Java3D erl utert Dabei wird der in Abbildung 11 8 gezeigte Teilgraph erzeugt Appearance myAppear new Appearance Geometry myGeom new Geometry Shape3D myShape new Shape3D myAppear myGeom TransformGroup myTG new TransformGroup myTG addChild myShape BranchGroup myBG new BranchGroup myBG addChild myTG myTG compile In Zeile 1 und 2 werden zwei Knotenkomponenten instanziert in Zeile 4 und 6 werden die beiden Knotenobjekte erzeugt Bei der Instanziierung des Blattes in Zeile 3 werden die beiden Knotenkomponenten referenziert Da die beiden Klassen der Objekte myTG und myBG von der gemeinsamen Oberklasse Group erben besitzen beide die Methode addChild myNode die den bergebenen Knoten myNode mit all seinen Kindknoten an das aufrufende Objekt h ngt Zeile 5 und 7 Die letzte Zeile dient eines schnelleren Renderings Dieser Aufruf ist nur bei BranchGroups m glich 11 4 4
194. erwen den Eineinhalb Stunden Lie sich mit OrientedShape3D gut realisieren 14 4 12 Startpunkt Merken eines Startpunktes Beschreibung geplante Zeit Um die Orientierung f r den Anwender zu erleichern sollte er zu dem Startpunkt der Szene navigieren k nnen Das Merken des Punktes war damit unumg nglich Eine Stunde 14 5 Vorstellung der implementierten Architektur 131 reale Zeit Keine war in Kameraposition ver ndern enthalten Kameraposition ver ndern Beschreibung F r die Navigation zum Startpunkt musste die Kameraposition ver ndert werden k nnen geplante Zeit Eine Stunde reale Zeit Zwei Stunden Der Task Merken eines Startpunktes war hier mitein geflossen Sinnvolle Wahl eines Startpunktes Beschreibung Es war ein sinnvoller Startpunkt f r eine Szene zu w hlen von dem aus die Szene gut berschaubar ist geplante Zeit Vier Stunden reale Zeit F nf Stunden Abfangen der Tastaturkombination Beschreibung Zum Zur ckkehren zur Startposition wurde eine Tastenkombination ver langt geplante Zeit Eine Stunde reale Zeit Eine halbe Stunde Im KeyNavigatorBehavior war diese Funktiona lit t bereits vorhanden Es wurden lediglich einige Tastenbelegungen an gepa t 14 4 13 Fazit Trotz einiger Abweichungen in den einzelnen Tasks ist die geplante Gesamtdauer von insge samt 101 Stunden realistisch gewesen Es wurden insgesamt 97 Stunden ben tigt Durch die M glichkei
195. erzu erneut definiert werden muss So wird zum Beispiel auch ein Rechteck einmal definiert und in unz hligen Grafiken verwendet ohne dass man sich Gedanken dar ber machen muss dass das Rechteck aus vier Linien besteht oder dass die jeweils gegen berliegenden Linien parallel bzw die benachbarten Linien senkrecht zueinander sind Dar ber hinaus wird der deklarative Ansatz der Anforderung gerecht dass topologische geometrische und semantische Beziehungen zwischen Teilgrafiken formuliert werden k nnen So wird in unserem Beispiel die Anordnung von Akteuren zu Anwendungsf l len durch die Bedingungen Relationl und Relation2 deutlich gemacht Der eigentliche Nutzen dieser Bedingungen wird im nachfolgenden Kapitel bei der Erkennung von Grafiken erl utert Letztlich hat die Deklaration ber all die Anforderungen hinaus den Vorteil dass je nach ih rer Formulierung schon auf den ersten Blick deutlich werden kann wie der hier beschriebene Diagrammtyp auszusehen hat bzw welche Form eine Grafik der visuellen Sprache Anwen dungsfalldiagramm haben k nnte Gegebenenfalls kann sich der Betrachter der Sprache hier bereits eine bildliche Vorstellung machen 7 4 Erzeugung und Erkennung von Grafiken Der erste Teil einer Deklaration beschreibt was sp ter zu sehen sein wird Der zweite Teil also die Bedingungen besagen dabei wie die Grafiken aus der Spezifikation zu erzeugen bzw zu erkennen sind Helm und Marriott 1991 und helfen bei genau die
196. es Feedback durch den Anwender realisierbar und Missverst nd nisse ber Umfang und Funktionen des Programms werden verhindert 9 3 12 Programmierstandards Gemeinsame Programmierstandards sind deswegen n tig da der Code st ndig von allen Pro grammierern verstanden berarbeitet oder erg nzt werden muss Der Standard wird am An fang einheitlich festgelegt und alle sollten sich freiwillig an diesen halten Auch dient ein gemeinsamer Standard dazu dass man nach der Fertigstellung einer Funktion nicht erkennen k nnen sollte wer diese geschrieben hat 9 4 Fazit Nachdem wir XP nun soweit eingef hrt haben dass man es als Methode zur Softwareentwick lung einsetzen kann zeigen wir abschlie end nochmals die Vorteile Kapitel 9 4 1 sowie mit XP verbundene Probleme und ev Gefahren auf Kapitel 9 4 2 die beim der Nutzung auftre ten k nnen Denn auch wenn sich diese Form des Software Engeneering in einigen Punkten verlockend anh rt ist sie doch an den ein oder anderen Stellen kritische zu hinterfragen 9 4 1 XP Vorteile Ein bedeutender Vorteil von XP ist es dass w hrend der gesamten Entwicklung ein funktio nierendes und getestetes System existiert dass dem Kunden zur Verf gung steht Er kann und soll direkt in den Entwicklungsprozess eingreifen und muss nicht auf ein fertig ausgeliefertes Produkt warten So hat der Kunde beispielsweise die M glichkeit Features nachtr glich in das Planungsspiel mit einzubringen die er im Lau
197. es erlaubt die Methodenaufrufe in einer gegebenen Methode zu ermitteln Das Plugin wird unseren speziellen Anforderungen angepasst Die graphische Repr sentation der Daten erfordert zus tzliche Berechnungsklassen Diese beziehen ihre Informationen aus dem Datenmodell das die Aufrufhierarchie einer Methode kapselt So sind die verwendeten Objekte aus der Aufrufhierarchie zu extrahieren Weiterhin ist eine Metrik zur Anordnung der Objekte unter Verwendung der Aufrufh ufigkeit eines Ob jektes zu berechnen Schlie lich ist die Berechnung der Anzahl der Ebenen des Diagramms durchzuf hren 16 5 2 Beschreibung der realisierten Architektur Der Schwerpunkt bei der Implementierung lag darauf die Klassen entsprechend der Framework Struktur zu erstellen Im Folgenden wird daher auch die realisierte Architektur anhand der HotSpots beschrieben Domain HotSpot Die in der geplanten Architektur beschriebenen Elemente SQContainer und MethodObject zur Speicherung der Aufrufhierarchie wurden umgesetzt W hrend der Implementierung ergab sich die weitere Anforderung zus tzliche Informationen zu einer ge w hlten Methode zu speichern Das MethodObject erwies sich hierf r als nicht ausrei chend da die zus tzlich zu speichernden Informationen nur f r das Wurzelelement in der Hierachie der Methodenobjekte relevant sind Daher wurde das Datenmodell um die Klas sen MethodInformationWrapper und RealObject erweitert Der MethodInformation Wrapper wird nun in
198. esprochenen Tatsache dass die Sequenz als Bedingung f r grafische Ein gaben nicht von Bedeutung ist Eine weitere Besonderheit ist dass optional die Existenz von bestimmten Zeichen vorausgesetzt werden kann Auf diese Bedingung wird n her in 2 4 ein gegangen Da die Zeichen im Unterschied zur EBNF Listen von Variablen haben m ssen die Attribute des entstehenden Zeichens auf der linken Seite der Produktion durch eine Funktion aus den Attributen der Zeichen auf der rechte Seite belegt werden 5 2 3 Beispiel Die Beschreibung des Zustands bergangsdiagramms in Abbildung 1 soll den Einsatz der Constraint Multiset Grammar verdeutlichen Ziel ist es den Startzustand zu beschreiben wo bei hierzu die Definition der CMG aus 2 2 herangezogen wird Ein Zustand wird in einem Zustands bergangsdiagramm durch einen Kreis beschrieben der den Namen des Zustandes einschlie t Die folgende Produktion beschreibt einen Zustand state Prid point Pradius Prame Pkind circle Omidpoint gt Qradius text Tnidpoint gt Theight Iwiath Tstring where Omid point Tinid point 2 Oradius 2 Theight gt 2 Oradius gt Twidth and Pid point Omid points Pradius Oradius Prame string 5 Constraint Multiset Grammars Abbildung 5 1 Beispiel f r ein Zustands bergangsdiagramm Pring normal Auf der linken Seite der Produktion steht ein Zeichen des Typs state das die Attribute midpoint radius name und kind hat Dieses k
199. estellt Im Gegensatz zum 3D Sequenzdiagramm von Gil und Kent haben wir bei unserem Diagrammtyp die Darstellung der benutzen Para meter mittels einer Verbindung zwischen den Objekten auf einer Ebene der Einfachheit halber weggelassen 16 2 User Stories Jan Wessling Christian Mocek Die im Folgenden aufgef hrten User Stories stellen die Anforderungsdefinition f r das dritte Release des Eclipse Plugins zur dreidimensionalen Visualisierung von Softwarestrukturen dar 160 16 Beschreibung des dritten Release Die Aufgabe des dritten Releases war es einen neuen Diagrammtyp zu implementieren Er sollte nach der Semantik von Gil und Kent 1998 gestaltet werden Eine Beschreibung des zu entwickelnden Diagrammtypes befindet sich in Kapitel 16 1 Diese User Stories wurden komplett von den Entwicklern angenommen Popup Men Im Package Explorer soll ein eigener Men punkt EFFECTS in das Popup Men eingef gt werden In dieses Men soll es f r jeden Diagrammtypen einen Eintrag geben der die Gene rierung eines entsprechenden Diagramms startet Schattenwurf Es sollen Lichtquellen eingebunden werden so dass die Objekte Schatten auf den Boden wer fen Integration von Java 3D in Eclipse Das Ausgabefenster soll als Eclipse Editor implementiert werden Es soll also kein AWT Fenster mehr f r ein Diagramm ge ffnet werden sondern das Diagramm soll sich in der Eclipse Oberfl che integrieren Tests S mtliche vorhandene Tests
200. estimmtes die einem nicht helfen konkret zu handeln Deshalb werden im folgenden f nf zentrale Prinzipien aufgef hrt die dieses konkrete Handeln erm glichen Ne ben diesen 5 zentralen Prinzipien gibt es noch eine Reihe weniger wichtiger Merkmale Diese haben aber nicht so einen zentralen Charakter wie die im folgenden Erw hnten 9 eXtreme Programming Einf hrung Unmittelbares Feedback Wichtig ist direktes unmittelbares Feedback Sowohl direktes Feedback vom Kunden je k r zer die zeitliche Differenz desto gr er der Lernerfolg erm glicht durch kurze Releasezy klen als auch direktes Feedback vom System erm glicht durch Komponententests Einfachheit anstreben Es ist lediglich die heute aktuelle Aufgabe zu erledigen und das so einfach wie m glich d h ohne auf zuk nftige Problemstellungen einzugehen Die Module Funktionen bei denen sp ter festgestellt wird dass sie komplexer sein m ssen kann man dann anschlie end in der Zeit erledigen die bei der Programmierung der anderen Funktionen gespart wurde Inkrementelle Ver nderungen Jede Problemstellung wird in viele kleine Problemstellungen zerlegt Dies vereinfacht die Pro grammierung und das Testen der Funktionen und man bewahrt sich vor umfassenden Ver n derungen Ver nderungen wollen Man darf nicht schlecht auf Ver nderungen vorbereitet sein Ver nderungen erwarten reicht aber auch nicht Man muss Ver nderungen wollen da man wei dass diese kei
201. et wer den muss mit welchen Elementen man es zu tun hat und welche Produktion dann genau betroffen ist Die gleichen Probleme bestehen nat rlich auch f r den Parsingalgorithmus Er muss f r jede Produktion den Graphen berpr fen und nach m glichen Anwendungsstellen suchen Bei der gro en Anzahl von Produktionen ist dieser Vorgang sehr aufwendig so dass alle Algorithmen die f r diesen Ansatz existieren meist ineffizient sind oder die linken und rechten Seiten der Produktionen zu stark einschr nken Ein weiterer sehr gewichtiger Nachteil ist dass der Ansatz des impliziten Einbettens es nicht erm glicht neue Beziehungen zwischen bereits vorhandenen Knoten zu erstellen 6 3 Beschreibungsans tze Es gibt in der Literatur verschiedene Ans tze Graphgrammatiken formal zu erfassen Sch rr und Westfechel 1992 Dabei sind mehrere Hauptrichtungen auszumachen der mengentheo retische der kategorientheoretische Ansatz und der graphentheroetische Die Erforschung der ersteren begann bereits in den sechziger Jahren Der graphentheoretische Ansatz nach Rekers 6 Graphgrammatiken und Sch rr ist erst Ende der neunziger Jahre entstanden 6 3 1 Mengentheoretischer Ansatz Der mengentheoretische Ansatz hat seinen Namen dadurch erhalten dass hier die Kanten und Knoten in Mengen verwaltet werden Operationen die einen Graphen ver ndern sind als Mengenoperationen darstellbar Alle Produktionen der Grammatik werden so durch Verei nigun
202. eten Implementierung der Klasse zu tun haben sondern nur die A3 Dokumentation Funktionalit t der Klasse und deren Methoden beschreiben Alle Kommentare m ssen den hier angegeben Regeln folgen 1 Kommentare enthalten nur solche zus tzlichen Informationen die nicht trivial aus dem Source Code entnommen werden k nnen 2 Kommentare enthalten nur Informationen die absolut notwendig zum Verst ndnis des Programms sind 3 Alle ffentlichen also als public deklarierten Elemente m ssen mit einem Dokumenta tionskommentar ausgestattet sein 4 Informationen ber das Design sind in sofern angebracht als dass diese nicht trivial bzw nicht eindeutig aus dem Source Code entommen werden k nnen Achtung Aufgrund des extreme Programming Gedankens sollten solche Informatio nen m glichst nicht zu umfangreich und speziell eingebunden werden da diese Infor mationen zu schnell veralten k nnen Allgemein gilt Vor jedem Kommentar ist eine Leerzeile einzuf gen A 5 1 Aufbau der Implementierungskommentare Programme k nnen zwei verschiedene Arten von Implementierungskommentaren enthalten mehrzeilige Blockkommentare 1 Werden mittels eingeleitet 2 Das erste Zeichen jeder Zeile eines Blockkommentars ist ein Asterix 3 Jeder Blockkommentar hat mindestens drei Zeilen 4 Der Kommentar ist auf die gleiche Tiefe einger ckt wie der Code Dies ist ein Blockommentar Nicht erlaubt ist es einen Blockkomm
203. euen Koordinaten im erlaubten Bereich sind wird der W rfel entsprechend den neuen Koordinaten verschoben und die Ansicht wird aktualisiert Durch die Nummerierung wird der zeitliche Ablauf der Nachrichten dargestellt Die Nachricht setzeKo ordinaten kann erst nach der Nachricht pr feKoordinaten erfolgen welche wiederum von der Nachricht uebergebeKoordinaten ausgel st wird 4 3 4 Zustandsdiagramm Zustandsdiagramme werden in der Entwurfsphase einer Softwareentwicklung eingesetzt Es l sst sich mit diesen Diagrammen das Verhalten eines Objektes ber mehrere Anwendungs f lle darstellen Ein Zustandsdiagramm kann man als einen Graphen mit Zust nden als Knoten und Transi tionen als gerichtete Kanten deuten Die Semantik und Syntax hnelt denen von Automaten Es existiert immer ein Start und ein Endzustand Eine Transition ist der bergang von einem Zustand in einen Folgezustand An diesem bergang kann ein Ereignis optional mit einer Bedingung gekn pft sein Sie wird als Pfeil vom Ausgangs zum Zielzustand dargestellt der mit dem ausl senden Ereignis beschriftet werden kann Genau wie bei Aktivit tsdiagrammen kann man auch hier Zust nde zu einem Oberzustand zusammenfassen wodurch die Lesbarkeit verbessert und die Komplexit t verringert wird Ein weiterer Vorteil von Zustandsdiagram men ist die so genannte Nebenl ufigkeit Wenn beispielsweise ein Objekt verschiedene und unabh ngige Verhalten aufweist dann kan
204. ew geh renden Klassen dienen zur Darstellung der im Modell gehaltenen Da ten In dem Release sollen Klassen ihrer Paketzugeh rigkeit und ihrer Vererbungsbeziehun gen entsprechend in 3D dargestellt werden Dieser dynamische Vorgang wird in Abbildung 14 1 gezeigt Es wird eine Szene von dem Modell erzeugt welche in einem Fenster dar gestellt wird Dazu wird mittels den zum Controller geh renden Klassen MenuePunkt und UmrechnungIn3DModell eine Instanz der View Klasse Szene3DModell erzeugt Weiter hin l t sich mit der zur View geh renden Klasse Navigator durch diese Szene navigieren Dabei fragt diese von der Klasse Editor den Startpunkt ab und kann anschlie end durch das von der View Klasse Darstellungsfenster erzeugte Fenster navigieren Das Fenster wird mittels des Editor ge ffnet und stellt das Szene3DMode11 dar Ebenso gibt es noch ein Fens ter in dem wichtige Informationen zu dem Modell angezeigt werden den OutlineView Die dazugeh rige View Klasse ist EclipseOutline Der OutlineView wird ebenfalls durch den Editor gestartet 14 3 3 Controller Die Klassen die als Controller dienen sind prim r f r die Interaktion des Views mit dem Model zust ndig Indirekt wird dadurch auch definiert wie der Benutzers mit der Applikation interagieren kann Weiterhin sollen die Controllerklassen die im Modell gehaltenen Daten be arbeiten k nnen Der dabei eingehaltene Ablauf ist in Abbildung 14 3 dargestellt In diesem Release wird m
205. ew in Form von einer dreidimensionalen Szene dargestellt Die Flexibilit t wird da durch erreicht dass es durch das Framework m glich ist die einzelnen Teile Model View und Controller frei zu spezifizieren Nachdem das verwendete Konzept erl utert ist kann der Zusammenhang der Pakete dar gestellt werden Zu erkennen ist dass sich die Teile Modell View und Controller in der Pa ketstruktur widerspiegeln Zentrale Punkte sind die Pakete plugin und editor Diese bilden die Controller Komponente des MVC Der Modell Teil wird ber das Paket datamodel ab gebildet w hrend der View Teil ber das Paket view3d realisiert wird Im Gegensatz zu den oben genannten Paketen besitzen die folgenden keinen direkten Be zug zum MVC Konzept Die Funktionalit t der Pakete view3d interaction picking und view3d interaction navigation wird von dem Paket view3d verwendet hnli ches gilt hierbei auch f r die Pakete plugin wizards und io Sie werden von der Controller Komponente verwendet um neue Diagramme anlegen zu k nnen und diese zu laden und zu speichern 19 1 1 Die Pakete im Detail In diesem Absatz wird darauf eingegangen wie die oben genannten Aufgaben der einzelnen Pakete durch die ihnen zugrunde liegenden Klassen realisiert werden Verwaltung eines eigenen Datenmodells Das Paket datamodel hat die oben genannte Aufgabe f r einen Diagrammtyp ein speziali siertes Datenmodell zu verwalten Hierzu sind die folgenden Klassen implementiert
206. f r die anderen Achsen H 0 0 2 PS O cos sin 0 en O sin cos 0 0 0 0 1 und cos 0 sino 0 EEN 0 1 0 0 yo sin 0 cos0 0 0 0 0 1 Eine Rotation um beliebige Achsen kann man durch Translationen und Rotationen darstellen Dazu bringt man erst die Drehachse per Translation und Rotation auf eine Koordinatenachse dreht um den gew nschten Winkel und f hrt die inversen Funktionen der Vorbereitungsschrit te aus Projektionen Projektionen geh ren von der Art ihrer Matrix zu den Skalierungen Dabei wird das 3 dimensionale Bild in eine Ebene projeziert Dies geschieht mit der Fluchtpunktperspektive man erinnere sich an den Kunstunterricht und hei t demnach auch perspektivische Projektion Ein Spe zialfall ist die rechtwinklige Projektion Sie bewirkt die Nullsetzung einer Koordinate und damit eine Projektion aus dem n dimensionalen in den n 1 dimensionalen Raum Die Matrix h tte bei dieser Projektion in die x y Ebene im dreidimensionalen dann den Wert E 0 siehe Skalierungsmatrix 11 2 2 Farben Beleuchtung und Renderingtechniken Um Renderingtechniken vorstellen zu k nnen mu man wissen wie die Farben dargestellt werden und wie sich Beleuchtung auf Objekte auswirkt Dies wird gleich als erstes vorgestellt Danach wird auf verschiedene Schattierungs und Textur Mapping Verfahren eingegangen Die Schattierungsverfahren berechnen wie ein Objekt aufgrund seiner Position im Raum seiner Farbe und der vorhandenen Beleu
207. fe der Entwicklung f r n tzlich erachtet Zus tzlich kann er diese mit Priorit ten versehen so dass die wichtigsten Eigenschaften auch zuerst realisiert werden 9 4 Fazit Durch st ndiges Refaktorisieren des Quellcodes wird dieser mit der Zeit nicht unleserlicher sondern bleibt auch bei zuk nftigen nderungen einfach und selbsterkl rend Somit k nnen sich auch neue Teammitglieder schnell in die bestehende Codestruktur einlesen Die Berichte der Entwickler die XP eingesetzt haben zeigen hohe Zufriedenheit bei allen Beteiligten Programmierer berichten von Motivation und Freude bei der Arbeit das Manage ment freut sich ber die gute Termineinhaltung und die Kunden begr en die fr he Verf g barkeit eines funktionierenden Systems sowie die hohe Qualit t Lippert u a 2002 Dadurch dass ein enges Zusammenspiel zwischen Entwickler und Kunden gegeben ist wird ein Produkt entwickelt das den W nschen des Kunden eher entspricht als mit her k mmlichen Verfahren Der Kunde bringt das n tige Fachwissen mit welches fachfremde Entwickler meist nicht besitzen Nachteile einer Technik werden durch Vorteile anderer Techniken ausgeglichen So wird z B das Fehlen eines Anforderungsdokuments dadurch ausgeglichen dass der Kunde jederzeit pr sent ist 9 4 2 XP Nachteile Ein Problem ist das Fehlen von Dokumentation Es gibt lediglich die Dokumentation in Form der Testf lle und des Codes Dies ist zwar f r die Mitglieder des XP
208. g Es gab in diesem Release nur einen Assoziationstyp deshalb ist es nicht m glich gewesen verschiedene Assoziationstypen auszuw hlen bzw darzustellen Assoziationen sollen mit Kardinalit ten beschriftet sein Testergebnis nicht bestanden Anmerkung Es war in diesem Release noch keine M glichkeit gegeben Kardinalit ten einzugeben 17 6 2 Akzeptanztest Release 4b In diesem Abschnitt werden die Abnahmetests beschrieben so wie sie aus den User Stories des Releases 4b hervorgehen Auch in diesem Release war es nicht m glich die Testf lle zu automatisieren Die wenigen Kriterien die man h tte formalisieren k nnen wie z B das Enthaltensein eines Klassenw rfels in einem Paket konnten geeigneter durch visuelle Test berpr ft werden ebenso wie die ohnehin visuellen Anforderungen Daher wurden nur visu elle Tests durchgef hrt Die Tests gliedern sich in zwei Abschnitte Zun chst wird ein leeres Projekt angelegt und mittels des graphischen Editors gef llt Im zweiten Abschnitt wird ein bestehendes Projekt mit Hilfe des EFFECTS Plugins eingelesen und graphisch dargestellt Die Toolbar zur graphischen Manipulation soll in die Eclipse Toolbar eingebettet sein Testergebnis bestanden Anmerkung Ein neues Projekt soll angelegt werden k nnen Testergebnis bestanden Anmerkung 214 17 Beschreibung des vierten Release Es soll ein Paket eingef gt werden Bei der Darstellung dieses Paketes sollen die dem Betracht
209. g LO hioog abeyoedawegujuonepossy ke E Gi ueajoog pajaau p Auaweygsjuawerdu uawequonepossy wawergspuang suopepossy Weiss Suns Ayeupieorayddns 1uawa 3u1auddns sooepaluados Bus Ae uIpseQUaljo Meustuoteen seyiddng wem erte sde sr suoneosse dnosquuoysuel 1oelgoge deu ISITSEINALINE age rtspotan Bupng aureu urzuoge eppedado ourziuoga eyped pelulog uopysod 49U eJuOD9DR A UadO d adoueureuogabeyseyangioure ECH ISITISTESEHERUI vom ee Jujejuogabeyoed ad auer isr sebeyoedans mees Datenmodell Abbildung 17 1 17 5 Vorstellung der implementierten Architektur Diagramm spezifisch Standardmodus implementiert im Core Abbildung 17 2 Geplanter Zustandsautomat 204 17 Beschreibung des vierten Release Ein UML Zustandsdiagramm siehe Abb 17 3 beschreibt das geplante Verhalten des Au tomaten Der CameraMode ist der Ausgangspunkt f r alle Aktionen Von hier aus k nnen alle anderen Modi erreicht werden Hier kann man grob zwischen Einf gemodi und dem Selekti onsmodus unterscheiden Aus dem Selektionsmodus k nnen Objekte gel scht oder verscho ben werden Genaue Details des Zustandsautomaten k nnen der Abbildung 17 3 entnommen werden Die Plugin Kontrollstruktur Zuletzt musste der interne Aufbau des Projekts angepasst werden Der bisherige Aufbau setzte vorraus dass n
210. g des Layouts Es soll m glich sein Objekte auf den Cone Tree zu ziehen so dass sich diese in die Erbungs hierarchie einf gen Des Weiteren soll bei dem Einf gen einer zus tzlichen Erbungsrelation zu einer Klasse der entsprechende Cone Tree neu angeordnet werden SONDERFALL Erbung ber Paketgrenzen hinweg Klassen die an Erbung ber Paketgrenzen hinweg beteiligt sind werden in jedem der betrof fenen Pakete dargestellt In ihren Nicht Heimat Paketen werden diese Klassen gesondert dargestellt um anzuzeigen dass sie nicht in dieses Paket geh ren Es handelt sich um soge nannte Proxies Einf gen von Assoziationen Assoziationen sollen in das Diagramm eingef gt werden k nnen Start und Zielpunkt sol len jeweils durch Anklicken gew hlt werden Danach soll das Diagramm direkt aktualisiert werden 183 184 17 Beschreibung des vierten Release Schatten Die graphischen Objekte sollen Schatten auf den Boden des Universums projizieren User Stories des Release 4b Persistenz des graphischen Layouts Nachdem ein automatisch erstelltes Diagramm vom Benutzer ver ndert wurde soll sicherge stellt sein dass es nach Schlie en des Diagramms und oder Eclipse genau so wieder angezeigt werden kann wie vor dem Schlie en Neuanlegen von Elementen Das Neuanlegen von Elementen soll sowohl durch graphisches Einf gen als auch mit Hilfe eines Dialogs m glich sein Autolayout e Vererbungsbeziehungen sollen als C
211. g the free status of all derivatives of our free software and of promo ting the sharing and reuse of software generally NO WARRANTY BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE THERE IS NO WARRANTY FOR THE PROGRAM TO THE EXTENT PERMITTED BY APPLICABLE LAW EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND OR OTHER PARTIES PROVIDE THE PROGRAM AS IS WITHOUT WARRANTY OF ANY KIND EIT HER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU SHOULD THE PROGRAM PROVE DEFECTIVE YOU ASSUME THE COST OF ALL NECESSARY SERVICING REPAIR OR CORRECTION IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER OR ANY OTHER PARTY WHO MAY MODIFY AND OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE BE LIABLE TO YOU FOR DA MAGES INCLUDING ANY GENERAL SPECIAL INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM INCLU DING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCU RATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES END OF TERMS AND CONDITIONS 268 B The GNU General Public License Appendix How to Apply These Terms to Your
212. g und Mausnavigation durch einen einzigen Behavior zu erledigen sind Ziel war es das Ph nomen der ungew nschten z Achsen Rotation zu umgehen wie dies auch beim KeyNavigatorBehavior der Fall ist Diese Rotation f hrte dazu dass der Horizont schr g zur Kamera stand wenn erst die Kamera um x gedreht wurde also ei ne Neigung der Kamera und anschlie end eine Drehung der Kamera um die y Achse Um dieses Problem zu l sen ist es n tig die Matrix welche die aktuelle Kameraposition und Drehung beinhaltet zun chst auf die Identit t zu setzen Somit haben wir eine Rotation um 0 Grad f r jede Achse Anschlie end muss erst die Rotation um die y Achse und anschlie end um die x Achse durchgef hrt werden Hierzu wer den die Winkel f r diese beiden Rotationen gespeichert Der Fehler im KeyNavigatorBehavior besteht also darin dass die Matrix der Ka mera schon vorherige Rotationen beinhaltet und diese einfach um einen bestimmten Winkel weitergedreht wird Die Behandlung der entspre chenden Tastatur und Mausevents stellte kein Problem dar 16 4 8 Hilfe Tutorial schreiben Beschreibung Ziel war es ein Tutorial zu verfassen das die Anwendung des Frame works beschreibt geplante Zeit Acht Stunden wurden hierf r gesch tzt da das Tutorial u a in englischer Sprache verfasst werden sollte Auch sollte das Tutorial aus mehreren Teilen bestehen aus beiden bestehenden Diagrammtypen als auch aus allgemeinen Informationen zu dem P
213. gebettet Eclipse bietet sich durch seine moderne und elegante PlugIn Struktur als erweiterbare Entwicklungs umgebung an Als Schnittstelle f r die dreidimensionale Darstellung soll die Java3D API von Sun verwendet werden um unabh ngig von plattformspezifischen Bibliotheken zur dreidi mensionalen Darstellung zu sein Abbildung 1 1 dreidimensionale Darstellung einer Klassenstruktur Die bisher am Lehrstuhl f r Software Technologie verwendete Graphmetapher zur Visuali sierung bietet den Ausgangspunkt f r die dreidimensionale Darstellung im Editor Es sind aber nat rlicherweise weitere Visualisierungstechniken und metaphern denkbar wie etwa hyper bolische R ume Daher soll ein Framework konzipiert und realisiert werden um unabh ngig von einer bestimmten Metapher und einem festen Satz von Visualisierungstechniken Editoren zur dreidimensionalen Visualisierung von Softwarestrukturen einfach und elegant entwickeln zu k nnen Es soll ein Editorframework f r die dreidimensionale Darstellung und Manipulation von Softwarestrukturen konzipiert und realisiert werden Informationen m ssen im dreidimensio nalen Raum sinnvoll und geeignet angeordnet werden um Softwarestrukturen angemessen wiederzugeben Dazu m ssen verschieden Techniken miteinander kombiniert werden Zur dreidimensionalen Darstellung soll die Java3D API Verwendung finden das Werkzeug soll als PlugIn der Entwicklungsumgebung Eclipse realisiert werden da diese die zur Entwic
214. gehalten werden Generierung des Universums Beschreibung Um die 3D Szene sinnvoll f r unsere Anwendung zu konfigurieren soll te ein eigenes Universum realisiert werden geplante Zeit Vier Stunden Es war geplant einfach einen blauen Hintergrund und eine Ebene im Raum zu zeichnen welche dann als Basis f r das Universum gelten sollten reale Zeit Acht Stunden Wie beim W rfel wurde auch hier die Einarbeitung in Ja va3D untersch tzt Es mussten Algorithmen entwickelt werden die die Gr e der Ebene an die maximale Ausdehnung der Paketdarstellung an passen Die Gr e des Universums musste dynamisch angepasst werden weil sonst die Darstellung von Java3D zu langsam geworden w re 14 4 4 Ebenen Berechnung der logischen Ebenen Beschreibung Um die Klassen gem der Vererbungshierarchie anzuordnen sollten sie verschiedenen logischen Ebenen zugeordnet werden geplante Zeit Vier Stunden Erste Ideen f r einen entsprechenden Algorithmus deute ten darauf hin dass dessen Umsetzung ca vier Stunden dauert reale Zeit Drei Stunden 14 4 5 H ufung Anordnen der Klassen im Raum Beschreibung Die Klassen eines Pakets auf einer Ebene sollten reproduzierbar ange ordnet werden geplante Zeit 16 Stunden Es waren zun chst keinerlei Ideen vorhanden wie man so etwas effizient realisieren K nnte reale Zeit Zehn Stunden Es wurde ein sinnvoller Algorithmus zur Verteilung und Berechnung der Positionen gefunden der sich
215. gen Durchschnitte Differenzen etc beschrieben Da Mengenoperationen eine intuitive mathematische Grundlage haben ist der mengentheoretische Ansatz leichter verst ndlich als der kategorientheoretische Der mengentheoretische Ansatz ist allerdings nur in der Lage kontextfreie Graphgramma tiken zu beschreiben Bei kontextfreien Grammatiken steht auf der linken Seite der Produktion jeweils nur ein Nichtterminalzeichen das dann durch mehrere Terminal oder Nichtterminal zeichen ersetzt wird F r viele Graphentypen werden dadurch die Produktionen sehr komplex und die Anzahl der Produktionen nimmt zu 6 3 2 Kategorientheoretischer Ansatz Der zweite wichtige Ansatz ist der kategorientheoretische auf den nicht n her eingegangen wird Mit diesem Ansatz ist es m glich auch kontextsensitive Graphgrammatiken zu erfassen Hier k nnen nun auf beiden Seiten einer Produktion Terminal und Nichtterminalzeichen ste hen Es k nnen so ganze Teilgraphen von einer Produktion ver ndert werden Produktionen sind leichter aufstellbar allerdings sind die mathematischen Grundlagen der Kategorien u erst komplex und erschweren das Verst ndnis dieses Ansatzes 6 3 3 Graphentheoretischer Ansatz nach Rekers und Sch rr Zur Beschreibung der Graphgrammatik verwenden Rekers und Sch rr Graphen Die Kandi daten f r das Anwenden von Produktionen sind somit im Graph relativ einfach aufzufinden und ihre Auswirkungen leicht verst ndlich F r ihren Ansatz hab
216. gram dargestellt werden Klassen werden als W rfel visualisiert die Vererbungsrelation wird auf eine entsprechende Anordnung ent lang der z Achse abgebildet Paketenthaltenseinsbeziehung werden durch eine Clusterbildung in x y Ebene dargestellt Release 2 Durch Anwenden von Refactoring das PlugIn aus Release 1 als Fra mework realisieren konfigurierbare Hotspots f r die wesentlichen Aspekte eines Diagramms xml basiert Eclipse PlugIn Schnittstelle als Vorbild x Domainhotspots Diagrammhotspots Regeln zur Anordnung Release 3 Interaktionsdiagramme Kombination aus Sequenz und Kollaborati onsdiagramme als neuen Diagrammtyp entwickeln um eine Reifepr fung des Frameworks durchzuf hren eine Verbesserung durch Anwenden von Reengineering und Refactoring zu erzielen e Zwischenbericht 2 Wochen 2 Semester 15 Wochen April bis Juli e Erstellung weiterer Releases zur funktionalen Vervollst ndigung des PlugIns 12 Release 4 Erstellen eines Editor PlugIns f r eine Kombination eines Klassen und Paketdiagramms Interaktion und Manipulationsm glichkeiten realisie ren Es wird folgende Notation umgesetzt Klassen werden als W rfel dargestellt Schnittstellen werden als Kugeln dargestellt Pakete werden als Information Cubes dargestellt 2 7 Vorgehensmodell Vererbungshierarchien werden als Cone Trees dargestellt Assoziationen werden als R hren dargestellt Release 5 PlugIn au
217. graphische Syntax pr fung geplante Zeit 40 Stunden Die Benutzung der Octree Datenstruktur aus Performanz gr nden wurde angestrebt Die Octree Datenstruktur erm glicht eine Unterteilung des dreidimensionalen Raums in hierarchische Segmente um die Lage von Objekten zu ihren Nachbarn schneller absch tzen zu k nnen reale Zeit Abgebrochen nach 20 Stunden Die Octree Datenstruktur erwies sich in der K rze der Zeit als nicht beherrschbar Selbst die vereinfachte Kollisionsabfrage mit Hilfe von Bounding Box konnte in der verblei benden Zeit nicht mehr implementiert werden Als Problem stellte sich dabei der Umfang der Bounding Box heraus Dieser war so gro dass selbst wenn die Objekte nur dicht nebeneinander lagen aufgrund der Bounding Boxen bereits eine berschneidung ausgegeben wurde Syntaxcheck auf graphischer Ebene realisieren Beschreibung Dieser Task sollte mit Hilfe der Kollisionsabfrage verschiedene Regeln graphisch berpr fen z B die berschneidungsfreiheit von Klassen w rfeln und Interfacekugeln geplante Zeit 20 Stunden reale Zeit Abgeborchen nach 8 Stunden Wie schon erw hnt war dieser Task exis tentiell abh ngig von der Kollisionsabfrage die nicht mehr implemen tiert wurde daher wurde der Task nach der H lfte der Zeit eingestellt Syntaxcheck auf AST Ebene realisieren 19s 196 17 Beschreibung des vierten Release Beschreibung geplante Zeit reale Zeit Im Datenmodell sollte berp
218. h ufig von erfahrenen Leuten gel st wurde So ist es auch Entwicklern mit weniger Erfahrung m glich bessere Entw rfe zu erstellen Des Weiteren steht Entwicklern so ein geeignetes Vokabular zur Verf gung um sich ber Probleme auszutauschen 10 1 3 Beschreibung von Entwurfsmustern Wir wollen Entwurfsmuster in einem einheitlichen Format beschreiben um sie leichter mit einander vergleichen und intuitiver verstehen zu k nnen Daher werden wir die Muster anhand des folgenden Schemas inspiriert durch die Gang of Four Gamma u a 2001 erl utern Mustername Soll auf pr gnante Weise das Verhalten des Musters beschreiben Zweck Kurze Darstellung der Intention des Musters Motivation Darstellung eines Problems zu dem das entsprechende Muster einen L sungsansatz bietet Anwendbarkeit Welche konkreten Gegebenheiten m ssen erf llt sein um das Mus ter sinnvoll anwenden zu k nnen Technische Realisie Zeigt ein Strukturdiagramm des entsprechenden Musters und be rung schreibt die einzelnen Komponenten des Diagramms sowie die In teraktionen zwischen den Komponenten Konsequenzen Erl uterung der Vor und Nachteile des Musters 10 1 4 Klassifizierung von Entwurfsmustern Die meisten Entwurfsmuster lassen sich in drei Unterarten aufgliedern je nachdem welchen Zweck sie verfolgen Erzeugungsmuster Betreffen den Prozess der Objekterzeugung Strukturmuster Behandeln die Zusammensetzung von Klassen und Objekten
219. h alles vorstellen Wie findet man nun eine ideale Granularit t f r sein Projekt Es werden also Kriterien ben tigt die uns bei der Entscheidung helfen was zu einem Objekt gemacht werden soll Zu unserer Erleichterung gibt es Strukturmuster die sich genau mit der Granularit t von Objekten befassen Wir haben bereits ein Muster kennen gelernt dass in diese Kategorie passt das Fassadenmusster Es ist f r Objekte zust ndig die ganze Subsysteme repr sentieren wollen also einen geordneten und leichte Zugriff auf den Heuhaufen bieten Ein Schl ssel zur erfolgreichen Wiederverwendung von Software liegt in der Erkenntnis dass sich die Anforderungen an eine Anwendung oder an eine Klassenbibliothek mit der Zeit wandeln k nnen Mann ist damit gut beraten diesen Wandel von Anfang an mit einzuplanen damit ihre Systeme diese Evolution mitmachen k nnen Software sollte also in der Lage sein sich neuen Gegebenheiten anzupassen ohne dabei zeit und kostenintensives Neudesign n tig zu machen Entwurfsmuster stellen sicher dass solche nderungen m glich bleiben da sie die Ver nderbarkeit von bestimmten Teilen des Systems erlauben ohne auf andere Teile dabei Einfluss zu nehmen Es wird also eine gewisse Robustheit f r nderungen geschaffen Bereits mit den wenigen Mustern die wir nun kennen gelernt haben ist schon eine grosse F lle von nderungsvorhersehbarkeiten m glich Mit dem kurz angerissenen Muster Abstrak te Fabrik lassen sich
220. h auch die Klassen die die Controller Komponente des MVC Konzepts bilden Die Aufgaben der einzelnen Klassen werden im Fol genden beschrieben e Die Klasse PluginController ist die Basisklasse des Plugins und stellt die Schnitt stelle zwischen Eclipse und dem Plugin dar Sie bietet Methoden zur Verwaltung des eigenen Datenmodells und Methoden um auf den Editor zuzugreifen e Die Initialisierung des eigenen Datenmodells sowie das Registrieren der vom Plugin ben tigten Klassen beim Controller geschieht mit Hilfe einer Instanz von der Klasse PluginInitializer Ausserdem wird von einem Objekt dieser Klasse eine XML Konfigurationsdatei eingelesen in der spezifiziert ist wie das Eclipse Datenmodell um das eigene zu erweitern ist 19 1 Die Kernkomponenten e Das Objekt der Klasse EffectsPlugin wird von der Eclipse Workbench zur Kommu nikation mit dem Plugin ben tigt e Um Daten zu einem Objekt aus der 3D Szene im Property View von Eclipse anzuzei gen existiert die Klasse EffectsPropertyPage Eine Instanz dieser Klasse reagiert sobald in der 3D Szene ein Objekt ausgew hlt wird und stellt dessen Daten der Instanz der Klasse EffectsProperty zur Verf gung e Die Klasse EffectsPerspectiveFactory hat die Aufgabe das Layout der Eclipse Perspektive des Plugins festzulegen e Mit Hilfe der Klasse Screenshooter kann ein Screenshot der 3D Szene erstellt wer den Ein direkter Zusammenhang besteht zwischen der Klasse Plug
221. hen Paketen und ihren Unterpaketen gegeben Eine bersicht ber das Datenmodell ist in Abb 17 4 zu sehen Das Datenmodell wird durch eine Fassade gekapselt um einen einheitlichen Zugriff zu gew hrleisten und das MVC Konzept zu realisieren Der Zustandsautomat Die Struktur des Zustandsautomaten wurde wie geplant und in 17 5 1 beschrieben umge setzt Das zugeh rige Zustandsdiagramm wurde im Zuge der Umsetzung den Erfordernissen entsprechend verfeinert Der CameraMode ist weiterhin der Einstiegspunkt des Automaten Von hier aus kann man die vier Einf gemodi PackageInsertMode ClassInsertMode InterfaceInsertMode und AssociationInsertMode erreichen Au erdem ist der ber gang in den ObjectSelectedMode m glich Aus diesem Zustand kann man weitere Zust n de erreichen um Objekte zu l schen oder zu verschieben Ist ein Paket selektiert so ist es m g lich vom ObjectSelectedMode aus die Interface Class und PackageInsertModi 05 N 17 5 Vorstellung der implementierten Architektur v puew jalz ueIS yon eu Pelgonels Snpojyy LONEIZOSSY yoniqay Jeqjoo YOI Jeqjoo TE snpoyy Hasuj uebielseg PIauley Sp ue y j g sapu oo sap Bunpuig UBJYNJYOINP oO usga yosion eiawey D planyols wi oo snpoyy AOW Bemeq qO yon qay yon qay rn y ppew eloo anuey yon qay
222. her verbatim or with modifications and or translated into another language Hereinafter translation is included without limitation in the term modification Each licensee is addressed as ce you Activities other than copying distribution and modification are not covered by this Li cense they are outside its scope The act of running the Program is not restricted and the output from the Program is covered only if its contents constitute a work based on the Program independent of having been made by running the Program Whether that is true depends on what the Program does 1 You may copy and distribute verbatim copies of the Program s source code as you re ceive it in any medium provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty keep intact all the notices that refer to this License and to the absence of any warranty and give any other recipients of the Program a copy of this License along with the Program You may charge a fee for the physical act of transferring a copy and you may at your option offer warranty protection in exchange for a fee 2 You may modify your copy or copies of the Program or any portion of it thus forming a work based on the Program and copy and distribute such modifications or work under the terms of Section 1 above provided that you also meet all of these conditions a You must cause the modified file
223. hier als erstes die mathematischen Grundlagen kurz angespro chen Des weiteren werden die Grundlagen diverser visueller Verfahrenstechniken und deren Verwendung vorgestellt und erl utert Die darauf folgenden Kapitel besch ftigen sich mit dem Aufbau von Java3D dessen Klassenbibliotheken dem zentralen Begriff des Scenegraphen und verschiedenen Konstrukten in ihm Abschlie end wird auf die Realisierung einiger einfacher Beispiele eingegangen 11 2 Grundlagen Bevor wir mit Java3D beginnen m ssen wir erst ein paar mathematische Grundlagen des drei dimensionalen Raumes ins Ged chtnis zur ckrufen Dabei setzten wir als bekannt voraus was Vektoren Matrizen Linien und Ebenen sind Danach werden hier ein paar Renderingtechni ken erkl rt die Java3D verwendet 11 2 1 Mathematische Grundlagen Wir werden jetzt als erstes einige der notwendigen mathematischen Grundlagen die f r die 3D Visualisierung ben tigt und in Java3D verwendet werden behandeln Dies sind insbe sondere Polygone homogene Koordinatensysteme und verschiedene Transformationen wie Translation Rotation Skalierung Spiegelung und Projektion Polygone Polygone sind Vielecke die allerdings nicht regelm ig ausgerichtet sein m ssen Sie k nnen als Tupel von Vektoren d h als Matrix ihrer Einzelpunkte dargestellt werden Dabei m ssen alle Punkte in derselben Ebene liegen bei Dreiecken automatisch erf llt 11 Java3D Homogene Koordinatensysteme Homoge
224. hm nnchen in das bereits bestehende Oval gezeichnet wird Es kann also auf der einen Seite relativ frei gezeichnet werden w hrend auf der anderen Seite die Bedingungen noch w hrend des Zeichnens gepr ft werden und die Ausf hrung unter Umst nden verhindert wird 7 4 2 Erkennung Wie beim Erkennen einer vorliegenden Grafik vorgegangen wird soll an dem Beispiel aus Abbildung 7 5 erl utert werden Das Vorgehen wird hierbei unabh ngig von einer konkreten Implementierung betrachtet da die Suche nach einer wirklich effizienten Umsetzung immer noch Ziel der Forschung ist Helm und Marriott 1991 Ein m gliches Vorgehen w re die gegebenen Beschreibungen der Deklaration herzuneh men schablonen hnlich auf die gegebene Grafik zu legen und mit dieser zu vergleichen Aufgrund des exakt beschriebenen Aussehens innerhalb der Deklaration kann hier ein gu ter Vergleich zwischen der deklarierten Vorgabe und der gegebenen Grafik gezogen und diese 7 5 Abgrenzung gegen Graphgrammatiken Abbildung 7 5 Beispielgrafik zu Erkennung wiederum relativ einfach erkannt werden So l sst sich erkennen dass hier ein Rechteck und ein Oval vorliegen welche durch eine Linie miteinander verbunden sind Der Vergleich mit den Deklarationen ergibt dass es sich bei dem Rechteck eindeutig um einen Akteur und bei dem Oval um einen Anwendungsfall handelt Das Erkennen der Linie an sich ist dann keine Besonderheit mehr Es soll vereinfachend angenommen werden da
225. hmale Streuung darstellen will ein gro es n braucht Es mu klar gestellt werden da das Phong Modell nur eine Ann herung an die Reali t t sein kann So sind insbesondere metallene Oberfl chen in ihrem Reflexionsverhalten viel komplexer Painter s Algorithmus Ein sehr einfaches wenngleich beschr nktes Schattierungsverfahren ist der sogenannte Pain ter s Algorithmus Br derlein und Meier 2000 S 129 Es wird dabei eine Maltechnik f r Deckfarben algorithmisch nachvollzogen Bei dieser Technik werden zuerst die weiter hinten gelegenen Objekte gemalt Nach und nach werden diese durch weiter vorne liegende Objekte ganz oder teilweise verdeckt Dieses Verfahren funktioniert in vielen F llen ganz gut jedoch k nnen in manchen Sze nen Probleme auftreten da die Objekte im dreidimensionalen Raum nicht in eine eindeuti ge r umliche Reihenfolge gebracht werden k nnen und damit sich berschneidende Objekte nicht richtig gezeichnet werden k nnen Z Buffer Verfahren Beim Z Buffer Verfahren wird zu jedem Punkt eines Polygons und nicht wie im Painter s Algorithmus zu jedem Objekt individuell eine Tiefeninformation z Wert berechnet und zu s tzlich zur Farbinformation abgespeichert Die Sichtbarkeitsbestimmung kann dann pixel 11 Java3D weise geschehen Dazu wird erst die Farbe aller Pixel auf die Hintergrundfarbe gesetzt und der z Wert aller Pixel wird auf das Maximum gesetzt Dann werden f r alle Polygone w h rend
226. hre syntaktische Korrekheit zu pr fen Allerdings sind Algorithmen die das Pr fen letztendlich durchf hren nicht sehr einfach zu realisieren Algorithmen die Grammatiken auf Zeichenketten berpr fen lassen sich recht ef fizient programmieren Algorithmen f r Graphgrammatiken m ssen jedoch noch das Einbet tungsproblem beachten Hierdurch entstehen zum einen betr chtliche Performanzeinbu en zum anderen steigen die Komplexit t des Algorithmus und sein Implementierungsaufwand Es muss also abgew gt werden ob dies alles zur Pr fung der Software Strukturen im Editor Framework genutzt werden soll oder ob die vom Anwender durchgef hrten nderungen am Diagramm direkt in Quellcode bersetzt werden um sie dann vom Compiler der verwendeten Programmiersprache pr fen zu lassen Dabei muss dann allerdings die Ausgabe des Compilers noch entsprechend analysiert werden ee KaL Der deklarative Ansatz Sven Wenzel 7 1 Einleitung Visuelle Sprachen werden in der Informatik zunehmend verwendet Zum Beispiel eignen sich Petrinetze Ghezzi u a 1999 Kapitel 5 um Programmabl ufe zu simulieren w hrend sich UML Klassendiagramme Hitz und Kappel 2002 Kapitel 2 1 hervorragend anbieten um Softwarestrukturen zu modellieren Die Diagramme werden hier zum Austausch von Infor mationen genutzt Zwei Softwareentwickler k nnen so unabh ngig ihrer Herkunft sicher stellen dass sie bei einer Unterhaltung ber die gleichen Dinge spreche
227. ht mehr Objekte vom Typ MethodObject sondern vom Typ MethodInfor mationWrapper gespeichert Zus tzlich werden im MethodInformationWrapper noch die zugeh rigen RealOb jects verwaltet Diese nderungen wurden notwendig da sich w h rend der Implementierung weitere Anforderungen an das Datenmodell ergaben Weiteres hier zu findet sich in der Beschreibung der realisierten Architektur Diagramm HotSpot In der implementierten Architektur wurden die graphischen Elemente wie geplant realisiert Zur besseren Wiederverwendbarkeit wurden zus tzlich die Interfaces SQGraphicalObject und SQArrowLoDVector angelegt Regel HotSpot Wie in Abbildung 16 3 zu erkennen ist wurde in der implementierten Ar chitektur die grobe Planung der Berechnungsklassen weiter konkretisiert Diese Verfeinerung war notwendig da in der Modellierungsphase noch nicht alle sich aus der Implementierung ergebenden Implikationen vorherzusehen waren So waren insbesondere weitere Kenntnisse ber die Verwaltung des AST und die Architektur des zur Ermittlung von Methodenaufrufen verwendeten Eclipse internen Plugins zu gewinnen Zusammenfassend ist zu bemerken dass die geplante Architektur die strukturell durch die 177 178 16 Beschreibung des dritten Release Verwendung des Frameworks vorgegeben war umgesetzt worden ist W hrend der Imple mentierungsphase erfolgten noch einige Erweiterungen im Datenmodell und die notwendige Konkretisierung der groben Planung der Berechnungsk
228. hy Plugin geliefer ten Ergebnisse geeignet aufzubereiten und die ben tigten Zusatzinfor mationen hinzuzuf gen Alle gesammelten Informationen sollten dann in der Datenstruktur gespeichert werden geplante Zeit Null Stunden da auch dieser Task w hrend der Implementierung aufge treten ist reale Zeit 18 Stunden Diese Aufgabe war viel aufwendiger als zun chst gedacht Es mussten sehr viele einzelne Java Syntax spezifische F lle betrachtet werden Auch musste es m glich sein wiederverwendete Objekte auch als solche zu markieren so dass sie nicht mehrfach im Diagramm auf tauchen Die Fallunterscheidung wurde insgesamt sehr komplex Anzu merken ist dass spezielle F lle wie innere und innere anonyme Klassen der Einfachheit halber nicht betrachtet werden Berechnung des Szenegraphen aus dem Datenmodell Beschreibung Die in dem Datenmodell gehaltenen Daten sollten nun mittels eines Sze negraphen visuell dargestellt werden geplante Zeit Null Stunden da der Task erst in der Implementierung hinzugekommen und somit nicht gesch tzt wurde reale Zeit 24 Stunden wurden f r die Realisierung ben tigt Es traten viele im Vor feld nicht bedachte Kleinigkeiten auf Weiterhin gab es Abh ngigkeiten zu den beiden ebenfalls aufwendigen Tasks Berechnung aller existie renden Objekte sowie ihre Initialposition in den Ebenen und Markie rung der rekursiven Ebenen Bestimmung der aufrufenden Objekte und Einf gung in die Datenstrukt
229. iagramMS 36 7 3 Deklaration des Strichm nnchens 36 7 4 Deklaration der Relation 38 7 5 Beispielgrafik zu Erkennung 39 8 1 Die Workbench von Eclipse 43 8 2 Die Komponenten der Eclipse Plattform Daum 2003 45 8 3 Extension Zusammenhang zwischen zwei Plugins Eclipse Foundation 2003 46 8 4 Baumstruktur des ActionSet Beispiels 0 51 10 1 Beziehung zwischen Model und View Objekten Gamma u a 2001 67 10 2 Ablauf der Interaktion zwischen den 3 MVC Komponenten Gamma u a 2001 68 10 3 Struktur der Abstrakten Fabrik am Beispiel 69 10 4 Kompositumstruktur 2 22 2 220m mn 71 TWO Fassade A A NEE A A ae a 72 10 6 Fassadenstrukl ur EE a na Rea eae we ee 73 10 7 Adapterstruktur 22222 2 a ee 75 10 8 Besucherstruktur lt o sc occ aie ie 2 a a EN e En e 78 10 9 Iteratorstruktur EEN ee en a 80 11 1 Der RBG W rfel Br derlein und Meier 2000 86 11 2 Gl nzende und matte Reflexion Br derlein und Meier 2000 87 11 3 RayTracing Br derlein und Meier 2000 89 11 4 Affines Mapping Br derlein und Meier 2000 90 Xiv ABBILDUNGSVERZEICHNIS 11 5 Perspektivisches Textur Mapping Br derlein und Meier 2000 11 6 Textur und K rper mit projizierter Textur Br derlein und Meier 2000 11 7 Szenegraph Hierachie VS TOGO erer rer nee ee ee ER 11 9 kompletter Sze
230. icensees extend to the entire whole and thus to each and every part regardless of who wrote it Thus it is not the intent of this section to claim rights or contest your rights to work written entirely by you rather the intent is to exercise the right to control the distribution of derivative or collective works based on the Program In addition mere aggregation of another work not based on the Program with the Pro gram or with a work based on the Program on a volume of a storage or distribution medium does not bring the other work under the scope of this License You may copy and distribute the Program or a work based on it under Section 2 in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following a Accompany it with the complete corresponding machine readable source code which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange or b Accompany it with a written offer valid for at least three years to give any third party for a charge no more than your cost of physically performing source distri bution acomplete machine readable copy of the corresponding source code to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange or c Accompany it with the information you received as to the offer to distribute cor responding source code Thi
231. ichtige Unterscheidungskriterien dieser Methoden sind die Struktur der Daten die damit visualisiert werden kann die Dynamik der Visualisierung und die M glichkeit Teilbereiche der Darstellung zu fokussieren Es werden zun chst Techni ken vorgestellt mit deren Hilfe hierarchische Strukturen dargestellt werden k nnen danach geht es um Methoden f r die Visualisierung allgemeinstrukturierter Daten Im letzten Unter kapitel werden Techniken betrachtet die nicht auf eine bestimmte Zusammenhangsstruktur beschr nkt sind sondern sich allgemeiner mit dem sogenannten Fokus und Kontextproblem befassen 12 2 1 Techniken zur Darstellung von Hierarchien In diesem Unterkapitel geht es um Techniken zur Darstellung baumartiger Strukturen Bei der Visualisierung von Javaprogrammen ergeben sich solche strukturellen Zusammenh nge z B bei der Gliederung von Programmteilen in Pakete oder bei Vererbungshierarchien 101 102 12 Dreidimensionale Visualisierungstechniken un AC Be w i a Cone Tree Robertson u a 1991 b Information Cube Abbildung 12 1 Darstellung hierarchischer Strukturen Cone Trees und Cam Trees Der einzige Unterschied zwischen Cone und Cam Trees ist die Ausrichtung Cone Trees sind vertikal Cam Trees horizontal ausgerichtet Die Aussage die im weiteren ber Cone Trees getroffen werden gelten also entsprechend auch f r Cam Trees Diese Techniken sind ge eignet hierarchisch strukturierte Informationen dreid
232. idimensionalen Darstellung und Ma nipulation von Softwarestrukturen erarbeitet werden Das vorliegende Referat behandelt den Teilbereich grafische Editoren und dreidimensionale grafische Benutzungsschnittstellen mit dem Ziel einen berblick zu geben Eine vertiefende Bearbeitung kann wegen des gro en Themenumfangs nat rlich nicht erfolgen 13 1 1 Begriffe Editor grafischer Editor und Benutzungsschnitt stelle Grundlage f r die Diskussion ber grafische Editoren und grafische Benutzungsschnittstellen ist eine klare Definition der Begriffe Editor grafischer Editor und Benutzungsschnittstelle Ein Editor ist laut Rechenberg und Pomberger 2002 ein Werkzeug zur Eingabe Ver n derung und Darstellung von Daten aller Art Hierzu z hlen zum Beispiel Text Grafik oder Musik Grafische Editoren sind spezielle Editoren die die Bearbeitung von Daten unterst tzt durch grafische Hilfsmittel erm glichen Dabei werden die Daten durch grafische Elemente repr sentiert und k nnen so komfortabel bearbeitet werden Der Begriff Benutzungsschnitt stelle umfasst nach Webnox Corporation 2003 alle Bestandteile eines Rechensystems die dem Nutzer Daten visuell akustisch oder in anderer Form darstellen oder ihm M glichkeiten zur Eingabe geben 13 1 2 Diagrammeditoren und Interaktionskonzepte grafischer Editoren Das von der PG zu entwickelnde Editorframework zielt auf Softwarestrukturen ab Grafische Editoren die einen objektorientierten Softwareentwu
233. ie dargestellt werden Testergebnis bestanden Anmerkung Visueller Test Pro Methodenaufruf ist eine Ebene erforderlich auf der der Methodenaufruf durch einen Pfeil dargestellt wird Testergebnis bestanden Anmerkung Aufgrund der bersichtlichkeit wurde entschieden dass eine visuelle Ebene nur dann eingezeichnet wird wenn ein neues Objekt erzeugt wird Bei einem Methodenaufruf ist neben dem Pfeil f r den Methodenaufruf auch noch der Parameteraufruf mittels eines Pfeiles einzuzeichnen Testergebnis nicht bestanden Anmerkung Aus Zeitgr nden wurde diese User Story nicht implementiert Die beiden Arten f r Methoden und Parameterpfeile sollen unterschiedliche Farben besitzen Testergebnis nicht bestanden Anmerkung Da die Parameterpfeile nicht implementiert wurden wurde dieser Test nicht bestanden F r zuk nftige Implementierungen ist dies allerdings kein Problem da die Klasse die den Pfeil repr sentiert eine Funktion zur nderung der Farbe zur Verf gung stellt A KAPITEL 17 Beschreibung des vierten Release 17 1 Einleitung Armin Bruckhoff Das vierte Release bestand zun chst darin ein neues Diagramm auf Basis des Klassenpa ketdiagramms von Engelen Engelen 2000 zu implementieren und in diesem Editierbarkeit Codesynchronisation und Interaktion zur Verf gung zu stellen Im darauf folgenden f nften Release der urspr nglichen Planung sollten dann die M glichkeiten zur Interaktion aus dem speziellen Di
234. ie in den zweidimensionalen Bildraum transformiert werden wie in Abb 11 5 darge stellt Dadurch liefert diese Methode auch bei perspektivischer Ansicht geometrisch korrekte Bilder Sie ist allerdings mit h herem Berechnungsaufwand verbunden Projezierte Texturen In dieser Texturart werden die Texturkoordinaten der projizierten Texturen aus der aktuellen Position der einzelnen Polygone im Raum berechnet Es entspricht wie in Abschnitt 11 2 2 erw hnt der Projektion des Bildes eines Diaprojektors auf ein Objekt Dabei kann man un terscheiden ob die Position relativ zum Projektorstandpunkt oder relativ zu den Objektkoor dinaten betrachtet werden soll Falls ersteres der Fall ist k nnen sich die Objekte relativ zur Textur bewegen Wird die Textur relativ zu den Objektkoordinaten betrachtet so bewegt sich die Textur mit dem Objekt mit wie es in Abb 11 6 dargestellt ist Mip Mapping In einer Szene aus Objekten mit derselben Textur k nnen sich diese Objekte in unterschiedli chen Entfernungen zum Betrachter befinden Um die Texturen f r jede Entfernung nicht neu berechnen zu m ssen benutzt man Mip Mapping Dabei wird vor der eigentlichen Verwen dung der Texturen f r verschiedene Entfernungen die Textur berechnet und die Ergebnisse gespeichert Dabei wird lediglich ein Drittel mehr Speicherplatz gebraucht Die Erzeugung der Mip Map muss nur einmal stattfinden da sie danach gespeichert werden kann Bei der Darstellung eines Polygons wird
235. ie notwendigen Plugins als import Element in einem requires Element mit in das Plugin Manifest mit aufzunehmen Das runtime Element definiert die Paketdatei der zu dem Plugin geh renden Javaklassen lt xml version 1 0 encoding UTF 8 gt lt plugin name PG444 Beispiel Plugin id PG444 pgPlug version 1 0 0 provider name PG444 org gt lt runtime gt lt library name beispiel jar gt lt runtime gt lt requires gt lt import plugin org eclipse ui gt lt requires gt lt plugin gt In den n chsten beiden Abschnitten besch ftigen wir uns mit der Frage wie die Relation Extension funktioniert also wie neue Funktionalit t der Plattform zur Verf gung gestellt und eigene Erweiterungspunkte definiert werden Wie in Abbildung 8 3 gezeigt gibt es in der Relation zwei beteiligte Plugins mit den Rollen des Basisplugins und des erweiternden Plugins 8 4 Erweiterungspunkte 8 4 1 Deklaration neuer Erweiterungspunkte Das Basisplugin stellt der Plattform neue Erweiterungspunkte zur Verf gung Es muss also daf r sorgen dass andere Plugins von diesen Erweiterungspunkten erfahren damit diese ih rerseits die Funktionalit t des Plugins erweitern k nnen Die Erweiterungspunkte werden in dem Plugin Manifest mithilfe des XML Elements extension point deklariert 8 Das Eclipse Plugin Modell Beispielsweise steht man bei der Entwicklung von Benutzerschnittstellen vor dem Problem dass Men s oder Toolbars
236. iert Dies ist eine der h ufigsten Anwendungen der Computergrafik Dabei unterscheidet man zwischen berechneten Texturen und Texturen von realen Oberfl chen die als Rastergrafik vorliegen Bei der Definition des Textur Mapping unterscheidet man zwischen parametrischen Textu ren bei denen ein Rasterbild auf ein 3D Polygon gelegt wird indem man den Eckpunkten des Polygons Texturkoordinaten zuordnet wie in Abb 11 4 und projezierte Texturen bei denen die Texturen wie bei einem Diaprojektor auf die 3D Objekte projiziert werden Affines Textur Mapping Das affine Textur Mapping ist ein einfaches parametrisches Verfahren eine Textur aus dem Textur Raum in den Bild Raum auf ein Objekt zu bertragen Dabei werden ohne Beachtung der Perspektive den Eckpunkten eines frei gew hlten Dreiecks im Bildraum entsprechende Texturkoordinaten also auch die Eckpunkte eines Dreiecks diesmal aber auf dem Objekt zugeordnet wie es in Abb 11 4 dargestellt wird Die Zuteilung der einzelnen Pixel erfolgt dann ber eine lineare Interpolation Perspektivisches Textur Mapping Ein weiteres parametrisches Verfahren das im Gegensatz zum affinen Textur Mapping mit einem Zwischenschritt arbeitet ist das Perspektivische Textur Mapping Dabei werden zuerst die Objektraumkoordinaten also die dreidimensionalen Koordinaten des Objektes bestimmt 90 11 Java3D a GE Abbildung 11 4 Affines Mapping Br derlein und Meier 2000 bevor s
237. iese Funktionalit t aus der Struktur des zusammengesetzten Objekts entfernt werden kann Dies bietet den Vorteil dass die Schnittstelle des traversierten Objekts kompakt gehalten wird auch wenn verschiedene Traversierungsarten definiert werden Anwendbarkeit Das Iteratormuster wird verwendet um den Zugriff auf zusammengesetzte Objekte zu erm g lichen ohne dabei Interna preiszugeben Mit diesem Muster lassen sich dann auch M glich keiten bieten auf demselben zusammengesetzten Objekt verschiedene Arten der Traversie rung anzubieten Ein Beispiel hierf r w re es auf einer Baumstruktur in order oder post order Durchlauf Mechanismen anzubieten je nachdem was ben tigt wird Es bietet sich des Weiteren an dieses Muster zu verwenden wenn man eine einheitliche kompakte Schnittstelle auf die Traversierungsmethoden unterschiedlicher zusammengesetzter Objekte anbieten will Also bei so verschiedenen Strukturen wie Listen oder B umen trotzdem eine gemeinsame Schnittstelle f r den Zugriff haben m chte Technische Realisierung Die Klasse terator definiert eine Schnittstelle f r den Zugriff und zur Traversierung von Ele menten Der Konkretelterator implementiert diese Schnittstelle Er verwaltet die aktuelle Po sition w hrend der Traversierung des Aggregats Die Klasse Aggregat definiert eine Schnitt stelle f r die Erzeugung eines Objekts der Klasse Iterator Wir lassen an dieser Stelle bewusst aus dass in der Schnittstell
238. ilestone zu Milestone ge ndert Ab dem Milestone 8 wurde zur Unterst tzung ein neues Plugin genutzt AST View Dieses Plugin kann im weitesten Sinne als Teil des JDT angesehen werden man muss es allerdings seperat zur Eclipse Umgebung hinzuf gen Dieses Plugin hat sehr zum Verst ndnis der AST Struktur beigetragen Informationen des AST f r das Sequenzdiagramm aufbereiten Beschreibung geplante Zeit reale Zeit Die Informationen die aus dem AST gewonnen werden konnten muss ten in einer geeigneten Form aufbereitet werden 30 Stunden Es war zun chst nicht abzusehen wie aufwendig sich die Einarbeitung in das Call Hierarchy Plugin gestalten w rde Die zun chst gesch tzte Zeit wurde doch erheblich berschritten Die tats chliche ben tigte Zeit betrug 45 Stunden U a hat das Anpassen des Call Hierarchy Plugins l nger gedauert Auch sind einige unvorher gesehene Probleme aufgetreten die im Bereich Eclipse insbesondere dem Milestonewechsel anzusiedeln sind So sind w hrend der Entwick lung auch noch Ver nderungen am Plugin aus dem ersten Release aufge treten die in der implementierten Abwandlung des Plugins eingepflegt werden mussten Datenmodell f r AST Informationen Beschreibung geplante Zeit reale Zeit Um die Informationen die aus dem Quellcode gewonnen wurden zu persistieren sollte ein entsprechendes Datenmodell entwickelt werden Vier Stunden waren vorgesehen da zun chst konzeptionelle berlegu
239. imensional darzustellen Ein Cone Tree Robertson u a 1991 ist wie folgt aufgebaut Die Wurzel jedes Teilbaumes steht auf der Spitze eines halbdurchsichtigen Kegels ihre direkten Unterknoten liegen gleichm ig verteilt auf dem Kreis der die Grundfl che dieses Kegels umschlie t Diese Anordnung wird rekur siv fortgesetzt um den gesamten Baum darzustellen Das Problem der Fokussierung eines Knotens wird bei den Cone Trees durch Animation gel st Soll ein Knoten n her betrachtet werden so wird er durch Drehung einzelner Teilb ume in den Vordergrund geholt Laut Robertson u a 1991 lassen sich mit Cone Trees Strukturen von bis zu tausend Kno ten effektiv visualisieren Ein Nachteil dieser Darstellungsform ist jedoch die Tatsache dass der ben tigte Platz besonders bei B umen mit hohem Verzweigungsgrad mit zunehmender Tiefe sehr schnell w chst Information Cubes hnlich wie Cone Trees lassen sich mit den Information Cubes Rekimoto und Green 1993 hierarchische Informationen darstellen Im Gegensatz zur Cone Tree Technik werden hier in einander verschachtelte W rfel Cubes benutzt um die einzelnen Elemente darzustellen Das Wurzelelement der darzustellenden Hierarchie wird dabei als u erster W rfel gezeichnet seine Unterelemente werden als kleinere W rfel in seinem Inneren dargestellt deren Unte relemente befinden sich wiederum in ihrem Inneren Auch diese Anordnung wird rekursiv fortgesetzt Die W nde der W rfel sind s
240. in 8 4 2 Beschreibung der Erweiterungspunkte Bei der Erzeugung eines neuen Erweiterungspunktes reicht es nicht aus diesen in dem Plugin Manifest zu deklarieren Das Problem liegt darin dass erweiternde Plugins wissen m ssen wie die Erweiterungen aussehen m ssen also welche Informationen ben tigt werden um die Erweiterung zu instanziieren Das Ziel eines Erweiterungsschemas ist es also einen Erwei terungspunkt zu beschreiben Ein weiterer Vorteil des Schematas ist dass aus diesem eine Referenzdokumentation des Erweiterungspunktes automatisch generiert werden kann Daum 2003 Definition 8 4 1 Erweiterungsschema Das Erweiterungsschema f r einen Erweiterungspunkt definiert welche Informationen das 8 4 Erweiterungspunkte erweiternde Plugin wie zur Verf gung stellen muss damit die erweiternden Funktionen vom Basisplugin angesprochen und verwendet werden k nnen Jedem Erweiterungspunkt wird eindeutig ein Schema zugeordnet Die Beschreibung in einem solchen Schema findet in der Sprache XML Schema statt Ein Schema besteht im Wesentlichen aus Elementen auf die die Erweiterung Zugriff besitzt Die se Elemente k nnen zus tzlich mit Attributen versehen werden Ein Attribut kann einer der folgenden drei Typen sein e Der Typ java enth lt den Pfad zu einer Javaklasse e Der Typ resource enth lt den Pfad einer Ressource des Eclipse Workspace e Der Typ string enth lt einen Datenwert Hier ber werden ebenfalls Boolesche Att
241. in die Workbench mit eingebunden werden m ssen Hierzu bie tet die Eclipse Plattform in dem Plugin org eclipse ui die so genannten actionSets an Der folgende Ausschnitt aus dem Plugin Manifest beschreibt die Deklaration des actionSets Erweiterungspunktes lt xml version 1 0 encoding UTF 8 gt lt plugin id org eclipse ui name Eclipse UI version 3 0 0 provider name Eclipse org class org eclipse ui internal UIPlugin gt lt Runtime und Required Element gt lt Extension Points gt lt extension point id actionSets name Action Sets schema schema actionSets exsd gt lt hier folgen die restlichen Deklarationen gt lt plugin gt Bei der Deklaration von neuen Erweiterungspunkten ist zu beachten dass die Attribute ID und Name angegeben sein m ssen Die ID muss auch hier wieder innerhalb des Plugins ein deutig sein Um dies auch global zu gew hrleisten wird der ID die eindeutige Plugin ID vor angestellt sodass von anderen Plugins dieser Erweiterungspunkt nur ber org eclipse ui actionSets angesprochen werden kann Bolour 2003 Ein weiteres Attribut der Deklaration ist das Sche ma Dies muss nicht explizit angegeben werden es sei denn die Datei 1 besitzt einen anderen Namen als die id des Erweiterungspunktes oder aber 2 sie liegt in einem Unterverzeichnis des Plugin Hauptverzeichnisses Im folgenden Abschnitt gehen wir genauer auf diesen wichtigen Teil der Extension Points e
242. inController und der Klasse PluginInitializer Letzterer erzeugt nach dem registrieren der vom Controller ben tigten Klassen sowie dem Einlesen der Konfigurationsdatei den PluginController welcher die eigentliche Kontrollkomonente im Sinne des MVC Konzepts darstellt Anlegen eines neuen Diagramms mit einem Wizard Wenn ein neues Diagramm erzeugt werden soll so wird f r dieses Diagramm eine Datei mit der Endung efx ben tigt Diese Datei wird mit Hilfe von Wizards erzeugt Um solche Wizards anzulegen gibt es folgende Klassen im Paket plugin wizards e Die Klasse Ef fect sNewDiagramWizardPage stellt eine Seite f r den Wizard zur Ver f gung ber solch eine Seite wird der Container f r die efx Datei ausgew hlt sowie der Dateiname f r die Datei festgelegt Ein Container ist eine Ressource von Eclipse wie zum Beispiel ein Projekt e Die efx Datei wird mittels eines Objekts der Klasse Ef fect sNewDiagramWizard er zeugt Dem Wizard wird ein Objekt der Klasse Effect sNewDiagramWizardPage hinzugef gt ber welches der eigentliche Wizard die ben tigten Daten zur Erstellung der efx Datei erh lt Realisierung und Darstellung der 3D Szene Die View Komponente des MVC Konzepts wird durch die Klassen des Pakets view3d reali siert Es existieren drei Klassen deren Aufgaben im Folgenden beschrieben werden e Die Klasse Universe stellt eine Java3D Umgebung zur Verf gung in welcher die dia grammspezifische Szene gezeichnet wird E
243. indet schon vor dem Schreiben ins Datenmo dell statt 17 4 2 Taskreflexion Release 4b Persistenz des graphischen Layouts Trennung von Model und View Referenzen auf 3D Objekte aus Model entfernen Beschreibung Dieser Task wird f r die Speicherung ben tigt da die Klassen der 3D Objekte nicht das Interface Serializable implementieren Au erdem kommt die Struktur des Plugins so dem MVC Konzept n her geplante Zeit 5 Stunden reale Zeit 7 Stunden Trennung von Model und View Kontrollmethoden aus DataModelHelper in den PluginController verschieben Beschreibung Diese Kapselung war notwendig um das Speichern zu realisieren geplante Zeit 3 Stunden reale Zeit 3 Stunden Dirty Flag im Datenmodell Beschreibung Dieses Flag sollte zur Erkennung von ge nderten Objekten dienen die dann im View neu dargestellt werden m ssen geplante Zeit 5 Stunden reale Zeit 5 Stunden berarbeiten der Container Strukturen Beschreibung Das Interface Container wurde in eine abstrakte Klasse umgewandelt um allgemeine Funktionalit t bereits an dieser Stelle den spezialisierten Containern zur Verf gung zu stellen geplante Zeit 4 Stunden reale Zeit 5 Stunden 191 17 Beschreibung des vierten Release Erweiterung der Zugriffsmethoden auf den Container Beschreibung Es gibt zu jeder Resource einen MainContainer und potentiell eine Liste mit weiteren Containern z B f r Assoziationen an einer Klasse Daher mussten Methoden ges
244. ine Nummerierung ausreichen Die letzte Anforderung ist dass es eine M glichkeit geben soll die Sicht des Benutzers auf die 3D Szene auf einen vorher definierten Startpunkt zur ck zu setzen Dabei soll der Startpunkt sinnvoll gew hlt sein so dass man alle Klassen am Anfang berblicken kann 14 2 2 Abgelehnte User Stories Es war zun chst von den Kunden gew nscht dass die Visualisierung eines ausgew hlten Pa kets entweder in einem neuen Fenster dargestellt wird oder in einem neuen View in Eclipse Die zweite Variante wurde von den Entwicklern f r das erste Release abgelehnt Der Grund hierf r war dass in der damaligen Eclipse Version Eclipse 2 1 1 AWT Komponenten nicht in SWT Komponenten eingebunden werden konnten Au erdem sollte vor der 3D Szenengenerierung die M glichkeit gegeben sein eine Farbe f r ein Paket auszuw hlen wobei jedes Paket eine unterschiedliche Farbe haben soll Die Farbauswahl wurde automatisiert so dass keine manu elle Auswahl der Farben mehr n tig ist Des Weiteren wurde die Anforderung dass Klassen von einer transparenten Paketh lle umgeben sind aus zeitlichen Gr nden von den Entwicklern abgelehnt 14 3 Systemmetapher Daniel Unger Jan Wessling Die Systemmetapher ist die geplante Architektur welche als Grundlage f r die Vorgehens weise bei der Implementierung in dem Release dient Dabei st tzt sich das Release auf das Model View Controller Konzept MVC Dieses Konzept unterteilt sich in drei
245. ine Szene ist hierbei die grafische Darstel lung von Strukturen oder Objekten wie zum Beispiel Klassen oder Sequenzdiagram men e Da die Art und Anordnung grafischer Objekte in einer 3D Szene diagrammspezifisch ist wird eine Schnittstelle zwischen der allgemeinen View Komponente dem Univer sum und der in einem Diagramm generierten Szenenbeschreibung ben tigt Diese Auf gabe erf llt die abstrakte Klasse Scene indem sie abstrakte Methoden zur Verf gung N K 228 19 Die Systemarchitektur stellt Die Controller Komponente kennt jeweils die konkrete Implementierung der Sze ne und nutzt die Methoden um dem Universum also der View Komponente die darzu stellende Szene zu bergeben e Um die Flexibilit t zu gew hrleisten dass 3D Objekte in verschiedenen Diagrammen wiederverwendet werden k nnen und austauschbar sind existiert die abstrakte Klasse GraphicalObjects Sie stellt Methoden zur Verf gung um zum Beispiel das Objekt direkt im 3D Raum zu positionieren oder die Transparenz des Objekts einzustellen Navigation im dreidimensionalen Raum Das Framework stellt eine aus vielen 3D Spielen bekannte Kombination aus Maus und Tasta tursteuerung zur Verf gung Die Mausbewegung f hrt zu einer Rotation der Kamera w hrend Eingaben auf der Tastatur zu einer Kamerabewegung f hren Diese Navigation ist im Paket view3d interaction navigation realisiert Die folgenden Klassen implementieren die beschriebene Funktionalit t
246. inem Aggregat aktiv sein H tte hingegen die Aggregateschnittstelle Traversierungsmethoden m ssten diese Methoden ihre aktuelle Position in den Zustandsdaten des Aggregats speichern Daraus w rde sich allerdings ergeben dass zwei simultane Traversierungen sich gegenseitig st ren Ein weiterer Vorteil der sich beim Verwenden des Iteratormusters ergibt ist dass die Art der Traversierung leicht ge ndert werden kann indem das Iteratorobjekt durch ein anderes ersetzt wird 10 5 Schlussfolgerungen 10 4 3 Vergleich zwischen Besucher und Iterator Beim Iterator wird ber die Objekte in einem Aggregat traversiert wohingegen beim Besucher ber die gesamte Objektstruktur traversiert wird 10 4 4 Zusammenfassung Wie schon bei den Strukturmustern ist die von uns getroffene Auswahl sehr klein im Ge gensatz zu den bisher verf gbaren Verhaltensmustern Aber die Auswahl der Muster braucht auch nicht so umfangreich zu sein um zu erkennen dass Verhaltensmuster im Allgemeinen gut miteinander kombinierbar sind Sie schlie en sich also nicht gegeneinander aus sondern unterst tzen sich oftmals gegenseitig Die beiden von uns in diesem Abschnitt besprochenen Muster Besucher und Iterator k nnten z B so miteinander arbeiten dass Iterator dazu einge setzt wird um ber eine zusammengesetzte Struktur zu traversieren wobei das Besuchermuster dann Operationen f r jedes besuchte Element bereith lt Der Zusammenarbeitsaspekt erstreckt sich aber na
247. inen Schattenwurf Die einzige M glichkeit hierf r ist es einen Richtungsvektor als Lichtquelle zu definieren und dann die Schatten als Polygon zu berechnen und dieses flach auf den Boden zu legen Da der Aufwand definitiv zu hoch erschien wurde diese User Story nicht weiter verfolgt Weitere Tasks Im Folgenden werden die Tasks aufgelistet die am Anfang dieses Releases nicht eingeplant aber f r die Umsetzung vieler User Stories dringend notwendig waren Controllerkonzept erstellen Beschreibung Das Plugin sollte nach dem MVC Konzept gestalltet werden Der Con troller sollte einen Zustandsautomaten benutzen um die verschiedenen Interaktionsmodi zu unterst tzen geplante Zeit 16 Stunden reale Zeit 16 Stunden Datenmodell entwickeln Beschreibung Ein Datenmodell musste erstellt werden In diesem Release musste ein umfangreicheres Modell erstellt werden da neben Klassen Interfaces und Paketen nun auch Beziehungen zwischen diesen Elementen verwal tet werden sollten geplante Zeit 8 Stunden 189 190 17 Beschreibung des vierten Release reale Zeit 8 Stunden Datenmodell implementieren Beschreibung Das im vorangehenden Task entwickelte Datenmodell musste imple mentiert werden geplante Zeit 5 Stunden reale Zeit Es wurden 8 Stunden ben tigt da das Datenmodell w hrend der Imple mentierung weiterentwickelt wurde und die Implementierung dement sprechend angepasst werden musste Zustandsautomaten en
248. ionl forall r in Relation start r end in ActorUser amp end r in UseCase Relationen nur von Actor zu UseCase predicate Relation2 forall r in Relation start r in ActorOther amp end end r in UseCase Include Beziehungen nur zwischen UseCases predicate Include forall i in Include start i end in UseCase amp end i in UseCase Abbildung 7 2 Deklaration des Anwendungsfalldiagramms graphic Stickman X Y H W circle X W X 2 Y W X 4 W X 4 amp line X W X 2 Y W X 2 X W X 2 line X Y H Y 2 X W Y H Y 2 amp line X Y H X W X 2 Y W amp line X W Y H X W X 2 Y W Zn X gt 0 Y gt 0 amp H gt W Y W amp Abbildung 7 3 Deklaration des Strichm nnchens 7 4 Erzeugung und Erkennung von Grafiken einer Grafik formal beschrieben werden Die Bedingung Include aus Abbildung 7 2 stellt also sicher dass Include Beziehungen nur zwischen zwei Anwendungsf llen bestehen und nicht etwa zwischen zwei Akteuren Es ist offensichtlich dass der deklarative Ansatz bereits die ersten Anforderungen an ei ne visuelle Sprache vollst ndig erf llt Hierarchien werden unterst tzt wie das Beispiel des Strichm nnchens mit seiner Verschachtelung in Kreise und Linien verdeutlicht hat Zudem wird deutlich dass das Strichm nnchen mehrfach wiederverwendet werden kann um kom plexere Grafiken zu erzeugen ohne dass es hi
249. ird und zum anderen die Information ber die zus tzliche Dimension des Zielobjekts ermittelt Je nach beabsichtigter Operation wie etwa Bewegen oder Rotieren eines Objekts und je nach aktuellem Blickwinkel werden zwei Eingabekoordinatenachsen di rekt mit zwei Koordinatenachsen der dreidimensionalen Welt belegt Die Information ber die dritte Dimension wird dabei durch gute Annahmen ber die beabsichtigte Operation durch Einbeziehung zus tzlicher Nutzerinformationen und durch die Verwendung von Feedbackele menten gefunden Zu beachten ist hierbei dass nderungen der Sicht auch nderungen der Koordinatenzuordnung zur Folge haben um weiterhin eine intuitive Steuerung zu gew hrleis ten Weiterhin muss bei der Steuerung unterschieden werden ob gerade ein Datenobjekt in der dreidimensionalen Welt oder die Sicht selbst bewegt wird Grundlegend hat die Steuerung nat rlich die Aufgabe Mausbewegungen zu deuten Hier bei sind die bekannte M glichkeiten wie Anzahl und Art der Klicks und Drag amp Drop mit sinnvollen Aktionen zu belegen Feedback Eine Zentrale Rolle in der dreidimensionalen grafischen Benutzungsschnittstelle bernimmt die Feedbackkomponente denn sie ist die M glichkeit f r den Entwickler die Nutzer durch die Anwendung zu f hren und sie zu informieren Im Gegensatz zur realen Welt fehlen n m lich M glichkeiten Objekte und ihre Beziehungen intuitiv zu erfassen Feedbackelemente lassen sich nach ihrem Zweck in die zwei
250. ische Objekte ben tigt Pfeil Zylinder Qua 16 5 Vorstellung der implementierten Architektur Der Key f r die Hashtable Eintrag ist das IMethod Objekt Der Wert besteht aus dem MethodObject f r die Methode SQClassContainer calledMethodHierarchy Hashtable oo MethodObject declaringClass org jdt core IType methodObjectList List calledMethod org jdt core IMethod declaringCompilationUnit org jdt core ICompilationUnit constructor boolean parameterNames String parameterTypes String methodObjectListlterator Iterator Abbildung 16 1 Geplante Architektur des Domain HotSpots 173 174 16 Beschreibung des dritten Release der Linie Ebene sowie ein Pfeil der auf sich selbst referenziert Die Notwendigkeit diese graphischen Objekte zu erzeugen ergibt sich aus der in der Anforderung beschriebenen Syntax und Semantik des Sequenzdiagramms nach Gil und Kent Diese graphischen Objekte werden in den Klassen SOComplexArrow SQComplexCylinder SQComplexQuad SQLifeLine SQComplexLayer und SQComplexRecursiveArrow definiert die das oben angesprochene Interface GraphicalObject implementieren Regel HotSpot Im Domain HotSpot wurde ein Datenmodell zur Speicherung der Aufruf hierarchie einer gegebenen Methode entworfen Dieses Datenmodell muss durch eine ent sprechende Berechnungsklasse gef llt werden Diese Berechnungsklasse st tzt sich auf ein Eclipse internes Plugin das
251. istrierten Dateitypen Sollte ein Dateityp keinem Editor zugewiesen sein wird versucht einen externen Editor also einen Editor au erhalb der Eclipse Umgebung zu starten In der Regel enthalten die meisten Perspektiven genau einen Bereich in dem die ge ffneten Editoren und verschiedene zu den Editoren zugeh rige Views dargestellt werden Falls mehrere Editoren ge ffnet sind k nnen diese in dem zur Verf gung stehenden Bereich via Tabpages ausgew hlt werden Views Definition 8 1 3 View Ein View unterst tzt Editoren und bietet alternative Darstellungsweisen der verf gbaren Informationen oder hilft bei der Navigation und Verwaltung von Workbenchinformationen Beispielsweise unterst tzt der Navigator View die oben beschriebene Verwaltung von Doku menten in der Workbench w hrend der Properties View Editierfunktionen von Objekteigen 43 A4 8 Das Eclipse Plugin Modell schaften bietet Ressourcen Die Struktur der Ressourcen wird im so genannten Navigator angezeigt Von diesem aus kann auf die einzelnen Ressourcen zum Bearbeiten zugegriffen werden Die Workbench verwaltet drei verschiedene Typen von Ressourcen 1 Dateien 2 Verzeichnisse und 3 Projekte Dateien und Verzeichnisse entsprechen den Dateien und Verzeichnissen des zugrunde liegen den Dateisystems Verzeichnisse k nnen andere Verzeichnisse und Dateien enthalten oder auch in Projekten liegen Projekte selbst sind immer die Wurzel eines Projektbaums
252. iten Methodenaufrufen durch Benutzereingaben Somit ist eine Schnittstelle zwischen dem eigentlichen Plugin und dem Zustandautomaten realisiert welches Reaktionen sowie explizite Aufrufe entgegennimmt und an den aktuellen Zustand weiterreicht F r das FSMInterface ist es transparent welcher Zustand der Aktuelle ist Jeder spezielle Zustand muss von FSMState erben und realisert die unterschiedlichen Reaktionen auf Nutzereinga ben Als Standardmodus ist der CameraMode vorgesehen Dieser beschreibt ein Standardver halten und sollte von den spezifischen Diagrammtypen berschrieben werden daher ist als Eclipse Erweiterungspunkt realisiert Als spezifische Zust nde f r das Plugin wurden nach der Modellierung des Zustandsautomaten die Klassen RemoveMode InsertMode Object SelectedMode MoveMode AssociationMode identifiziert Abbildung 17 2 zeigt das Klas sendiagramm des Zustandsautomaten 201 17 Beschreibung des vierten Release SuoNeJOSSY 1915 MOB qOUONeROSSe dEWUSEHASTLEUJLODSOUENAUUI saujeogyelo1dddo orange OUJLOHSSEIOAKO IEUNEN ISTUEAPIIUO JauleuogeoueWeYyUIddD venu eyes yeoy e0uersiqpeunbes 1srmsuopeposse ertsetage rrssceuan Bue IsiT spoyjoul juawor3spueyq sseigiedns souteluogabeyoedado Jeureogabexoed 19U eJUODSDUE SYUIO d DAULIUO JULI ueuuuauet 4aurewuogsseioad9 ssepiadn
253. ithmische Erkennung behandelt 5 2 Grammatiken 5 2 1 Abgrenzung EBNF und CMG Constraint Multiset Grammars sind ein Ansatz zur Definition einer visuellen Sprache Die EB NF ist hingegen eine Grammatik die zur Beschreibung von Programmiersprachen verwendet wird Visuelle Sprachen unterscheiden sich in einem wichtigen Punkt von textuellen Sprachen In textuellen Sprachen erfolgt die Eingabe von Zeichen von links nach rechts entsprechend erfolgt auch die Erkennung durch einen Parser Allerdings gibt es keine nat rliche Reihenfol ge in der beispielsweise ein Zustandsdiagramm gezeichnet werden muss Helm und Marriott 1991 daher gibt es auch keine Reihenfolge in der der Parser die Zeichen bearbeiten muss Der Aufbau von beiden Grammatiken ist hnlich wobei die EBNF die hier informell an einem Beispiel eingef hrt wird einen einfacheren Aufbau besitzt Man unterscheidet in der EBNF terminale Zeichen und nicht terminale Zeichen Nicht terminale Zeichen k nnen durch eine Produktion durch eine Sequenz von terminalen und nicht terminalen Zeichen ersetzt wer den Eine Produktion hat ein nicht terminales Zeichen auf der linken Seite auf der rechten Seite eine Sequenz von terminalen und nicht terminalen Zeichen Eine Bin rziffer k nnte wie folgt beschrieben werden 5 Constraint Multiset Grammars Bin rziffer 0 1 Diese einfache Produktion sagt aus dass das nicht terminale Zeichen Bin rziffer durch die beiden terminalen Zeichen 0 o
254. ittels des Controllers eine Berechnung ausgef hrt um die Daten Klassen und Pakete sp ter in dem 3D Modell richtig anzuordnen Weiterhin schreiben sie diese neu ge wonnen Informationen in das bereits vorhandene Datenmodell Der dynamische Ablauf sieht dabei so aus dass ber einen Men punkt zun chst der Editor sowie die Umrechnung in das 3D Modell gestartet wird Diese Umrechnung st t selber nun die einzelnen Berechnungen an Diese unterteilt sich in drei Teile Es gibt eine Berechnung der Farben bei der jede Klas se gem ihrer Paketzugeh rigkeit eine spezielle Farbe erh lt Alle Klassen eines Paketes werden in der gleichen Farbe dargestellt Die Analyse der Ebeneninformationen ordnet die 121 22 14 Beschreibung des ersten Release Klassen auf verschiedene Ebenen und somit vertikal an Dabei geschieht die Anordnung auf grund der Vererbungs Hierarchien der Klassen Klassen die von keiner anderen Klasse erben stehen auf der h chsten Ebene Anschlie end wird absteigend sortiert so dass erbende Klas sen immer mindestens eine Ebene tiefer als ihre vererbende Klasse aber niemals ber dieser liegen Durch die Analyse der Haufen werden die Klassen entsprechend ihrer Paketzugeh rigkeit auf der X Z Ebene angeordnet Klassen welche zu einem Paket geh ren sind somit r umlich zueinander angeordnet Die durch die Berechnung erhaltenen Daten werden in das erweiterte Eclipse Datenmodell abgespeichert Aufgrund dieser Informationen
255. k lung des Frameworks ben tigten Basisfunktionalit ten bereitstellt Das Framework soll es erm glichen komfortabel Werkzeuge die jeweils alternative drei dimensionale Visualisierungentechniken und Metaphern zur Darstellung von Softwarestruk turen einsetzen zu entwickeln Zus tzlich kann ber das Ziel hinaus eine Validierung des generischen Ansatzes des Editor frameworks erfolgen in dem weitere Notationen Visualisierungstechniken oder metaphern auf der Basis des Frameworks konzipiert und realisiert werden Es k nnen spezifische Aspekte der Projektgruppenarbeit als Diplomarbeiten vergeben werden ee Kare 2 Geplantes Vorgehen Alexander Fronk Jens Schr der Die Projektgruppenarbeit kann grob in folgende Phasen aufgeteilt werden Einarbeitung An forderungsanalysephase und Konstruktionsphase mit eXtreme Programming die durch eine angemessene Dokumentation und ein Fachgespr ch erg nzt werden Folgende Abschnitte er l utern die einzelnen Phasen im Detail 2 1 Einarbeitung In Form von Seminarvortr gen durch die Projektgruppenteilnehmer wird die Projektgruppe an die zu l sende Aufgabe herangef hrt Dies dient der Aneignung des n tigen Fachwissens Die Einarbeitung erfolgt in folgende Themenbereiche und Problemfelder Softwaretechnische Entwurfsnotationen dreidimensionale Visualisierungstechniken Design Patterns eXtreme Programming XP Graphische Editoren Visuelle Sprachen Eclipse Java3D API Neben ein
256. k Architektur angepasst wer den 16 4 5 Screenshots Screenshots erstellen Beschreibung geplante Zeit reale Zeit Es sollte die M glichkeit geschaffen werden die generierte Szene als Screenshot zu speichern Die gesch tzte Dauer wurde mit nur einer Stunde festgehalten da eine hnliche Aufgabe bereits im MuSofT Projekt des Lehrstuhls behandelt wurde Die ben tigte Zeit betrug eine Stunde da nur die fertigen Codeschnipsel aus dem MuSofT Projekt in den ViewController eingebaut und ange passt werden mussten Speicherdialog f r Screenshots Beschreibung geplante Zeit reale Zeit Um die erstellten Screenshots auch in beliebigen Verzeichnissen spei chern zu k nnen war ein Speicherdialog n tig Eine Stunde Zwei Stunden Neben dem Dialog musste auch das Speichern an sich realisiert werden Dieses war eigentlich als Teil des vorherigen Tasks geplant ist aber mit in diesen Task eingeflossen 16 4 6 EFFECTS Perspektive EFFECTS Perspektive anlegen Beschreibung geplante Zeit reale Zeit Hier sollte eine eigene Perspektive f r das EFFECTS Framework ange legt werden Diese Perspektive sollte den Editor den Package Explorer und den EFFECTS Information View enthalten Eine Stunde Es wurden zwei Stunden gebraucht da es einige Probleme mit dem Layout der Perspektive gab insbesondere bei der Anordnung des InformationView 16 4 Reflexion ber die Tasks Men in der EFFECTS Perspektive anleg
257. ken f r Program miersprachen genauso der Fall wie bei Graphgrammatiken f r ER Diagramme Abstrakte Syntaxgraphen etc Grammatiken f r Zeichenketten werden vom Compiler einer Programmiersprache dazu be nutzt Quellcode auf syntaktische Korrektheit zu pr fen Bei Graphgrammatiken verh lt es sich genauso Hier wird gepr ft ob der Graph eine gewisse ihm auferlegte Syntax einh lt Wenn nun ein Graph die geforderte Syntax einh lt dann ist er ein Wort der Sprache der Gram matik Es gilt also das Wortproblem zu entscheiden Ist ein Graph ein Wort der Sprache einer Grammatik dann muss er durch Anwenden der Produktionen dieser Grammatik aus dem Axi om erzeugt werden k nnen Die Reihenfolge in der die Produktionen angewendet werden ist unerheblich Es gibt prinzipiell zwei Wege das Wortproblem zu l sen Um aus dem Axiom den Graphen herzuleiten m ssen alle W rter der Sprache aufgez hlt werden d h alle m gli chen Kombinationen von Produktionen werden ausprobiert Die W rter m ssen dann noch mit dem zu berpr fenden Graphen verglichen werden Aus dem zu berpr fenden Graphen das Axiom herzuleiten ist jedoch der einfachere und effizientere Weg Am Graphen lassen sich recht leicht Positionen finden an denen Produktionen r ckw rts also von rechts nach links ausgef hrt werden k nnen 6 Graphgrammatiken label wildcards B C e begin fork if S T e end assign fork join send receive if s r
258. l sst sich an schlie end ein geeigneter Startpunkt f r die 3D Darstellung berechnen Dieser soll so gew hlt werden dass zun chst alle dargestellten Klassen in dem Fenster zu sehen sind Dabei greift die Umrechnung in das 3D Modell auf das erweiterte Eclipse Datenmodell zu wo die n tigen Informationen in den entsprechenden Klassen und Paket Containern gespeichert sind An schlie end berechnet die Umrechnung in das 3D Modell einen Startpunkt und bermittelt ihn dem Editor 14 4 Reflexion ber die Tasks Armin Bruckhoff Christian Mocek Sven Wenzel Im Nachfolgenden wird ber die Tasks des ersten Release reflektiert Hierzu werden die ein zelnen Tasks kurz vorgestellt und insbesondere auf die signifikanten Probleme und die Diffe renzen in den Zeitabsch tzungen eingegangen Die gegebenen User Stories wurden zun chst wie folgt als zw lf explizite Anforderungen aufgeschl sselt und in einzelne Tasks unterteilt F r jeden der Tasks wurde anschlie end die Zeit abgesch tzt die zur Umsetzung als n tig empfunden wurde 14 4 1 Gesamtrahmen f r ein Plugin Plugin Rahmen f r Eclipse Plugin Beschreibung Ziel dieses Tasks war es den eigentlichen Plugin Rahmen zu implemen tieren der dem gesamten Plugin zu Grunde liegt und die Verbindung zum Datenmodell von Eclipse bereitstellt geplante Zeit Aufgrund der geringen Erfahrungen mit Eclipse haben wir eine Dauer von 8 Stunden veranschlagt reale Zeit Es wurden nur f nf Stunden f r
259. l die zyklische Vererbung als auch die Mehrfacherbung werden mit der gleichen Fehlermeldung abgelehnt Wenn m glich sollen die beiden Fehler jedoch unterschieden werden k nnen Es soll eine Seite bei den Eclipseeinstellungen geben mit deren Hilfe die Darstellung verschiedener Details ein und ausgeschaltet werden kann Testergebnis nicht bestanden Anmerkung Aufgrund der niedrigen Priorit t und des Zeitmangels wurde dieser Task nicht umgesetzt N 216 17 Beschreibung des vierten Release Es soll m glich sein mit Hilfe eines Property Views Eigenschaften von gew hlten Ele menten wie z B Namen Kardinalt ten Paketzugeh rigkeiten Erbungsbeziehungen zu editieren Testergebnis bestanden Anmerkung Es fehlten die Einstellungsm glichkeiten f r Erbungsbeziehungen und Paketzugeh rigkeit im Property View Namen und Farben konnten je doch bearbeitet werden Es wurde angemerkt dass Kardinalit ten und Kantenbezeichnungen f r Erbungskanten keinen Sinn machen und die entsprechenden Felder im Property View f r solche Kanten ausgeblen det werden sollten Es soll verschiedene farblich unterscheidbare Pfeile f r ungerichtete und gerichtete Assoziationen Erbung und Implementierung geben Testergebnis bestanden Anmerkung Assoziationen sollen mit Kardinalit ten beschriftet sein Testergebnis bestanden Anmerkung Im Diagramm sind die Positionen von Supplier und Client vertauscht bergeordnete Assoziationen z
260. lassen 16 6 Kunden Akzeptanztest Christian Mocek Jan Wessling Im folgenden werden die Akzeptanztests die auf den User Stories des dritten Release basieren wie sie in Abschnitt 16 2 auf Seite 159 vorgestellt wurden Im Package Explorer soll ein eigener Men punkt EFFECTS in das Popup Men ein gef gt werden In dieses Men soll es f r die Diagrammtypen m glich sein einen Eintrag zu generieren Testergebnis bestanden Anmerkung Visueller Test Es sollen Lichtquellen eingebunden werden so dass die Objekte Schatten auf den Boden werfen Testergebnis nicht bestanden Anmerkung Dieser Test ist noch aus dem zweiten Release offen geblieben Aufgrund der Zeitknappheit und der Entscheidung dass Schattenwurf f r das dy namische Diagramm nicht sinnvoll ist wurde diese Anforderung wieder mit der niedrigsten Priorit t bewertet Das Ausgabefenster soll als Eclipse Editor implementiert werden Testergebnis bestanden Anmerkung Es ist derzeit noch notwendig eine Datei mit der Endung efx manu ell anzulegen um den Editor zu ffnen Des Weiteren funktioniert dies derzeit nur unter Windows S mtliche vorhandene Tests m ssen auf die neue Framework Systematik angepasst werden Testergebnis nicht bestanden Anmerkung Problem ist hierbei der Wechsel von Eclipse 3 0M6 auf Version 3 0M8 bei der die Fragment Tests f r die einzelnen Diagrammtypen nicht mehr funktionieren Die Fragments versuchen Klassen nachzuladen was al l
261. lche Aufgaben auf mehrere Objekte verteilt und welche in einzelnen Objekten gekapselt werden sollten Nat r lich kann es aber auch sein dass man noch damit zu k mpfen hat berhaupt erst einmal eine geeignete Objektrepr sentation seiner Vorstellungen zu finden Dies ist oftmals gar nicht so einfach da in der objektorientierten Software sehr oft Klassen vorkommen die in der realen Welt keine Entsprechungen haben die man also nicht intuitiv anlegen w rde Genau hierbei k nnen uns Entwurfsmuster helfen die nicht immer offensichtlichen Ab straktionen und die dazu passenden Objekte zu finden Das unter den Strukturmustern vor gestellte Kompositum soll an dieser stelle als Beispiel dienen In diesem Muster haben wir 10 Entwurfsmuster einen Weg gefunden wie wir einfache Objekte sowie Kompositionen von ihnen auf genau die gleiche Art verwalten und benutzten k nnen Wir haben also erreicht dass wir nicht zwi schen unterschiedlichen Dingen unterscheiden m ssen die in der realen Welt durchaus einer Unterscheidung bed rfen Ein weiterer Ansatz bessere objektorientierte Software zu entwickeln besteht darin sich mit der Granularit t von Objekten zu befassen Mit dem Begriff Granularit t sei hier gemeint wie Gro und Machtig ein Objekt sein soll d h wie viele Aufgaben es bernehmen kann In einem Softwareentwurf k nnen Objekte der verschiedensten Granularit ten vorkommen vom Strohhalm bis zum Heuhafen kann man sic
262. lenFabrik TortenFabrik BalkenFabrik erzeugeSkala void erzeugeSkala void erzeugeSkala void erzeugeKomponente void erzeugeKomponente void erzeugeKomponente void lesen gt Skala Komponente TabellenSkala TortenSkala BalkenSkala TabellenKomponente TortenKomponente BalkenKomponente Abbildung 10 3 Struktur der Abstrakten Fabrik am Beispiel diese nderung zu informieren sind Das Modell benachrichtigt daraufhin alle registrierten Views Die dadurch angesto enen Views holen sich anschlie end mit Hilfe der Methode gib Zustand den neuen Zustand des Modells und ndern ihre Darstellung Das zweite Entwurfsmuster welches man in MVC finden kann ist die Abstrakte Fabrik Views k nnen die Daten des Models auf unterschiedliche Weise graphisch aufbereiten Man k nnte nun die Art wie ein konkreter View die f r ihn interessanten Daten darstellt komplett dem View berlassen Dieses Vorgehen hat nur den gro en Nachteil dass man f r jede unter schiedliche Darstellungsart eine eigene View Klasse implementieren muss Hier kann uns das Abstrakte Fabrik Muster nun dabei helfen diesen Nachteil zu umgehen indem es eine Klas se einf hrt die f r die Erzeugung der einzelnen Darstellungskomponenten verantwortlich ist Die Views k nnen nun auf die Erzeugung der f r sie konkreten Darstellungskomponenten verzichten sondern bem hen einfach eine
263. li che Visualisierung f r die Darstellung quantitativer Daten oder die Informationsvisualisierung zur Darstellung von strukturell zusammenh ngenden Daten und Informationen Das Anwen dungsfeld das im weiteren betrachtet wird ist die Softwarevisualisierung speziell die Pro grammvisualisierung Engelen 2000 Seite 13 12 1 2 Dreidimensionale Darstellungen Da es in dieser Ausarbeitung um ein dreidimensionales Visualisierungssystem geht werden hier zun chst einige Grundbegriffe aus dem Bereich der dreidimensionalen Graphik erkl rt Eine dreidimensionale Graphik auch Szene genannt besteht aus einer Vielzahl von graphi schen Objekten Um eine solche Szene auf dem Bildschirm darzustellen wird eine virtuelle Kamera benutzt Diese Kamera nimmt in Abh ngigkeit ihres Standpunktes und Blickwinkels ein Bild der Szene auf und gibt es auf dem Bildschirm wieder Durch eine Ver nderung der beiden Kameraparameter Standpunkt und Blickwinkel kann ein Benutzer in dieser Szene na vigieren Diese M glichkeit der Bewegung durch die Szene tr gt dazu bei beim Benutzer den Eindruck einer r umlichen Darstellung auf der zweidimensionalen Bildschirmfl che zu erzeugen 12 2 berblick ber die vorhandenen Visualisie rungstechniken In diesem Kapitel werden Darstellungstechniken vorgestellt die im J3Browser verwendet wer den Die einzelnen Techniken werden kurz beschrieben und soweit m glich anhand we sentlicher Merkmale verglichen W
264. llt Ein Kreuz am Ende des Aktivierungsbalkens symbolisiert die L schung eines Objektes In Abbildung 4 3 ist ein Sequenzdiagramm f r das Selektieren eines Objekts dargestellt Durch das Hineinklicken des Benutzers mit der Maus in die Zeichenfl che gibt es zwei Fall unterscheidungen 4 3 Das dynamische UML Modell Benutzer Editor Controller Programm schlie en Datei speichern Dateiname eingeben Dateiname vorhanden Editor Eigenschaften speichern Datei ersetzen berschreiben Programm beenden Abbildung 4 2 Aktivit tsdiagramm zur Abspeicherung einer Datei 1 Der Benutzer trifft eine Figur 2 Der Benutzer erh lt als Antwort dass keine Figur selektiert ist Wenn eine Figur selektiert wurde wird diese der Steuerung bergeben Diese setzt den Status der Figur als selektiert und aktualisiert ihre Ansicht Der Benutzer erh lt dann die Antwort dass eine Figur selektiert ist und h tte erst jetzt die M glichkeit die Figur zu editieren 4 3 3 Kollaborationsdiagramm Die zweite Form von Interaktionsdiagrammen stellen die Kollaborationsdiagramme dar Sie werden genau wie Sequenzdiagramme in der Analyse und Entwurfsphase eingesetzt Ein Kollaborationsdiagramm zeigt im Grunde die gleichen Sachverhalte wie ein Sequenzdiagramm jedoch aus einer anderen Perspektive Beim Kollaborationsdiagramm stehen die Objekte und ihre Zusammenarbeit Kollaboration untereinander im Vordergrund
265. m biniert angewendet werden Falls auch nur eine Technik nicht zum Einsatz kommt w rde der XP Entwicklungsprozess wie ein Kartenhaus in sich zusammenfallen d h die Softwareent wicklung w re dann nicht mehr so effektiv wie erwartet Alle Techniken sollten sich also zu einem vollst ndigen Ganzen erg nzen A KAPITEL 10 Entwurfsmuster Michel Kersjes Rene Sch nlein 10 1 Was ist ein Entwurfsmuster Entwurfsmuster sind auf Erfahrungen beruhende abstrakte L sungsbeschreibungen f r allge meine Probleme in der objektorientierten Softwareentwicklung Sie werden nicht entwickelt vielmehr werden sie gefunden und stellen dokumentiertes Expertenwissen dar Die L sungs beschreibung wird durch ihre Komponenten den Beziehungen zwischen ihnen und ihr Zu sammenspiel spezifiziert Die Muster werden stets im Entwurf verwendet und sind sprachun abh ngig 10 1 1 Die Geschichte der Entwurfsmuster Der Begriff des Musters wurde 1977 von Christoper Alexander in seinem Werk A Pattern Language gepr gt Ein Muster beschreibt ein in unserer Umwelt best ndig wiederkehrendes Pro blem und erl utert den Kern der L sung f r dieses Problem so dass man die se L sung beliebig oft anwenden kann ohne sie zweimal gleich auszuf hren Alexander u a 1977 Christopher Alexander bezieht sich mit seiner Aussage auf Muster in Geb uden und St d ten Dennoch trifft seine Aussage ebenfalls auf Entwurfsmuster im Softwaredesign zu Wa
266. m ssen auf die neue Framework Systematik angepasst werden Screenshot Es soll m glich sein Screenshots von der aktuellen Ansicht zu generieren und zu speichern EFFECTS Perspektive Es soll eine eigene Eclipse Perspektive f r das EFFECTS Framework generiert werden Zu dieser Perspektive ist ein eigenes Pull Down Men f r EFFECTS in die Men leiste hinzuzu f gen Steuerung Die Steuerung soll auf Maus und Tastatursteuerung angepasst werden hnlich wie sie in sog Ego Shootern verwendet wird Hilfe Die Hilfe zu den Extension Points und ein Tutorial zur Implementierung eigener Diagramm typen sollen als Online Hilfe in Eclipse eingebunden werden Level of Detail Objekte sollen ab einer bestimmten Distanz zur Kamera optional automatisch ausgeblendet werden k nnen 16 3 Systemmetapher Kamerafahrt Auf der Zeitachse des Diagramms soll eine automatische Kamerafahrt m glich sein Weg punkte m ssen nicht frei bestimmt werden k nnen Sequenzdiagramme Grundlage F r das Diagramm soll die Semantik von Gil und Kent wie in der Einleitung beschrieben dienen jedoch ohne Objektzust nde Erzeugung Eine automatische Generierung des Diagramms aus dem zugrundeliegenden Co de ist gew nscht Syntaxunterst tzung Es soll m glich sein bei der Erzeugung eines neuen Diagramms das aktuelle Projekt als Basis zu verwenden Ein Objekt soll als flacher Quader angelegt werden wobei von diesem Quader eine Lebenslinie auf
267. m einen Sichten einfach austau schen zum anderen sind mehrere Sichten in einer Anwendung leicht zu realisieren Das MVC Muster bildet f r grafische Benutzungsschnittstellen allgemein eine gute Ent wicklungsgrundlage F r dreidimensionale Benutzungsschnittstellen sieht Barrilleaux 2001 13 2 Bestandteile von dreidimensionalen grafische Benutzungsschnittstellen konzeptionell eine Einteilung in die sechs Komponenten Steuerung Control Feedback Vi sualisierung Visualization Navigation Manipulation und Zugriff Access vor Die Steue rungskomponente verarbeitet alle Eingaben welche sich in der dreidimensionalen Welt zum einen auf die Ver nderung der Sicht und zum anderen auf die Ver nderung der Daten beziehen Soll nun die Sicht ver ndert werden wird die Funktionalt t der Navigationskomponente ben tigt da sie f r die Bewegung von Sichtobjekten Views zust ndig ist Wenn die Darstellung der Daten in der dreidimensionalen Welt Objects ge ndert werden sollen wird die Mani pulationskomponente angesprochen F r das Hinzuf gen und Entfernen von Daten Datas zur dreidimensionalen Welt ist die Zugriffskomponente zust ndig Die Darstellung berneh men die beiden Komponenten Visualisierung und Feedback W hrend die Visualisierung f r die Darstellung der Anwendungsdaten sorgt verfolgt die Feedbackkomponente das Ziel den Nutzer durch die Anwendung zu f hren Abbildung 13 2 zeigt die sechs funktionalen Kompo nenten Die
268. mensionale Visualisierungstechniken View Wird ein Element fokussiert werden alle Beziehungen die nicht mit dem ausgew hlten Element in Ber hrung stehen stark transparent dargestellt Reduktion der Darstellungskomplexit t Au er den verschiedenen Filtertechniken gibt es im J3Browser weitere M glichkeiten die Zahl der darzustellenden Symbole und Pfeile zu verringern Es ist m glich mehrere Entit ten manuell auszuw hlen und ihre Symbole durch ein einziges Gruppensymbol zu ersetzen Eine entsprechende Methode f r Pfeile fasst Beziehungen zwischen Entit ten aus verschie denen Paketen zusammen und ersetzt deren Pfeile durch einen einzelnen Abhangigkeitspfeil zwischen jeweils zwei Paketen Die konkreten Java Beziehungen Benutzung Erweiterung Import und Implementierung werden dabei durch die abstrakte Abh ngigkeitsbeziehung er setzt Dynamische Aspekte Die dynamischen Aspekte des J3Browsers lassen sich in zwei Klassen gliedern Eine Klasse umfasst die Navigationsm glichkeiten der virtuellen Kamera also deren Bewegung in der Szene Die andere Klasse beinhaltet die interaktive Symbolanordnung Die Navigationsm glichkeiten in der Szene sind gr tenteils durch den zur grafischen Dar stellung verwendeten VRML Browser Computer Associates International Inc Islandia USA 2000 vorgegeben Zur Steuerung der Ansicht k nnen die zwei Achsen der Computermaus mit je einer Funktion belegt werden so dass achsenparallele Bewegungen
269. merkung automatische und visuelle berpr fung Mehrmaliges Aufrufen der Ge nerierung dreidimensionaler Szenen und Vergleichen der Darstellung Die automatische berpr fung wird mittels Speicherung der W rfelpo sitionen in einer XML Datei erreicht Die XML Datei wird dann bei ei nem erneuten Aufruf der Szenegenerierung mit den neuen internen Da ten verglichen Kindklassen sollen immer auf einer graphisch tiefer liegenden Ebene auch ber Pa ketgrenzen hinaus als ihre Vaterklassen stehen Testergebnis bestanden Anmerkung automatische und visuelle berpr fung Um die Korrektheit der darge stellten 3D Szene zu berpr fen werden die Ebeneninformationen die intern im Datenmodell gehalten werden mit einer vorher vom Kunden spezifizierten XML Datei abgeglichen Die XML Datei enth lt die er warteten Ebeneninformationen f r jede darzustellende Klasse Die Zuordnung der einzelnen Klassen zu einem Paket soll sofort durch ihre einheitli che Farbgebung ersichtlich sein Testergebnis bestanden Anmerkung automatische und visuelle berpr fung Es wird verglichen ob die Far be im ClassContainer einer Klasse mit der Farbe ihres Pakets ber einstimmt Es soll f r jedes darzustellende Paket automatisch eine sinnvolle Farbe ausgew hlt werden die nicht zu hnlich zu den bereits vergebenen Farben der anderen Pakete ist Testergebnis bestanden Anmerkung automatische und visuelle berpr fung Es wird automatisch berpr
270. mode Gnomovision version 69 Copyright C yyyy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY for details type show w This is free software and you are welcome to redistribute it under certain condi tions type show c for details The hypothetical commands show w and show c should show the appropriate parts of the General Public License Of course the commands you use may be called something other than show wand show c they could even be mouse clicks or menu items whatever suits your program You should also get your employer if you work as a programmer or your school if any to sign a copyright disclaimer for the program if necessary Here is a sample alter the names Yoyodyne Inc hereby disclaims all copyright interest in the program Gnomovision which makes passes at compilers written by James Hacker signature of Ty Coon 1 April 1989 Ty Coon President of Vice This General Public License does not permit incorporating your program into proprietary programs If your program is a subroutine library you may consider it more useful to permit linking proprietary applications with the library If this is what you want to do use the GNU Library General Public License instead of this License Literaturverzeichnis Alexander u a 1977 ALEXANDER Christopher ISHIKAWA Sara SILVERSTEIN Mur ray A Pattern Language Oxford University Press 1977 Barrilleaux 2001 BARRILLEAUX
271. mpfung fest 11 5 3 Erzeugen einer Geometrie Wie in dem Abschnitt 11 4 2 beschrieben ist zur Erstellung einer 3 dimensionalen Form ei nes Shape3D eine spezielle Knotenkomponente notwendig die Geometry Klasse Mit dieser Klasse wird die Topologie und Geometrie festgelegt die zwingend von der 3D Form ben tigt werden Um ein grobes Gef hl daf r zu bekommen soll in dem folgenden Beispiel ein W rfeldrahtgitter erzeugt werden Dazu wird ein spezielles GeometryArray benutzt Dies stellt eine Ansammlung von Punkten dar die je nach Art des GeometryArray auf unterschiedlicher Weise verbun den werden F r einen W rfel bietet sich das QuadArray an welches 4 Punkte zu einem Viereck verbindet Zur Verdeutlichung nochmal die Vererbungshierarchie NodeComponent gt Geometry gt GeometryArray gt QuaddArray 1 Point3d myCoords new Point3d 24 2 myCoords 0 new Point3d 1 0 1 0 1 0 3 QuadArray myGeom new QuadArray myCoords length QuadArray COORDINATES 4 myGeom setCoordinates 0 myCoords Shape3D myCube new Shape3D 6 myCube setGeometry myGeom ul Ein W rfel besteht aus 6 Seiten und jede dieser Seiten hat 4 Eckpunkte Somit muss ein Feld mit 24 Punkten erzeugt werden Anschlie end wird in Zeile 3 ein QuadArray Objekt instanziiert Nun wird dem Objekt in Zeile 4 das eigentliche Feld bergeben und mitgeteilt welches der Startknoten in dem Feld ist in diesem Fall also Element 0 Diese fertige Geometrie mu
272. mpirische Studie mit zahlreichen Beispielen durchf h ren indem man auch andere Diagrammarten mit einbezieht Aber es wird in diesem Beispiel doch sehr deutlich dass die Anordnung der Klassen in einem Cone Tree die bersichtlichkeit sehr stark verbessert Vor allem die Erbungshierarchie wird sehr deutlich und berschaubarer als die Darstellung in 2D Auch die M glichkeit dass man in der dreidimensionalen Darstel lung zus tzlich die Pakete visualieren kann zu denen die Klassen geh ren tr gt sicherlich einiges zum besseren Codeverst ndnis bei 247 22 3 Beispiel ogBuipunogpsyog xogbuipunog e Roses AD J2jeIpaw iaju G Sen ees 22374du3 14342121H f PAP TINS unuysasaqsBunupiouy e ajgsbunpuiquar Abbildung 22 1 Zweidimensionale Darstellung von Klassenstrukturen mit Omondo 248 22 Ausblick Anardnurgsberechnung YerbindungsPfeil anordnung 1 l 1 H 1 1 l l U H 1 1 I 1 l H 1 Abbildung 22 2 Dreidimensionale Darstellung von Klassenstrukturen mit EFFECTS TEIL 6 Anhang A ANHANG A Code Konventionen Christian Mocek A 1 Namenskonventionen A 1 1 Pakete Paketnamen werden grundlegend klein geschrieben A 1 2 Klassen und Interfaces 1 Namen beginnen mit einem Gro buchstaben und jedes interne Wort ebenfalls 2 Abk rzungen m ssen vermieden werden soweit diese nicht bekannt sind 3 Der Name sollte kurz abe
273. n Assoziationen Assoziationen zwischen Paketen sollen als Sammelpipes zwischen den Paketen dargestellt werden Weiter soll es m glich sein verschiedene Arten von Assoziationen zu benutzen z B gerichtete und ungerichtete 17 3 Systemmetapher Jan Wessling Armin Bruckhoff Die Systemmetapher des zusammengefassten vierten und f nften Releases ist eine Realisie rung des Model View Controller Konzepts In diesem Release wurde die fr here Umsetzung analysiert und eine striktere Trennung der einzelnen Teile implementiert Bisher war es so dass Teile der Kommunikation direkt zwischen Model und View stattfanden Dies wurde un terbunden Die Kommunikation von Model und View erfolgt ausschlie lich ber den Control ler Der Controller wurde dabei als Zustandsautomat realisiert der die verschiedenen Bearbei tungsmodi in seinen Zust nden erfasst Alle Eingaben vom Benutzer werden ber den Auto maten an das Datenmodell weitergereicht Desweiteren sind keine Referenzen im Datenmodell auf Teile des Views vorhanden Gleichzeitig wurde der Zugriff auf das Datenmodell mit Hilfe einer Fassade gekapselt um den Zugriff auf unsere Container zu vereinfachen 17 4 Reflexion ber die Tasks Semih Seving Michael N the Michael Pflug Rene Sch nlein Im Nachfolgenden wird ber die Tasks des vierten und f nften Releases reflektiert Hierzu werden die einzelnen Tasks kurz vorgestellt und insbesondere auf die Differenzen in den Zeit absch tzungen
274. n vorausgesetzt bei de beherrschen diese visuelle Sprache Dar ber hinaus ist es ebenfalls m glich nicht visuelle Sachverhalte in Grafiken zu konvertieren oder aber gegebene Grafiken weiter zu verarbeiten So kann beispielsweise aus einem UML Klassendiagramm heraus Quellcode erzeugt werden Damit dies funktioniert ben tigen visuelle Sprachen genauso wie nat rliche oder Program miersprachen eine klare Definition ihrer Syntax und ihrer Semantik Die Spezifikation der Be ziehung zwischen einer Grafik und ihrer Bedeutung ist daher das Kernproblem der visuellen Sprachen Helm und Marriott 1991 und wird in der Informatik durch verschiedene Ans tze wie zum Beispiel Graphgrammatiken Sch rr und Westfechel 1992 oder Contraint Multi set Grammars Helm u a 1991 angegangen Ein weiterer Ansatz ist der deklarative Seine Funktionsweise unterscheidet sich jedoch deutlich von grammatikalischen Ans tzen wie in Kapitel 7 5 gezeigt wird Zun chst soll in Kapitel 7 2 der deklarative Ansatz an einem kleinen Beispiel vorgestellt werden Anhand dieses Beispieles werden dann im darauffolgenden Kapitel die Eigenschaften beschrieben Kapitel 7 4 wird sich mit den Funktionsweisen des deklarativen Ansatzes bei der Erzeugung und der Erkennung von Grafiken befassen 7 2 Einleitendes Beispiel Das Diagrammm in Abbildung 7 1 zeigt ein Anwendungsfalldiagramm der UML Hitz und Kappel 2002 Kapitel 2 3 Wir sehen einen Actor Sven der ein Seminar vorbereite
275. n gen eingeplant wurden Vier Stunden Das Modell wurde nach dem entwickelten Entwurf imple mentiert und die entsprechenden Tests wurden geschrieben Berechnung der Anzahl der Ebenen aus dem Datenmodell Beschreibung geplante Zeit Dieser Task wurde erst w hrend der Implementierung in die Taskliste aufgenommen Es sollte die Anzahl der verschiedenen Ebenen berechnet werden die f r das Erzeugen der Szene n tig sind Null Stunden da diese Taskkarte erst im Laufe der Implementierung hinzugef gt und somit nicht gesch tzt wurde 16 4 Reflexion ber die Tasks reale Zeit Da eine etwas aufwendigere Rekursion implementiert wurde wurde eine Zeit von etwa zwei Stunden ben tigt Berechnung aller existierenden Objekte sowie ihre Initialposition in den Ebenen Beschreibung Bei diesem Task sollen die in dem Sequenzdiagramm auftretenden Ob jekte berechnet und ihre Position auf den Ebenen bestimmt werden geplante Zeit Null Stunden da dieser Task erst im Laufe der Implementierung hinzu gef gt und somit nicht gesch tzt wurde reale Zeit Die Realisierung ben tigte 16 Stunden da ein gr erer Aufwand darin bestand das graphische Objekt zu ermitteln Aus den Methodenobjekten des AST mussten die darzustellenden graphischen Objekte berechnet werden Markierung der rekursiven Ebenen Bestimmung der aufrufenden Objekte und Ein f gung in die Datenstruktur Beschreibung Dieser Task hatte zur Aufgabe die vom Call Hierarc
276. n werden 11 5 1 Verschieben eines Gegenstands Zum Verschieben eines Gegenstands tr gt im wesentlichen die Klasse Transform3D bei Diese wird direkt von java lang object abgeleitet Deren Objekte sind somit eigen st ndig und vom Szenegraphen unabh ngig In diesem Objekt wird im allgemeinen Fall die wie in Abschnitt 2 1 3 beschrieben f r Transformationen ben tigte 4x4 Matrix gespeichert Die Matrix kann dem Transform3d Objekt bei der Instanziierung in Form eines Arrays mit 16 Elementen bergeben werden 11 5 Realisierung einiger Problemstellungen Ce ____ VirtualUniverse ed ContentBranch cont ViewBranch BG y BG Ka y y ZA IS TG TG bh o e kaz J N P View gt Canvas3D shape3D ViewPlatform EOS E geom appear e 2 Abbildung 11 9 Der Szenegraphen eines kompletten Programms Um nun einen Gegenstand oder hnliches Element Lichtquelle oder Schallquelle zu ver schieben muss die Transformation der TransformGroup mitgeteilt werden an dessen Kindknoten sich das entsprechende zu verschiebende Objekt im Szenegraphen befindet Dazu bietet die Klasse TransformGroup die Methode setTransform Dieser wird das Transform3d Objekt bergeben Alternativ kann bei Erzeugung einer TransformGroup direkt eine Transformation bergeben werden Falls dies nicht geschieht wird bei der Instanzi ierung die Einheitsmatrix erzeugt Das heisst dass alle Objekte die an die Transfo
277. n 3D Szene zur ckliefert Diese Methode wird vom Editor aufgerufen um die die Szene darstellende BranchGroup an das Universum zu binden und damit anzeigen zu k n nen Des Weiteren gibt es zu berschreibende Methoden welche Parameter des Universums zur ckliefern Folgende Parameter stehen hierbei zur Verf gung e H he des Universums e Breite des Universums 240 20 Vorgehensweise zum Erstellen eines neuen Diagrammtyps e Tiefe des Universums e Startposition der Kamera im Universum 20 3 5 Das Datenmodell Paket de 1s10 effects core datamodel Die abstrakte Klasse Container bietet die Basisfunktionen an um das Eclipse Datenmodell erweitern und diagrammspezifische Informationen in einem eigenen Datenmodell speichern zu k nnen Die erbende Klasse muss die Methode getQualifiedName berschreiben die den Namen des entsprechenden Containers zur ckliefert 20 3 6 Anlegen eigener graphischer Objekte Paket de 1s10 effects core view3d Sollen neben den im Basisplugin vorhandenen graphischen Primitiven eigene implementiert werden so m ssen diese von der abstrakten Klasse GraphicalObjects erben Dies ist wich tig da hierbei Eigenschaften der Transformgruppen gesetzt werden die bei der Interaktion ben tigt werden Des Weiteren werden einige Standardfunktionen f r graphische Objekte zur Verf gung gestellt 20 4 Fazit In diesem Text wurden nur die wesentlichen Punkte zur Implementierung eines eigenen Dia grammtyps aufg
278. n 96 11 5 2 Erzeugung einer Lichtquelle 97 11 5 3 Erzeugen einer Geometrie 98 11 54 Interaktionen lt lt ee nern a sm nu mine bee eS 99 ME IAE 99 KAPITEL 12 Dreidimensionale Visualisierungstechniken 100 12 1 EMMA E A ee ke ewe ee 100 12 11 GUNSTEN 20 Le A AE AA a 100 Inhaltsverzeichnis 12 1 2 Dreidimensionale Darstellungen 101 12 2 berblick ber die vorhandenen Visualisierungstechniken 101 12 2 1 Techniken zur Darstellung von Hierarchien 04 101 12 2 2 Eine Technik zur Darstellung beliebig strukturierter Daten 103 12 2 3 Das Fokus und Kontextproblem 103 12 3 dreet 24 u ARA RS A BOAT a a E 104 12 3 1 Molalloni se s i ac a a en de len 104 12 3 2 Das Visualisierungssystem 2222 2 oo non 105 12 3 3 Techniken zur Verbesserung der Expressivit t 107 AM ete ok Se cel Bots hp ee di SE e ae SS be ee A er 108 KAPITEL 13 Grafische Editoren und dreidimensionale Benutzungsschnitt O II EE 109 139 1 EMBA lt lt un 65 ee aan a an a 109 13 1 1 Begriffe Editor grafischer Editor und Benutzungsschnittstelle 109 13 1 2 Diagrammeditoren und Interaktionskonzepte grafischer Editoren 109 13 1 3 Die Benutzungsschnittstelle grafischer Editoren 110 13 2 Bestandteile von dreidimensionalen grafische Benutzungsschnittstellen 111 13 2 1 Grundlegende Begriffe f r dreidimensionale grafische Benutzungsschnittstellen 111 13 22 MVG Mus
279. n Wiley and Sons Ltd 1996 Chok und Marriott 1995 CHOK Sitt S MARRIOTT Kim Automatic construction of user interfaces from constraint multiset grammars In Proceedings 11th IEEE symposium on Visual Languages VL 95 1995 S 242 249 LITERATURVERZEICHNIS Computer Associates International Inc Islandia USA 2000 COMPUTER ASSOCIATES INTERNATIONAL INC ISLANDIA USA Cosmo Player 2 1 erh ltlich online 2000 URL http www cai com cosmo Zuletzt gesichtet 19 08 2004 Daum 2003 DAUM Berthold Java Entwicklung mit Eclipse 2 dpunkt Verlag Juni 2003 Eclipse Foundation 2003 ECLIPSE FOUNDATION Eclipse Project Slide Presen tation 2003 URL http eclipse org eclipse presentation clipse slides html Zuletzt gesichtet 19 08 2004 Eclipse Foundation 2004 ECLIPSE FOUNDATION The Eclipse Project 2004 URL http www eclipse org Zugriffsdatum 19 08 2004 Engelen 2000 ENGELEN Frank Konzeption und Implementierung eines dreidimensio nalen Klassenbrowsers f r Java Universit t Dortmund Fachbereich Informatik LS 10 Di plomarbeit 2000 Esser und Janneck 2001 ESSER Robert JANNECK Jorn W A predicate based approach to defining visual language syntax In Symposium on Visual Languages and Formal Me thods 2001 Furnas 1981 FURNAS George W The Fisheye View A New Look at Structured Files Bell Laboratories 1981 Forschungsbericht Gamma u a 2001 GAMMA Erich HEL
280. n aus Abbildung 6 1 zeigt nach Anwenden der Produktion auf den oberen neu entstandenen Knoten zeigen zu lassen Um das Einbettungsproblem zu l sen werden drei verschiedene M glichkeiten h ufig ge nutzt Rekers und Sch rr 1997 Seite 5 Diese sind das Erweitern mit Kontextelementen das Implizite Einbetten und die Speziellen Einbettungsregeln Sie werden im folgenden kurz beschrieben und jeweils ihre Vor und Nachteile aufgezeigt Hinzuf gen weiterer Kontextelementen Hier werden weitere Kontextelemente in die Produktionen mit aufgenommen Kontextele mente sind Knoten die mit den direkt von der Produktion betroffenen Knoten unmittelbar in Beziehung stehen So k nnen Beziehungen die vorher nicht exakt bestimmbar waren genau festgelegt und entsprechend gezogen werden Ein Vorteil dieses Vorgehens ist es dass die Produktionen leichter lesbar und verst ndlicher 6 3 Beschreibungsans tze werden da sie einen gr eren Ausschnitt aus dem Graphen enthalten Eine Begrenzung der Beziehungen die ein Element haben darf ist im Allgemeinen nicht vorhanden Das hat f r einen Parsingalgorithmus den gravierenden Nachteil dass er mit Produktionen arbeiten muss die zum Teil wesentlich mehr Elemente enthalten als Produktionen die nur die direkt von der Produktion betroffenen Elemente enth lt Der Algorithmus wird somit komplexer und verliert deutlich an Performanz Implizites Einbetten Das Implizite Einbetten findet man bei Constraint
281. n der Notation an Esser und Janneck 2001 und zeigt ansatzweise wie die Syntax und die Semantikdefinition f r den Diagramm typ aus Abbildung 7 1 aussehen kann Dabei wird jedoch keine vollst ndige Deklaration von Anwendungsfalldiagrammen gegeben sondern sich auf den Teil beschr nkt mit dem das Dia gramm aus Abbildung 7 1 beschreibbar ist Auf den ersten Blick wird deutlich dass hier eine Beschreibung in anderen Worten eine Deklaration des Diagrammtyps vorliegt Wir gehen im Beispiel davon aus dass wir einen Grafiktyp in Form eines Graphen w nschen was durch das Schl sselwort graph type in Zeile 1 signalisiert wird Anschlie end folgt in den Zeilen 2 7 eine Auflistung verschiedener Knotentypen die uns zur Verf gung stehen sowie die Nennung m glicher Kantentypen in den Zeilen 8 11 Nach diesem beschreibenden Teil werden einige Bedingungen genannt die das Diagramm zu erf llen hat Zeilen 13 24 So wird zum Beispiel in den Zeilen 21 24 gefordert dass eine Include Beziehung nur zwischen zwei Anwendungsf llen bestehen kann Im nachfolgenden soll diese Deklaration unter der Herausstellung ihrer wesentlichen Ei genschaften genauer untersucht werden Wie sich leicht erkennen l sst besteht die Deklaration aus zwei grundlegenden Bestandtei len Der erste Teil besch ftigt sich mit der Beschreibung der einzelnen grafischen Elemente Dabei ist man jedoch nicht auf ein solch hohes Abstraktionsniveau unseres Beispiels fest gelegt
282. n m ssen dann je nach Kontext entsprechend implementiert werden e Die Klasse CameraMode stellt den Standardzustand eines Automaten bereit Dieser beinhaltet keine besondere Funktionalit t sondern dient lediglich als der Zustand von dem alle anderen Folgezust nde ausgehen Die Verwendung eines Zustandsautomaten ist im Detail in Kapitel 17 5 1 erl utert Grundlegende grafische Objekte Das Paket view3d primitives stellt verschiedene Primitive an grafischen Objekten bereit welche in verschiedenen Diagrammen genutzt werden k nnen siehe Abbildung 19 7 e Die Klasse Arrow stellt einen dreidimensionalen Pfeil dar Dabei kann Anhand der verschiedenen Konstruktoren entschieden werden ob zum Beispiel ein Pfeil mit oder ohne Spitze erzeugt wird e Die Klasse Box stellt eine in Farbe und Gr e frei einstellbare Box dar e Das grafische Objekt Cone repr sentiert einen Kegel wie er bereits von der Java3D API zur Verf gung gestellt wird In Diagrammen sollte allerdings nur dieser Kegel Verwen dung finden da dieser von GraphicalObject erbt und nur so die Interaktion also das Anw hlen und Verschieben funktioniert Dies ist mit dem Java3D Kegel nicht m glich N LA LA 19 Die Systemarchitektur Mittels der Klasse CoordinateSystem wird ein Koordinatensystem visualisiert mit dessen Hilfe man die Achsen der Objekte darstellen kann Mit der Klasse DynamicBox wird eine Box bereitgestellt welche nicht in ihrer Gr e beeinfluss
283. n man dies mit nebenl ufigen Zustandsdiagrammen 4 3 Das dynamische UML Modell Benutzer h ausl sen 1 1 selektieren 1 2 verschieben MouseEvent 8 Wuerfel Figur 1 2 1 1 pr feKoordinaten erlaubter Bereich 1 2 1 2 setzeKoordinaten 1 2 1 3 aktualisiereAnsicht 2 1 uebergebeKoordinaten Abbildung 4 4 Kollaborationsdiagramm f r das Verschieben eines Objekts Status anzeigen E Statusleiste aktualisiert e Linke Maustaste gedr ckt Position auf Objekt Objekt selektieren ver ndert Rechte Maustaste gedr ckt halten Position auf Objekt Men eintrag ausgew hlt Pop Up Men anzeigen Objekt modifizieren o Rechte Maustaste losgelassen sichtbar Pop Up Men l schen Cursor bewegt Men eintrag markieren ESC Taste gedr ckt Selektierung aufheben Abbildung 4 5 Zustandsdiagramm f r das Editieren von Objekteigenschaften besser darstellen F r die Projektgruppe w re der Einsatz dieses Diagrammtyps bei der Darstellung einiger Zust nde eines Editors sinnvoll wie z B die Zust nde f r die nderung der Eigenschaften eines Objektes ber ein Pop Up Men dargestellt in Abbildung 4 5 Damit ein Pop Up Men f r ein Objekt sichtbar ist muss dieses Objekt vorher mit der linken Maustaste selektiert sein Hiernach wird die Statusleiste aktualisiert Parallel dazu tritt beim Ereignis Rechte Maustaste gedr ckt mit der Bedingung dass
284. n zur besseren bersichtlich keit transparent dargestellt werden Die geplante Zeit betrug vier Stunden Auch hier konnte sich die techni sche Realisierung an dem Vorg ngerdiagramm abgeschaut und dann an die neue Struktur angepasst werden Der Task wurde in der geplanten Zeit von vier Stunden realisiert Die Aufgabe war es eine Kamerafahrt durch eine generierte Szene zu er m glichen Dabei sollte das Setzen von beliebigen Wegpunkten im Edi tor f r den Benutzer m glich sein Sechzehn Stunden da die Interaktion mit dem Editor noch ein vollst n dig neuer Aspekt der Implementierung war Null Stunden da dieser Task aufgrund des engen Zeitplans nicht bear beitet wurde Einarbeitung in den Abstract Syntax Tree AST Beschreibung Um ein Sequenzdiagramm zu erstellen ist es notwendig die Ereignisse nach einem Methodenaufruf innerhalb des Codes zu verfolgen bzw zu registrieren Dies sollte anhand des AST geschehen Ziel des Tasks war es zun chst die Grundlagen des AST zu erarbeiten 169 170 16 Beschreibung des dritten Release geplante Zeit reale Zeit Zehn Stunden wurden veranschlagt Die vorgegebene Zeit von zehn Stunden wurde eingehalten Ein wich tiges Ergebnis dieses Tasks ist es dass ein Wechseln des Eclipse Milestones problematisch ist da es sich mit den Milestones der Version 3 noch nicht um ein offizielles Release handelt U a hat sich der Um gang mit der Generierung und Travesierung des AST von M
285. nach ein einfacher Algorithmus vorgestellt der zum Bau von Parsern ben tigt wird Abschlie Bend l sst sich sagen dass CMGs f r die Definition von visuellen Sprachen gut geeignet sind und auch der Bau eines Parsers als Grundlage f r einen Editor m glich aber offensichtlich schwierig und ineffizient ist A KAPITEL 6 Graphgrammatiken Armin Bruckhoff 6 1 Einleitung Das Ziel der Projektgruppe ist es ein Editor Framework zu schaffen in dem in einer drei dimensionalen Darstellung Software Strukturen erstellt und ver ndert werden k nnen Die durch Manipulation durch den Anwender ver nderte Darstellung muss nat rlich korrekte Soft warestrukturen enthalten In einem Java Klassendiagramm zum Beispiel muss stets gew hr leistet sein dass eine Klasse nur eine Superklasse hat oder dass es keine zyklischen Verer bungen gibt Grammatiken sind ein geeignetes Mittel bestimmte Strukturen in Zeichenketten zu priifen Aber auch Grammatiken die Graphen auf syntaktische Korrektheit berpr fen werden schon tiber einen langen Zeitraum erforscht Die in einem Editor dargestellten Software Strukturen k nnen intern durch Graphen repr sentiert werden Der Typ des Graphen muss allerdings erst noch genau definiert werden und eine Graphgrammatik f r diesen Typ aufgestellt werden Mit dieser Graphgrammatik kann der Editor dann berpr fen ob der Graph nach der Manipulation durch den Anwender noch einen korrekten Graphen darstellt Im folge
286. nd Nichtterminalzeichen ersetzt wer den Erst wenn keine Nichtterminalzeichen in der Zeichenkette vorhanden sind kann diese ein Wort der Sprache sein 6 2 2 Graphgrammatiken Graphgrammatiken beruhen auf den gleichen Prinzipien und Vorgehensweisen wie Gramma tiken f r Zeichenketten Allerdings werden sie wie der Name schon anzeigt in Form von Graphtransformationen notiert und sind daher f r die Konstruktion von von Graphen geeig net Mittels einer Graphgrammatik kann berpr ft werden ob ein gegebener Graph zu einer Klasse von Graphen geh rt So gibt es f r ER Diagramme ebenso eine Grammatik wie f r Process Flow Diagramme oder Abstrakte Syntax Graphen Rekers und Sch rr 1997 Graphgrammatiken beinhalten analog zu Grammatiken f r Zeichenketten eine Sammlung von Regeln die beschreiben wie die bestehende Struktur in eine neue Struktur berf hrt wer den kann sowie eine Menge von Nichtterminalzeichen und eine Menge von Terminalzeichen Zeichen sind allerdings bei Graphen nicht einfache Buchstaben eines Alphabets sondern Kno ten und Kanten Hier kann es je nach Typ des Graphen verschiedene Arten von Knoten geben ER Diagramme zum Beispiel besitzen drei verschiedene Knotenarten Entit ten Relationen und Attribute Nichtterminalzeichen sind auch hier nur in den Zwischenrepr sentationen eines Graphen w hrend der Erzeugung oder Erkennung vorhanden Das Aussehen der Nichttermi naleichen spielt dabei keine Rolle sie sind nur f r die
287. nden soll die in diesem Release implementierte Architektur vorgestellt werden Dazu wird zun chst die geplante Architektur beschrieben im Anschluss daran die realisierte Architektur festgehalten und abschlie end beide miteinander verglichen 15 5 1 Beschreibung der geplanten Architektur Die geplante Architektur f r das zweite Release ist in Abbildung 15 1 auf Seite 151 darge stellt Es werden im Folgenden die entscheidenden Unterschiede zur Realisierung des ersten Releases erl utert Das MVC Konzept wurde beibehalten Allerdings ergaben sich durch die neuen Anfor derungen des zweiten Releases eine Aufteilung des Plugins in ein Kernplugin und optio nal mehrere diagrammtypspezifische Plugins Der Kernbereich umfasst nur noch die Klas sen die f r jeden Diagrammtyp gleich sind Dies sind die Klassen die nichts mit der kon kreten Visualisierung dem Datenmodell sowie den Berechnungsvorschriften des Diagramm typs zu tun haben So sind die Navigation und die Modellgrundlagen IType IResource ICompilationUnit immer gleich Weiterhin gibt es immer eine Scene sowie das dazuge h rige Universe Der Kern stellt weiterhin je ein Interface f r Diagrammelemente GraphicalObject Berechnungen Calculation und Modellinformationen Container zur Verf gung Die se drei Interfaces dienen als Schnittstelle f r die konkreten Diagrammplugins Das Interface Container stellt den geforderten Domain Hotspot bereit Hier werden die Elemente festge legt
288. nden wird zun chst eine kurze Einf hrung zu Grammatiken f r Zeichenketten und f r Graphen gegeben Anschlie end wird mit dem Einbettungsproblem ein Problem vorge stellt dem sich Graphgrammatiken zu stellen haben und drei L sungsm glichkeiten daf r beschrieben Danach folgt eine bersicht ber verschiedene Ans tze Graphgrammatiken for mal zu beschreiben Anhand des dritten vorgestellten Ansatzes wird abschlie end noch das Konzept des Parsens beschrieben und ein Algorithmus zur Entscheidung des Sprachproblems vorgestellt 6 2 Einf hrung zu Grammatiken 6 2 1 Grammatiken f r Zeichenketten Grammatiken beschreiben Verfahren mit denen formale Sprachen erzeugt bzw erkannt wer den k nnen Rechenberg 1999 Eine formale Sprache Z ist eine Menge von Zeichenketten die aus einem Alphabet V gebildet werden L C V wobei V die Menge aller Zeichenketten 6 2 Einf hrung zu Grammatiken inklusive der leeren Zeichenkette ist die aus dem Alphabet gebildet werden k nnen V o ist der freie Monoid ber V und o die assoziative Verkn pfung in V Die Elemente der Menge L werden meist als W rter der Sprache bezeichnet Eine Grammatik ist nun eine Sammlung von Produktionsregeln die eine Zeichenkette in eine andere berf hrt Diese Produktionen enthalten zwei verschiedene Arten von Zeichen Zum einen gibt es Terminalzeichen die das Alphabet der Sprache bilden zum anderen Nicht terminalzeichen die von Produktionen mit Terminal u
289. nders darauf achten sollte welche Zielsetzung f r uns relevant ist 10 4 Verhaltensmuster Bei der Software Entwicklung von objektorientierter Systeme m ssen Entwickler die wichtige Entscheidung treffen wie die Verantwortung zwischen Objekten verteilt werden soll Man kann sich im Grunde f r zwei Arten der Verteilung entscheiden wobei beide ihre Nachteile haben Zum einen kann man sich f r viele einfache Objekte entscheiden Doch dies w rde zu einer Vielzahl von Objektinteraktionen f hren was nicht immer leicht durchschau bar und schwer wartbar ist Zum anderen kann man sich aber auch f r wenige daf r aber mit umfangreichen Funktionen ausgestattete Objekte entschlie en Dieses Vorgehen hat dann zwar weniger Interaktion untereinander zur Folge kann aber trotzdem schwer wartbar sein da die Objekte schnell monolithisch werden Dar ber hinaus w rde keine der M glichkeiten zu einem wiederverwendbaren System f hren Eine Vielzahl von Abh ngigkeiten zwischen Ob jekten und monolithische Objekte machen die Wiederverwendung einzelner Objekte schwie rig Verhaltensmuster helfen diese Probleme zu l sen Das bereits kurz im Zuge von MVC angesprochene Beobachtermuster kapselt die Interaktion zwischen Objekten und f rdert damit die lose Kopplung zwischen ihnen Andere Verhaltensmuster wir werden gleich zwei von ihnen genauer kennen lernen helfen dabei Verhalten zwischen Objekten zu verteilen wodurch eine Wiederverwendung der Objekte wahrs
290. ne da im Task Gestalten eines Infofenster enthalten Listenerfunktionalit t 14 4 Reflexion ber die Tasks Beschreibung Das Infofenster sollte als Listener auf nderungen in Eclipse reagieren geplante Zeit Eine Stunde wurde veranschlagt reale Zeit Eine Stunde Gestalten eines Infofensters Beschreibung Es galt ein Infofenster zu entwerfen dass die sinnvollen abgefragten In formationen anzeigen kann geplante Zeit F nf Stunden Es war geplant den Outline View zu verwenden reale Zeit Acht Stunden Da der Outline View nur mit Editoren zusammenarbeitet musste das Verhalten in einem eigenen View nachgebaut werden 14 4 8 Navigation KeyNavigatorBehavior einbinden Beschreibung Das KeyNavigatorBehavior dient zur Navigation mit der Tastatur durch die dargestellte dreidimensionale Szene geplante Zeit Drei Stunden Das Verhalten von Behaviors unter Java war unbekannt und somit musste man sich dieses Wissen erst anlesen reale Zeit Eine Stunde Es zeigte sich dass das Wissen bei einem Entwickler doch aus anderen Projekten bekannt war 14 4 9 Farbauswahl Sinnvolle automatische Wahl einer Farbe abh ngig von den bereits vergebenen Far ben Beschreibung Die W rfel eines Pakets sollten mit der gleichen Farbe gekennzeichnet werden Zudem sollte die Farbe bei jeder Szenegenerierung f r ein Paket unver ndert bleiben geplante Zeit Sechs Stunden reale Zeit Sechs Stunden 14 4 10 Farbgebung Einf
291. ne Koordinatensysteme haben ohne irgendwelche geometrische Bewandnis Schie dermeier 2002 den Zweck geometrische Transformationen von Punkten Translation Rota tion Skalierung Spiegelung Projektion allein durch Matrizen auszudr cken und damit ein heitlich zu behandeln Weiterhin ist es damit auch m glich mehrere Transformationen durch Matrizenmultiplikation zu verkn pfen Dabei ist zu beachten da die Matrizenmuliplikation zwar assoziativ aber nicht kommutativ ist Um eine Transformation auszuf hren mu ledig lich die Transformationsmatrix mit dem Punkt multiplizert werden um so den transformierten Punkt zu bekommen p p A Dem dreidimensionalen kartesischen Vekorraum mit x y und z Koordinate entspricht da bei ein homogener x y z w Vektorraum Dabei entspricht einem homogenen Vektor x y z w ein kartesischer Vektor x w y w z w falls w 4 O Damit ist auch klar das Vielfache des Vektors x y z w wieder den selben Punkt beschreiben In der Computergrafik wird blicher weise w f r Punkte angenommen Diese Punkte nennt man homogenisiert F r Vektoren ist w 0 Der Vorteil hier ist das sich Translationen nur auf Punkte und nicht auf Vektoren auswirken da man einen Vektor also eine Richtung nicht verschieben kann w hrend sich Rotation und Skalierung sehr wohl auch auf Vektoren auswirken Die unterste Zeile der von Transformationsmatrizen 0 0 0 1 ndert sich nur bei perspek tivischen Transformationen
292. negraph 12 1 Darstellung hierarchischer Strukturen 12 2 Symbolnotationen nach Engelen 2000 e 12 3 Darstellung von Klassenhierarchien nach Engelen 2000 12 4 Kegeldarstellung Engelen 2000 0 o e 13 1 Struktur des MVC Musters nach K hne 2002 13 2 Funktionale Komponenten dreidimensionaler Benutzungsschnittstellen nach Barreau 2001 o e eh be ar re e e ee 14 1 Sequenzdiagramm zur Erzeugung der Darstellung 14 2 Klassendiagramm der geplanten Architektur 2 2222 14 3 Sequenzdiagramm des Berechnungsvorgangs 14 4 Realisierte Systemarchitektur Release 1 0 14 5 Screenshot aus der Anwendung aooaa 14 6 Klassendiagramm des dargestellten Pakets 15 1 Geplante Systemarchitektur Release 2 15 2 Implementierte Systemarchitektur Release2 16 1 Geplante Architektur des Domain HotSpots 16 2 Realisierte Architektur des Datenmodells 16 3 bersicht der realisierten Plugin Struktur 16 4 Sequenzdiagramm f r den Kundentest 17 1 Datenmodell 223 4 2 4 A a Er hr 17 2 Geplanter Zustandsautomat 17 3 Geplantes Zustandsdiagramm des Automaten 17 4 Realisiertes Datenmodell 17 5 Realisiertes Zustandsdiagramm des Automaten 17 6 Die realisierte Pluginstruktur a aooaa 19 1 Die Kernkomponenten im berblick 2
293. nen Testergebnis nicht bestanden Anmerkung Diese Anforderung wurde aufgrund des ben tigten Inspektors ins n chs te Release verschoben Klassen sollen hinzugef gt werden k nnen und durch W rfel dargestellt werden Testergebnis bestanden Anmerkung Die erstellten Klassen werden immer im Ursprung angelegt Interfaces sollen hinzugef gt werden k nnen und durch Kugeln dargestellt werden Testergebnis bestanden Anmerkung Die erstellten Interfaces werden immer im Ursprung angelegt Pakete sollen hinzugef gt werden k nnen und durch halbtransparente W rfel darge stellt werden Testergebnis bestanden Anmerkung Die erstellten Pakete werden immer im Ursprung angelegt Erbungshierarchien sollen durch Cone Trees abgebildet werden Testergebnis nicht bestanden Anmerkung Cone Trees sind in diesem Release noch nicht implementiert werden 211 212 17 Beschreibung des vierten Release Wenn eine Klasse auf einen Cone Tree gezogen wird soll der Cone Tree neu angeord net werden Testergebnis nicht bestanden Anmerkung Aufgrund der fehlenden Cone Trees s o konnte dieses Verhalten nicht erf llt werden Wenn eine Erbungsassoziation eingef gt wird soll der Cone Tree neu angeordnet wer den Testergebnis nicht bestanden Anmerkung Auch dieser Test konnte aufgrund der fehlenden Cone Trees noch nicht abgenommen werden F r Vererbungshierarchien ber Paketgrenzen hinweg sollen Proxies die Darstellung im Fremd
294. nen negativen Effekt haben bzw man sie sogar positiv f r sich nutzen kann Die beste Alternative einer Entscheidung ist demnach immer die die die meisten Optionen offen h lt Qualit tsarbeit Qualit t darf unter XP Gesichtspunkten nicht als freie Variable betrachtet werden eigentlich sonst auch nicht Denn jeder m chte gute Arbeit abliefern Andernfalls sind die Teammitglie der schnell frustriert und das Projekt scheitert 9 3 Die 12 XP Techniken Mit Techniken werden bei XP die Verfahren bezeichnet mit denen unter XP gearbeitet wird Man spricht in diesem Zusammenhang auch von den 12 S ulen des XP Diese Verfahren werden in den folgenden Unterkapiteln nun vorgestellt Dabei beziehen wir uns weitestgehend auf Beck 2000 nur bei den Kapiteln ber Testen und Refactoring erweitern wir die Aus f hrungen auf den Gebrauch dieser Techniken in der Programmierumgebung Eclipse Hierbei ist es laut Beck wichtig zu erkennen dass die einzelnen XP Techniken alleine keinen Vorteil bringen sondern nur im Zusammenspiel die gew nschten Erfolge erzielen 9 3 1 Das Planungsspiel Das Planungsspiel vereint das Festlegen des Umfangs der n chsten Programmversion mit den Aufwandssch tzungen der Programmierer Es ist also die Planungsphase von XP Der Plan wird hierbei st ndig aktualisiert Dabei hat die Gesch ftsseite folgende Entscheidungen zu treffen 9 3 Die 12 XP Techniken e Der Umfang der Software wird festgelegt Dabei wird
295. nente weiter gereicht und verarbeitet Die vorgestellte konzeptionelle Einteilung nach Barrilleaux 2001 verfeinert somit das MVC Muster in den beiden Komponenten Sicht und Steuerung und l sst die Modellkomponente unver ndert 13 2 3 Die einzelnen Komponenten dreidimensionaler grafi scher Benutzungsschnittstellen Zur Entwicklung einer dreidimensionalen grafischen Benutzungsschnittstelle ist es jetzt sinn voll die oben vorgestellten funktionalen Komponenten dreidimensionaler grafischer Benut zungsschnittstellen n her zu betrachten Steuerung Control Die Steuerungskomponente interpretiert Benutzereingaben als sinnvolle Aktionen in einer An wendung Das Hauptproblem liegt dabei in der Zuordnung von zweidimensionalen Eingabe 113 114 13 Grafische Editoren und dreidimensionale Benutzungsschnittstellen User A CS User Interface Feedback Visualization Navigation Manipulation Access A al Views Objects 7 UL 3D World Space Abbildung 13 2 Funktionale Komponenten dreidimensionaler Benutzungsschnittstellen nach Barrilleaux 2001 koordinaten zu dreidimensionalen Zielkoordinaten da nur die Maus als prim res und eben zweidimensionales Eingabeger t zur Verf gung steht Gel st wird dieses Problem nach Bar rilleaux 2001 durch das Coordinate Mapping Verfahren welches zum einen festlegt welche Dimension der zweidimensionalen Eingabe mit welcher Dimension des dreidimensionalen Zielobjekts verbunden w
296. ng webbasierter Studieneinheiten f r die Altertumswis senschaften November 2003 Ernst Erich Doberkat Factoring Stochastic Relations Januar 2004 Ernst Erich Doberkat Characterizing the Eilenberg Moore Algebras for aMonad of Stochastic Relations March 2004 Ernst Erich Doberkat Gregor Engels Corina Kopka Hrsg Abschlussbericht des Projektes MuSofT Multimedia in der SoftwareTechnik April 2004 Ernst Erich Doberkat Derandomizing probabilistic semantics through Eilenberg Moore algebras for the Giry monad July 2004 Alexander Fronk Jens Schr der Hrsg Armin Bruckhoff Stephan Eisermann Kai Gutberlet Mich l Kersjes Andr Kupetz Christian Mocek Michael N the Michael Pflug Ren amp Sch nlein Semih Sevinc Daniel Unger Sven Wenzel Jan Wessling Abschlussbericht der PG 444 Eclipse Framework for Editing Complex Three Dimensional Software Visualizations August 2004
297. nisse erledigt Benutzung des Fehlerdialogs sicherstellen Exception Handling berpr fen Refacto ring Beschreibung Ein weiterer Task der User Story war es die Benutzung des zuvor imple mentierten Fehlerdialogs zu gew hrleisten Es war n tig sich an allen Codestellen zu vergewissern dass auftretende Fehler an diesen Dialog weitergeleitet werden geplante Zeit Die gesch tzte Dauer betrug zwei Stunden da im wesentlichen ein ber blick ber den gesamten Code n tig war Falls erforderlich muss an be stimmten Stellen die Fehlerbehandlung angepasst werden reale Zeit Der Task wurde in der H lfte der gesch tzten Zeit erledigt Die Fehler behandlung war weitestgehend korrekt implementiert 15 4 7 Deployment des Plugin Erstellen eines Plugin sowohl f r Linux als auch f r Windows inklusive Dokumenta tion Beschreibung Um das Plugin und das Plugin Fragment korrekt sowohl unter Linux als auch unter Windows betreiben zu K nnen sollte eine Dokumentation erstellt werden die das Erstellen zweier lauff higer Versionen erl utert geplante Zeit Diese Aufgabe wurde erst nach der Erstellung der Taskcards zu den User Stories mit aufgenommen Daher erfolgte keine Einsch tzung der Zeit 15 4 Reflexion ber die Tasks reale Zeit Der Task wurde in drei Stunden abgearbeitet Ein Problem dabei war dass f r Windows zwei Versionen erstellt werden mussten da es hier zwei Implementierungen der Java3D Bibliothek gibt eine f
298. nit Tests ab dem dritten Release nicht mehr m glich Das Prinzip des Kunden vor Ort wurde zwar benutzt aber nicht so wie es in XP vorgegeben ist Kunden und Entwicklerrolle sind oft zusammengefallen Es wurde festgestellt dass die Kunden eigentlich die Rolle eines Mediators zwischen Entwicklern und den PG Betreuern ha ben die die eigentlichen Kunden im XP Sinne sind Die Mediatoren verf gen als Entwickler ber technisches Wissen und als Kunden ber Domainwissen im Anwendungsbereich Daher sind sie in der Lage bei auftretenden Schwierigkeiten in der Implemetierung zwischen den Anforderungen der PG Betreuer und den Problemen der Entwickler zu vermitteln Somit sind die Kunden eigentlich Entwickler in einer Sonderrolle 21 2 Allgemeine Organisation der Projektgruppe Nach den XP Techniken wird nun die allgemeine Organisation der Projektgruppe diskutiert Die am Anfang der Projektgruppe durchgef hrte Seminarfahrt war sehr sinnvoll zum Ken nenlernen der anderen PG Teilnehmer Ein Verbesserungsvorschlag f r die Seminarphase w re dass neben den Seminarvortr gen am ersten Tag eine XP Vorstellung und eine eXtreme Hour nach Beck 2000 Beck und Fowler 2001 am zweiten Tag statt finden soll Au er dem w re es angebrachter bei den Vortr gen statt in die Themenbreite in die Thementiefe zu gehen auch wenn dadurch nicht jeder PG Teilnehmer einen Vortrag halten kann Eine wei tere Anregung w re dass man in der Woche nach dem Seminar gemeinsam
299. nnen FALSCH wertEins wert2 wert3 wert4 wert5 4 wert6 wert7 RICHTIG wertEins wert2 wert3 wert4 wert5 4 wert6 wert7 Methodendeklarationen methodeX int a Object obj String buffer Object ob32 private static synchronized methodeY int a Object objl String buffer 239 nn A Code Konventionen Object obj2 Der tern re Operator alpha wahr beta gamma alpha wahr beta gamma alpha wahr beta gamma If Statements FALSCH if Bedingungl amp amp Bedingung2 Bedingung3 amp amp Bedingung4 Bedingung5 amp amp Bedingung6 Bedingung amp amp Bedingung7 machelrgendetwas RICHTIG if Bedingungl amp amp Bedingung2 Bedingung3 amp amp Bedingung4 Bedingung5 amp amp Bedingung6 machelrgendetwas if Bedingungl amp amp Bedingung2 Bedingung3 amp amp Bedingung Bedingung5 amp amp Bedingung6 machelrgendetwas A 5 Dokumentation Es existieren zwei Arten von m glichen Kommentarbl cken Implemetierungskommentare sowie Dokumentationskommentare im Javadoc Format 1 Ziel der Implementierungskommentare ist es dem Entwickler ein besseres Verst ndnis des Source Codes zu geben Diese Informationen sind nicht in einer externen Doku mentation zu finden 2 Dokumentationskommentare im Javadoc Format enthalten nur solche Informationen die nichts mit der konkr
300. nte Zeit Hier war es das Ziel die Manipulationen die durch die Manipulation der 3D Szene entstehen mit den Daten des JDT zu synchronisieren Hierf r wurde die im CodeController erzeugte Hilfsstruktur mit den Daten des EFFECTS Datenmodells analysiert und die aktualisierten Daten in das JDT Datenmodell bertragen 10 Stunden Die Eclipsehilfe stellt bereits Codefragmente f r diese Auf gabe zur Verf gung 17 4 Reflexion ber die Tasks reale Zeit Die reell ben tigte Zeit betrug fast doppelt so viel wie zun chst ge sch tzt Der Grund daf r lag darin dass sich die Informationen in der Eclipsehilfe im Nachhinein als nicht vollst ndig herausstellten Au er dem wurde bei der zeitlichen Absch tzung nicht ber cksichtigt dass n derungen sich nicht nur auf den Quellcode einer Klasse beziehen k n nen sondern sich durchaus auch auf das darunterliegende Dateisystem auswirken m ssen Wenn beispielsweise eine Klasse in ein anderes Pa ket geschoben w rde m sste nicht nur das package Statement in der Java Datei ge ndert werden sondern die Datei auch in das entsprechen de Verzeichnis verschoben werden das das Paket repr sentiert Hierbei wurde sich aufgrund von Zeitmangel nur auf die nderungen einer Java Datei Codestruktur und Dateiname beschr nkt Lesen der Daten die von dem Controller aus dem AST bereitgestellt werden und speichern in das EFFECTS Datenmodell Beschreibung Dieser Task sollte es erm glichen die
301. nter und realisierter Architektur 150 15 6 Kunden Akzeptanztest 153 15 6 1 Durchgef hrte Kundentests e 153 15 6 2 Wall o e A er a re A 158 Inhaltsverzeichnis KAPITEL 16 Beschreibung des dritten Release 159 16 1 GUNG 2 oca da a A A AR ee 159 16 2 USSFSIOMES EE EE ke A A A a A a 159 16 3 Systernimela H f 2 4 o a me a neh a man 161 16 4 Reflexion ber die Tasks o ee eee 162 158 41 Popup Men 2 4 222 ah aha a Seda ee E A 162 16 4 2 BORAMENWUME A 4044 28 a rd re er S 162 16 4 3 Integration von Java 3D in Eclipse e 162 16 44 e CEET 163 16 45 BOPEBNSNO S co en 164 16 4 6 EFFECTS Perspektive 2 2 2 m eo mo wu me a ns ana nn 5 164 16 47 IBA o wer a an Oe e 165 16 48 File o o ee ee we 166 16 4 9 Sequenzdiagramme 167 16 4 10 sent EE a we a ee a A ee 172 16 5 Vorstellung der implementierten Architektur 172 16 5 1 Beschreibung der geplanten Architektur 2 2 2 222 nme 172 16 5 2 Beschreibung der realisierten Architektur 174 16 5 3 Vergleich zwischen geplanter und realisierter Architektur 2 2 2 2 177 16 6 Kunden Akzeptanztest 178 KAPITEL 17 Beschreibung des vierten Release 182 17 1 CMS 2 2 ots Eee aa a Bu Rohe Were A 182 172 Mee ome A ee a A aes 182 17 3 Systemmetapher 185 17 4 Reflexion ber die Tasks 2 Homme 185 17 41 Taskreflexion Release An 186 17 4 2 Taskreflexion R
302. odeling Language UML wurde als Standard zur Modellierung durch die Object Management Group OMG akzeptiert Es gibt inzwischen zahlreiche Werkzeuge zur Modellierung mit UML wie z B Rational Rose Together und mit Hinblick auf die Projektgruppe EclipseUML der Firma Omondo Die unter schiedlichen UML Diagramme k nnen in den verschiedenen Phasen der Softwareentwicklung 4 3 Das dynamische UML Modell UML Modelle Statisches Modell Dynamisches Modell Anwendungsfalldiagramme Aktivit tsdiagramme Analyse Klassendiagramme Paketdiagramme k Sequenzdiagramme Kollaborationsdiagramme Entwurfsdiagramme Zustandsdigramme Implementierungs diagramme Abbildung 4 1 UML Modelle nach W von Gudenberg Anforderungen Analyse Entwurf und Implementierung eingesetzt werden und dem sta tischen und dem dynamischen UML Modell zuteilen Diese Einteilung ist in Abbildung 4 1 dargestellt 4 3 Das dynamische UML Modell Das dynamische Modell besteht aus e Aktivit tsdiagrammen e Sequenzdiagrammen e Kollaborationsdiagrammen und e Zustandsdiagrammen Sequenz und Kollaborationsdiagramme werden auch unter dem Oberbegriff Interaktionsdia gramme zusammengefasst Im n chsten Schritt werden diese UML Diagramme f r die dyna mische Modellierung vorgestellt 4 Modellierung mit UML 4 3 1 Aktivit tsdiagramm Wie man in Abbildung 4 1 sehen kann werden Aktivit tsdiagramme meist relativ fr h im Entwicklungsprozes
303. oll ohne den Begriff der Semantik nicht durchf hrbar Aus diesem Grund werden visuelle Sprachen eingesetzt die als Regelwerk f r das Ausse hen von Grafiken verwendet werden und die Beziehung zwischen Grafiken und ihren Aus sagen spezifizieren Dabei m chte man ein m glichst einfaches Modell verwenden welches jedoch auch die Verwendung komplexer und hierarchisch aufgebauter Grafiken erlauben soll Dar ber hinaus soll die visuelle Sprache die Semantik einer Grafik als m glichst formale Be schreibung klar verdeutlichen Zudem soll sie sich unabh ngig von ihrer Implementierung dazu eignen Grafiken zu erzeugen oder gegebene Grafiken zu erkennen Die Anforderungen an eine visuelle Sprache lassen sich demnach wie folgt festhalten 7 3 Eigenschaften W Unterst tzung komplexer Grafiken e Wiederverwendung von Grafiken als Teile neuer Grafiken hierarchische Komposition einfache Formulierung topologischer geometrischer und semantischer Beziehungen zwi schen einzelnen Teilgrafiken unterst tzendes Werkzeug zur Erzeugung und Erkennung von Grafiken e implementierungsunabh ngig 7 3 Eigenschaften Eine M glichkeit Syntax und Semantik f r einen Diagrammtyp festzulegen bietet der de klarative Ansatz Hierzu gibt verschiedene M glichkeiten die deklarativen Syntax und Se mantikdefinitionen textuell aufzuschreiben So w re beispielsweise die Verwendung von XML m glich Das Beispiel aus Abbildung 7 2 orientiert sich i
304. omputing Science Univer sity of Alberta 1993 Forschungsbericht Reps und Teitelbaum 1989 REPS Thomas W TEITELBAUM Tim The Synthesizer Generator Springer 1989 Robertson u a 1991 ROBERTSON George G MACKINLAY Jock D CARD Stuart K Cone Trees Animated 3D Visualizations of Hierarchical Information Xerox PARC 1991 Forschungsbericht LITERATURVERZEICHNIS Royce 1970 ROYCE Winston W Managing the development of large software systems Proc IEE Wescon 1970 Schiedermeier 2002 SCHIEDERMEIER Prof Dr R Die homogene Komponente bei Transformationen Fachhochschule M nchen URL http www informatik h muenchen de schieder graphik 01 02 s1ide0099 html 2002 Forschungsbericht Zuletzt gesichtet 19 08 2004 Schiffer und Violka 2003 SCHIFFER Bernd VIOLKA Karsten Spielzimmer aufr umen Refaktorisieren macht Quellcode lesbarer In cr Heft 17 2003 Sch rr und Westfechel 1992 SCHURR Andy WESTFECHEL Bernhard Graphgramma tiken RWTH Aachen Fakult t f r Informatik 1992 92 15 Forschungsbericht Szwillus 1990 SZWILLUS Gerd Specification of graphical structure editors Forschungs berichte des Fachbereichs Informatik der Universit t Dortmund 1990 The Hillside Group THE HILLSIDE GROUP Patterns Home Page Your pattern library URL http hillside net patterns Zuletzt gesichtet 19 08 2004 UseNet Gruppe 2004 USENET GRUPPE Frequently Asked Questions FAQ
305. on domain die dem Zeichen zugeordnet sind die eine Zuweisung der Attribute von T darstellen T kann ein terminaler Typ ein nicht terminaler Typ oder ein Starttyp sein und das Zeichen wird dann entsprechend terminales Zeichen nicht terminales Zeichen oder Startzeichen genannt Constraint Multiset Grammar Die folgende Definition von Constraint Multiset Grammars stammt ebenfalls von Marriott Marriott 1994 Definition 5 2 2 Eine CMG in einer computation domain D besteht aus e einer Menge von Zeichen Tr deren Typ terminal ist e einer Menge von Zeichen Tyr deren Typ nicht terminal ist e einem ausgezeichnetem Zeichen Sy Tyr das vom Typ Start ist e einer Menge von Produktionen 5 2 Grammatiken Jedes Zeichen t Tr UTyr besitzt eine Liste von Attributen Das Startzeichen darf nur auf der linken Seite einer Produktion auftauchen Produktionen haben die Form Ba la here exists Tj Tp where C E wobei gilt e T ist ein nicht terminales Zeichen e T T sind Zeichen eines Typs mit n gt 1 e T T sind Zeichen eines Typs mit m gt 0 e x X X sind Listen von Variablen gt C ist eine Verkn pfung von Bedingungen ber x X13X1 3 Xn gt RR 5 o 7 F ist eine Funktion von x eae IR Auch hier werden wieder Unterschiede zur EBNF sichtbar Damit die Produktion ausge f hrt werden kann muss die Bedingung C erf llt sein Diese Einschr nkung ergibt sich aus der schon in 2 1 ang
306. one Trees dargestellt werden e Die Gr e des Pakets soll sich entsprechend der enthaltenen Klassen und Unterpakete ndern e Die Gr e des Universums soll sich an die enthaltenen Elemente anpassen e Klassen Interfaces und Pakete sind gem der Pakethierarchie geschachtelt Syntaxpr fung Angelehnt an die bisherigen XML Dateien zur Diagrammkonfiguration sollen verschiedene Klassen zur Pr fung der Syntax angegeben werden k nnen Es sollen folgende Regeln ber pr ft werden e Keine Mehrfacherbung au er bei Interfaces e Alle Kanten haben zwei Endpunkte e Objekte berlappen sich nicht e Information Cubes k nnen geschachtelt werden e Erbung auf Cone Trees Synchronisation Code und Diagramm sollen synchron sein Inspektor Propertybox Es soll eine Propertybox erstellt werden mit dessen Hilfe das ndern und Anzeigen der Kar dinalit ten Klassennamen Farben etc komfortabel erm glicht wird 17 3 Systemmetapher Proxies F r die Erbung ber Paketgrenzen hinaus sollen Proxies eingef hrt werden Graphische Feinheiten und Bedienbarkeit e Die vordere Wand des Information Cubes soll ausgeblendet werden Der Detailgrad der angezeigten Informationen soll w hlbar sein Ausblenden der Be schriftungen etc Es sollen Schatten anstatt der Fadenkreuze angezeigt werden e Der Mauszeiger soll sich abh ngig vom aktuellen Bearbeitungsmodus ndern e Die Men leiste soll in Eclipse eingebunden werde
307. onen die intern im Datenmodell gehalten werden mit einer vorher vom Kunden spezifizieren XML Datei abgeglichen Die XML Datei enth lt die erwarteten Ebeneninformationen f r jede darzustellende Klasse Des Weiteren wurde die dargestellte Szene auch visuell berpr ft Die Zuordnung der einzelnen Klassen zu einem Paket ist sofort durch ihre einheitliche Farbgebung ersichtlich Testergebnis bestanden Anmerkung Es wurde visuell berpr ft ob alle Klassen eines Pakets die gleiche Far be haben Dieses wurde auch automatisch berpr ft indem verglichen wurde ob die Farbe im ClassContainer einer Klasse mit der Farbe ihres Pakets bereinstimmt Es wird f r jedes darzustellende Paket automatisch eine sinnvolle Farbe die nicht zu hnlich zu den bereits vergebenen Farben der anderen Pakete ist ausgew hlt 140 14 Beschreibung des ersten Release Testergebnis bestanden Anmerkung Es Konnte visuell best tigt werden dass alle dargestellten Pakete eine unterschiedliche Farbe haben Die ausgew hlten Farben sind gut ber das Farbspektrum verteilt Es wurde automatisch berpr ft ob irgendei ne Paketfarbe mehr als einmal verwendet wird Jede sinnvolle interne Information z B Kameraposition oder Vaterklasse muss ber ein geeignetes Interface abfragbar sein Methoden Testergebnis bestanden Anmerkung Ohne geeignete Methoden w ren die automatischen Tests nicht zu reali sieren gewesen ee Kare 15 Beschreibung des z
308. opyright the software and 2 offer you this license which gives you legal permission to copy distribute and or modify the software Also for each author s protection and ours we want to make certain that everyone under stands that there is no warranty for this free software If the software is modified by someone else and passed on we want its recipients to know that what they have is not the original so that any problems introduced by others will not reflect on the original authors reputations Finally any free program is threatened constantly by software patents We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses in effect 264 B The GNU General Public License making the program proprietary To prevent this we have made it clear that any patent must be licensed for everyone s free use or not licensed at all The precise terms and conditions for copying distribution and modification follow TERMS AND CONDITIONS FOR COPYING DISTRIBUTION AND MODIFICATION 0 This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License The Program below refers to any such program or work and a work ba sed on the Program means either the Program or any derivative work under copyright law that is to say a work containing the Program or a portion of it eit
309. or Color3f position Vector3d a DynamicBox OFFSET float logger Logger wirecolor Color3f box Box content BranchGroup DynamicBox DynamicBox DynamicBox DynamicBox DynamicBox init void update void addContent void removeContent void height double length double width double labelPosition TransformGroup createLabel void setLabel void transformGroup TransformGroup detachableBranchGroup BranchGroup position Vector3d alpha float wireframe boolean color Color3f pickable boolean labelPosition TransformGroup labelTransformGroup TransformGroup label String D BOTTOMiint boxBg BranchGroup Box Box Box Box update void createFace Shape3D setColor void appearanceBox Appearance appearanceWire Appearance height double length double width double wirecolor Color3f labelPosition TransformGroup update void sphereCapabili radius float appearance Appearance color Color3f labelPosition TransformGroup Arrow ARROW_NONE int ARROW_AT_START int ARROW_AT_ENDiint arrowBg BranchGroup numEdges int startLabelBG BranchGroup endLabelBG BranchGroup Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow Arrow calRotationMatrix Matrix3d checkValues void update void createArrow void createArrow TransformGroup ge
310. ories Andre Kupetz Michael N the Da wie Eingangs erw hnt zwei offizielle Releaseabgaben stattfanden sind auch die User Stories in zwei H lften aufgeteilt 17 2 User Stories Die im Folgenden aufgef hrten User Stories stellen die Anforderungsdefinition f r die Re leases 4a und 4b des Eclipse Plugins dar Das Gesamtziel der beiden Releases war es das Plugin dahingehend zu entwickeln dass es als graphischer Editor zur dreidimenionalen Ge staltung von Softwarestrukturen genutzt werden kann User Stories des Release 4a Interaktion Objekte sollen markiert werden k nnen auch mehrfach um sie anschlie end verschieben l schen oder ndern zu k nnen Neue Objekte sollen eingef gt werden k nnen Neue Syntaxelemente Es sollen e Information Cubes als halbtransparente W rfel zur Paketvisualisierung e Cone Trees als Visualisierung der Vererbungsbeziehungen und e Interfaces als Kugeln dargestellt werden Klassen werden weiterhin als W rfel visuali siert Assoziationen Assoziationen sollen durch Pipes dargestellt werden Kardinalit ten als Text verschiedene Farben f r Assoziation Erbung Implementierung Assoziationen zwischen Paketen bzw zwischen in ihnen enthaltenen Klassen sollen durch genau eine gro e Pipe zwischen den Pa keten eine sogenannte Sammelpipe dargestellt werden Men leiste und Toolbar Zum Ausw hlen der Werkzeuge soll es eine Men leiste und eine Toolbar geben Automatische Anpassun
311. ourcen noch aus den drei wesentlichen Komponenten Perspektiven Editoren und Views Perspektiven Definition 8 1 1 Perspektive Eine Perspektive definiert die Anordnung der Editoren und Views in der Workbench sowie die zur Verf gung stehenden Toolbars und Pull down Men s Das Ziel eine Perspektive ist es also eine optimale Anordnung von Editoren und Views be reitzustellen um eine bestimmte Aufgabe optimal bearbeiten zu k nnen Das hei t nat rlich auch dass jede Workbench aus mehreren Perspektiven bestehen kann Beispielsweise stellt die Perspektive f r die Java Entwicklungsumgebung andere Views dar als die Perspektive f r das Debuggen von Java Applikationen 8 1 Einf hrung in Eclipse Workbench window Editor Short ot bar Tool bar d Menu bar Ressurce index html Eclipse Platform Project Run Window Help 7 MAA gt E index html gt lt lt h gt Welcome to my web lt h gt gt images E project El index html D items gt gt gt vx Description Resource In Folder MyWebfindex html Status line Page Views Abbildung 8 1 Die Workbench von Eclipse Editoren Definition 8 1 2 Editor Als Editor versteht man den Teil der Workbench der die M glichkeit bietet Dateien eines bestimmten Dateityps zu bearbeiten Das hei t also dass verschiedene Dateitypen einem Editor eindeutig zugeordnet werden k n nen Dieser Editor ist spezialisiert auf die Bearbeitung der f r ihn reg
312. ously your obligations under this License and any other pertinent obligations then as a consequence you may not distribute the Program at all For exam ple if a patent license would not permit royalty free redistribution of the Program by all those who receive copies directly or indirectly through you then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program If any portion of this section is held invalid or unenforceable under any particular cir cumstance the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system it is up to the author donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License If the distribution and or use of the Program is restricted in certain countries eithe
313. paket bernehmen Testergebnis nicht bestanden Anmerkung Diese Anforderung wurde aufgrund eines Ressourcenengpasses ins n chste Release verschoben Auf dem Boden soll f r jedes Objekt ein Schatten dargestellt werden um so die H henposition besser absch tzen zu k nnen Testergebnis nicht bestanden Anmerkung Diese Anforderung wurde aufgrund eines Ressourcenengpasses ins n chste Release verschoben Eine Werkzeugleiste erm glicht die Auswahl der Bearbeitungsmodi Testergebnis bestanden Anmerkung Die Werkzeugleiste sollte sobald der Editor immer integriert angezeigt werden kann in eine SWT Toolbar umgewandelt werden Bearbeitungsmodi sollen in einer Men leiste ausgew hlt werden k nnen Testergebnis nicht bestanden Anmerkung Diese Anforderung ist nicht umgesetzt worden da sich eine Werkzeugleiste als sinnvoller erwiesen hat Zwischen den dargestellten Objekten sollen Assoziationen erstellt werden k nnen Testergebnis bestanden 17 6 Kundenakzeptanztest N Anmerkung Es ist nicht m glich Assoziationen von und zu Interfaces zu erstellen Zwischen den dargestellten Paketen sollen gr ere Assoziationen die Assoziationen die zwischen den Klassen und Interfaces dieser Pakete existieren ersetzen Testergebnis nicht bestanden Anmerkung Aufgrund mangelnder Zeit wurde dieser Task nicht umgesetzt Anhand der Farbe soll der Typ einer Assoziation erkennbar sein Testergebnis nicht bestanden Anmerkun
314. plementiert und dem Kunden als Zwischenreleases zur Verf gung gestellt Weiterhin kann sich bei der herk mmlichen Softwareentwicklung ein System als unrentabel herausstellen Diese ist dann der Fall wenn die Kosten f r nderungen des Systems oder die Fehlerraten so hoch sind dass das System ersetzt werden muss XP versucht dieses Risiko zu minimieren indem das System in einem solchen Zustand gehalten wird dass die Fehlerrate relativ gering ist Dies sollte durch st ndiges Testen mit Hilfe automatisierter Komponenten tests geschehen Auch f hren diese Tests die nach jeder nderung ausgef hrt werden dazu dass die nderungskosten gering gehalten werden Obwohl bei der gebr uchlichen Softwareerstellung nat rlich auch getestet wird kann es vorkommen dass im Extremfall ein Programm mit hoher Fehlerrate ausgeliefert wird Um eine Software eben nicht mit relativ hoher Fehlerrate auszuliefern wird bei XP besonderer Augenmerk auf das Testen w hrend der Entwicklung gelegt Dabei werden Tests aus zwei Perspektiven geschrieben Die Programmierer schreiben Tests f r die einzelnen Funktionen und der Kunde schreibt Test zur berpr fung der Leistungsmerkmale des Systems Dies f hrt dazu dass jeder ber den funktionierenden Funktionsumfang des Systems informiert bleibt und niemand von einer hohen Fehlerrate berrumpelt wird Ein anderes Problem bei der klassischen Vorgehensweise ist dass die vom Kunden ge forderten Leistungsmerkmale falsch v
315. pse interne Datenmodell von uns entsprechend erweitert wurde Um die Containerklassen an die entsprechenden Objekte zu binden wurde die Klasse Data ModelController erzeugt die somit also die Komponente EclipseDatenmodell der ge planten Architektur steuert Die Anaylse Komponenten der geplanten Architektur Farbe Cluster Level wurden ber nommen und durch die drei Klassen ColorCalculation LevelCalculation und Cluster Calculation realisiert Die in der urspr nglichen Architektur vorgenommene Trennung der Berechnung der einzelnen logischen Informationen wurde also auch beibehalten Im Gegensatz zur Systemmetapher wurde die Klasse Scene aus der Komponente Umrechnung In3DModell herausgel st Sie hat ausschlie lich die Aufgabe die graphische Darstellung zu berechnen Somit findet in der Komponente UmrechnungIn3DModell keine Berechnung mehr statt Hier ist die Struktur soweit verbessert worden dass Steuerung und Berechnung voneinander getrennt wurden Umfassende nderungen der geplanten Architektur wurden insbesondere im Bereich des Views vorgenommen Dies l t sich im Wesentlichen darin begr nden dass w hrend der Ent wicklung ein weitreichendes Verst ndnis der Java3D API erreicht wurde Die Komponente Szene3DModell wurde zun chst in die Klasse Universe und die Klasse BranchGroup auf gesplittet Die Klasse Universe hat die Aufgabe einen Rahmen f r die Darstellung der Infor mationen zu generieren und nimmt die berechnete Struktur auf
316. r by patents or by copyrighted interfaces the original copyright holder who places the 10 11 12 Program under this License may add an explicit geographical distribution limitation excluding those countries so that distribution is permitted only in or among countries not thus excluded In such case this License incorporates the limitation as if written in the body of this License The Free Software Foundation may publish revised and or new versions of the General Public License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns Each version is given a distinguishing version number If the Program specifies a ver sion number of this License which applies to it and any later version you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation If the Program does not specify a version number of this License you may choose any version ever published by the Free Soft ware Foundation If you wish to incorporate parts of the Program into other free programs whose distri bution conditions are different write to the author to ask for permission For software which is copyrighted by the Free Software Foundation write to the Free Software Foun dation we sometimes make exceptions for this Our decision will be guided by the two goals of preservin
317. r ft werden ob Mehrfacherbung oder zy klische Vererbung vorliegt Weiterhin sollte berpr ft werden dass nur erlaubte Beziehungen zwischen den Objekten angelegt werden d rfen wie z B Erbungbeziehungen zwischen Klassen und nicht zwischen Pa keten 10 Stunden 18 Stunden Es waren besonders viele Fallunterscheidungen zu ber ck sichtigen Des Weiteren konnten aus zeitlichen Gr nden nicht alle Son derf lle z B innere Klassen ber cksichtigt werden Code und Diagrammsynchronismus Erstellen eines Controllers f r den Datenaustausch zwischen Datenmodell und AST Beschreibung geplante Zeit reale Zeit Aufgabe dieses Tasks war es haupts chlich die jeweils ben tigten Infor mationen aus den passenden Datenstrukturen d h entweder dem JDT Datenmodell bzw dem AST oder dem EFFECTS Datenmodell aus zulesen und bereitzustellen Weiterhin sollten die gewonnenen Infor mationen in einer Wrapperdatenstruktur gekapselt werden um so ein weiteres einfacheres Verarbeiten der Informationen in den spezifischen Aktualisierungs bzw Generierungsklassen zu erm glichen 15 Stunden Die gesch tzte Zeit konnte im Wesentlichen eingehalten werden da be reits die ben tigent F higkeiten im Release 3 gesammelt werden konn ten Die Hauptaufgabe bestand also darin den Fokus auf die neuen Ja vasyntaxelemente zu lenken Lesen der Daten aus der vom Controller aufbereiteten Datenstruktur und schreiben in den AST Beschreibung gepla
318. r Grafiken unterst tzt Die Bedingungen erm glichen semantische Beziehungen sowie topologische und geometrische Zusammenh nge zwischen den einzelnen Teilgrafiken zu formulieren Es sei je doch kritisch angemerkt dass die semantische Beziehung von Grafiken zu ihrer inhaltlichen Bedeutung nicht immer eindeutig ist Bei der Grafikerkennung Kapitel 7 4 2 wird deutlich dass dies nur dann m glich ist wenn sich die Beschreibungen und Bedingungen einzelner Teilgrafiken untereinander jeweils gut voneinander abgrenzen lassen Die Unterscheidung ei ner Include von einer Extends Beziehung erweist sich zum Beispiel als besonders schwierig da ihre grafischen Repr sentationen mit Ausnahme der Kantenbeschriftungen quivalent sind Hier k nnen sich durch eine unzureichende Deklaration recht schnell Fehler einschleichen Dennoch eignet sich der deklarative Ansatz um visuelle Sprachen formal zu fassen Eine konkrete Implementierung des Ansatzes erweist sich jedoch als teilweise schwierig da die Al gorithmen recht komplex sind Die Umsetzung der deklarationsbasierten Erkennung ist noch immer Arbeitsgebiet der Forschung Helm und Marriott 1991 da f r einige Deklarationen eine Top Down und f r andere wiederum eine Bottom Up Erkennung effizienter ist was eine einheitliche Implementierung erschwert Zudem flie t hier auch das Problem der Bilderken nung mit ein Die Erzeugung von Grafiken durch deklarative Sprachdefinitionen ist hingegen umzusetzen indem
319. r pr zise und einpr gsam sein A 1 3 Methoden Die Konventionen sind die der Klassen und Interfaces wobei jedoch der erst Buchstabe klein geschrieben wird A 1 4 Variablen 1 Die Konventionen sind die der Klassen und Interfaces wobei jedoch der erst Buchstabe klein geschrieben wird 2 Die Namen d rfen nicht mit _ oder anfangen A 1 5 Konstanten 1 Alle Buchstaben werden gro geschrieben 2 Einzelne W rter werden durch _ getrennt A 2 Aufbau der Java Dateien A 2 Aufbau der Java Dateien 1 Die zu verwendende Sprache ist Englisch 2 Jeder der Vorkommenden und hier besprochenen vier Abschnitte einer Java Datei wird durch zwei Leerzeilen getrennt 3 Eine Datei sollte auf keinen Fall mehr als 2000 Zeilen beinhalten 4 F r jede Klasse bzw f r jedes Interface wird eine Java Datei angelegt Jede Datei besteht aus den folgenden Abschnitten in der hier angegebenen Reihenfolge 1 Anfangskommentar 2 Paketdefinition 3 import Anweisungen 4 Klassen und Interfacedeklarationen A 2 1 Der Anfangskommentar Jede Datei enth lt einen Anfangskommentar als ersten Abschnitt welcher wie folgt aussieht Classname Version Create date Last changed LOA CA CACA CACA Copyrightinformationen A 2 2 Die Paketdefinition Der zweite Abschnitt enth lt gegebenenfalls eine Paketdefinition package paketname A 2 3 Die Importanweisungen Alle Paketimporte werden im dritten Abschnitt angegeben Hi
320. raph nur noch aus dem Startgraphen der mit Produktion 1 dem Axiom aus dem leeren Graph erzeugt wird Der gegebene Graph l t sich also auf das Axiom zur ckf hren Somit ist das Sprach problem positiv entschieden und der Graph ist ein Wort der Sprache der Grammatik und stellt ein PFD dar 6 4 2 Parsingalgorithmus nach Rekers und Sch rr Das obige Beispiel ist nat rlich sehr einfach gehalten Es gibt keine M glichkeit zwei ver schiedene Produktionen auszuf hren die die gleichen Knoten betr fen und sich somit aus schlie en w rden In den beiden while Schleifen ist es zwar m glich zuerst eine Schleife komplett zur ckzuf hren und anschlie end die andere oder erst die assign Statements in bei den Schleifen zu entfernen und danach die Schleifen aber diese Produktionen schlie en sich nicht gegenseitig aus Wenn sich zwei Produktionen gegenseitig ausschlie en ist nicht klar welche von beiden nun die richtige ist sprich welche umgekehrt ausgef hrt werden muss um zum Axiom zu gelangen Es m ssen daher beide M glichkeiten berechnet werden Eine L sung den richtigen Weg zu finden w re es eine Tiefensuche durchzuf hren Bei gro en Graphen gibt es unter Umst nden sehr viele Stellen an denen eine Produktion umgekehrt angewendet werden kann Die Tiefensuche berechnet daher eine Zwischendarstellung des Graphen mehrfach Im ersten Suchvorgang wird beispielsweise erst eine Produktion A anschlie end eine Produktion B und
321. rbeit n tig ist als wenn die eine alte Version die auch alle Tests besteht erhalten bleibt Es wird aber davon ausgegangen dass sich diese Mehrarbeit mittel bzw langfristig auszahlt denn sie ist wesentlicher Bestandteil um das System nderungsf hig zu halten und geringe nderungskosten zu erm glichen Ein weiterer mit der nderbarkeit zusammenh ngender Teil des Refactorings besteht in der Dokumentation Es wurde festgestellt dass mit verstreichender Projektlaufzeit die Do 9 3 Die 12 XP Techniken kumentation immer weniger angepasst wird Lippert u a 2002 XP beschr nkt daher die Dokumentation auf den Code Dieser sollte in hohem Ma e selbsterkl rend sein Refactoring mit Eclipse Eine Entwicklungsumgebung mit Refactoringbrowser wie in unserem Fall Eclipse kann diese Arbeit erleichtern und viele Refaktorisierungen aus dem Katalog per Mausklick erledigen So lassen sich sehr leicht Variablen umbenennen Methoden extrahieren in andere Klassen verschieben und vieles mehr In Eclipse werden folgende Refactorisierungsm glichkeiten angeboten Schiffer und Viol ka 2003 Umbenennen Verschieben Methodensignatur ver ndern Konvertieren von einer anonymen Klasse in eine verschachtelte Klasse Verschieben von Methoden in Ober und Un terklassen Umwandeln von Klassen in Interfaces usw 9 3 7 Programmieren in Paaren Eines der auff lligsten Merkmale von XP das es von anderen Entwicklungsprozessen unter scheidet ist
322. rd Cunningham und Kent Beck greifen im Jahr 1987 die Ideen von Alexander f r die Software entwicklung auf Jahre bevor die objektorientierte Programmierung weit verbreitet war ent wickelten diese beiden inspiriert durch Alexander eine kleine Mustersprache bestehend aus f nf zusammenh ngenden Mustern Etwa zur gleichen Zeit beginnt Jim Coplien mit der Sammlung und Zusammenstellung von Idiomen f r sein Buch Advanced C Programming Sytles and Idioms welches 1991 erscheint Im Sommer 1993 formiert sich dann die Hill side Generative Patterns Group die 1994 die erste Entwurfsmusterkonferenz mit dem Na men Pattern Language of Programming PLoP organisiert The Hillside Group Im selben Jahr ver ffentlicht eine Gruppe von vier Leuten die so genannte Gang of Four Gamma Helm Johnson Vlissides das wohl bekannteste Buch ber Entwurfsmuster welches auch heute noch eines der bedeutendsten Werke zu Entwurfsmustern darstellt Es tr gt den Titel Entwurfsmuster Elemente wiederverwendbarer objektorientierter Software Gamma u a 10 1 Was ist ein Entwurfsmuster 2001 und stellt einen gut strukturierten Entwurfsmusterkatalog vor Mit diesem Werk halten Muster auf breiter Front Einzug in die Informatik 10 1 2 Warum besch ftigt man sich mit Entwurfsmustern Entwurfsmuster vereinfachen die Wiederverwendung von guten Entw rfen und verhindern dass man eine L sung f r ein Problem sucht welches bereits
323. rden Testergebnis bestanden Anmerkung Es wird eine neue Klasse mit Hilfe des Eclipse Wizards angelegt die mit einem vorhan denen Interface des Projektes in einer Implementierungsbeziehung steht Nach erneu ter Generierung des Diagramms soll diese Klasse durch einen Implementierungspfeil mit dem entsprechenden Interface verbunden sein Testergebnis bestanden Anmerkung Dies funktioniert sogar mit Assoziationen 17 6 3 Anschlie ende Korrekturen Im Anschluss an den Kundenakteptanztest zwischen den Releases 4a und 4b sowie im An schluss an Release Ab sind noch einige kleinere Fehler korrigiert worden Nachfolgend sollen diese Korrekturen noch einmal kurz beschrieben werden e Die graphischen Figuren der Interfaces sind berarbeitet worden so dass Interfaces nun auch selektierbar sind und sichtbar markiert werden k nnen e Es werden nun verschiedene Assoziationstypen unterst tzt Dieses sind die ungerich tete und die gerichtete Assoziation sowie Implementations und Erbungsassoziationen Dabei sind die Farben f r die verschiedenen Assoziationstypen vorgegeben um eine visuelle Unterscheidung zu unterst tzen e Die Visualisierung von Vererbungshierarchien werden nun durch Cone Trees realisiert 217 218 17 Beschreibung des vierten Release Hierbei werden Klassen automatisch auf dem Cone Tree angeordnet sobald entspre chende Erbungsassoziationen eingef gt worden sind e Der Property Viewer der in Release Ab r
324. rechnet und mit den Produktionsinstanzen zusammen abgespeichert 2 In der nun folgenden Top Down Phase werden die in der Bottom Up Phase gefundenen Produktionsinstanzen PI so zusammengesetzt dass sie aus dem Graph das Axiom her leiten In einer Tiefensuche wird dazu eine Teilmenge von PPI gebildet die genau die 6 Graphgrammatiken Instanzen enth lt mit denen aus dem Axiom der Graph gebildet werden kann Dabei werden die verschiedenen Abh ngigkeiten zwischen den einzelnen Produktionsinstan zen beachtet um unn tige bzw unsinnige Kombinationen verschiedener Instanzen zu eliminieren Diese w rden ohnehin nicht zum Ziel f hren L t sich nun eine solche Teilmenge finden so ist das Sprachproblem erfolgreich gel st und der Algorithmus wird erfolgreich abgeschlossen Je nach Implementierung kann der Algorithmus einen Booleschen Wert zur ckgeben der angibt ob der berpr fte Graph zur Sprache geh rt true oder nicht false Eine andere M glichkeit ist die gefundene Teilmenge von PPI zur ckzugeben wenn der berpr fte Graph enthalten ist ist er nicht enthalten so wird die leere Menge zur ckgegeben Der Berechnungsaufwand f r beide R ckgabevarianten ist identisch da die Teilmenge ohnehin berechnet werden muss Die zweite Variante bietet sich aber an wenn die ausgef hrten Produktionen im weiteren Verlauf des Programmes noch ben tigt werden 6 5 Fazit und Ausblick Graphgrammtiken sind ein gutes Mittel Graphen auf i
325. rechten Zweig angewendet so wirkt sich diese auf beide Bl tter aus Weitere GroupNodes sind nicht so wesentlich und werden daher nur am Rande erw hnt wie etwaOrderdGroup und Switch mit dessen Hilfe die Renderingreihenfolge der Objek te beeinflusst werden kann und die SharedGroup die die M glichkeit bietet Subgraphen an verschiedenen Stellen im Szenegraphen zu teilen LeafNodes Die eigentlichen gegenst ndlichen Objekte einer dreidimensionalen Szene wie zum Beispiel geometrische Grundk rper aber auch der Szenenhintergrund Lichteffekte Sounds und Benut zerinteraktionen werden in den Bl ttern des Szenegraphen den LeafNodes gespeichert In Java3D werden zwei Begriffe zur Klassifizierung von Bl ttern benutzt Zum einen sind dies ShapeNodes welche die Informationen der dreidimensionalen Objekte beinhalten und zum anderen die EnvironmentNodes welche die Darstellung in Form von Licht Hintergrund und Benutzerinteraktionen beeinflussen Knotenkomponenten Ein gegenst ndliches Gebilde besitzt zum einen eine Geometrie zum Beispiel f r einen zw lf seitigen W rfel eine spezielle Anordnung der Eckpunkte zum anderen Informationen ber ihre Erscheinung wie Farbe oder etwa Reflexionsverhalten des Materials Die Geometrie daten und die Erscheinungsinformationen werden in den sogenannten NodeComponents gespeichert Nun k nnte zum Beispiel Information ber die Geometrie eines zw lfseitigen W rfels in einer Knotenkomponente gespeich
326. reidimensionale Darstellungen essentielle Begriffe dreidimensionale Welt World Sicht View und Display zu kl ren Die dreidimensionale Welt stellt den Bezugsraum dar in dem alle zu modellierenden Objekte platziert werden und hat ihr eigenes dreidimen sionales Koordinatensystem Damit ein Nutzer etwas von der dreidimensionalen Welt sehen kann ben tigt er eine Art Stellvertreter in der dreidimensionalen Welt der die Position und Blickrichtung seiner Augen darstellt die Sicht Sie zeigt die dreidimensionale Welt parallel oder perspektivisch projiziert auf ein zweidimensionales Display und ist in gewisser Weise vergleichbar mit einer Kamera Au erdem besitzt sie einen eigenen dreidimensionalen Be zugsraum f r Objekte in der dreidimensionalen Welt die von ihrer Position aus zu sehen sind Das Display zeigt die zweidimensionale Repr sentation der dreidimensionalen Welt aus dem Blickwinkel der zugeordneten Sicht 111 112 13 Grafische Editoren und dreidimensionale Benutzungsschnittstellen Nutzer Interaktion Darstellung Benutzungsschnittstelle Darstellungsanderung Abbildung 13 1 Struktur des MVC Musters nach Kiihne 2002 13 2 2 MVC Muster Aktuelle grafische Benutzungsschnittstellen sind nach dem Model View Controller Muster MVC Muster aufgebaut welches eine funktionale Gliederung in die drei Komponenten Modell Sicht View und Steuerung Control vorsieht Grundidee der Unterteilung ist nach Kiihne 2002
327. rf unterst tzen lassen sich in den Be reich der Diagrammeditoren einordnen Diagrammeditoren sind nach Gille 1999 grafische 110 13 Grafische Editoren und dreidimensionale Benutzungsschnittstellen Editoren die auf eine bestimmte Diagrammsprache wie z B elektrische Schaltpl ne oder UML zugeschnitten sind Sie eignen sich besonders zur Visualisierung und Manipulation von Nutzdaten die eine graphenartige Struktur besitzen F r die Interaktion mit grafischen Editoren existieren unter anderem die Konzepte der Struk tureditoren der syntaxgesteuerten Editoren und der freien Editierbarkeit Struktureditoren er m glichen laut Szwillus 1990 die Erstellung und Ver nderung von Diagrammen anhand korrekter Strukturen die durch Einf gen von vordefinierten Mustern und Elementen ausge baut werden und garantieren so syntaktische Korrektheit Ein einfaches Beispiel verdeutlicht das Prinzip Nach Definition ist jeder bin re Baum entweder leer oder besteht aus einer Wur zel einem linken und einem rechten bin ren Unterbaum Startend mit einem leeren Baum kann man durch Verwendung dieses Musters jeden beliebigen bin ren Baum aufbauen Das Prinzip der Struktureditoren wird in Reps und Teitelbaum 1989 n her erl utert Syntaxge steuerte Editoren berpr fen nach Boles 1994 bei jeder Eingabe die Richtigkeit der Kon strukte so dass es dem Nutzer nicht m glich ist syntaktisch falsche Grafiken zu erstellen Um dieses Ziel zu erreichen
328. ribute realisiert In manchen F llen ist es erforderlich Werte vorzubelegen oder die Angabe zu erzwingen Dies geschieht mit den Schl sselw rtern value bzw use Die Schemastruktur Wichtig bei der Definition eines Schemas ist dessen struktureller Aufbau Darunter versteht man die Anordnung der einzelnen Elemente in einer Baumstruktur Von der Wurzel dieses Baumes m ssen dann alle Elemente erreichbar sein Somit kann ein Element entweder die Wurzel eines Teilbaums sein oder aber ein Blatt F r jeden Knoten gibt es verschiedene Arten von Verzweigungsm glichkeiten Diese so genannten Konnektoren sind im Folgenden aufge f hrt e Sequenz Alle Kinder des Knotens werden in einer geordneten Liste organisiert e All Es werden alle Kinder des Knotens in einer ungeordneten Liste organisiert e Choice In einer Instanz darf nur genau ein Knoten der Liste angegeben werden Den Aufbau der Baumstruktur zeigen wir nun an einem Beispiel Wird ein neues Schema erzeugt so generiert man in der Regel zun chst ein allgemeines Element Namens extension welches allgemeine Eigenschaften des Erweiterungspunktes beschreibt Daum 2003 Dies ist dann die Wurzel des Baums und spezifische Elemente werden dann an diesem eingehangen Zus tzlich kann f r jedes Element jedes Attribut und jeden Konnektor mittels minOccurs und maxOccurs angegeben werden in welchen Grenzen sich die Anzahl der Wiederholungen befinden darf Dies wollen wir nun an einem Beispiel
329. ries je nach Kontext umgesetzt werden 15 4 Reflexion ber die Tasks geplante Zeit reale Zeit Da dieser Task auf den Ergebnissen der User Story Konzeptionelle Tasks bei den Hotspots aufbaut und der Umfang der Arbeiten noch nicht abzusehen war erfolgte hier keine Zeitabsch tzung F r die Durchf hrung der drei Hotspot Tasks wurden insgesamt 16 Stun den ben tigt Das Refactoring war an einigen Stellen z B Hinzuf gen des Interface Calculation f r die Berechnungsklassen einfach zu l sen An anderen Stellen hingegen war es komplizierter als erwartet Insbesondere der Controller war nur schwer in den abstrakten Teil im Framework und den konkreten im Plugin Fragment implementier ten Teil zu trennen Dar ber hinaus entstanden w hrend der Umsetzung des dynamischen Ladens von Klassen aus zwei verschiedenen Eclipse Plugins unerwartete Probleme Es war nicht m glich in einem Plugin Klassen dynamisch nachzuladen die zu einem anderen Plugin geh ren Um dieses Problem zu l sen wurde entschieden das zun chst geplante Design zu ndern Statt zwei Plugins zu entwickeln wurde ein Plugin implementiert das das Framework enth lt Die Diagramme werden als Plugin Fragmente realisiert 15 4 3 Diagramm Hotspots Implementierung der konzeptionellen Ergebnisse Beschreibung geplante Zeit reale Zeit siehe Abschnitt 15 4 2 auf der vorherigen Seite siehe Abschnitt 15 4 2 auf der vorherigen Seite siehe Abschnitt 15 4 2
330. rk mmlichen Entwicklungsprozessen wie z B dem Wasserfallmodell bei dem die Softwareentwicklung in sequentielle Phasen unterteilt wird die w hrend der Ent wicklung komplett abgeschlossen werden m ssen bevor die Arbeit an der n chsten Phase begonnen werden darf Royce 1970 verlaufen XP Projekte in mehreren Iterationen Die Ite rationen werden dabei in einer Art Spiel von den Entwicklern zusammen mit dem Kunden geplant Spielregeln definieren wie sich beide Gruppen zu verhalten haben Im Mittelpunkt stehen dabei rudiment re Anwendungsf lle die als User Storys bezeichnet werden Sie die nen unter anderem als Kommunikationsmittel zwischen Entwicklern und Kunden Der Kunde schreibt diese Storys auf kleinen K rtchen Die Entwickler sch tzen den Zeitaufwand f r die Implementierung Wenn der Umfang zu gro ist schlagen die Entwickler vor die Story in mehrere einzelne Storys aufzuteilen Der Kunde priorisiert die Storys und bestimmt gegebe nenfalls welche Storys erst in der n chsten Iteration realisiert werden Die Storys werden anschlie end in kleine Arbeitspakete aufgeteilt die als Tasks bezeichnet werden Die Planungen werden vor Beginn jeder Iteration erneut durchgef hrt Nach jeder Itera tion wird bereits ein Release erstellt das bereits ein funktionierendes System darstellt Eine Iteration sollte eine Dauer von ein bis drei Wochen haben Wenn sich herausstellt dass die Sch tzungen der Entwickler daneben liegen
331. rm steht f r die Instanziierbarkeit der Entit t F r genauere Angaben wird auf Engelen 2000 verwiesen Die Darstellung von Paketzugeh rigkeit erfolgt mit Hilfe der Information Cube Technik Pakete werden dabei als gro e Quader gezeichnet deren W nde von au en fast v llig trans parent sind Abb 12 2 b Im Inneren des Paketquaders sind die Symbole der in diesem Paket enthaltenen Entit ten angeordnet Betrachtet man ein Paket von au en so sieht man nur die enthaltenen Symbole und die drei r ckw rtigen W nde w hrend die drei Vorderw nde prak tisch durchsichtig sind und den Blick auf das Innere freigeben Beziehungen zwischen Entit ten sind durch Pfeile dargestellt Die Richtung der Beziehung 12 3 J 2 gt Browser inventar fuhrpark 11 E a Klasse und Schnittstelle b Paketdarstellung Abbildung 12 2 Symbolnotationen nach Engelen 2000 wird sowohl durch die Spitze angedeutet als auch durch einen Helligkeitsverlauf Die ver schiedenen Arten von Beziehungen werden durch die Farbe des Pfeils gekennzeichnet Es wird unterschieden zwischen Benutzung grau Import blau Erweiterung rot Implemen tierung gelb und Enthaltensein gr n im Sinne von inneren Elementen Bei der Benutzungs beziehung k nnen au erdem noch weitere Details dargestellt werden F r weitere Einzelheiten muss auch an dieser Stelle auf Engelen 2000 verwiesen werden 12 3 2 Das Visualisierungssystem Nachdem im K
332. rmGroup angeh ngt werden noch im Ursprung dargestellt werden Es soll nochmals darauf hingeweisen werden dass eine Transformation sich auf alle vorhan den und k nftigen Kindknoten der entsprechenden TransformGroup auswirkt 11 5 2 Erzeugung einer Lichtquelle In das Java3D Universum k nnen verschieden Arten von Lichtquellen hinzugef gt werden wie z B ambientes Licht direkt strahlendes Licht oder punktf rmige Lichtquellen vergleiche hierzu Kapitel 11 2 2 Lichtquellen werden in Java durch LeafNodes repr sentiert die von der abstrakten Klasse light abgeleitet werden Um zum Beispiel eine Punktf rmige Lichtquelle wie eine Kerze die in alle Richtungen glei ches Licht emittiert zu erzeugen wird der Konstruktor der Klasse PointLight aufgeru fen PointLight candle new PointLight on white position myatt Dabei werden die einzelnen Parameter im folgenden kurz erl utert e Der Parameter on vom Typ boolean legt fest ob die Lichtquelle eingeschaltet also aktiv ist oder nicht 11 Java3D e Der Parameter white ist vom Typ Color3f Dies ist ein Farbobjekt welches nach dem RGB Modell siehe hierzu Kapitel 11 2 2 erzeugt wurde und gibt die Farbe des emittierten Licht an Farbobjekte sind Bestandteil des Packetes javax vecmath e Der Parameter position ist vom Typ Point3f und legt die Position der Licht quelle fest e Der Parameter myatt ist wie der letzte auch ein 3er Tupel Seine Elemente legen die St rke der D
333. rodukt reale Zeit Acht Stunden wurden auch in etwa ben tigt Dabei wurde der Task in den Semesterferien verteilt auf alle PG Mitglieder erledigt Extension Points beschreiben Beschreibung Es sollten explizit die Extension Points beschrieben und dokumentiert werden um eine problemlose Benutzung des Frameworks sicher zu stel len geplante Zeit Eine Stunde reale Zeit Eine Stunde Einbinden der Hilfe in Eclipse Beschreibung Das geschriebene Tutorial sollte in die Hilfe Struktur der Eclipse Plattform eingebunden werden 16 4 Reflexion ber die Tasks geplante Zeit Eine Stunde reale Zeit Zwei Stunden Aus dem TWIKI mussten die HTML Seiten die das Tu torial beinhalten manuell extrahiert und f r jedes Plugin einzeln hinzu gef gt werden Beispieldiagramme mit allen verf gbaren graphischen Elementen Beschreibung Es sollten Screenshots f r das Sequenzdiagramm Plugin und f r das sta tische Modell erstellt werden die alle verschiedenen graphischen Ele mente enthalten Diese Bilder sollten in die Online Hilfe eingepflegt werden geplante Zeit F nf Stunden Der wesentliche Aufwand lag in der Erstellung einer sta tischen Szene da zu dem Zeitpunkt der Implementierung noch keine Lo gik vorhanden war wie graphische Elemente automatisch erzeugt bzw geordnet dargestellt werden reale Zeit Drei Stunden Obwohl die Anordnung manuell durchgef hrt werden musste konnte eine Beispielszene relativ einfach und schnell
334. roperty View Beschreibung Mit Hilfe des Property Views sollten Kardinalit ten an den Assoziatio nen gesetzt werden geplante Zeit 5 Stunden reale Zeit 3 Stunden Eintragen der Eigenschaften aus dem Inspektor ins Datenmodell Beschreibung nderungen im Property View sollen ins Datenmodell bernommen wer den so dass sie in der Szene angezeigt werden geplante Zeit 5 Stunden reale Zeit 5 Stunden Proxies darstellen Berechnung der Proxies Beschreibung Bei Erbung ber Paketgrenzen hinweg sollten sogenannte Proxies be nutzt werden um die Klassen die nicht in dem jeweiligen Paket sind dort anzeigen zu k nnen geplante Zeit 20 Stunden reale Zeit Dieser Task wurde aus Zeitmangel nicht bearbeitet Graphische Repr sentation der Proxies erstellen Beschreibung Proxies sollten sich in der Darstellung von den in einem Paket tats chlich vorhanden Klassen unterscheiden geplante Zeit 2 Stunden reale Zeit Da die Proxies nicht implementiert wurden wurde auch dieser Task nicht bearbeitet Graphische Feinheiten und Benutzbarkeit Ausblenden der Vorderseiten von Paketw rfeln Beschreibung Je nach Kameraposition soll die Vorderseite eines Paketes ausgeblendet werden 17 4 Reflexion ber die Tasks geplante Zeit 1 Stunde reale Zeit 1 Stunde Teilinformationen ein und ausblenden Beschreibung Es sollte die M glichkeit gegeben sein Teilinformationen wie z B Kar dinalit ten oder Klassennamen ein und aus
335. rsparnis da der Experte bereits in dem Themengebiet eingearbeitet war und die brigen Entwickler anleiten konnte Dadurch wurde das Expertenwissen in begrenzten Ma e weitergegeben Ein gro er Vorteil beim Pair Programming war die Fehlersuche zu zweit und die gegenseitige Erg nzung bei der Einarbeitung in ein neues Thema Auch die Unterteilung des Projektes in mehrere Releases und die damit einhergehende fort laufende Integration erwies sich als vorteilhaft da man st ndig eine ausf hrbare Version des Frameworks hatte deren Funktionalit t kontinuierlich weiterentwickelt wurde und sich die Arbeitsbelastung der PG gleichm ig auf das gesamte Jahr verteilte Der Verzicht auf die um fassende und detaillierte Planung des Gesamtprojektes war unbedingt n tig weil die benutzen Technologien wie etwa Eclipse oder Java3D zu komplex waren um sie von vornherein in die Planung mit einzubeziehen Au erdem hatte man durch den stetigen Wechsel zwischen Planungs und Entwicklungsphasen stets abwechslungsreiche Aufgaben Als Kritik wurde an gemerkt dass die PG Teilnehmer mehr in die Gesamtplanung der Releases integriert werden sollten Dadurch w rden die Teilnehmer einen besseren berblick ber den Gesamtumfang und der Planung der Projektgruppe gewinnen Dar ber hinaus wurde die Reihenfolge der Re leases s Kapitel 2 6 kritisiert W hrend der Realisierung der Interaktion war eine komplette berarbeitung des bereits existierenden Frameworks n tig
336. rsula Wellen Zwischenbericht der Projektgruppe Com42Bill PG 411 September 2002 Alexander Fronk An Approach to Algebraic Semantics of Object Oriented Languages Oktober 2002 Ernst Erich Doberkat Semi Pullbacks and Bisimulations in Categories of Stochastic Relations November 2002 Yalda Ariana Oliver Effner Marcel Gleis Martin Krzysiak Jens Lauert Thomas Louis Carsten R ttgers Kai Schwaighofer Martin Testrot Uwe Ulrich Xingguang Yuan Prof Dr Volker Gruhn Sami Beydeda Endbericht der PG nightshift Dokumentation der verteilten Gesch ftsprozesse im FBI und Umsetzung von Teilen dieser Prozesse im Rahmen eines FBl Intranets basierend auf WAP und Java Technologie Februar 2003 Ernst Erich Doberkat Eugenio G Omodeo ER Modelling from First Relational Principles Februar 2003 Klaus Alfert Ernst Erich Doberkat Gregor Engels Hrsg Ergebnisbericht des Jahres 2002 des Projektes MuSofT Multimedia in der SoftwareTechnik M rz 2003 Ernst Erich Doberkat Tracing Relations Probabilistically M rz 2003 Timo Albert Zahir Amiri Dino Hasanbegovic Narcisse Kemogne Kamdem Christian Kotthoff Dennis M ller Matthias Niggemeier Andre Pavlenko Alireza Salemi Bastian Schlich Alexander Schmitz Volker Gruhn Lothar Sch pe Ursula Wellen Endbericht der Projektgruppe Com42Bill PG 411 M rz 2003 Klaus Alfert Vitruv Specifying Temporal Aspects of Multimedia Presentations A Transformational Approach based
337. rt durchf hrt Er kann ja unmittelbar sehen ob noch alle Tests funktionieren Durch die gemeinsame Verantwortlichkeit wird verhindert dass Code aus dem Wissensstand eines einzigen Programmierers entsteht 9 3 9 Fortlaufende Integration Der neue Code wird st ndig integriert und getestet sp testens jedoch nach einem Arbeitstag Daf r wird ein eigener Integrationsrechner bereitgestellt Nach der Programmierarbeit geht man an diesen Integrationsrechner integriert und testet bis alle Tests fehlerfrei sind Generell sollte es so sein dass bereits nach einigen wenigen nderungen die eigenen Arbeit auf den 9 eXtreme Programming Einf hrung Integrationsrechner gespielt werden So vermeidet man Konflikte beim Zusammenf hren und macht die gerade neu entwickelten Funktionen dem gesamten Team zug nglich 9 3 10 40 Stunden Woche Es sollte maximal eine Woche berstunden gemacht werden Sollten mehr berstunden von N ten sein muss die Ursache daf r gesucht werden und oder gegebenenfalls der Projektplan angepasst werden Zudem sollte jeder Programmierer mindestens zwei Wochen im Jahr Ur laub am St ck nehmen Nur unter dieser Voraussetzung sind die Programmierer ausgeruht und leisten gute Arbeit 9 3 11 Kunde vor Ort Ein Kunde der das System sp ter verwendet sollte bei der Entwicklung anwesend oder min destens st ndig erreichbar sein und so f r eventuelle Fragen zur Verf gung stehen Nur so ist bei der Entwicklung direkt
338. rter Architektur 134 14 54 AI 135 14 6 Kunden Akzeptanztest 2 Cm mn 135 14 6 1 Visuelle Tests e 138 14 6 2 Auto visuelle Tests 139 KAPITEL 15 Beschreibung des zweiten Release 141 1951 Einling EE ee ER ED RES ROP Ee 141 15 2 WEM SIONES wo 42a See ARA RR RR A a 141 15 3 Systemmetapher 143 15 4 Reflexion ber die Tasks 00022 ee eee ee ee 143 15 4 1 Konzeptionelle Tasks bei den Hotspots 2 2 nn nn 143 15 4 2 Domaln Hotspols lt lt oc ec osoro oeoa nennen aan 144 15 4 3 Diagramm Hotspots 145 15 4 4 Regel Hotspots 2 222mm 145 15 4 5 Alle User Stories aus Release 1 m ssen erf llt bleiben 145 15 4 6 Fehler sollen in der GUI angezeigt werden Exception Handling 146 15 4 7 Deployment des Plugin 146 15 4 8 W hrend jeder Berechnung soll ein Infofenster angezeigt werden inkl Logo Eine Fortschrittsanzeige ist w nschenswert 2 222mm 147 15 4 9 Es sollen mehrere Pakete gleichzeitig zur Visualisierung ausgew hlt und ange zeigt werdenk nnen 147 15 4 10 Die visuellen Diagrammelemente sollen zur besseren Orientierung ihren Schatten auf den Boden werfen s o a a e 148 T5441 Fais e yona rr e deg un d See ge a e e Mant ede E Aer A 149 15 5 Vorstellung der implementierten Architektur 149 15 5 1 Beschreibung der geplanten Architektur 149 15 5 2 Beschreibung der realisierten Architektur 150 15 5 3 Vergleich zwischen gepla
339. s reale Objekt simuliert Das Adaptermus ter welches wir im weiteren Verlauf noch kennen lernen werden passt z B eine Schnittstelle einer Klasse an eine andere an und bietet somit eine Abstraktion durch die man dann erreicht dass auf beiden Klassen gearbeitet werden kann Dieser Abschnitt soll keinen umfassenden berblick ber die Strukturmuster geben son dern vielmehr klar machen mit was f r unterschiedlichen Zielsetzungen Strukturmuster ver wendet werden k nnen Allen Strukturmustern gemeinsam ist die Methodik um spezifische Ziele zu erreichen So arbeiten objektbasierte Strukturmuster meist mit Komposition um Ob jekte zusammenzuf hren und dadurch neue Funktionalit t zu gewinnen Hierdurch erreicht man meist eine hohe Flexibilit t da die komponierten Objekte jeder Zeit also auch w h rend der Laufzeit austauschbar sind Klassenbasierte Strukturmuster hingegen benutzen Ver erbung um Schnittstellen und Implementierungen zusammenzuf hren In unserem Fall spie len die klassenbasierten Muster keine allzu gro e Rolle Deshalb werden wir diese nicht weiter ausf hren 10 3 1 Kompositum Zweck F gt Objekte zu Baumstrukturen zusammen um Teil Ganzes Hierarchien zu repr sentieren Das Kompositionsmuster erm glicht es Klienten sowohl einzelne Objekte als auch Komposi tionen von Objekten einheitlich zu behandeln Motivation Angenommen man hat eine Menge von simplen Objekten die zusammengesetzt ein sinnvol les Obj
340. s Projekt erstellen 20 2 Hinzuf gen von Fragment Extensions 2 In dem nachfolgenden Dialog siehe Abbildung 20 2 muss nun das EFFECTS Plug In als Parent gew hlt werden Hierzu wird die Plug in ID de 1s10 effects core angegeben Alle weiteren Werte in diesem Dialog k nnen optional ge ndert werden New Fragment Project Pl Fragment Content Enter the data required to generate the fragment f Fragment Properties Fragment ID Testfragment Fragment Version 1 0 0 Fragment Name Testfragment Fragment Fragment Provider Po Runtime Library Parent Plug in Plug in ID de ls10 effects core Browse Plug in Version bso Match Rule Poo y IT Intended for use with older Eclipse platforms prior to 3 0 lt Back Next gt Cancel Abbildung 20 2 Basisplugin festlegen 20 2 Hinzuf gen von Fragment Extensions Der n chste Schritt ist das Erweitern der Eclipse Plattform durch den Extension Mechanismus Dies geschieht in der fragment xm1 des neu angelegten Plugins Zwingend notwendige Er weiterungen sind e org eclipse ui newWizards um einen Wizard zu implementieren der daf r sorgt das neue Diagramme angelegt werden Ein EFFECTS Wizard muss in der Kategorie de 1s10 effects core wizards registriert sein e de 1s10 effects core DiagramGeneration da hier ber die Klassen des Con trollers und der Szeneberechnung dem Basisplugin bekannt gemacht werden Optional k nnen beliebige weitere
341. s Release 4 um Funktionalit t anreichern aus dem Diagramm Code erzeugen Bedienelemenete in die Eclipse Oberfl che integrieren Darstellungen berarbeiten e Abschlussbericht 3 Wochen 2 7 Vorgehensmodell Als Vorgehensmodell wird der Ansatz des eXtreme Programming XP verwendet Dieser Ansatz unterteilt das Projekt in mehrere Releases bzw Iterationen Dabei gibt es in jeder Iteration ein geregeltes Vorgehen Zun chst werden von den in der Rolle des Kunden sich befindenden Mitgliedern Userstories zusammen mit der Gesch ftsleitung erstelllt Mit diesen Userstories werden die Anforderungen an das Release beschrieben Anschlie end unterteilen die Entwickler diese in Taskcards die nun die konkreten Aufgaben enthalten Die Taskcards werden priorisiert und zeitlich abgesch tzt Die einzelnen Aufgaben werden von jeweils zwei Entwicklern mittels Pair Programming bearbeitet Dabei sollen die Partner gewechselt werden um an m glichst allen Aufgaben des Projektes beteiligt zu sein Dadurch erh lt man einen berblick ber das gesamte System Die Aufgaben werden mit dem Test First Ansatz bearbeitet Hier wird zun chst eine Test klasse geschrieben und erst wenn diese vollkommen funktionsf hig ist wird die eigentliche Klasse implementiert Weiterhin soll der implementierte Code refaktorisiert also durchgehend berarbeitet und getestet werden A Kart 3 bersicht ber den Abschlussbericht Alexander Fronk Jens Schr der
342. s alternative is allowed only for noncommercial dis tribution and only if you received the program in object code or executable form with such an offer in accord with Subsection b above The source code for a work means the preferred form of the work for making modifi cations to it For an executable work complete source code means all the source code for all modules it contains plus any associated interface definition files plus the scripts used to control compilation and installation of the executable However as a special exception the source code distributed need not include anything that is normally dis tributed in either source or binary form with the major components compiler kernel and so on of the operating system on which the executable runs unless that component itself accompanies the executable If distribution of executable or object code is made by offering access to copy from a designated place then offering equivalent access to copy the source code from the same place counts as distribution of the source code even though third parties are not compelled to copy the source along with the object code N a 266 B The GNU General Public License 4 You may not copy modify sublicense or distribute the Program except as express ly provided under this License Any attempt otherwise to copy modify sublicense or distribute the Program is void and will automatically terminate your rights under this License
343. s am Zustand des Modells ndern werden die Registrierten Sichten darauf hingewiesen und versorgen sich mit den n tigen Daten aus dem Modell um ihre Darstellung den neuen Gegebenheiten anzupassen Die Model Komponente verf gt ber eine Schnittstelle die es erm glicht Beobachterobjek te an und abzumelden Es spielt hier keine Rolle wie hoch die Anzahl der Beobachterobjekte ist Hier wird auch der Updateprozess angesto en indem eine Nachricht an alle angemeldeten Beobachter gesendet wird Die Views implementieren eine Operation zum Abgleich der Da ten mit dem Model Sie halten sich eine Referenz auf das von ihnen beobachtete Objekt um bei dem Updateprozess ihrer Darstellung auf die im Model gespeicherten Daten zugreifen zu k nnen Zun chst melden sich die Objekte der beiden Komponenten Controller und View am Mo del an Der Controller ruft die Methode setzeZustand des von ihm beobachteten Modells auf Hierdurch werden die Daten des Modells ver ndert so dass alle registrierten Views ber 68 10 Entwurfsmuster meldeAn meldeAn setzeZustand gibZustand aktualisiere gibZustand Abbildung 10 2 Ablauf der Interaktion zwischen den 3 MVC Komponenten Gamma u a 2001 10 2 Ein einf hrendes Beispiel 69 View AbstrakteFabrik abstrakteFabrik gt view erzeugeSkala void erzeugeKomponente void view discriminatof Tabel
344. s eingesetzt n mlich bei der Anforderungsbeschreibung wo noch unklar ist welche Objekte welche Verantwortlichkeit bernehmen Man erh lt einen berblick ber die Aktionen in einem Anwendungsfall und deren Abh ngigkeit von weiteren Aktivit ten Dadurch gewinnt man ein grobes Verst ndnis f r Abl ufe des zu modellierenden Systems Neben der Modellierung von sequentiellen Abl ufen erlauben Aktivit tsdiagramme be dingte oder parallele Abl ufe zu beschreiben Dadurch werden unn tige Reihenfolgebedin gungen vermieden und man kann evtl Parallelisierungen einbauen was die Durchlaufzeit des zu modellierenden Gesch ftsvorgangs verbessern kann Zusammengeh rende Aktivit ten k nnen in einer so genannten Oberaktivit t zusammengefasst werden Um in einem Aktivit tsdiagramm deutlich zu machen welche Aktivit t von welcher Rolle ausgef hrt wird kann man Verantwortungsbereiche einzeichnen Dabei wird das Aktivit ts diagramm durch vertikale Linien in Bereiche eingeteilt wobei jeder Bereich eine Verantwort lichkeit darstellt Im Hinblick auf die Projektgruppe k nnte man mit Hilfe von Aktivit tsdiagrammen die Reihenfolge von Aktivit ten eines Editors verdeutlichen die ausgef hrt werden m ssen um einzelne Anwendungsszenarien wie etwa das Abspeichern einer Datei auszuf hren siehe Abbildung 4 2 Beim Schlie en des Editors hat der Benutzer die M glichkeit die Datei zu speichern Beim Nichtspeichern wird das Programm sofort beendet
345. s to carry prominent notices stating that you chan ged the files and the date of any change b You must cause any work that you distribute or publish that in whole or in part contains or is derived from the Program or any part thereof to be licensed as a whole at no charge to all third parties under the terms of this License c If the modified program normally reads commands interactively when run you must cause it when started running for such interactive use in the most ordinary way to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty or else saying that you provide a warranty and that users may redistribute the program under these conditions and telling the user how to view a copy of this License Exception if the Program itself is interactive but does not normally print such an announcement your work based on the Program is not required to print an announcement These requirements apply to the modified work as a whole If identifiable sections of that work are not derived from the Program and can be reasonably considered independent and separate works in themselves then this License and its terms do not apply to those sections when you distribute them as separate works But when you distribute the same sections as part of a whole which is a work based on the Program the distribution of the whole must be on the terms of this License whose permissions for other l
346. sen Vorg ngen wie im folgenden wieder anhand des Beispiels aus Abbildung 7 1 gezeigt werden soll 7 4 1 Erzeugung Es soll der Fall angenommen werden dass wir die Beziehung zwischen dem Akteur Sven und dem Anwendungsfall Seminar vorbereiten zeichnen wollen Wir betrachten die Teilgrafiken Akteur und UseCase als gegeben und bereits in unsere Zielgrafik eingezeichnet Wir legen das Augenmerk auf die grafische Repr sentation der Relation Hierzu verwenden wir die De klaration aus Abbildung 7 4 die der des Strichm nnchens hnlich ist Der Relation wird als Parameter mitgegeben dass sie von einem bereits gezeichneten Startobjekt zu einem eben falls schon gezeichneten Zielobjekt verlaufen soll In unserem Fall sind das der Akteur Sven und der Anwendungsfall Seminar vorbereiten Diese sind bereits gezeichnet worden so dass ihre Positionen bekannt sind Nun werden die deklarierten Bedingungen der Relation gepr ft Entweder muss die Relation also von einem Akteur zu einem Anwendungsfall f hren oder umgekehrt Dazu wird im Beispiel die Funktion isType verwendet die pr ft ob das im ersten Parameter bergebene Objekt von dem im zweiten Parameter bergebenen Typ ist Die 7 Der deklarative Ansatz graphic Relation vertex start vertex end isType start Actor amp isType end UseCase isType start UseCase amp isType end Actor gt line start end solid Abbildung 7 4 Deklaration der Relation se
347. ss nun noch dem Shape3D Objekt bergeben werden Zeile 6 11 6 Fazit 11 5 4 Interaktionen Benutzer Interaktionen und Animationen innerhalb des virtuellen Universums werden ber sogenannte Behaviors gesteuert Zur Einordnung in den Szenegraph dazu die Vererbungs hierarchie Nod gt Leaf gt Behavior Behaviors k nnen ber Ereignisse und Bedingungen aktiviert und deaktivieret werden Dies erm glicht eine Verschiebung der Szene zur Laufzeit Eine wichtige abgeleitete Klasse ist der Interpolator Dieser f hrt ber einen bestimmten Zeitraum eine Bewegung aus Die Transformation des Objekts geschieht durch das Behavior prinzipiell wie in Abschnitt 11 5 1 beschrieben Meist reicht die Angabe von Start und Endpunkt des zu bewegenden Objekts aus der Weg dazwischen wird automatisch interpoliert F r den Umgang mit Behaviors spielen die folgenden drei Methoden eine wichtige Rolle e void initialize diese Methode wird aufgerufen wenn die Branchgroup an der das Behavior h ngt an die Locale gesetzt wird In ihr wird als letztes die Methode void wakeupon aufgerufen e void processStimulus java util Enumeration criteria diese Methode wird aufgerufen wenn ein Ereigniss stattfand da das Behavior geweckt hat e void wakeupoOn in dieser Methode steht welche Ereignisse das Behavior aufwachen lassen sollen Ferner ist noch anzumerken dass in Java3D schon zahlreiche vorgefertigte Behaviors vorhanden sind
348. ss s mtliche Linien in einem Anwendungsfalldiagramm also Rela tions Include und Extend Beziehungen gleich aussehen Dann stellt sich die Frage welche Art von Linie in dieser Grafik vorliegt und welche Bedeutung sie f r die Aussage der Grafik hat Auch hier ist eine R ckf hrung auf die Deklaration m glich W hrend die Formen aus den Beschreibungen der Deklaration erkannt wurden erfolgt die Erkennung der Bedeutung aus den Bedingungsteilen der der Deklaration Nachdem die beiden Objekte die die Linie verbindet als Akteur und Anwendungsfall identifiziert worden sind ist nur noch die Bedin gung der Relation Abbildung 7 4 erf llt Die Bedingung einer Include Beziehung dass Start und Zielpunkt der Linie jeweils Anwendungsf lle sein m ssen ist zum Beispiel nicht erf llt Daraus kann abgeleitet werden dass es sich bei dieser Kante um eine Relation handeln muss Es liegt in Abbildung 7 5 also ein Akteur vor der zu einem Anwendungsfall in Beziehung steht 7 5 Abgrenzung gegen Graphgrammatiken Eine weitere M glichkeit visuelle Sprachen zu definieren bieten Graphgrammatiken Sch rr und Westfechel 1992 Aus diesem Grund sollen die Funktionsweisen der beiden Definitions m glichkeiten verglichen werden um den deklarativen Ansatzes gegen die Graphgrammati ken abzugrenzen Um den Vergleich sinnvoll durchf hren zu k nnen beschr nken wir uns auf die Erzeu gung und die Erkennung von Graphstrukturen Graphgrammatiken eignen sich
349. sse initialisiert den Controller Hierzu m ssen ver schiedene Methoden berschrieben werden e registerMyClasses l dt alle vom Diagramm ben tigten Klassen via Reflection ein Ein Codebeispiel befindet sich in der API Dokumentation e getXMLFileURL gibt die XML Datei an welche f r das Mapping zwischen Container und der IResource des JDT zust ndig ist Eine IResource in Eclipse ist eine Modell klasse die entweder ein Project ein Verzeichnis eine Datei oder den Vaterknoten aller Projekte repr sentiert Der Vaterknoten wird auch als Workspace Root bezeichnet e init erstellt eine Instanz des Plugin Controllers wobei eine leere Szene erzeugt wird e generateDiagram arbeitet im Prinzip wie init es wird jedoch die in einer vorherigen Sitzung gespeicherte Szene wiederhergestellt e getClassName muss den vollqualifizierten Namen der Klasse zur ckliefern Dies wird f r die Serialisierung beim Speichern des Diagramms ben tigt e getInitializerDataResource muss den Namen der Ressource zur ckliefern wel cher in dem Workspace Root gesucht werden soll w hrend das Diagramm geladen wird 20 3 4 Die Beschreibung der Szene Paket de 1s10 effects core view3d Die Szenebeschreibung wird in einer Klasse realisiert welche von Scene erbt In dieser Klas seist der ContentBranch des Szenegraphen aufzubauen der dargestellt werden soll Dazu ist die Methode getContenBranch zu implementieren welche die BranchGroup mit der dar zustellende
350. ssy oponasujebeypoed des Automaten Jagramm Zustandsd Idung 17 5 Realisiertes i Abb 17 5 Vorstellung der implementierten Architektur listener inititialize initialize Abbildung 17 6 Die realisierte Pluginstruktur 210 17 Beschreibung des vierten Release sprechenden Einf gemodi erreichbar sind Die Plugin Kontrollstruktur Die Planung ging nur von einer strikteren Trennung von Model und View aus Die Struktur wie sie sich jetzt mit einem echten Controller als Schicht zwischen Model und View dar stellt ergab sich erst w hrend der Realisierungsphase Die strikte Trennung von Model und View konnte durch diesen Controller der die Zugriffe auf das Datenmodell kapselt umge setzt werden Datenmodell und graphische Objekte sind nun strikt getrennt und nur ber den Controller verbunden Ebenso wurde die Eclipseintegration durch die Verwendung eines Editor verbessert 17 5 4 Fazit Die Modellierung von Datenmodell und Zustandsautomat in der Planungsphase erwies sich als ausreichend Fast alle ben tigten Eigenschaften konnten schon in der Planungsphase defininert werden so dass die Umsetzung ohne gro e nderungen vonstatten gehen konnte Bei der Umsetzung des MVC Konzepts war eine Planung aufgrund der Unkenntnis der genauen Realisierung von Eclipse Editoren und einem gr erem Refactoringaufwand nicht m glich So geschah die Planung iterativ und passte sich mehrmal
351. ste Anwendung des Frameworks sollte die Funktionalit t aus dem ersten Release rea lisiert werden Diese Funktionalit t ist die dreidimensionale Visualisierung von Javaklassen Dazu wurde eine User Story definiert Des Weiteren sollten neue Features in das zweite Relea se eingebracht werden welche sich aus der Anwendung des Plugins aus dem ersten Release ergeben Diese Features wurden ebenfalls als die folgenden User Stories verfasst Die User Stories Exception Handling und Berechnungsstatus betreffen das Framework wohingegen die User Stories Paketauswahl und Schatten zur Orientierung die dreidimensionale Visualisierung 142 15 Beschreibung des zweiten Release von Javaklassen betreffen Auf das gesamte Release bezieht sich die User Story Deployment des Plugins Im Folgenden werden die einzelnen User Stories aufgelistet und kurz beschrie ben Domain HotSpot Beschreibung des Domains und seiner Entit ten ber eine textuelle Schnitt stelle Dieser HotSpot beschreibt welche Entit ten wie z B Javaklassen im Diagramm re pr sentiert werden sollen Diagramm HotSpot Beschreibung der visuellen Darstellung der Domainelemente ber ei ne textuelle Schnittstelle Hier wird die graphische Darstellung der Elemente festgelegt wie z B die Darstellung als W rfel Regel HotSpot Beschreibung der Diagrammregeln ber eine textuelle Schnittstelle Dabei bieten sich zwei m gliche Arten der Beschreibung an e einfach Einfache Regeln legen die
352. t Dies wird am einfachsten anhand des Beispiels der objektzentrierten Sicht klar Der Nutzer w hlt ein Beobachtungsobjekt aus und bewegt anschlie end seinen Blick um dieses Objekt herum damit er es untersuchen kann Auch vom Standpunkt einer dritten Person aus l sst sich navigieren Daf r ist eine separate Steuerung au erhalb der Welt wie z B eine berblicks karte n tig Ein anderes Konzept verfolgt die kontextuelle Navigation welche dem Nutzer die M glichkeit gibt alternative Darstellungen derselben oder verwandter Daten zu sehen Dies wird zum Beispiel durch nderungen des Detailniveaus von Paketen ber Klassen hin zu Attributen erreicht F r den Entwurf der Navigation ist es sinnvoll m gliche Beschr nkungen einzuf hren So kann die Navigation um einen festen Punkt dem Nutzer helfen den berblick zu behal ten Falls der Nutzer die Orientierung in der dreidimensionalen Welt verlieren sollte ist eine vorher definierte Grundposition zu der man einfach zur ckkehren kann sinnvoll F r Pr sen tationen eignet sich das Mittel gef hrter Touren durch die dreidimensionale Welt etwa zu den wichtigsten Klassen Somit ist es einfacher sich einen ersten berblick zu verschaffen Manipulation Die Art und Weise wie Nutzer mit den Datenobjekten in der dreidimensionalen Welt der An wendung interagieren hei t Manipulation Wie bei der Navigation werden auch hier wieder die drei verschiedenen Kontrollpersonen unterschieden Zur Obj
353. t Die ser Anwendungsfall beinhaltet wiederum die Generierung von Folien durch das technische System PowerPoint 7 Der deklarative Ansatz Seminar vorbereiten Sven lt lt include gt gt lt lt actor gt gt Folien PowerPoint generieren Abbildung 7 1 UML Anwendungsfalldiagramm F r einen in der UML ge bten Softwareentwickler ist die Aussage dieser Grafik schnell zu berblicken Sollte nun jemand anderes oder gar ein Computer dieses Diagramm interpre tieren so ist es notwendig dass die Symbole der Grafik sinngem erkannt und zugeordnet werden Hierzu m ssen die Syntax des Diagrammtyps sowie dessen Semantik richtig erkannt werden Ebenso ben tigt man die Kenntnis ber Syntax und Semantik eines Diagrammtyps um ein entsprechendes Diagramm zu erzeugen Ohne das Wissen ber Syntax und Semantik w rde sich f r den Betrachter oder ein Pro gramm folgendes Bild lediglich auf Basis von Koordinaten ergeben hier f r den Actor Sven e Kreis an Position 1 4 mit Durchmesser 1 e Linie von 1 4 nach 4 4 e Linie von 3 3 nach 3 5 e Linie von 3 5 nach 4 4 e Linie von 4 4 nach 5 5 Entscheidend ist dass die Interpretation dieser Linien und Kreise als das zusammenh n gende Symbol Strichm nnchen bereits ein Verst ndnis der Syntax erfordert und somit nicht trivial ist Ferner ist die Zuordnung dieses Strichm nnchens zu einem Akteur der realen Welt der hier eine Aktivit t ausf hren s
354. t lt asn gt gt lt lt asn gt gt lt lt asn gt gt Abbildung 15 2 Implementierte Systemarchitektur Release 2 15 6 Kunden Akzeptanztest bis auf wenige Ver nderungen so implementiert wurde wie sie geplant war liegt auch darin begr ndet dass sie auf der Visualisierung des ersten Releases aufbaut Die Darstellung der In formationen wurde wie geplant implementiert Dabei erfragt die Klasse InformationView die anzuzeigenden Daten von der abstrakten Klasse Scene Auch die Klassen die als Grundla ge f r das Datenmodell dienen wurden so realisiert wie sie geplant waren Es handelt sich um die von Eclipse bereitgestellten Klassen ICompilationUnit und IType sowie das Interface IResource Auch diese wurden bereits im ersten Release verwendet Um ein diagrammtypspezifisches Plugin in das Kernplugin einzuh ngen m ssen die durch das Kernplugin bereitgestellten DiagramGeneration und InformationViewAddition ge nutzt werden In der Manifestdatei des Fragments m ssen den genutzten Extension Points noch Klassen zugeordnet werden In diesem Release wurden die bereits erw hnten Klassen InformationView und Controller den Extension Points zugeordnet Dieses entspricht ebenfalls der geplanten Architektur Die Funktionalit t dieser Klassen hat sich gegen ber dem ersten Release allerdings nicht grundlegend ver ndert In diesem Release wurde eine Aufteilung in ein Plugin welches die Kernfunktionalit ten enth lt die f r alle Diagramm
355. t rlich nicht nur auf die Klasse der Ver haltensmuster untereinander z B lassen sie sich auch mit Strukturmustern sehr sch n kom binieren Ein Klient der das Kompositionsmuster dazu verwendet sein Objektstruktur zu ver walten k nnte dann das Besuchermuster dazu verwenden um Operationen auf seiner Objekt struktur zu implementieren 10 5 Schlussfolgerungen Nach dieser kurzen Einf hrung in die Welt der Entwurfsmuster wollen wir nun Zusammenfas sen warum es Sinn macht sich mit ihnen zu besch ftigen Bei dem Entwurf von objektorien tierter Software kann man auf eine Vielzahl von Problemen sto en die gel st werden m ssen Welche Erkenntnisse die uns bei dem Ziel unterst tzen diese Probleme zu l sen haben wir nun dazu gewonnen Objektorientierte Software besteht aus Objekten den Instanzen von Klassen In einem Ob jekt werden Daten und Operationen zusammengefasst Die Operationen der Objekte werden auf Anfrage eines Klienten ausgef hrt und arbeiteten auf den Daten des Objekts Die Anfra gen des Klienten stellen die einzige M glichkeit dar ein Objekt dazu zu bewegen eine seiner Operationen auszuf hren Die Daten des Objekts lassen sich ihrerseits nur ber die Operatio nen des Objekts ver ndern Dies ist der Grund daf r dass der Zustand des Objekts von au en nicht sichtbar ist was man allgemein als Kapselung der internen Daten versteht Ein nicht tri viales Problem bei der Softwareentwicklung ist es nun herauszufinden we
356. t des Zugriffs auf einige vorhandene Funktionalit ten von Eclipse wie z B das Datenmodell konnte in einigen Tasks Arbeitszeit eingespart werden Diese ge wonnene Zeit musste jedoch in die Java3D bezogenen Tasks zus tzlich investiert werden da die Einarbeitung in die API von Java3D deutlich umfangreicher war als erwartet 14 5 Vorstellung der implementierten Architektur Stephan Eisermann Kai Gutberlet Michael Pflug Im Nachfolgenden soll die in diesem Release implementierte Architektur vorgestellt werden Dazu wird zun chst die geplante Architektur beschrieben dann die realisierte Architektur festgehalten und abschlie end beide verglichen 132 14 Beschreibung des ersten Release 14 5 1 Beschreibung der geplanten Architektur Das Modell gliedert sich wie in Abschnitt 14 3 n her beschrieben nach dem Model View Controller Konzept MVC Zur Datenhaltung sollte das Eclipse Datenmodell passend durch Containerobjekte erweitert werden An dieser Stelle ist das Modell nur grob definiert und muss verfeinert werden Die Klassen des Controllers haben die Aufgabe mit den Daten des Eclipse Datenmodells Berechnungen zur 3D Darstellung durchzuf hren Diese Aufgabe soll die Klasse UmrechnungIn3DModell bernehmen Hierf r ist es n tig aus den Daten zu n chst logische Informationen zu berechnen Diese logischen Informationen sind eine Vor aussetzung f r die Erzeugung der 3D Szene und gliedern sich in die Analyse der Farben die Analyse
357. t die Funktion fertig Westphal 2000 Testen mittels JUnit in Eclipse Eclipse bietet in seinen aktuellen Versionen ein integriertes Framework dass f r die testge triebenen Programmierung bestens geeignet ist JUnit Beck und Gamma 2001 so der Na me diese Frameworks ist eine automatisierte Testumgebung die von Kent Beck und Erich Gamma entwickelt wurde F r eine gute Einf hrung eignet sich das Buch Link 2002 JU nit erlaubt es dem Programmierer auf einfache Art und Weise Tests f r seine Klassen und Methoden zu schreiben und sie anschlie end alle auszuf hren Das Vorgehen bei JUnit ist folgendes Man erzeugt pro Klasse die man implementieren will eine Testklasse die von TestCase Klasse aus dem JUnit Framework abgeleitet wird Wie es beim testgetriebenen Programmieren vorgeschrieben ist wird f r jede Eigenschaft die implementiert werden soll zun chst eine Testmethode ein Testfall geschrieben die diese Eigenschaft berpr ft Anhand der graphischen Oberfl che von JUnit kann dann direkt erkannt werden ob die Tests erfolgreich waren oder nicht ein Balken wird entweder gr n oder rot Falls sich der Balken rot f rbt ist ein Fehler aufgetreten der dann anhand eines Call Stacks identifiziert werden kann Der Fehler wird behoben oder aber der Testfall angepasst 9 3 6 Refactoring Refactoring bedeutet dass st ndig versucht wird das Programm zu verbessern und zu ver einfachen Das hat zur Folge dass manchmal mehr A
358. t werden kann sondern die sich in der Gr e automatisch so anpasst dass all in ihr vorhandenen Elemente von der Box umschlossen werden Die Klasse HighlightBox erzeugt einen Rahmen um beliebige grafische Objekte Dies wird zum Beispiel zur Markierung der selektierten Objekte verwendet Die Gr e des Rahmens wird automatisch berechnet hnlich wie beim Kegel gilt auch f r Kugeln das gleiche Problem mit der von Java3D vorgegebenen Primitiven Das Paket Sphere realisiert eine Kugel welche ebenfalls von GraphicalObject erbt und zur Interaktion geeignet ist Verschieben von Objekten Das Paket view3d interaction objecttranslation beinhaltet die zum Verschieben von grafischen Elementen in der 3D Szene ben tigte Klasse ObjectTranslation Hierzu werden die zu verschiebenden Objekte der Instanz der Klasse bekannt gemacht und eine Transaktion gestartet welche best tigt oder abgebrochen werden muss Aus den Mausbewe gungen wird ein Richtungsvektor berechnet um den die Objekte verschoben werden Sonstige Hilfsklassen Das Paket ut ils enth lt einfache Hilfsklassen die im Folgenden erl utert werden Da Klassen aus einem Plug In Fragment nicht direkt in das Core Plug In geladen wer den k nnen bietet die Klasse ClassHandler M glichkeiten an Klassen ber den ent sprechenden Klassennamen einmalig per Reflection Mechanismus zu laden und diese dann in dem Core Plug In zur Verf gung zu stellen Die Klasse DatamodellHelper bietet Funktion
359. tArrowQuads QuadArray getArrowhead TriangleFanArray getCylinder QuadArray setColor void createLabel void capabilities int endPosition Vector3d radius double startPosition Vector3d labelPosition TransformGroup startLabel String endLabel String Abbildung 19 7 Ubersicht der grafischen Primitive s com sun j3d utils geometry Sphe HighlightBox logger Logger box QuadArray HighlightBox HighlightBox HighlightBox init void CoordinateSystem get TransformGroup get TransformGroup get TransformGroup N W Nn ee Karime 20 Vorgehensweise zum Erstellen eines neuen Diagrammtyps Michel Kersjes Andre Kupetz Christian Mocek Sven Wenzel In dieser Anleitung soll das grundlegende Vorgehen erl utert werden um ein eigenes auf dem EFFECTS Framework basierendes Plug In Fragment zu erstellen Es wird vorausge setzt dass das EFFECTS Core Plug In korrekt installiert ist 20 1 Anlegen des Projektes 1 Zun chst muss in Eclipse ein neues Projekt vom Typ Plug in Fragment erstellt wer den siehe Abbildung 20 1 Der angegebene Projektname wird automatisch als Be zeichner f r das Fragment gew hlt amp New Project ox Select a wizard gt Create a Plug in Fragment Project Wizards gt Java E Y amp Plug in Development Q Feature Patch G Feature Project Plug in Project 7 Update Site Project gt amp Simple lt Back Einish Cancel Abbildung 20 1 Neue
360. te gibt die klas senbasiert arbeitet und Mehrfacherbung benutzt Auf diese werden wir aber nicht weiter ein gehen da ihre Ideen und Ans tze nahezu identisch sind und wir uns vorwiegend mit der Pro grammiersprache Java besch ftigen die das Konzept der Mehrfacherbung nicht unterst tzt Anwendbarkeit Das Adaptermuster verwendet man bei inkompatiblen Schnittstellen von bereits bestehenden Klassen Genau dies haben wir ja in unserem einleitenden Beispiel getan Es kann auch an gewandt werden um bei der Erzeugung wieder verwendbarer Klassen zu helfen da bei deren Entwurf nicht immer absch tzbar ist wie diese sp ter mit anderen Klassen zusammenarbeiten werden Technische Realisierung Der Klient arbeitet mit Objekten die sich an die umgebungsspezifische Schnittstellenstruktur der Klasse Ziel halten Ziel definiert die vom Klienten benutzte Schnittstelle Die Adaptierte Klasse definiert eine zu der Klasse Ziel inkompatible Schnittstelle die adaptiert werden muss um sie f r die Klasse Ziel nutzbar zu machen Diese Anpassung findet nun ber den Adap 10 3 Strukturmuster Klient Ziel HA operation void AdaptierteKlasse spezifischeOperation void Adapter operation void 777777777777 1 EEN Abbildung 10 7 Adapterstruktur ter statt welcher die Methoden der Klasse AdaptierteKlasse benutzt um das vom Klienten erwartete Verhalten zu erf llen Der Klient
361. ter s 5 2 5 00 e sa nn ke kan sa a en 111 13 2 3 Die einzelnen Komponenten dreidimensionaler grafischer Benutzungsschnittstel Ste cb eh an Bee a a aR EE 113 13 3 Fall 2 5 2 a ne D rn ne en 117 3 Releasebeschreibungen KAPITEL 14 Beschreibung des ersten Release 119 14 1 Elena be ae ee ee a ae res 119 14 2 User Stories e be 119 14 2 1 Akzeptierte User Stories 119 14 2 2 Abgelehnte User Goes 120 14 3 Systenimel H fi p ke ewe ne ee E 120 14 31 Model ek ee ee ee E ee E EN es 121 14 32 NOW ae 121 14 3 3 tee 2 44245 4624 26 E en en ai 121 14 4 Reflexion ber die Tasks 2 Homme 122 14 4 1 Gesamtrahmen f r ein Plugin 122 14 4 2 Darstellung der Klassen 2 2222 Co oo nn 123 14 43 ee oca E e BR ee al AR er A 123 14 44 Ebenem saca a ee iia 127 Vil Vili Inhaltsverzeichnis TAAS WARNS cl Ae eet te ne ee ewe ae So haere A a 127 144 6 Eer Soa eee kA eee eee ee eae eS a x 128 14 4 7 Infofenster 2 0 000 en 128 14 4 8 Navigation Ee Ae ee e 129 14 49 Faba swahl 2 ecs a ea o ee en 129 14 4 10 DIEBE ee a EE A we ee e 129 14 4 11 Beschriftung 130 14 4 12 Startpunkt 2 2 e ame Keen po nahen 130 14413 WAM a wae a EE Be ath EENEG 131 14 5 Vorstellung der implementierten Architektur 2 04 131 14 5 1 Beschreibung der geplanten Architektur 132 14 5 2 Beschreibung der realisierten Architektur 132 14 5 3 Vergleich geplanter und realsie
362. teren soll die Zugeh rigkeit von Klassen zu einem Paket durch eine geh ufte An ordnung der Klassenw rfel im Raum dargestellt werden Als Bedingung f r die Anordnung der Klassenw rfel im Raum gibt es zus tzlich die Regel dass erbende Klassen unterhalb der vererbenden Klassen im Raum angeordnet werden sollen Dieses Release dient dazu die Entwickler mit den zu verwendenden Technologien wie der Eclipse Plugin Struktur und der Java 3D API vertraut zu machen Die Anforderungen an das erste Release und deren Umsetzung sind im Folgenden n her beschrieben 14 2 User Stories Semih Seving Das Hauptziel des ersten Releases ist es ein Eclipse Plugin zur dreidimensionalen Visuali sierung von Java Klassen zu erstellen Als Anforderungsdefinition hierf r dienen die von den Kunden aufgestellten User Stories Diese unterteilen sich in zwei Bereiche n mlich einmal in die von den Entwicklern akzeptierten und einmal in die abgelehnten bzw ge nderten User Stories Im Folgenden werden zun chst die akzeptierten User Stories vorgestellt beginnend mit den wichtigsten bis hin zu optionalen Anforderungen Danach werden die abgelehnten bzw modifizierten User Stories aufgelistet 14 2 1 Akzeptierte User Stories Die wichtigste Anforderung ist die dreidimensionale Visualisierung der Klassen eines Pakets Daf r soll im Package Explorer von Eclipse die M glichkeit gegeben sein die Klassen eines ausgew hlten Pakets in einem neuen externen Fenster dreidim
363. terhin zum Aufruf der einzel nen Berechnungen und zum Aufruf der Visualisierung Der Informat ionView ist f r die Darstellung wichtiger Informationen in einem eigenen Fenster zust ndig Als Verfeinerung gegen ber dem ersten Release sind die Klassen EffectsXMLParser und DiagramConfig neu hinzugekommen 15 5 3 Vergleich zwischen geplanter und realisierter Archi tektur Allgemein l sst sich sagen dass die Unterschiede zwischen der geplanten Architektur und der tats chlich implementierten Architektur nicht so gravierend sind wie es im ersten Release der Fall war Die f r die Visualisierung zust ndigen Klassen wurden fast vollst ndig so im plementiert wie sie geplant wurden Der Zugriff auf die darstellenden Klassen wird komplett ber die Klasse viewController realisiert Daf r ist die Klasse FrameOpener komplett weggefallen und aus der Klasse Scene wurde eine abstrakte Klasse Dass die Visualisierung 151 15 5 Vorstellung der implementierten Architektur 16a 96 saj X younp uonejn9jed JauleJuo SeHalul pue lt lt asn gt gt lt lt asn gt gt lt lt asn gt gt J6a 96 sa TWX ya np Joelgoteaudem eejajul Abbildung 15 1 Geplante Systemarchitektur Release 2 15 Beschreibung des zweiten Release 152 plon ajejnojeo S9008 S 01 U09 jalqojesiydes5 aoe aul uonejnajeg eoeyaju JaUIEJUOI Spuet A lt lt asn gt l
364. tiert aus der neuen Grundannahme der nderungskosten Lieber heute etwas Einfaches tun und falls sp ter doch eine kompliziertere L sung gebraucht wird kann man die momentane L sung immer noch ndern Feedback Zur realistischen Einsch tzung des Projektstatus oder um zu sehen ob die Funktion die man gerade implementiert hat auch funktioniert braucht man direktes und stetiges Feedback Feedback erg nzt die bereits genannten Werte Je mehr Feedback man bekommt umso einfa cher und ehrlicher ist Kommunikation Mut Ein weiterer Wert von XP ist Mut Dieser ist in mehrerlei Hinsicht gefordert Zum einen muss man sich immer gegen die altbew hrten Methoden der Softwareentwicklung durchsetzen Zum anderen muss man mutig an nderungen herangehen auch wenn man das betroffene Modul nicht selber geschrieben hat Auch die Einfachheit des Systems fordert Mut Etwas so zu entwerfen dass es nur f r die momentanen Anforderungen ausreicht widerspricht den g ngigen Methoden die bspw an den Universit ten den Entwicklern beigebracht Systeme flexibel und erweiterbar zu planen Ferner muss man so mutig sein Code an dem man lan ge gearbeitet und experimentiert hat wegzuwerfen und mit einem neuen L sungsansatz zu beginnen 9 2 4 XP Prinzipien In diesem Abschnitt werden den vier grunds tzlichen Werten von XP bestimmte Prinzipien zugeordnet die als Entscheidungshilfe dienen Jedes Prinzip verk rpert die XP Werte Wer te sind etwas unb
365. tiert wird Dabei ist der Blickwinkel des Betrachters unerheblich Es kommt alleine auf den Einfallswinkel der Lichtquelle an Bei spekulativer Reflexion wird angenommen da das Licht von der Oberfl che wie von einem nicht idealen Spiegel gestreut reflektiert wird Matte Oberfl chen streuen dabei mehr als gl nzende Oberfl chen wie es in Abb 11 2 dargestellt ist Bei der ambienten Reflexion besitzt das Licht keine einheitliche Richtung sondern es wird aus allen Richtungen in alle Richtun 11 2 Grundlagen d de Kerger gl nzende Oberfl che matte Oberfl che e E AED Ke REA Abbildung 11 2 Gl nzende und matte Reflexion Br derlein und Meier 2000 gen gestrahlt Dies entspricht ann hernd der Beleuchtungssituation bei bedecktem Himmel Ambientes Licht ist in den meisten Umgebungen mehr oder weniger vorhanden weil auch gerichtetes Licht an Partikeln der Luft und an Gegenst nden in alle Richtungen gestreut wird Das vollst ndige Phong Modell ergibt sich damit zu I Ig Ramb Raiff COS Q Rspec COS 0 ist dabei der Einfallswinkel der Lichtquelle und 6 ist die Abweichung des Betrachters vom idealen Ausfallwinkel Die drei Reflexionskoeffizienten f r die unterschiedlichen Reflexions arten Ramb Raiff Rspec und der Exponent n sind die Parameter die das Aussehen eines Ob jektes bestimmen So ist z B bei n 1 eine sehr breite Streuung gegeben w hrend man um gl nzende Oberfl chen und damit eine sc
366. twerfen Beschreibung Der Zustandsautomat sollte die verschiedenen Modi wie z B Kamera oder Verschiebemodus verwalten und erkennen k nnen wann die dar gestellte Szene gespeichert werden muss geplante Zeit 1 Stunde reale Zeit Ben tigt wurden 4 Stunden Der Automat wurde nach dem Artikel Ya coub und Ammar 1998 modelliert Zustandsautomaten realisieren Beschreibung Der im vorherigen Task entwickelte Automat musste implementiert wer den geplante Zeit 16 Stunden reale Zeit Es wurden 20 Stunden ben tigt Die Absch tzung erwies sich als schwierig da angenommen wurde dass die einzelnen Zust nde einer st ndigen Weiterentwicklung unterliegen w rden Pluginstruktur anlegen Beschreibung Die Datei fragment xm1 musste um den Eintrag f r den Men punkt zum Erzeugen des Diagramms erweitert werden geplante Zeit 1 Stunde reale Zeit 1 Stunde Auslesen des Datenmodells und Aktualisierung der Szene Beschreibung Das Datenmodell sollte bei Bedarf ausgelesen werden k nnen um mit dessen Informationen die darzustellende Szene neu aufbauen zu k nnen geplante Zeit 20 Stunden 17 4 Reflexion ber die Tasks reale Zeit In 14 Stunden konnte dieser Task abgeschlossen werden Die Zeitab sch tzung beruhte auf der Annahme dass beim Auslesen noch Berech nungen durchgef hrt werden m ssen Zum Update der Szene muss le diglich der alte Inhalt gel scht und neu aus dem Datenmodell ausgelesen werden Die Berechnung f
367. twickler selbstverst ndlich nicht abnehmen Die ande ren beiden Aufgaben braucht der Entwickler aber nicht n her beachten Er kann sich somit also auf seine eigentliche Aufgabe den Entwurf eines neuen Diagrammtyps beschr nken Das EFFECTS Framework beinhaltet die Realisierung des gesamten Diagrammrahmens Ben tigte Funktionen die mit der Dreidimensionalit t einherkommen sind bereits umgesetzt Ein Beispiel hierf r ist die Navigation durch den dreidimensionalen Raum insbesondere unter Ber cksichtigung dass nur zweidimensionale Eingabeger te zur Verf gung stehen Auch immer wiederkehrende Aufgaben wie das Laden und Speichern von Diagrammin stanzen werden dem Entwickler abgenommen und sind bereits in das EFFECTS Framework integriert Dar ber hinaus wurde EFFECTS als ein Plugin f r die Entwicklungsplattform Eclipse im plemetiert Eng damit verbunden werden auch die Diagramme vollst ndig in die Benutzungs schnittstelle von Eclipse integriert Die Arbeit mit den Diagrammen ist somit g nzlich in den Arbeitsprozess eines Anwenders integrierbar ohne dass ein Wechsel des Werkzeuges erfol gen muss Des Weiteren erm glicht die Integration in Eclipse das Zusammenspiel zwischen den dreidimensionalen Diagrammen und zugrundeliegenden Informationen die der Entwick lungsplattform vorliege und sinnvoll f r das Diagramm zu verwenden sind ber den Diagrammrahmen und die IDE Integration hinaus stellt EFFECTS bereits voll st ndig implem
368. twicklung n tig Ein letzter Unterschied ist bei der Speicherung des Startpunktes zu finden Der Startpunkt wird in der realisierten Architektur in der Klasse KeyNavigatorBehavior gespeichert und nicht wie in der geplanten Architektur vorgesehen in der Komponente Editor Controller Auch diese nderung ergab sich durch die im Laufe der Entwicklung gesammelten Kenntnisse ber die Java3D API 14 5 4 Fazit Zusammenfassend kann man sagen dass die vorgegebene MVC Architektur weitgehend bei behalten wurde Im Wesentlichen wurde w hrend der Entwicklung die Architektur weiter ver feinert Unterschiede traten dabei aus mehreren Gr nden auf Zum einem steigerte sich die Kenntnis ber die Java3D API wie auch ber die Eclipse Plattform Zum anderen wurden auch Strukturverbesserungen wie die Einrichtung der zentralen Steuerungsklasse Controller vor genommen um eine bessere Aufgabentrennung zu erreichen 14 6 Kunden Akzeptanztest Rene Sch nlein In der Sitzung vom 8 12 2003 fand der Akzeptanztest der Kunden an dem von den Entwick lern ausgelieferten Release Kandidaten statt Der Akzeptanztest hat den Zweck die korrekte Umsetzung der in den User Stories spezifizierten Anforderungen zu berpr fen Um diese Tests sinnvoll durchf hren zu k nnen wurde von den Kunden eine Testumgebung vorbereitet und vorgestellt Bei diesem Testprojekt siehe Abb 14 5 14 6 handelt es sich um eine Klas senstruktur mit insgesamt 29 Klassen die auf f nf Paket
369. typen ben tigt werden und in die entsprechenden diagramm spezifischen Plugins vorgenommen Dabei muss das Kernplugin Schnittstellen bereitstellen die als Hotspots zu den diagrammtypspezifischen Plugins dienen Das Interface Container dient dabei als Domain Hotspot Hier sollen die Informationen gehalten werden die f r die Darstellung eines speziellen Diagramms ben tigt werden Das Interface Calculation stellt den Regel Hotspot bereit Hier werden die Regeln die zur Anordnung der Elemente eines Diagrammtyps in der 3D Darstellung ben tigt werden definiert Das dritte Interface ist das Interface GraphicalObject welches als Diagramm Hotspot dient Er stellt die graphische Darstellung der einzelnen Elemente in der 3D Szene bereit Auch diese Interfaces wurden so implementiert wie sie in der geplanten Architektur vorgestellt wurden Eine nderung gegen ber der geplanten Architektur stellen die beiden Klassen EffectsXMLParser und DiagramConfig dar Diese waren in der geplanten Architektur nicht vorgesehen und sind erst im Laufe der Implementierung neu entstanden 15 6 Kunden Akzeptanztest Kai Gutberlet Michel Kersjes Am 19 Januar 2004 fand der Akzeptanztest f r das zweite Release statt Im Folgenden werden die User Stories mit den geplanten Akzeptanztests f r das zweite Release nach ihrer Durch f hrung geordnet aufgef hrt Alle User Stories aus dem ersten Release m ssen erf llt bleiben 15 6 1 Durchgef hrte Kundentests Im Package
370. tz 28 6 3 2 Kategorientheoretischer Ansatz 28 6 3 3 Graphentheoretischer Ansatz nach Rekers und Sch rr 22 2 2 28 64 Parem 2a Ka na ee EUR a 29 641 BEE lt o cl ena AS A Re he ee EEN A 30 6 4 2 Parsingalgorithmus nach Rekers und Sch rr 2 2 2 2 2 nennen 31 6 5 FARBE BUSH 4 a4 co E EE nern re pe 32 KAPITEL 7 Der deklarative Ansatz 33 7 1 eleng 1 a ee a a E BO OR E E e wR ho 33 7 2 Einleitendes Beispiel 2 24 zus ERNE wann na ran 33 71 3 Eigenschaften ses Son ua Deal naeh Ba Keowee 35 7 4 Erzeugung und Erkennung von Grafiken 37 7 4 1 Erem EE ew a he a EEN E 37 7 42 EREMO ei ee e Sw re ET 38 7 5 Abgrenzung gegen Graphgrammatiken 39 7 5 1 Produktion vs Deklaration 22 oa 40 7 5 2 TENSION ci a a en Be 40 O EE 40 Inhaltsverzeichnis KAPITEL 8 Das Eclipse Plugin Modell 81 Einiunung in EQIDSO lt s serr ee ee Bt a er 8 1 1 Die Workbench scs s sora paos A a a ah 8 1 2 Die Architektur der Eclipse Plattform lt o s e s s oec eo eo ota 8 2 Das Plugin Modell im Detail 2 2 2 Cm rn 8 3 Das Plugin ManifesSt sc ese E ae A 84 Erweiterungspunkte 0 6 ee Re ee ee es 8 4 1 Deklaration neuer Erweiterungspunkte 22 2 2 2 m nn rn 8 4 2 Beschreibung der Erweiterungspunkte s se sos s nn nennen 85 Erweiterungen lt o u 06 ee ee ee 8 6 Plugins und Fragmente 8 6 1 Internationalisierung mit Hilfe von Fragmenten 2 2 2222000 KAPITEL 9
371. u realisieren existieren die folgenden Klassen e Um in einem Diagramm spezifische Daten im Property View verwenden zu k nnen existiert die abstrakte Klasse EffectsProperty e Die Klasse ContainerProperty erm glicht es nderungen an einem Container des Datenmodells durchzuf hren Sie erweitert die Klasse EffectsProperty Realisierung des Editors Um eine Darstellung der Szene und die m gliche Interaktion berhaupt zu erm glichen wird ein Eclipse Editor zur Verf gung gestellt Die Klasse welche hierzu existiert ist Editor Er verarbeitet das vom EFFECTS Plugin vorgegebene Dateiformat efx Innerhalb von Dateien dieses Formats werden Diagramme persistent gespeichert Im Zusammenhang mit der Naviga tion erkennt der Editor wenn der Anwender die Kamera im dreidimensionalen Raum bewegt Speichern und Laden von Diagrammen Die im Paket io verf gbaren Klassen realisieren das Speichern und Laden von Diagrammen in eine Datei Hierzu existieren die beiden folgenden Klassen e Objekte der Klasse SerializationData beschreiben die Daten eines Diagramms die in eine Datei des Formats efx gespeichert werden sollen Diese Daten werden in einem Diagramm spezifiziert e Um die spezifizierten Daten zu speichern und zu laden existiert die Klasse Serializer Anlegen eines neuen Diagramms Das Paket plugin stellt die Klassen zur Verf gung welche die Schnittstelle zwischen dem Plugin und Eclipse darstellen In diesem Paket befinden sic
372. uch die Markierung in der Darstellung ent fernt Aus diesen Gr nden wurde darauf verzichtet bei einer Auswahl von grafischen Objekten in der 3D Darstellung ausschlie lich alle Listener zu informieren und dann die durchgef hrte Auswahl zu verwerfen 19 1 2 Das Zusammenspiel der Komponenten Kai Gutberlet Jan Wessling Abbildung 19 3 zeigt eine bersicht der wichtigsten Komponenten geordnet nach dem MVC Konzept Die Klassen Editor PluginInitializer und PluginController stellen die Controller Komponente dar Dabei wird der PluginInitializer nur dazu verwendet das Plugin zu initialisieren w hrend der PluginController die zentrale Komponente des Sys tems ist Er verwaltet das Datenmodell indem er daf r sorgt dass Container an die entspre chenden Ressourcen des Eclipse Datenmodells gebunden werden ber den Editor steuert der PluginController den View Der Editor selbst verwaltet das Universum und die darzustel lende Szene welche durch die Klassen Universe und Scene realisiert sind Das Zusammenspiel dieser Klassen soll jetzt n her erl utert werden Dazu zeigt Abbildung 19 4 den Ablauf beim ffnen einer efx Datei Das ffnen bewirkt eine Instanziierung der Klas se Editor welche dann ein Objekt vom Typ PluginInitializer erzeugt Dessen Aufga be die Initialisierung des EFFECTS Plugins Hierbei wird ein Effect sXMLParser erzeugt der die Konfigurationsdaten des Diagrammtyps aus einer XML Datei ausliest und zur ckgibt Danach wird der
373. ufende Objekt zeigt Graphisches Objekt rekursiver Pfeil anlegen Beschreibung Hier sollte das graphische Objekt ein Pfeil angelegt werden der auf das Objekt zeigt von dem er ausgeht Dieser Pfeil ist n tig wenn ein Aufruf eines Objektes auf sich selbst stattfindet 16 4 Reflexion ber die Tasks geplante Zeit reale Zeit Dieser Task wurde nicht in der Planungsphase ber cksichtigt und erst im Laufe der Implementierungsphase hinzugef gt Die Bearbeitungsdauer f r diesen Task betrug in etwa vier Stunden Wie auch bei dem normalen Pfeil ergaben sich wieder einige Probleme mit der Berechnung der Winkel um den Pfeil in die entsprechende Richtung zu drehen die zun chst gel st werden mussten Level of Detail f r die Objekte festlegen Beschreibung geplante Zeit reale Zeit Wie auch bei dem statischen Modell sollte es f r die neuen graphischen Objekte m glich sein bei bestimmten Entfernungen eine geringere De tailtiefe bzw eine bestimmte Transparenzstufe zu haben Vier Stunden da der Mechanismus nur noch aus dem ersten Modell an das Sequenzdiagrammm angepasst werden musste Neun Stunden Es musste im Nachhinein noch einiges am ObjectCreator und ein wenig an der Szenenberechnung ge n dert werden Darstellung der Ebenen als transparente Fl che Beschreibung geplante Zeit reale Zeit Kamerafahrt Beschreibung geplante Zeit reale Zeit Die als Quader dargestellten Ebenen solle
374. uginInitializer erbt erzeugt Dieser Initializer hat die Aufgabe die grundlegende Initialisierung des Frag ments vorzunehmen also einen Controller zu instanziieren und als Verwalter f r die aktuelle Diagrammdatei zu registrieren Dieser CPDController eine Spezialisierung des Plugin Controllers stellt den eigentlichen Controller im Sinne des MVC Konzepts dar Er kennt auf der einen Seite die CPDScene also den View und auf der anderen Seite die DataModel Facade welche den Datenanteil des MVC Konzeptes realisiert und den Zugriff wie in 17 5 2 beschrieben kapselt nderungen im Datenmodell werden durch den Aufruf der Methode updateView im Editor durch den CPDCont roller in den View propagiert Ausserdem hat er eine Verbindung zum FSMInterface Das FSMInterface wurde in Kapitel 17 5 2 n her beschrieben Es besitzt verschiedene Listener die die Scene berwachen und ist somit der Part der den Kontrollfiu zwischen Scene und CPDController regelt Die realisierte Pluginstruktur in in Abb 17 6 dargestellt 17 5 3 Vergleich zwischen geplanter und realisierter Archi tektur Das Datenmodell Die realisierte Architektur unterscheidet sich nur in wenigen F llen von der geplanten Archi tektur So gibt es nur zwei nennenswerte Unterschiede Zum einen ist der CPDSubPackage Container durch eine Liste im CPDPackageContainer ersetzt worden die Referenzen auf die Unterpakete enth lt Zum anderen ist das Datenmodell durch den Controller gekaps
375. un chst war geplant ein graphisches Objekt Finalisierungskreuz hin zuzuf gen Dieses wurde aber im Verlauf der Implementierungsphase verworfen was zum einen an dem engen zeitlichen Rahmen und zum anderen an der Seltenheit des Auftretens des Objektes lag Vier Stunden Null Stunden da der Task nicht bearbeitet wurde Graphisches Objekt Aktivit tsbalken anlegen Beschreibung geplante Zeit reale Zeit Aufgabe in diesem Task war es eine M glichkeit zu schaffen die beste hende Lebenslinie um Aktivit tszylinder zu erweitern Vier Stunden da es im Wesentlichen darum ging bestehende Aktivit ts balken bzw Lebenslinien mit breiteren Aktivit tszylindern zu berde cken Vier Stunden Graphisches Objekt Pfeile anlegen Beschreibung geplante Zeit reale Zeit Auch hier sollte ein neues Objekt ein Pfeil implementiert werden Da bei sollte ein Pfeil aus einem Kegel als Spitze und einem Zylinder als Pfeilk rper bestehen Sechs Stunden da sowohl Ausrichtung des Pfeils auf einer Ebene als auch die Kombination von verschiedenen graphischen Formen zu be r cksichtigen war Acht Stunden Im Wesentlichen wurde die zeitliche Vorgabe eingehalten Probleme gab es zun chst bei der Berechnung der Winkel der Pfeile um verschiedene Objekte zu verbinden Einige komplizierte mathematische Berechnungen waren n tig um den Pfeil auf der Ebene in die entspre chende Richtung zu drehen damit er auf das aufr
376. unktes zum Mittelpunkt des Pfeiles minimieren und seine area muss gleichzeitig ber dem Mittelpunkt des Pfeiles liegen arc Psrart Pend Piabel arrow Ostart gt Omidpoint gt Oend gt text Tarea Tstring where T minimizes distance T centers Omid point where Tarea above Omid point and Pstart Ostart Pend Qend Plabel Trext Existental quantification wird genutzt um zu testen ob bestimmte Zeichen existieren Exis tieren diese Zeichen nicht so kann die Produktion auch nicht ausgef hrt werden Diese folgende Produktion erkennt eine Transition zwischen zwei Zust nden Abbildung 1 Damit diese Transition erkannt werden kann m ssen nat rlich zwei Zust nde existieren die von einem Pfeil als Start und Endzustand ber hrt werden tranlE cm Tio Lapel arc A start Aend Alabel where exists state Rarea gt Rkina gt state Sarea Skind where Astart touches Rarea Aenq touches Sarea and 5 Constraint Multiset Grammars T from Ryame Tho Sname Thabel Alabel Negativ constraints werden genutzt um Produktionen zu definieren die davon abh ngen dass bestimmte Zeichen nicht existieren Diese Bedingung verlangt dass in dem Zeichen von Typ box nur genau ein anderes Zeichen von Typ picture liegen darf box B dimension containsOnly picturel Paimension if B contains P not exists picture Qdimension where O lt gt P B contains O 5 3 Komplexit t Das Membership Problem bes
377. ur Diese befassen sich n mlich mit der Bereitstellung der f r die Darstellung ben tigten Daten 171 172 16 Beschreibung des dritten Release 16 4 10 Fazit Zusammenfassend kann gesagt werden dass die wesentlichen Aufgaben erledigt wurden Es wurden nur die niedriger priorisierten Tasks Kamerafahrt durch die generierte Szene das graphische Objekt Finalisierungskreuz sowie der Schattenwurf nicht implementiert Der h here Zeitaufwand gegen ber der gesch tzten Zeit lag im Wesentlichen daran dass w hrend der Implementierung noch weitere Tasks hinzu kamen deren Zeit nicht abgesch tzt wurden Insgesamt wurden f r das Release ca 200 Stunden ben tigt geplant waren dagegen ca 160 Stunden 16 5 Vorstellung der implementierten Architektur Stephan Eisermann Kai Gutberlet Im Nachfolgenden soll die in diesem Release implementierte Architektur vorgestellt werden Dazu wird zun chst die geplante Architektur beschrieben im Anschluss daran die realisierte Architektur festgehalten und abschlie end beide verglichen 16 5 1 Beschreibung der geplanten Architektur Die geplante Architektur dieses Releases orientierte sich an der Zielsetzung einen neuen Dia grammtyp zu erstellen Dieses sollte unter der Nutzung der in Release 2 realisierten Framework Architektur geschehen Die Framework Architektur bietet drei verschiedene Erweiterungspunkte HotSpots den Domain HotSpot den Diagramm HotSpot und den Regel HotSpot
378. ur zum Startzeitpunkt ein Diagramm berechnet wurde Entsprechend war bis her die Struktur realisiert Im vierten Release ist dieses Vorgehen so nicht mehr durchf hrbar da durch Benutzereingabe eine wiederholte Berechnung der Anzeige n tig wurde Der View Controller welcher bisher die Fragment interne Koordination vorgenommen hat sollte durch einen Editor ersetzt werden Gleichzeitig wurde so die Eclipseintegration verbessert weil jede Modifikation in Eclipse ber einen Editor realisiert wird Im Zuge des Refactorings wurde eine strikte Trennung von Model und View angestrebt Diese war in bisherigen Releases nicht gegeben 17 5 2 Beschreibung der realisierten Architektur Das Datenmodell Das realisierte Datenmodell orientiert sich stark an der von Eclipse bereitgestellten Struk tur So gibt es f r Klassen Pakete Interfaces und f r das Projekt im JDT jeweils ein qui valent in unserem Datenmodell Gleichzeitig gibt es noch Klassen die Relationen darstel len allerdings keinen Klassen im JDT zugeordnet werden k nnen So gibt die Klasse CPD InheritanceContainer die Vererbungshierarchie von einer Klasse und ihren Kindern wie der AssociationElement ExtendsElement und ImplementsElement die alle von Re lationElement erben geben die einzelnen Relationen zwischen zwei Elementen wieder Alle Relationen werden im CPDProjectContainer gehalten Jedes Paket verwaltet eine Liste seiner Unterpakete Hierdurch ist implizit die Struktur zwi sc
379. uster anzuschauen Auf diesem Wege lassen sich schnell interessant klingende Vorschl ge heraus suchen Wenn man auch so nicht auf ein geeignetes Muster st t kann man versuchen bei einem artverwandten Entwurfsmuster eine L sung f r das Problem zu finden Ferner ist es nat rlich m glich sich die Gr nde f r ein Neudesign anzuschauen und die jenigen herauszusuchen die eventuell beim eigenen Projekt auftreten k nnten Mit diesem Wissen lassen sich dann die Entwurfsmuster herausfinden die das Design so flexibel halten dass ein Neudesign vermieden werden kann Eine gegens tzliche Vorgehensweise dazu ist dass man sich bereits vor dem Design Ge danken macht was variabel bleiben soll Anhand dieser Vorgaben lassen sich dann ebenfalls geeignete Entwurfsmuster herausfinden 10 2 Ein einf hrendes Beispiel Anhand des Model View Controller Konzeptes MVC wollen wir nun zeigen wie Muster in der Praxis vorkommen k nnen Das MVC Konzept findet vor allem bei grafischen Benut zeroberfl chen GUI Anwendung und wurde in Smalltalk 80 erstmals zur Konstruktion von Benutzungsschnittstellen verwendet MVC entkoppelt das traditionelle Eingabe Verarbeitung Ausgabe Prinzip Wie der Name schon andeutet besteht MVC aus drei Objektarten Das Model Objekt welches den verarbeitenden und verwaltenden Teil der Anwendung darstellt das View Objekt das sich um die visuelle Repr sentation der Daten k mmert und das Controller Objekt welches f r die
380. vel APIs wie OpenGL und High Level APIs wie VRML Prinzipiell basiert Java3D auf asynchrone Threads die unabh ngig arbeiten z B Eingabe Management Sound Berechnung Graphik Rendering etc 11 3 2 Die Klassenbibliothek Im folgenden werden einige wesentlichen Klassen der Java3D Klassenbibliothek n her erl u tert Mathematik in Java 3D F r die in Kapitel 11 2 oben erw hnten mathematischen Berechnungen wie Matrix und Vektoroperationen stellt Java das Package javax vecmath bereit Beispiele f r Klassen w ren Tupel3f Matrix3d Color3f Grundk rper Einige vordefiniert Grundk rper k nnen mit den Klassen des Paketes com sun j3d utils geometry erstellt werden Wie zum Beispiel Kugeln W rfel Ke gel oder Zylinder Interaktionen Ein Paket zur Reaktion der Anwendung auf Benutzereingaben durch etwa Tastatur oder Maus stellt das Paket com sun j3d utils behaviors bereit Organisation des virtuellen Universums in Java3D Das virtuelle Universum ist der Raum in dem die gesamte Szenerie dargestellt werden soll Die Handhabung der Elemente Lichteffekte Bewegungen wie auch der Betrach tungspunkt und die Zeichenfl che oder die Bildschirmausgabe wird durch das Paket javax media j3d bereitgestellt Dort befinden sich die wesentlichen Klassen die das Grundkonzept von Java realisieren der Szenegraph Auf diesen soll im folgenden 11 4 Der Scenegraph Abschnitt n her eingegangen werden 11 4 Der S
381. weiten Release 15 1 Einleitung Kai Gutberlet Im zweiten Release soll die Architektur des ersten Releases zu einem Framework umgebaut werden Des Weiteren soll das im ersten Release erstellte statische Diagramm an die neu entwickelte Frameworkstruktur angepasst werden Dabei ist die Funktionalit t des statischen Diagramms die in den User Stories zum ersten Release in Kapitel 14 2 beschrieben ist bei zubehalten Im Folgenden wird der Aufbau des Frameworks und die Anpassung des statischen Diagrams an die neue Frameworkstruktur n her beschrieben 15 2 User Stories Kai Gutberlet Michel Kersjes Die im folgenden behandelten User Stories stellen die Anforderungsdefinition f r das zweite Release des Eclipse Plugins zur dreidimensionalen Visualisierung von Softwarestrukturen dar Die Reihenfolge in der sie aufgef hrt sind richtet sich nach der von den Kunden festgelegten Priorit t Die wichtigste Aufgabe f r das zweite Release bestand darin das Plugin aus dem ersten Release strukturell zu einem Framework umzubauen Die f r diese Aufgabe wichtigen User Stories sind die HotSpots ber die das Framework benutzt werden kann Die HotSpots sollen ber eine XML basierte Schnittstelle beschrieben werden indem in einer Konfigurationsdatei angegeben wird welche Klassen welchem HotSpot zugrunde liegen Diese Klassen deren Struktur durch Interfaces vorgegeben ist implementieren z B f r den Diagramm HotSpot die graphischen Elemente Als er
382. wendungsszenarios unter Einbe ziehung der beteiligten Objekte dar Durch die Betonung auf den zeitlichen Ablauf wird der Nachrichtenaustausch der Objekte leicht ersichtlich Ein Kollaborationsdiagramm zeigt die gleichen Sachverhalte wie ein Sequenzdiagramm jedoch aus einer anderen Perspektive Bei diesem dynamischen Diagrammtyp stehen die Objekte und ihre Zusammenarbeit untereinan der im Vordergrund und nicht der zeitliche Ablauf Dahingegen wird beim Sequenzdiagramm nicht auf die Kollaboration von Objekten eingegangen Eine Kombination dieser Interaktions diagramme f hrt die Aspekte der einzelnen Diagrammtypen zusammen Der Aufbau des neuen dreidimensionalen Diagrammtyps wird jetzt im Folgenden n her erl utert Das dreidimensionale Interaktionsdiagramm besteht aus mehreren Ebenen auf de nen die Objekte analog zum Kollaborationsdiagramm nach der H ufigkeit ihrer Interaktion angeordnet werden Objekte welche oft miteinander interagieren liegen entsprechend nahe zusammen Wenn ein neues Objekt erzeugt wird wird eine neue Ebene angelegt auf dem das Objekt als Quader gezeichnet wird Jedes Objekt hat eine Lebenslinie die durch alle Ebenen hindurch bis auf den Boden gezeichnet wird Die Aktivit t eines Objektes wird durch einen Aktivit tsbalken in Form eines Zylinders um die Lebenslinie dargestellt Interagieren zwei Objekte miteinander so wird dieses mittels eines Pfeils zwischen den Ebenen vom aufrufen den Objekt zum aufgerufenen Objekt darg
383. werden Dazu geh rte die Anordnung von Cone Trees Paketen Unterpaketen sowie einzelner Klassen und Interfaces die in keiner Erbungsbeziehung stehen geplante Zeit 8 Stunden reale Zeit 8 Stunden 193 194 17 Beschreibung des vierten Release Klassen Interfaces Cone Trees und Unterpakete innerhalb eines Paketes anordnen Beschreibung geplante Zeit reale Zeit Die im vorherigen Task gewonnenen Erkenntnisse mussten jetzt umge setzt werden Dies geschah mit einem rekursiven Algorithmus der zu n chst Unterpakete anordnet und dann das Paket in dem sie enthalten sind Ebenso mussten Cone Trees entsprechend ihrer Gr e im Raum angeordnet werden 35 Stunden Dieser Task wurde als sehr komplex eingesch tzt Es muss ten Unterscheidungen ber cksichtigt werden um die Anordnung ange messen zu gestalten Z B war zu unterscheiden ob alle Objekte mit ei nem Mal oder nur einzelne Objekte anzuordnen sind 34 Stunden Leider konnten aus Zeitgr nden nicht alle Sonderf lle be r cksichtigt werden wie z B die Vererbung ber Paketgrenzen hinaus Au erdem ist der implementierte Algorithmus noch nicht optimal Die Paketgr en etwa werden unter bestimmten Umst nden zu gro berech net Cone Trees anordnen Beschreibung geplante Zeit reale Zeit In diesem Task ging es um den Aufbau der Cone Trees also um die Anordnung der einzelnen Klassen auf den Cones entsprechend ihrer Er bungsbeziehungen 5 Stunden
384. wicklung mit XP kritisch betrachtet Hier werden nochmals die positiven Aspekte wie auch Probleme und Gefahren angef hrt Wir beziehen uns dabei haupts chlich auf das Buch Extreme Programming Beck 2000 das vom Erfinder von XP Kent Beck verfasst wurde 9 2 Allgemeine Einf hrung in XP Extreme Programming XP ist ein Prozessmodell f r die objektorientierte Softwareentwick lung dass f r kleinere Projekte mit unklaren und sich immer wieder ndernden Anforderun gen gedacht ist Es wurde von Kent Beck Ward Cunningham und Ron Jeffries Beck 2000 Beck und Fowler 2001 entwickelt Das Programmieren steht hierbei wie der Name bereits andeutet im Vordergrund Die zugrunde liegenden Praktiken sind nicht neu aber ihre extre me Anwendung unter XP Mit extremer Anwendung ist die H ufigkeit und Reihenfolge der einzelnen Schritte bei der Softwareentwicklung gemeint Dabei werden die Schw chen der 9 2 Allgemeine Einf hrung in XP Nn einzelnen Praktiken durch die St rken anderer ausgeglichen XP ist nach Beck nur dann m g lich wenn alle der vorgestellten 12 Praktiken kombiniert angewendet werden In Kapitel 9 2 1 gehen wir darauf ein welche Probleme bei der herk mmlichen Software entwicklung entstehen k nnen und wie XP versucht sie zu l sen bzw sie zu vermeiden Im darauf folgenden Abschnitt Kapitel 9 2 2 werden zun chst die Voraussetzungen ge zeigt die n tig sind damit ein XP Projekt erfolgreich ist Ans
385. wiederholte Anwendung von Produktionen f hrt zu immer gr er werdenden Parseb umen Das Ziel ist es nur noch einen Parsebaum zu haben dessen Wurzel ein nicht terminales Zeichen von Typ start ist Ein Wald von Parseb umen wiederum ist eine Datenstruktur die eine Menge von Parseb umen enth lt Der Algorithmus terminiert sobald sich der Wald nicht mehr durch Anwendung von Produktionen ver ndern l sst 5 4 Zusammenfassung Um die Effizienz des Algorithmus zu steigern d rfen nicht alle Produktionen auf einmal betrachtet werden Es wird ein so genannter call graph erzeugt der die Abh ngigkeiten zwi schen Produktionen in der Grammatik enth lt Eine Produktionsregel P1 ist von einer anderen Produktionsregel P2 abh ngig wenn gilt Ein Zeichen auf der rechten Seite von Pl hat den gleichen Typen wie ein Zeichen auf der linken Seite von P2 Es werden die stark zusammen h ngenden Komponenten SZK berechnet und geordnet Produktionsregeln in h heren SZKs h ngen von Regeln in tieferen SZKs ab Der Algorithmus versucht zuerst die Regel in der untersten SZK anzuwenden und bewegt sich eine Ebene h her falls keine Produktionsregel mehr anwendbar ist 5 4 Zusammenfassung Es wurde gezeigt dass zur Beschreibung von visuellen Sprachen Constraint Multiset Gram mars eingesetzt werden k nnen Die formale Definition der CMGs wurde vorgestellt und in einem Beispiel erl utert Die Komplexit t eines Parsers f r CMGs wurde angesprochen dan
386. wischen Paketen sollen angezeigt werden Testergebnis nicht bestanden Anmerkung Aufgrund der niedrigen Priorit t und des Zeitmangels wurde dieser Task nicht umgesetzt Es soll m glich sein die erstellte Szene zu speichern das Editorfenster zu schlie en und danach die Szene wiederherzustellen Testergebnis bestanden Anmerkung Die nun folgenden Tests werden auf einem zuvor erstellten Testprojekt durchgef hrt Es wird also vorhandener Sourcecode eingelesen und dargestellt F r das vorhandene Projekt soll eine efx Datei angelegt und damit eine Szene gene riert werden Die enthaltenen Elemente sollen dabei sinnvoll angeordnet werden Testergebnis bestanden 17 6 Kundenakzeptanztest Anmerkung Das Anlegen eines neuen Projektes gestaltet sich etwas umst ndlich da nach dem Erstellen der efx Datei noch das eigenliche Diagramm ge neriert werden muss Au erdem funktioniert das automatische Platzieren von Cone Trees nicht Es wird eine neue Klasse mit Hilfe des Eclipse Wizards angelegt die von einer vor handenen Klasse des Projektes erbt Nach erneuter Generierung des Diagramms soll diese Klasse in dem entsprechenden Cone Tree angezeigt werden Testergebnis bestanden Anmerkung Es wird ein neues Interface mit Hilfe des Eclipse Wizards angelegt das Teil eines vor handenen Paketes des Projektes sein soll Nach erneuter Generierung des Diagramms soll dieses Interface in dem entsprechenden Paketwiirfel angezeigt we
387. wischen darzustellenden Sprachkonzepten und graphischen Symbolen unterscheiden Beide werden in den folgenden Abschnitten n her betrachtet Darzustellende Sprachkonzepte Die Sprachkonzepte die der J3Browser verwendet sind im wesentlichen aus der Unified Mo deling Language UML abgeleitet Sie lassen sich als erstes in Elemente und Beziehungen aufteilen Element ist der Oberbegriff f r Pakete und Entit ten unter Entit ten sind schlie lich Schnittstellen und Klassen zusammengefasst Auch Beziehungen lassen sich weiter aufteilen und zwar zun chst in Zugeh rigkeiten und Verwendungen Zugeh rigkeiten k nnen zwischen Paketen und Entit ten bestehen und zwar in beliebiger Kombination Die Verwendung l sst sich grob untergliedern in Import Implementierung Erweiterung und Benutzung F r eine weiterf hrende Erl uterung der hier verwendeten Begriffe sei auf Literatur zur UML verwie sen etwa Booch u a 1999 Verwendete graphische Symbole Entit ten werden als kompakte k rperf rmige Symbole dargestellt Abbildung 12 2 a zeigt die Symbole f r Klassen Quader und Schnittstellen Kugel deren Form in Anlehnung an die zweidimensionalen Symbole der UML f r diese Entit ten gew hlt wurde n mlich das Rechteck und den Kreis Der Name der jeweiligen Entit t wird ber ihrem Symbol darge stellt Zus tzlich haben diese Symbole sechs Eigenschaftsmarkierungen Die Farbe der Eigen schaftsmarkierung stellt den Zugriffsmodus dar ihre Fo
388. zards hat die Aufgabe die Implementierung eines Wizards zum Anlegen eines neuen Diagramms zu erm glichen Die Realisierung der 3D Szene ist im Paket view3d gekapselt Die Navigation im dreidimensionalen Raum wird durch eine Kombination aus Maus und Tastatursteuerung realisiert welche im Paket view3d interaction navigation bereitgestellt wird Um mit Objekten zu interagieren ist das Ausw hlen dieser in der 3D Szene notwendig Die Funktionalit t hierzu ist im Paket view3d interaction picking zu finden lt lt import gt gt lt lt import gt gt Abbildung 19 2 Die Kernkomponenten des Frameworks Um den Zusammenhang der oben aufgef hrten Pakete erl utern zu k nnen ist zun chst zu erw hnen nach welchem Konzept das Framework entwickelt wurde Um eine m glichst hohe 19 1 Die Kernkomponenten Flexibilit t zu erreichen wird das allgemein anerkannte Konzept des Model View Controllers verwendet Die Wahl dieses Konzepts wurde deshalb durchgef hrt da es den Anforderun gen an das Plugin ein Framework zur einfachen Erstellung von Diagrammen zur Visuali sierung und Modifizierung von Softwarestrukturen entgegenkommt Den Modell Teil findet man in einem Datenmodell welches durch Informationen aus dem Java Sourcecode gef llt wird Dieses Datenmodell wird von Eclipse zur Verf gung gestellt und zwar als Teil des Java Development Toolkits JDT Es wird ber die Controller des EFFECTS Plug Ins modifiziert und als Vi
389. zublenden geplante Zeit 8 Stunden reale Zeit Aufgrund der niedrigen Priorit t und der mangelnden Zeit wurde dieser Task ausgelassen Erweiterung der Eclipseeinstellungen Beschreibung Es sollte eine Seite bei den Eclipseeinstellungen geben in der man die Darstellungseigenschaften einstellen kann geplante Zeit 10 Stunden reale Zeit Nach f nf Stunden wurde dieser Task aus den selben Gr nden wie der vorherige Task abgebrochen Lotwurfverfahren Beschreibung F r ein ausgew hltes Objekt sollte entweder ein Schatten auf den Boden oder Lote in alle drei Richtungen projiziert werden geplante Zeit 3 Stunden reale Zeit Im Verschiebemodus hat das zu verschiebene Objekt ein Lot zum Boden die Schatten wurden weggelassen In der H lfte der Zeit wurde dieser Task erledigt Ver ndern des Mauszeigers Beschreibung Der Mauszeiger sollte sich beim Wechsel in einen anderen Modus wie z B in den Verschiebemodus ver ndern geplante Zeit 2 Stunden reale Zeit Aufgrund der niedrigen Priorit t und aus Zeitmangel wurde dieser Task ausgelassen Men leiste in Eclipse einf gen Beschreibung Die in der EFFECTS Perspektive sichtbare Men leiste sollte in die Werkzeugleiste von Eclipse eingebunden werden geplante Zeit 6 Stunden reale Zeit 4 Stunden 199 200 17 Beschreibung des vierten Release Assoziationen Verschiedene Arten von Assoziationen anlegen und verwalten Beschreibung Neben gerichteten und ungerichteten
390. zudem einfach implemen tieren lie 127 128 14 Beschreibung des ersten Release Information wie viele Klassen ein Paket auf einer Ebene besitzt Beschreibung Diese Information wurde f r die Anordnung im Raum ben tigt geplante Zeit Vier Stunden reale Zeit Vier Stunden Einteilen des Raums in Bereiche ohne H heninformation f r die einzelnen Pakete Beschreibung Die Klassen eines Pakets sollten r umlich nah beieinander angeordnet sein geplante Zeit Zwei Stunden reale Zeit Drei Stunden Aufgrund der gleichzeitigen Erledigung des Tasks Opti mieren der Anordnung wurde hier mehr Zeit ben tigt Optimieren der Anordnung Beschreibung Die Anordnung der Klassen soll sinnvoll erfolgen Abst nde sollten we der zu gro noch zu klein sein geplante Zeit Vier Stunden reale Zeit Keine Ist mit dem Task Einteilen des Raums erledigt worden 14 4 6 Abfragen Bereitstellen von get Methoden Beschreibung Die verschiedenen Klassen des Projektes sollten ger Methoden bereit stellen um die Tests sinnvoll realisieren zu k nnen geplante Zeit Keine da diese Aufgabe in jedem anderen Task enthalten war und eher als Konvention f r die Entwicklung galt reale Zeit Keine 14 4 7 Infofenster Abfragen wichtiger Informationen Beschreibung Es sollten sinnvolle Informationen abgefragt werden um sie im Info fenster anzuzeigen geplante Zeit Vier Stunden waren eingeplant reale Zeit Kei

Download Pdf Manuals

image

Related Search

Related Contents

Salora DVD225M User's Manual  JANOME Classmate S750 Instruction Booklet  Télécharger un extrait - Thierry Souccar Editions  ASSMANN Electronic A-17067 rack accessory  Sony VAIO VPCEB22FX  piano sicurezza - Rete Civica di Trieste  Samsung Galaxy S6 edge+ Brugervejledning  279KB - 共栄商事  Remington R4150 men's shaver  Système de lavage auriculaire  

Copyright © All rights reserved.
Failed to retrieve file