Home

Projektgruppe "Kollaborative Modellierung"

image

Contents

1. saqowesedy msn uorauuo sseji B Jajyawesed UOA UagJa a 1 31ISOdWOD Qqa1 3108d Owes c ueajoog 32eujsqe 3NON 30v Dvd ueajoog eas 25 116 puis 0 gt xewn nui Japo urWn nui sjje4 dK1uoneb2oJb5y fantqistA Es fanqisi oi Aan q s n ES uonesawnu uonesawnu gt Bungs F ueajoog gt yeaioog nes 5 aureu E ejnquue 0891908 2045 Burns eureu ES 1 Ru BS ee Ba 42623596 Buus E Je193 T3 F aeza F _ ien L A adK1uJmaJ adA Liajawesed 39516 T 0 T L 1 apanos pl Y H adi 19628 bus xa T gt adALaynqume aweu 25 uoepossyy A 10neznejouany F m gt JaLfIssoj 4 A A F3 arejsaqu
2. 0 Registry GraphPropertieg 7 1 jgralab Graph Diagram 4 4 0 1 Versionldentifier uses SI seinsleton ea Singleton TEE gt ModelRegistry ee 37 KotelettNetworkClient 7 1 oA udes 5 i V Modelldentifier _ 1 User KryoNet Vertex Class I 1 1 1 1 1 1 Singleton GEF ModelTreeViewPart ViewerUpdater amp 1 1 ModelSynchronization Viewer z EE 1 l Singleton 1 UserListViewPart DOLSA DolService Y SWT 1 but GEF ViewPart E ee WM D interface CommandStackListener Abbildung 9 11 Klassendiagramm des Presenters auf dem Client zusammen mit dem Modell Lifecycle fiir Editoren Von der obigen Modell und Diagrammverwaltung ausgehend kann ein Diagramm Editor einen der Zust nde im Vordergrund der aktive Edi tor im Hintergrund und geschlossen annehmen wie in Abbildung 9 12 dargestellt Es ergeben sich die folgenden berg nge Es ist immer maximal ein Editor aktiv Wenn ein neuer Editor aktiviert wird wird der momen tan aktive Editor in den Hintergrund verschoben Zu einem Diagramm gibt es immer nur einen Editor W
3. component Kotelett component component Client Server Modellierung von Echtzeit Echtzeit Klassendiagrammen Kollaboration Kollaboration Jee een I Modell Versionierung Modell Versionierung verwaltung verwaltung p component DOLSA Echtzeit Modell Versionierung Kollaboration verwaltung Abbildung 7 2 Aufteilung der Hauptfunktionalitaten zu Komponenten der Zielarchitektur Die Komponente Client ist haupts chlich f r die Modellierung von Klas sendiagrammen und die Echtzeit Kollaboration verantwortlich Die Echtzeit Kollaboration ist eine Hauptaufgabe da der Client das Verschicken der n derung von Modellen zum Server initialisieren muss Die beiden anderen Module Modellverwaltung und Versionierung sind Nebenaufgaben da der Client diese nur visualisiert und dem Anwender eine Schnittstelle zur In teraktion bietet Die Entscheidungsgewalt ob solche Aktionen durchgef hrt werden liegt letztendlich beim Server Die Komponente Server besch ftigt sich nicht mit der Modellierung von Klassendiagrammen Die Module Echtzeitkollaboration Modellverwaltung und Versionierung stellen die Hauptaufgaben dieser Komponente dar Der Server muss die Clients miteinander synchronisieren Der Server ist zudem der Single Point of Truth und kann gegebenenfalls die Synchronit t der Cli ents erzwingen Der Server entscheidet bei
4. format new SimpleDateFormat HH mm ss SimpleDateFormat stclock states ClockState SetHourState getInstance SetHourState up StClock clock void down StClock clock void set StClock clock void mode StClock clock void enter StClock clock void exit StClock clock void getDisplay Date currentTimeDate String up StClock clock void down StClock clock void mode StClock clock void set StClock clock void getDisplay Date currentTimeDate String enter StClock clock void exit StClock clock void OT nce o stclock states ShowTimeState stclock states SetMinuteState instance null ShowTimeState format new SimpleDateFormat HH mm ss SimpleDateFormat instance null SetMinuteState ShowTimeState ShowTimeState up StClock clock void down StClock clock void set StClock clock void mode StClock clock void enter StClock clock void exit StClock clock void getDisplay Date currentTimeDate String SetMinuteState getinstance SetMinuteState up StClock clock void down StClock clock void set StClock clock void mode StClock clock void enter StClock clock void exit StClock clock void getDisplay Date currentTimeDate String stclock util DateHelper addHour Date date Date subHour Date date Date
5. CARL VON OSSIETZKY universitat OLDENBURG Department fiir Informatik Abteilung Softwaretechnik Dokumentation Projektgruppe Kollaborative Modellierung Dokumentation Inhaltsverzeichnis I Zielvereinbarung 7 1 Zielvereinbarung 9 c 9 12 10 13 Aberenz ng 6 ae HIS Rud RIED Dog 12 bh Bowe goa XM Rn E XC e RU Be d 12 Let eo Bae We a eee Pee eee Be ed 14 ieu oes Oe os sth owe eed e s Gg eh t de 17 rt Ne ee Gone a Ete ete Sees es Ge 19 1 8 Glossar s e a ua a en Ve el a d 21 Anforderungen 23 2 Einleitung 25 3 Muss Kriterien 27 3 1 I Modellierung von Klassendiagrammen 27 3 2 II Echtzeitkollaboration und Synchronisation 33 3 3 III Verwaltung mehrerer Modelle 37 3 4 IV Versionierung von Modellen 39 4 Wunsch Kriterien 41 4 1 I Modellierung von Klassendiagrammen 41 4 2 II Echtzeitkollaboration und Synchronisation 42 4 3 II Verwaltung mehrerer Modelle 43 5 Abgrenzungskriterien 45 5 1 Grobe funktionale Anforderungen 45 UL Architektur 47 6 Globale Analyse 51 4 INHALTSVERZEICHNIS 6 1 Einf hrung 51 PD 52 god IM E 56 dius num beu hee Bone CAR P 59 Konzeptsicht 63 E E E Roe dd 63 AMI 64 73 Komponenten zur Umsetzung d
6. d 5 82ejJa3u d 726327 41 9 d ysuonpjaux F diysuonejayy apony Wb uias 1 1 ss 1135 Ww L Bums aueuisja sa6aquy 85 E sonisogiege1 qujogpusg EE ZS mer 3obje abpa sabaquy 2upau 05 F VV y F 7 xoq ebpaje iudeub E F L L Buijs aweu 5 buus Jasp buibueu3se Sr Buijs aweu FE weu eigsse gt 4 Buus 3 ssejoudeJ5 quauiaj3japoy kt Abbildung 10 1 Metamodell f r Klassendiagramme einschlieflich Layoutin formationen 10 1 GROBE STRUKTUR 105 10 1 Grobe Struktur Das Datenmodell beschreibt sowohl syntaktische Informationen ber Klas sendiagramme das eigentliche Metamodell als auch Layoutinformationen Das Layout eines Klassendiagramms wird durch alle Klassen beschrieben die oberhalb der gestrichelten Trennlinie in Abbildung 10 1 dargestellt sind aus genommen ModelElement Die Klassen unterhalb der Trennlinie beschreiben die logische Struktur von Klassendiagrammen Im Folgenden wird der Teil oberhalb der Trennlinie als Layoutklasse
7. 1 4 L sungsidee In diesem Kapitel wird die L sungsidee grob skizziert Eine detaillierte Be schreibung der L sung befindet sich im Architekturdokument Das Produkt wird mittels einer Client Server Architektur umgesetzt sie he Abbildung l 1 Der Server bildet dabei den Single Point of Truth D h obwohl jeder Client ein Abbild jedes ge ffneten Modells einschlie lich aller zum Modell geh renden Diagramme besitzt dient die Version auf dem Ser ver bei Asynchronit t als Referenz und der Server ist f r die Persistenz der Modelle einschlie lich der Diagramme verantwortlich Dabei werden Mo 1 4 L SUNGSIDEE 13 component Kotelett component component Client Server component component component GUI Modell C Modell T T uses uses V V component component DOL Service Versioning Abbildung 1 1 Abstrakte Architektur bersicht delle und Diagramme Layoutinformationen durch ein gemeinsames Meta modell beschrieben und werden somit permanent mittels einer gemeinsamen Datenstruktur verwaltet Der Client stellt die zu einem Modell geh renden Klassendiagramme dem Anwender dar Zu jedem Modell gibt es mindestens ein Klassendia gramm der Anwender kann aber beliebig viele Diagramme zu einem Modell anlegen Diese stellen dann in der Regel verschiedene Sichten auf das Mo dell dar Anderungen des Anwenders an einem Diagr
8. 2 2 2 149 151 17 Einleitung 153 8 Fehlgeschlagene Akzeptanztests 155 18 1 Klassenattribut mit protected Sichtbarkeit mit Leerzeichen 155 XC hs e EC 156 Protected Sichtbarkeit mit Leerzeichen 157 18 4 Undo der Erstellung einer Generalisierung 157 18 5 Umh ngen des Startpunktes einer Generalisierung 158 18 6 Umh ngen des Endpunktes einer Generalisierung 159 18 7 Redo vom Umh ngen einer Assoziation nachdem ein anderer Anwender die Zielklasse gel scht hat 160 18 8 Leeren der Userliste beim Schlie en des letzten Editors 161 19 Evaluation nach Zielvereinbarung 163 167 TN 167 20 2 Verbindungstabilit t ist nicht gew hrleistet 167 Pub R RUE HR RE a 167 167 ge e 168 20 6 Undo Redo Problematikl 168 mn dtm eru air aa d od ue ru ane t ers 168 20 8 Modellkorruption beim 170 6 INHALTSVERZEICHNIS 21 Fazit 171 22 Erfolgreiche Akzeptanztests 173 22 1 Tests f r die Modellverwaltung 173 22 2 Tests f r SWT GUIJ 176 22 3 Tests f r die 179 22 4 Tests f r klassen 180 22 5 Tests f r Klassenattributel 2 2 2 Cm oo nn nn 184 22 6 Tests f r Klassenmethoden 194 22 7 Tests f r Abstrakte Klassen 210 22 8 Tests f r Abstra
9. 55 KGeneralization BClass CClass CClass x int calc Diagrams Diagram A AClass BClass aint dint b int doA c int int doB c int int Abbildung 9 8 Mockup des Clients und IDs zurtickgegeben die dem Anwender angezeigt werden Als wei terer Eintrag wird die Head Version angezeigt 3 Der Anwender w hlt eine Version aus Je nachdem ob die neueste Version oder eine ltere ausgew hlt wird unterscheidet sich das Laden a Wenn die neueste Version Head Version ausgew hlt wird wird das aktive Delta aus loadModel geladen und in der Baumansicht angezeigt b Wenn eine ltere Version ausgew hlt wird wird das aktive Delta aus loadVersion geladen und in der Baumansicht angezeigt Erstellen von Modellen und Versionen Der Anwender hat ber einen Men eintrag die M glichkeit neue Modelle zu erstellen ber eine Eingabemaske wird er dabei aufgefordert einen Namen f r das Modell und das leere Diagramm das automatisch f r ein neues Modell erstellt wird zu benennen Der Client sendet dann lediglich die Anfrage an den Server ein Modell mit diesem Namen zu erstellen Das Modell wird dann auf dem Server ange legt und alle Clients ber die Existenz eines neuen Modells informiert Dies ist in dargestellt Ebenso hat der Anwender die M glichkeit neue Versionen zu erstellen d h den aktuellen Stand a
10. if req getTyp RequestConstants REQ DIRECT EDIT CompartmentDirectEditManager manager CompartmentDirectEditManager this manager show else super performRequest req SuppressWarnings Override rawtypes protected List getModelChildren new 69 70 71 72 73 74 76 77 78 79 80 81 82 83 84 86 87 88 89 90 9 27 28 30 31 32 33 34 35 36 37 38 39 144 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN List lt KLiteral gt result Lists newArrayList getKEnum get literal Collections sort result new Comparator lt KLiteral gt Override public int compare KLiteral arg0 KLiteral argl return arg0 get name compareTo argl get name return result SuppressWarnings unchecked public KEnum getKEnum return GenericWrapper KEnum getModel getModel Override public boolean isSelectable return false Editpart f r Literale Dieser Edit Part repr sentiert nun ein einziges Literal Die in Zeile 30 zur ckgegebene Figure zeigt einfach den Namen des Literals an Bei einer Aktualisierung muss der Text in der Figure angepasst werden dies geschieht durch berschreiben von refreshVisuals in Zeile 80 Die Edit Policies werden ab Zeile 42 registriert Die erste ist f r das Entfernen eines Literals zust ndig die zweite malt einen Kasten um ein selektiertes Literal und die
11. 2 Im Texteingabefeld hello NonExistantClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Eine Fehlermeldung erscheint mit der Meldung The current model does not contain a type with the requested name NonExistantClass 22 6 19 Klassenmethode l schen Dieser Test deckt das L schen einer Klassenmethode ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Klassenmethode nicht mehr angezeigt 2 Links in der ModelTreeView wird die Klassenmethod in der Klasse nicht mehr angezeigt 22 6 20 Klassenmethode mit Parameter vom Integer Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode mit Parameter vom Integer Primitiv Typ ab 206 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello parameter Integer Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse ang
12. 22 12 22 Interfacemethode mit Parameter vom Boolean Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode mit Parameter vom Boolean Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello parameter Boolean Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 23 Interfacemethode mit Parameter vom Float Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode mit Parameter vom Float Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist 270 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello parameter Float Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 24 Interfacemethode mit Parameter vom Unli
13. 3 Die Aggregation wurde selektiert Test 1 Der Endpunkt der Aggregation per Drag and Drop auf ein anderes Knoten ver ndern Erwartetes Ergebnis 1 Der Endpunkt der Aggregation wird nur dann ver ndert wenn die daraus resultierende Aggregation g ltig ist 22 17 TESTS F R AGGREGATIONEN 309 22 17 15 Sichtbarkeit des Startpunktes einer Aggregation ak tivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Startpunktes einer Aggregation ab Dieser Test ist generisch dokumentiert da das Kreuzpro dukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuzprodukt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Die Aggregation wurde selektiert Test 1 Rechtsklick auf die Aggregation 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird ein Pfeil am Startpunkt der Aggregation angezeigt 22 17 16 Sichtbarkeit des Startpunktes einer Aggregation de aktivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Startpunktes einer Aggregation ab Dieser Test ist generisch dokumentiert da das Kreuzpro dukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Die Sichtbarkeit des Startpu
14. 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name der Ab strakte Klasse angezeigt 2 Links in der ModelTreeView wird der neue Name der Abstrakte Klasse angezeigt 22 7 7 Abstrakte Klasse verschieben Dieser Test deckt das Verschieben einer Abstrakten Klasse ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt Test 1 Im Editor Bereich die erstellte Abstrakte Klasse anklicken und ge dr ckt halten 2 Den Mauszeiger innerhalb des Editor Bereichs an die neue Position der Abstrakte Klasse bewegen 3 Maustaste loslassen Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che befindet sich die verschobene Abstrakte Klasse an der neuen Position 22 7 8 Abstrakte Klasse aus Diagramm l schen Dieser Test deckt das L schen einer Abstrakten Klasse aus einem Diagramm ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt 214 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich die erstellte Abstrakte Klasse anklicken 2 Entfernen Taste dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Abstrakte Klasse nicht mehr angezeigt 22 7 9 Abstrakte Klasse aus Modell l schen Dieser Test deckt das L schen einer Abstrakten Klasse aus einem Modell ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt Test 1 Links in der ModelTreeView rechtsklick auf die Abstrakte Klasse unter
15. and conversions to other media types Work shall mean the work of authorship whether in Source or Object form made available under the License as indicated by a copyright notice that is included in or attached to the work an example is provided in the Appendix below Derivative Works shall mean any work whether in Source or Object form that is based on or derived from the Work and for which the editorial revisions annotations elaborations or other modifications represent as a whole an original work of authorship For the purposes of this License Derivative Works shall not include works that remain separable from or merely link or bind by name to the interfaces of the Work and Derivative Works thereof Contribution shall mean any work of authorship including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner For the purposes of this definition submitted means any form of electronic verbal or written communication sent to the Licensor or its representatives including but not limited to 351 352 KAPITEL 23 APACHE 2 0 LIZENZ communication on electronic mailing lists source code control systems and issue tracking systems that are managed by or on behalf
16. hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 22 19 7 Bearbeiten des Quell Rollenbezeichners mit Default Sichtbarkeit Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Default Sichtbarkeit ab 22 19 TESTS F R ASSOZIATIONSLABELS 331 Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der Model TreeView nicht angezeigt 22 19 8 Bearbeiten des Quell Rollenbezeichners mit Private Sichtbarkeit Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Private Sichtbarkeit ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken 332 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektie
17. if parentElement instanceof KClassDiagram KClassDiagram model KClassDiagram parentElement list add new DiagramContainer model getDiagramVertices list add new ModelElementsContainer model getKNodeVertices else if parentElement instanceof DiagramContainer else if parentElement instanceof KEnum for KLiteral literal KEnum parentElement get literal list add literal else if parentElement instanceof KAssociation KAssociationEndPoint source KAssociation parentElement get source KAssociationEndPoint target KAssociation parentElement get target list add source 115 target else if parentElement instanceof KGeneralization KClassifier source KGeneralization parentElement get source KClassifier target KGeneralization parentElement get target list add source list add target return list toArray Override public Object getParent Object element 148 152 126 127 128 129 198 199 126 127 128 129 130 131 132 133 134 135 137 138 139 140 141 142 143 144 145 146 147 48 49 50 126 127 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN if element instanceof KClassDiagram else if element instanceof KEnum element getGraph else if element instanceof KLiteral element getFirstContainsLiterallncidence retur
18. rufen Die Eingabe des Nutzers wird berpr ft und bei Erfolg in eine interne Datenrepr sentation der Informationen umgewandelt Diese wird dann an das zu erzeugende Command zur Durchf hrung der nderungen bergeben so dass die nderungen r ckg ngig gemacht und wiederholt werden k nnen 9 6 PARSEN VON BENUTZEREINGABEN 101 Schl gt die berpr fung aufgrund eines Eingabefehlers fehl so wird keine Repr sentation und entsprechend auch kein Command erzeugt Stattdessen wird eine entsprechende Fehlermeldung an den Anwender ausgegeben und die Bearbeitung ohne nderung des Modells verworfen 9 6 2 Sichtbarkeit Wann immer eine Eingabe einen Sichtbarkeitsmodifikator enthalten kann wird eines der gebr uchlichen Kurzschreibweisenzeichen erwartet e public e protected e private F r default Sichtbarkeit wird kein Zeichen erwartet 9 6 3 Attributsignaturen Die erwartete Syntax zur Eingabe von Attributen lautet lt Bezeichner gt Typ Insbesondere wird hierbei im Parser gepr ft ob der angegebene Typ bereits im Modell als primitiver Datentyp oder eigens angelegter Type existiert Ist dies nicht der Fall wird eine entsprechende Fehlermeldung ausgegeben 9 6 4 Methodensignaturen Die erwartete Syntax zur Eingabe von Methoden lautet lt Bezeichner gt lt Parameterbezeichner gt lt ParameterTyp gt lt R ckgabetyp gt Auch hier werden im Parser sowohl Parametertypen als auch der R
19. 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 262 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 10 Interfacemethode mit package protection Sichtbar keit Dieser Test deckt das Erstellen einer Interfacemethode mit package protection Sichtbarkeit ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 11 Interfacemethode mit privater Sichtbarkeit Dieser Test deckt das Erstellen einer Interfacemethode mit privater Sicht barkeit ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass
20. 182 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name der Klasse angezeigt 2 Links in der Model TreeView wird der neue Name der Klasse angezeigt 22 4 6 Klasse umbenennen Best tigung mit Enter Dieser Test deckt das Umbenennen einer Klasse ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich den Namen der ausgew hlten Klasse anklicken 2 Im Eingabefeld den neuen Namen MyTestClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name der Klasse angezeigt 2 Links in der ModelTreeView wird der neue Name der Klasse angezeigt 22 4 7 Klasse verschieben Dieser Test deckt das Verschieben einer Klasse ab Vorbedingung 1 Es wurde eine Klasse erstellt Test 1 Im Editor Bereich die erstellte Klasse anklicken und gedr ckt halten 2 Den Mauszeiger innerhalb des Editor Bereichs an die neue Position der Klasse bewegen 3 Maustaste loslassen 22 4 TESTS F R KLASSEN 183 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che befindet sich die verschobene Klasse an der neuen Position 22 4 8 Klasse aus Diagramm l schen Dieser Test deckt das L schen einer Klasse aus einem Diagramm ab Vorbedingung 1 Es wurde eine Klasse erstellt Test 1 Im Editor Bereich die erstellte Klasse anklicken 2 Entfernen Taste
21. 22 15 12 Keine Generalisierung von einem Interface zu einer Abstrakten Klasse Dieser Test deckt das Fehlschlagen einer Generalisierung von einem Interface zu einer Abstrakten Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf das Interface klicken 3 Auf die Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird keine Generalisierung vom Interface zur Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird keine neue Generalisierung unter dem Interface im firstDiagram angezeigt 22 15 13 Keine Generalisierung mit einem Enum als Start element Dieser Test deckt das Fehlschlagen einer Generalisierung von einem Enum zu einem Enum ab Vorbedingung 1 Es wurden 2 Enums erstellt 286 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf das erste Enum klicken Erwartetes Ergebnis 1 Das Generalisierungstool kann nicht auf das Enum als Startelement angewandt werden wodurch das Ausw hlen eines Ziels unm glich ist 22 15 14 Keine Generalisierung von einer Klasse zu einem Enum Dieser Test deckt das Fehlschlagen einer Generalisierung von einer Klasse zu einem Enum ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 E
22. Die Usability des Produktes wird wie von den verwendeten Frame works gegeben realisiert Die Benutzerschnittstelle muss dem Anwender die M glichkeit zur Verwendung der vorhandenen Funktionalit ten bieten Ge naue Studien zur Analyse und Verbesserung der Usability k nnen aus Man gel an Zeit in der PG nicht bewerkstelligt werden Anwenderkommunikation in Form eines Text oder Sprachchats ist f r ein marktf higes kollabaratives Modellierungstool unerl sslich Im Rah men der PG wird diese Funktionalit t aber nicht umgesetzt da sie f r die Realisierung der Hauptfunktionalit t siehe Kapitel 1 2 nicht vonn ten ist Als Diagrammtyp zur Modellierung werden Klassendiagramme reali siert Aufgrund der K rze der verbleibenden Zeit welche 5 5 Monate betr gt k nnen keinen anderen Diagrammtypen umgesetzt werden Die Evaluation der Hauptziele siehe Kapitel kann mit einem einzigen Diagrammtyp vollzogen werden Bei der Synchronisation von Clients w hrend der kollaborativen Model lierung entstehen Konflikte wenn zwei Nutzer das selbe Element bearbeitet haben WLS 13 Ein angemessenes Konfliktmanagement ben tigt eine Fallunterscheidung und mehrere Aufl sungsstrategien Aufgrund der K r ze der verbleibenden Zeit werden auftretende Konflikte nach einer simplen Strategie wie z B der erste gewinnt aufgel st Diese Strategie wie so realisiert dass sie bei einer Weiterentwicklung durch eine andere Strategie ausgetauscht werden kann
23. Die von DOLSA verwendete JDOM Bibliothek steht unter einer Apache hnlichen Lizenz Id LICENSE txt v 1 11 2004 02 06 09 32 57 jhunter Exp Copyright C 2000 2004 Jason Hunter amp Brett McLaughlin 11 rights reserved Redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met 1 Redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer 2 Redistributions in binary form must reproduce the above copyright notice this list of conditions and the disclaimer that follows these conditions in the documentation and or other materials provided with the distribution 3 The name JDOM must not be used to endorse or promote products derived from this software without prior written permission For written permission please contact request AT jdom DOT org 4 Products derived from this software may not be called nor may JDOM appear in their name without prior written permission from the JDOM Project Management request AT jdom DOT org In addition we request but do not require that you include in the end user documentation provided with the redistribution and or in the software itself an acknowledgement equivalent to the following This product includes software developed by the JDOM Project http www jdom org Alternatively the acknowledgment ma
24. GLOBALE ANALYSE 6 4 PRODUKT FAKTOREN 61 Die so gefunden Faktoren und Strategien wurden nun bei der Erstellung der Konzept und der Modulsicht verwendet 62 KAPITEL 6 GLOBALE ANALYSE Kapitel 7 IKonzeptsicht In diesem Abschnitt wird aus den Hauptanforderungen an das zu entwickeln de System ein grober Architekturentwurf erstellt Unter Ber cksichtigung der Faktoren und L sungsstrategien aus der globalen Analyse in erfolgt hier bereits eine Unterteilung in Komponenten und sehr grobgra nulare Module um herauszustellen welche Subsysteme n tig sind um die geforderten Grundfunktionalit ten zu erf llen 7 1 Hauptfunktionalit ten des Zielsystems Ausgehend von den Merkmalen die in der globalen Analyse aufgestellt wur den und den bekannten Anforderungen wird im zweiten Schritt eine Kon zeptsicht erstellt Diese soll die Komponenten des Systems und die System abgrenzung gegen ber Fremdsystemen aufzeigen Kotelett Modellierung von Klassendiagrammen re Echtzeit Kollaboration Anwender eem DOLSA Modellverwaltung Versionierung von Modellen 00 Abbildung 7 1 Konzeptsicht des Projektes 63 64 KAPITEL 7 KONZEPTSICHT Wie bereits in der Anforderungsdefinition beschrieben stellt das System dem Benutzer 4 Hauptfunktionalit ten bereit siehe Abbildung 7 1 Die erste Funktionalit t ist die Modellierung von Klassendiagram men Das System muss dazu eine M glichkeit der Modellierun
25. Im Projekt Kotelett werden die Google Guava und Apache Commons IO Bibliotheken verwendet Diese stehen unter der Apache 2 0 Lizenz Apache License Version 2 0 January 2004 http www apache org licenses TERMS AND CONDITIONS FOR USE REPRODUCTION AND DISTRIBUTION 1 Definitions License shall mean the terms and conditions for use reproduction and distribution as defined by Sections 1 through 9 of this document Licensor shall mean the copyright owner or entity authorized by the copyright owner that is granting the License Legal Entity shall mean the union of the acting entity and all other entities that control are controlled by or are under common control with that entity For the purposes of this definition control means i the power direct or indirect to cause the direction or management of such entity whether by contract or otherwise or ii ownership of fifty percent 50 or more of the outstanding shares or iii beneficial ownership of such entity You or Your shall mean an individual or Legal Entity exercising permissions granted by this License Source form shall mean the preferred form for making modifications including but not limited to software source code documentation source and configuration files Object form shall mean any form resulting from mechanical transformation or translation of a Source form including but not limited to compiled object code generated documentation
26. TESTS F R AGGREGATIONEN 305 Vorbedingung Es wurden 2 Interfaces erstellt Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf das erste Interface klicken 3 Auf das zweite Interface klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation vom ersten zum zweiten Interface angezeigt 2 Links in der ModelTreeView wird die neue Aggregation unter dem ersten Interface im firstDiagram angezeigt 22 17 8 Aggregation von einem Interface zu einer Klasse Dieser Test deckt das Erstellen einer Aggregation von einem Interface zu einer Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Klasse erstellt Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf das Interface klicken 3 Auf die Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation vom Interface zur Klasse angezeigt 2 Links in der ModelTreeView wird die neue Aggregation unter dem Interface im firstDiagram angezeigt 306 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 17 9 Aggregation von einem Interface zu einer Abstrak ten Klasse Dieser Test deckt das Erstellen einer Aggregation von einem Interface zu einer Abstrakten Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Berei
27. TESTS F R KLASSENMETHODEN 195 22 6 Klassenmethode mit Void Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 2 Klassenmethode mit Integer Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Integer eingeben 3 Enter dr cken 196 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 3 Klassenmethode mit String Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode vom Void Primitiv ab Vorbedingung
28. abstrakte Klassen Enumeration Literal hinzuf gen entfernen Assoziation zwischen zwei Knoten hinzuf gen Aggregation entfernen Komposition Quelle ndern Ziel Typ ndern Assoziation Aggregation und Komposition Multiplizit ten ndern Rollenbezeichner Sichtbarkeiten Navigierbarkeiten setzen entfernen Methode Abstrakt setzen Statisch entfernen Name ndern Sichtbarkeit R ckgabetyp Methodenparameter hinzuf gen entfernen Methodenparameter Name ndern R ckgabetyp Attribut Statisch setzen entfernen Name ndern Sichtbarkeit R ckgabetyp Tabelle 3 1 M gliche nderungen an Diagrammelemen ten au er Generalisierungen 30 I FA7 I FA8 KAPITEL 3 MUSS KRITERIEN Art der nderung Quelle Ziel Superklasse einf gen Interface Interface entfernen Klasse Interface Klasse Klasse Tabelle 3 2 M gliche nderungen an Generaliserungen m ssen von ihm initialisierte nderungen am Modell auch direkt im Diagramm visualisiert werden Das System muss ein ausgew hltes Diagrammelement her vorheben Da besondere Aktionen mit selektierten Elementen m glich sind Ver schieben L schen muss f r den Anwender ersichtlich sein welche Ele mente derzeit selektiert sind Das System muss des dem Anwender erm glichen die eige nen Arbeitsschritte r ckg ngig zu machen Um durchgef hrte nderungen schnell r ckg ngig zu machen muss eine Undo Funktionalit t umgesetzt
29. ckgabe typ auf Existenz im aktuellen Modell gepr ft und gegebenenfalls ein Fehler zur ckgemeldet 9 6 5 Rollenbezeichner Die erwartete Syntax f r Rollenbezeichner umfasst lediglich den Sichtbar keitsmodifikator und den Bezeichner lt Bezeichner gt 102 KAPITEL 9 MODULSICHT 9 6 6 Multiplizit ten Die erwartete Syntax f r Multiplizit ten lautet lt Nat rlicheZahl gt lt Nat rlicheZahl gt x Nat rliche Zahlen beinhalten in diesem Fall auch die 0 Hierbei muss insbesondere zwischen un ren Eingaben und solchen mit Ober und Untergrenzen unterschieden werden da sowohl Ober als auch Untergrenze ein eigenes Attribut des KAssociationEndpoint im Metamodell sind Ebenso stellt das Literal Unlimited Natural einen Sonderfall dar und muss speziell in die entsprechende Modellrepr sentation umgewandelt werden Kapitel 10 Datenmodell In diesem Kapitel wird das Datenmodell Metamodell beschrieben das vom Modellierungstool Kotelett zur Repr sentation von Klassendiagrammen auf Client und Server benutzt werden soll Es dient sowohl als Metamodell f r Klassendiagramme als auch als Datenstruktur f r relevante Layoutinforma tionen 103 KAPITEL 10 DATENMODELL 104 19b93UJ Buijs aweu
30. gef hrt Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der Model TreeView nicht angezeigt 22 19 TESTS F R ASSOZIATIONSLABELS 335 22 19 13 Bearbeiten des Quell Rollenbezeichners mit Package Sichtbarkeit mit Leerzeichen Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Package Sichtbarkeit mit Leerzeichen ab Dieser Test wurde aufgrund des Fehlers beim Parsen der Sichtbarkeit bei Klassenattributen Abschnitt 18 1 durch gef hrt Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der Mod
31. handbuch erkl rt F r Direct Editing m ssen ein DirectEditManager und CellEditorLocator implementiert werden um das Eingabefeld zu erzeugen und zu positionieren Ansonsten muss der Editor ClassDiagramEditor in der Methode createAndFillPaletteDrawer um einen Eintrag zum Erstellen von Notizen und Verbindungen zu Notizen er weitert werden Die ClassDiagramEditPartFactory muss um KNoteEditPart und KNoteConnectionEditPart erweitert werden der ModelTreeViewContentProvider und ModelTreeViewLabelProvider m ssen erweitert werden sofern Notizen in der Baumansicht ebenfalls dargestellt werden sollen 136 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN 16 2 Detailliertes Beispiel Enumerationen Im folgenden Abschnitt wird anhand der Modellelemente KEnum und KLiteral die Erweiterung von Kotelett detaillierter beschrieben KEnum und KLiteral sind bereits in Kotelett implementiert die Codefragmente in die sem Abschnitt stammen daher direkt aus dem Projekt F r die Anweisungen hier wird aber davon ausgegangen dass diese noch nicht implementiert seien 16 2 1 Anpassungen des Metamodells Das Metamodell kann im Rational Software Architekt IBM14 bearbeitet werden Es sind die Klassen KEnum und KLiteral hinzuzuf gen wie in Abbildung 16 2 angegeben Das ge nderte Modell wird im XMI Format ex KNode KRelationship target KEnum KClassifier Abbildung 16 2 Ausschnitt des um KEnum erwei
32. in der Abstrakten Klasse angezeigt 22 8 14 Abstrakte Klassenattribut mit protected Sichtbar keit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit pro tected Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt mit Leerzeichen 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt mit Leerzeichen 22 8 15 Abstrakte Klassenattribut mit package protection Sicht barkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit package protection Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 224 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 16 A
33. newName 26 this oldName literal get name 27 this newUserId ModelRegistry getInstance getUser getUserId 28 this oldUserId literal get lastChangingUser 29 this kEnum literal getContainsLiterallncidences iterator getAlpha 30 this oldKEnumUserId this kEnum get lastChangingUser 0 31 32 33 Override 34 public void execute 35 literal set_name newName 36 literal set lastChangingUser newUserId 37 kEnum set lastChangingUser newUserId 38 39 40 Override 140 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN enumeration StereoTypeEditPart KDomainNameEditPart LiteralsEditPart Abbildung 16 3 Darstellung und Verschachtelung der verwendeten Edit Parts 41 public void undo 42 this literal set name oldName 43 this literal set lastChangingUser oldUserId 44 this kEnum set lastChangingUser oldKEnumUserId 45 46 16 2 3 Edit Parts Es m ssen mindestens zwei Editparts je einer f r Enumerationen und Li terale implementiert werden Bei dieser Implementierung wird ein weiterer Editpart f r den Teil einer Enumeration ben tigt in dem die Literale ange zeigt werden Alle Editparts sollten von KAbstractEditPart erben Enumerationen Haupt Part Der KEnumEditPart ist der Haupt Part f r Enumerationen Da Enumerationen in ihrer Darstellung hnlich wie Klassen in zwei separate Bereiche gegliedert sind dient dieser Edit Part ledigli
34. organization or merging organizations If propagation of a covered work results from an entity transaction each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party s predecessor in interest had or could give under the previous paragraph plus a right to possession of the Corresponding Source of the work from the predecessor in interest if the predecessor has it or can get it with reasonable efforts You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License For example you may not impose a license fee royalty or other charge for exercise of rights granted under this License and you may not initiate litigation including a cross claim or counterclaim in a lawsuit alleging that any patent claim is infringed by making using selling offering for sale or importing the Program or any portion of it 11 Patents A contributor is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based The work thus licensed is called the contributor s contributor version A contributor s essential patent claims are all patent claims owned or controlled by the contributor whether already acquired or hereafter acquired that would be infringed by some manner permitted by this License of making using or selling its contributor version but do not include claims that would be
35. von Kompositionen ab 22 18 1 Komposition von einer Klasse zu einer Klasse Dieser Test deckt das Erstellen einer Komposition von einer Klasse zu einer Klasse ab Vorbedingung 1 Es wurden 2 Klassen erstellt Test 1 Links im Editor Bereich auf Composition klicken 2 Auf die erste Klasse klicken 3 Auf die zweite Klasse klicken 22 18 TESTS F R KOMPOSITIONEN 315 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition von der ersten zur zweiten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Komposition unter der ers ten Klasse im firstDiagram angezeigt 22 18 2 Komposition von einer Klasse zu einer Abstrakten Klasse Dieser Test deckt das Erstellen einer Komposition von einer Klasse zu einer Abstrakten Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Bereich auf Composition klicken 2 Auf die Klasse klicken 3 Auf die Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition von der Klasse zur Abstrakten Klasse angezeigt 2 Links in der Model TreeView wird die neue Komposition unter der Klas se im firstDiagram angezeigt 22 18 3 Komposition von einer Klasse zu einem Interface Dieser Test deckt das Erstellen einer Komposition von einer Klasse zu einem Interface ab Vorbedingung 1 Es wurde ein Modell
36. 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello String eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 4 Klassenmethode mit Boolean Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist 22 6 TESTS F R KLASSENMETHODEN 197 Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Boolean eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 5 Klassenmethode mit Float Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich de
37. 1 Im Editor Bereich in der Zeichenfl che rechtsklicken 2 Print Diagram anklicken Erwartetes Ergebnis 1 Es wird das Drucken Dialog des Betriebssystems aufgerufen 22 3 Tests f r die Versionierung Die Tests in diesem Abschnitt decken den Funktionsumfang der Versionie rung ab 22 3 1 Anlegen und Laden einer Version Dieser Test deckt das Anlegen und das Laden einer Version ab Test 1 Oben im Men den Men eintrag File gt Save Version anklicken 2 Im Popup Fenster den Namen der neuen Version eintragen und auf Ok klicken 3 Links ber der ModelTreeView auf die ComboBox klicken 4 Die neue Version anklicken Erwartetes Ergebnis 1 Die neu angelegte Version wurde geladen 180 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 4 Tests f r Klassen Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Klassen ab 22 4 1 Klasse erstellen Dieser Test deckt das Erstellen einer Klasse ab Test 1 Im Editor Bereich links auf Class klicken 2 Im Editor Bereich in der Zeichenfl che klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klasse angezeigt 2 Links in der ModelTreeView wird die neue Klasse im firstDiagram angezeigt 22 4 2 Klasse erstellen mit Gr enangabe Dieser Test deckt das Erstellen einer Klasse mit Gr enangabe ab Test 1 Im Editor Bereich links auf Class klicken 2 Im Editor Bereich
38. 20 Interfacemethode mit Parameter vom Integer Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode mit Parameter vom Integer Primitiv Typ ab 268 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello parameter Integer Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 21 Interfacemethode mit Parameter vom String Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode mit Parameter vom String Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello parameter String Void eingeben 3 Enter dr cken 22 12 TESTS F R INTERFACEMETHODEN 269 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt
39. Aggregation zwischen diesen erstellt 3 Die Sichtbarkeit des Endpunktes der Aggregation wurde aktiviert 4 Die Aggregation wurde selektiert Test 1 Rechtsklick auf die Aggregation 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird kein Pfeil am Endpunkt der Aggregation angezeigt 22 17 19 Umwandlung einer Aggregation zu einer Assoziati on Dieser Test deckt das Umwandeln einer Aggregation zu einer Assoziation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Die Aggregation wurde selektiert Test 1 Rechtsklick auf die Aggregation 2 Klick auf Change to association Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird anstelle der Aggregation eine Assoziation angezeigt 2 Links in der ModelTreeView wird anstelle der Aggregation eine Asso ziation angezeigt 312 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 17 20 Umwandlung einer Aggregation zu einer Komposi tion Dieser Test deckt das Umwandeln einer Aggregation zu einer Kompositi on ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuzpro dukt fehlerfrei durchgef hrt
40. Aufgaben entspricht Die Modellverwaltung zer f llt in die reine Verwaltung und Bereitstellung vorhandener Modelle sowie die Zuordnung von Nutzern zu Modellen Das Fremdsystem DOLSA stellt verschiedene Module f r die notwen digen Funktionalit ten bereit Als Services reichen die Module zur Berech nung und Anwendung von Deltas aus F r die Modellverwaltung werden im Fremdsystem Module zum Speichern Laden Erstellen und L schen von Modellen sowie die Bereitstellung vorhandener Modelle ben tigt F r die Versionierung muss es m glich sein Versionen zu Speichern und zu Laden alle vorhandenen Versionen und aktive Deltas abzurufen Aufbauend auf dieser funktional basierten konzeptionellen Zerlegung der Komponenten kann im Kapitel 9 die Modulsicht aufgebaut werden Ziel ist es Technologieentscheidungen zu erm glichen und m gliche Probleme bei der Umsetzung der Anforderungen an das Softwaresystem bei der geplanten Architektur aufzudecken Zun chst werden aber im Kapitel 8 die Technologien erl utert die f r die Umsetzung der vorgestellten Funktionalit t notwendig sind Anschlie end werden diese Technologien in der Beschreibung der Modulsicht im Kapitel 9 verwendet Kapitel 8 Verwendete Technologien In diesem Kapitel werden die Technologien vorgestellt die zur Erstellung des Produkts eingesetzt wurden DOLSA Abschnitt 8 4 und JGraLab m ssen ver wendet werden da diese von den Auftraggebern verlangt werden DOLSA mus
41. Auswahl felder und die Baumansicht links Die einzelnen Editoren zum Bearbeiten der Diagramme sind in Tabs in der Mitte angeordnet 9 5 1 Modell und Versionsverwaltung Der Anwender soll eine bersicht ber alle Modelle und Versionen bekom men Bei den Versionen ist zu beachten dass der aktuelle Stand eines Modells gesondert von den brigen Versionen betrachtet werden muss Der aktuelle Stand wird als Head Version bezeichnet Bei den gespeicherten Versionen handelt es sich um Snapshots des Modells Der aktuelle Stand ist der neues ten gespeicherten und benannten Version in der Regel voraus Gespeicherte Versionen k nnen nur zur Anzeige ge ffnet werden aber nicht bearbeitetet werden Laden von Modellen und Versionen Der Ablauf des Ladens und Anzeigens aller Modelle und Versionen ist in dargestellt Um m glichst wenig Daten auf dem Client vor halten zu m ssen erfolgt die Auswahl einer Version eines Modells in drei Schritten 1 Initialisierung Beim Start des Clients werden die verf gbaren Modelle auf dem Server angefragt und deren Namen und IDs an den Client bermittelt 2 Der Anwender w hlt ein Modell aus Die verf gbaren Versionen des Modells werden beim Server angefragt und auch hier werden Namen 9 5 VERWALTUNG VON MODELLEN VERSIONEN UND DIAGRAMMEN93 Kotelett I yx D Edit Models User Diagram B Versions Model Repository SS amp KClass p Model elements ee
42. Da keine Nutzerverwaltung geplant ist fehlen dazu die n tigen Voraussetzungen Offlinemodus Das System k nnte einen Offlinemodus anbieten sodass Anwender auch ohne Internetzugriff weiter am Modell arbeiten k nnen Neben der GUI 45 46 KAPITEL 5 ABGRENZUNGSKRITERIEN Umsetzung Offline Modus starten stoppen ist vor allem die Konfliktbe handlung hier ein gro es Problem Die aufgetretenen Konflikte m ssten in irgendeiner Form aufgel st werden Eine n here Betrachtung dieser Proble matik w rde den Rahmen der PG bei weitem sprengen Textchat Das System k nnte einen Textchat anbieten sodass Anwender die am selben Modell arbeiten untereinander kommunizieren k nnen Voicechat Das System k nnte den Anwendern erm glichen unterein ander durch Sprachnachrichten zu kommunizieren Speicherung von Logindaten Das System k nnte einem Anwender beim Laden nderungen seit der letzten ffnung des Diagramms anzeigen Teil III Architektur 47 49 Dieses Dokument dient als Beschreibung der grundlegenden Architektur des Kotelett Projektes zur kollaborativen Modellierung Die Architektur ist grob nach dem Prinzip der Siemens Sichten erstellt Zun chst gibt es die globale Analyse in Kapitel 6 die wesentliche Abh ngigkeiten f r die Archi tektur darstellt Darauf folgt die Konzeptsicht int aus der der grunds tzliche Aufbau der Software hervorgeht Danach werden verwendeten Technologi en in vorgestellt da diese die folg
43. Date clockRunner Thread StClock Date setTo StClock Date setTo Date setAt addClockListener ClockListener listener void removeClockListener ClockListener listener void start void stop void getDisplay String getCurrentTime Date up void down void set void mode void getState ClockState stclock frontend ClockPanel serialVersionUID 1L long displayLabel javax swing JLabel downButton javax swing JButton jPanel1 javax swing JPanel modeButton javax swing JButton setButton javax swing JButton upButton javax swing JButton ClockPanel ClockButtonListener listener initComponents void upButtonActionPerformed java awt event ActionEvent evt void downButtonActionPerformed java awt event ActionEvent evt void setButtonActionPerformed java awt event ActionEvent evt void modeButtonActionPerformed java awt event ActionEvent evt void timeChanged ClockDisplay clock void interface stclock ClockDisplay getDisplay String buttonListener 1 interface stclock ClockButtonListener down void mode void nce setState ClockState state void set void getTimeSetTo Date up void setTimeSetTo Date setTo void run void notifyClockListeners void main String args void lt state 1 stclock states SetHourState interface
44. Der deutliche Vorteil dieses Ansatzes ist dass die Clients synchron bleiben da alle Clients eine nde rung erst nach Freigabe durch den Server erhalten Der deutliche Nachteil ist allerdings dass die Latenz der Nutzereingaben von der Netzwerklatenz abh ngt Dadurch h ngt die Benutzbarkeit des Produkts direkt von Latenz zwischen Client und Server ab 9 4 3 Komplexere Ans tze In der Literatur finden sich einige Ans tze die Konfliktbehandlung zu ver bessern Diese gehen vom Ansatz des Sofortanwendens aus und versuchen die Konflikte aufzul sen indem eingehende nderungen gepatched oder das Modell vor der Anwendung auf einen fr heren Stand gesetzt wird und da nach die sp teren nderungen wiederholt werden 9 4 4 Strategy Pattern zu Modell nderungen In Anbetracht der verschiedenen L sungen bietet es sich an diese einfach austauschbar zu halten II NFA7 Au erdem ist es zur Erweiterbarkeit des Produktes sinnvoll dass die Methode um die Nutzer nderung zu erfassen austauschbar ist Unser Ansatz f r die Umsetzung des Strategy Pattern sieht folgenderma en aus In ist dargestellt wie eine Nutzer nderung unter Ver wendung eines Strategypattern aussieht Die auszutauschende Klasse ist der ModelHandler Zun chst wird dem ModelHandler mit geteilt dass eine n derung ansteht Hier kann dann entweder eine ChangeListener an das Modell geh ngt oder eine Kopie erstellt werden GEF holt dann das zu ver ndernde Model ber den Mo
45. Die UserListViewPart welche die Anwender anzeigt die am gleichen Diagramm arbeiten wird ebenfalls mit SWT als ListView realisiert In dieser Liste werden Anwender mit ihren Farben dargestellt sowie Steuerelemente mit denen man seinen Name und seine Farbe ndern kann Um die Far ben des Diagramms auszublenden oder im Modell zu l schen existieren hier ebenso Steuerelemente Zudem werden alle Popup Dialoge welche im Programm enthalten sind mit SWT realisiert 9 5 5 Server In diesem Abschnitt werden Presenter und Model des Servers genauer be schrieben siehe dazu auch Abbildung 9 1 Die detaillierte Architektur ist 9 5 VERWALTUNG VON MODELLEN VERSIONEN UND DIAGRAMMEN99 Presenter KryoNet 9 KotelettNetworkServer Server 5 1 DolApplication historicalUsersList KryoNet Connection 0 1 1 DOLSA ModelMoni 1 gt Modelldentifier DolServices 1 ordered 1 DOLSA v DeltaRepresentation Graph Abbildung 9 13 Der Presenter des Servers zusammen mit dem Modell in Abbildung abgebildet Der Server besteht aus dem Presenter und Model Zentral ist hierbei die Registry Sie nimmt Anfragen der Clients vom KotelettNetworkServer entgegen und verwendet die weiteren Teile des Servers um diese zu erf llen Dazu deligiert sie eingehende Deltas an den f r das jeweilige Modell zus
46. Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der Model TreeView wird das neue Abstrakte Klassenattribut mit protected Sichtbarkeit in der Abstrakten Klasse angezeigt 22 8 8 Abstrakte Klassenattribut mit public Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit public Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 220 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 9 Abstrakte Klassenattribut mit protected Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit pro tected Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Er
47. KLASSENATTRIBUTE 191 22 5 13 Klassenattribut mit public Sichtbarkeit mit Leerzei chen Dieser Test deckt das Erstellen eines Klassenattributes mit public Sichtbar keit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 14 Klassenattribut mit protected Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Klassenattributes mit protected Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 192 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt mit Leerzeichen 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt mit Leerzeichen 22 5 15 Klassenattribut mit package protection Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Klassenattributes mit package protection Sichtbarkeit mit Leerzeichen ab
48. Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuz produkt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Sichtbarkeit des Startpunktes der Assoziation wurde aktiviert 4 Die Assoziation wurde selektiert Test 1 Rechtsklick auf die Assoziation 2 Klick auf Toggle source navigability 22 16 TESTS F R ASSOZIATIONEN 297 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird kein Pfeil am Startpunkt der Assoziation angezeigt 22 16 17 Sichtbarkeit des Endpunktes einer Assoziation ak tivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Endpunktes einer As soziation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuz produkt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Rechtsklick auf die Assoziation 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird ein Pfeil am Endpunkt der Assoziation angezeigt 22 16 18 Sichtbarkeit des Endpunktes einer Assoziation de aktivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Endpunktes einer As soziation ab Dieser Test ist generisch dokumentiert da das Kreu
49. Links in der ModelTreeView wird die neue Komposition unter dem Interface im firstDiagram angezeigt 22 18 10 Selektion einer Komposition Dieser Test deckt das L schen einer Komposition ab 320 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung Es wurden 2 Klassen erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt Test 1 Im Editor Bereich auf die Komposition klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che ist die Komposition hervorge hoben 22 18 11 L schen einer Komposition aus dem Diagramm Dieser Test deckt das L schen einer Komposition aus dem Diagramm ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Komposition wurde selektiert Test 1 Entfernen dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Komposition nicht mehr angezeigt 2 Links in der Model TreeView wird die gel schte Komposition noch an gezeigt 22 18 12 L schen einer Komposition aus dem Modell Dieser Test deckt das L schen einer Komposition aus dem Modell ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 22 18 TESTS F R KOMPOSITIONEN 321 Test 1 Links in der ModelTreeView rechtsklick auf die Komposition 2 Delete Composition from model anklicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl
50. ModelElements 2 Delete Class from model anklicken Erwartetes Ergebnis 1 Links in der ModelTreeView wird das gel schte Element nicht mehr angezeigt 22 7 10 Abstrakte Klasse aus Modell in Diagramm einf gen Dieser Test deckt das Einf gen einer Abstrakten Klasse aus einem Modell in ein Diagramm ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt 2 Die erstellte Abstrakte Klasse wurde aus dem Diagramm gel scht Test 1 Links in der ModelTreeView auf die Abstrakte Klasse unter Model Elements doppelklicken 22 8 TESTS F R ABSTRAKTE KLASSENATTRIBUTE 215 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die eingef gte Abstrakte Klasse angezeigt 22 7 11 Refactoring eines Abstrakte Klassennamens Dieser Test deckt das Umbenennen einer Abstrakten Klasse ab welche durch ein Abstrakte Klassenattribut referenziert wird Hierbei muss das Abstrakte Klassenattribut seinen Typ korrekt anpassen Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt 2 Diese Abstrakte Klasse wurde my AbstractClass genannt 3 Dieser Abstrakte Klasse wurde der Abstrakte Klassenattribut myAt tribute myAbstractClass hinzugef gt Test 1 Die Abstrakte Klasse umbenennen zu refactoredClass Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das Abstrakte Klassenat tribut mit dem Typ refactoredClass angezeigt 2 Links in der ModelTreeView wird das Abstrakte K
51. Modell und Versionsverwal tung und im Abschnitt 9 6 das umgesetzte Parsen vorgestellt 9 1 Model View Presenter Model View Presenter MVP ist ein Architektur Entwurfsmuster in der Softwareentwicklung Dieses gibt den groben Rahmen f r die Realisierung vor MVP besteht aus drei Komponenten Modell View und Presenter Das Modell stellt die Logik bereit Die View bietet eine grafische Darstellung und erm glicht es dem Anwender eingaben zu t tigen Der Presenter verbindet das Modell und die View Er leitet die Eingaben aus der View an das Modell und nderungen aus dem Modell an die View weiter Durch die Verwendung von MVP wir die Logik von der Darstellung entkoppelt So wird eine klare Trennung in der Umsetzung erm glicht Die Umsetzung von MVP wird in der dargestellt Das MVP wird zwei mal in der Architektur angewendet Das erste MVP umfasst die gesamte Kotelett Komponente Der Server ist dabei das Modell und der Client die View Der Presenter wird auf den Client und Server zerteilt damit ein Datenaustausch zwischen diesen beiden 8l 82 KAPITEL 9 MODULSICHT component m m Kotelett componen component component Modell Client component component component Modell Nutzer in View t Modellen lab Aktive Modell verwalten compone
52. System Austauschbarkeit von verhandelbar Finfluss auf die gesam Strategien te Synchronisation T5 Standards T5 1 Schnittstellen zum Betriebssystem JVM wird von Java vorgege ben Gro er Einfuss auf das gesamte System drei verschiedenes Be triebssysteme Vorgabe des Auftrag gebers Anforderung der Gruppe moderaten Einfluss auf den Buildprozess T5 3 Datenformate XMI 2 1 Wird von DOLSA ver wendet feste Vorgabe Einfluss auf das Mo dell und Werkzeuge T5 4 Kommunikatio n Protokolle 5 4 2 Single Point of Truth feste Vorgabe Einfluss auf das ge samte System T5 4 3 handlung Konfliktbe voll verhandelbar Einfluss auf das ge samte System T5 4 4 Beschr nkung auf GraphUML feste Vorgabe durch Verwendung in JGraLab Einfluss auf Modell Die Anforderungen des Auftraggbers schr nken viele technische M g lichkeiten ein und binden Personal dem soll mit den folgenden Strategien entgegengewirkt werden Die Produktfaktoren und besonders die funktionalen Eigenschaften sind die wichtigsten Faktoren bei Erstellung der Konzeptsicht da f r viele Funk tionen eigene Komponenten ben tigt werden 58 Technische Anforderungen des Auftraggebers Zur zuk nftigen Realisierbarkeit einer Syntax berpr fung auf den ver teilten Clients verlangt der Auftraggeber ein lokale Version des Meta modelles beim Client i
53. Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 16 Klassenattribut mit privater Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Klassenattributes mit privater Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 22 5 TESTS F R KLASSENATTRIBUTE 193 Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 17 Klassenattribut mit Datentyp aus dem Modell Dieser Test deckt das Erstellen eines Klassenattributes mit Datentyp aus dem Modell ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Der Name dieser Klasse lautet DefaultClass Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello DefaultClass eingeben 3 Enter dr cken Erwartete
54. also um eine Ansicht lterer Versionen handeln 44 KAPITEL 4 WUNSCH KRITERIEN Kapitel 5 Abgrenzungskriterien Die in diesem Abschnitt behandelten Anforderungen sind solche die explizit nicht im Rahmen der PG behandelt werden auch dann nicht wenn noch etwas Zeitreserve brig sein sollte Dies soll zum einen abgrenzen was das Produkt nicht sein will und zum anderen was nicht mehr im Rahmen der PG behandelt werden kann Nachfolgend werden funktionale Anforderungen beschrieben die im Rah men der PG nicht mehr erf llt werden k nnen oder die am Ziel der PG vorbeigehen 5 1 Grobe funktionale Anforderungen Zus tzliche Diagrammtypen Das System k nnte neben den Klassendiagrammen die Modellierung weite rer Diagrammtypen Aktivit tsdiagramm Sequenzdiagramm usw unter st tzen Dies ist im Rahmen der PG nicht mehr realistisch da ein weiterer Dia grammtyp an sich sehr umfangreich ist eigenes Metamodell zus tzliche grafische Elemente und zus tzlich eine Typ Auswahl f r den Anwender eingebunden werden m sste bzw eine Unterscheidung bei der Persistierung ber cksichtigt werden m sste E Mail Benachrichtigung Das System k nnte alle beteiligten Anwender per E Mail ber nderungen informieren Ein solches Feature ist im Rahmen der PG nicht mehr m glich da hierzu genauer analysiert werden m sste wann genau Mails verschickt werden sollen und eine M glichkeit angebunden werden muss dieses Ver halten abzustellen
55. angezeigt 22 6 10 Klassenmethode mit package protection Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenmethode mit package protection Sichtbarkeit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 11 Klassenmethode mit privater Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenmethode mit privater Sichtbar keit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist 22 6 TESTS F R KLASSENMETHODEN 201 Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 12 Klassenmethode mit default Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Klassenmethode mit default Sichtbar keit
56. basiert auf Operationen von den Basistypen Hinzuf gen ndern und L schen Jede Operation kann sich auf ein Modellelement z B eine bestimmte Instanz eines Kanten oder Knotentyps oder auf Attribute eines solchen Elements beziehen Damit ist es m glich jede Art von Diffe renz zwischen konsekutiven Versionen des gleichen Modells auszudr cken Die genaue Syntax der DOL Operationen zu einem Modell folgt direkt aus dem Metamodell des behandelten Modells 8 4 GENERIC MODEL VERSIONING SYSTEM UND DELTA OPERATION LANGUAGETT Zum Beispiel kann man die nderung eines Methodennamens in einem Klassendiagramm durch eine Methode der Form g0 changeMethodName newName repr sentieren Hier gibt gO die durch den Namen eindeutige zu ndernde Instanz an Die Punktnotation wie aus objektorientierten Sprachen wie Java gewohnt gibt an dass eine Operation auf diesem Objekt durchgef hrt wird Der change Teil der Operation bedeutet dass eine nderung vorgenommen wird Method spezifiziert den Elementtypen und Name den Namen des zu ndernden Attributs In Klammern ist mit newName der neue Wert des zu ndernden Attributs als Parameter angegeben Ein hnliches Schema wird zum entfernen von Elementen angewendet nur dass hier auf Attributspezifikation und Parameter verzichtet werden kann Beim hinzuf gen von Elementen entf llt bei der Operation die Punkt notation und stattdessen wird das Ergebnis der Operation das neue Ele ment mittels eines Z
57. bergeben Jedes Li teral besitzt eine Korrespondierende JGraLab Vertex Klasse Da es aber zu einer Vertex Klasse mehrere Literale geben kann kann hier auch z B zwi schen Assoziationen und Kompositionen unterschieden werden die ja die selbe Vertex Klasse KAssociation haben siehe E Die Klassen mit dem Suffix Action sind Aktionen die im Kontextmen des Editors verwendet werden das bei einem Rechtsklick angezeigt wird de uniol pgktltt gef client editpolicies Dieses Package enth lt Edit Policies siehe Abschnitt 8 2 das Tutorial in Abschnitt 16 2 RWC11 de uniol pgktltt gef client editpolicies inputparser Dieses Package enth lt den Parser und Hilfsklassen f r Multiplizit ten At tribute Methoden und Rollenbezeichner Genaueres ist in beschrieben de uniol pgktltt gef client parts In dem Package de uniol pgktltt gef client parts und den Sub Packages sind die Edit Parts f r den Klassendiagrammeditor enthalten sie he auch Abschnitt 8 2 und Abschnitt 16 2 Dies sind GraphicalEditPartd Alle Edit Parts sollten von KAbstractEditPart erben da dieser bereits wichtige Funktionalitat fiir alle Edit Parts in Kotelett implementiert de uniol pgktltt gef client views Hier sind weitere Teile der Kotelett GUI implementiert Unter ande rem die Baumansicht f r die Modellverwaltung im Package de uniol pgktltt gef client views modeltreeview Die SelectionListener f r die Men eintr ge befinden sich in de uniol pgk
58. der Diagramme ei nes Modelles beim Benutzer werden wie die Auswahl auf verschiedene Modelle auf dem Client realisiert Der Server verwaltet die verschiede nen Modelle und ihre Nutzer Es m ssen Komponenten zur Erzeugung und Versendung von DOLs auf dem Client und dem Server realisiert werden Das Repository muss DOL durch Komponenten berechnen und anwenden k nnen Strategie Implementierung einer DOL Kom ponente auf den Clients dem Server und dem Repository Da diese verteilten Komponenten untereinander in DOL kommunizieren muss auch die Erzeugung Versendung und Verarbeitung von DOL auf allen drei Teilsystem implementiert sein Clients erhalten Komponenten zum senden und Empfangen von Komponenten Der Server hat Kom ponenten um diese DOL Befhele zu Empfangen und zu verteilen Das Repository muss zu Verwaltung DOLs berechnen und anwenden k nnen Strategie Zentrale Modellverwaltung beim Server Der Server verwendet Komponenten zur Verwaltung der aktiven Modelle auf den Clients Weiterhin verteilt er die Modellliste durch eine Kompo nente an die Clients und hat eine Komponente f r die Nutzerverwaltung Auf den Clients wird nur das aktive Modell gespeichert und durch eine Komponente f r die Behandlung der Nutzereingaben die Bearbeitung dessen erm glicht Weiterhin wird eine Komponente f r die Auswahl eines Modells ben tigt Das Repository enth lt die Komponenten zur Behandlung der verschiedenen Modelle und ihrer Versionen KAPITEL 6
59. diese eine gemeinsame Oberklasse KNode auf die BoundingBox verweist 108 KAPITEL 10 DATENMODELL 10 3 3 Kanten Obwohl Generalisierungen und Assoziationen unterschiedliche Eigenschaften haben und f r Assoziationen mehr Layoutinformationen verwaltet werden m ssen gibt es f r Kanten in Diagrammen nur die Klasse GraphicalEdge GraphicalEdge enth lt die Bendpoints und die Positionen eventueller Be schriftungen der Kante Bendpoints sind die Punkte durch die eine Kante im Diagramm gelegt wird Jede kannte hat beliebig viele Bendpoints die unbedingt geordnet sein m ssen Der Nutzer kann so eine Kante manuell routen Die Positionen der Beschriftungen LabelPosition haben ein Attribut element welches zur Laufzeit einen Bezeichner enth lt der angibt welche Eigenschaft des Modellelements in der Beschriftung an jener Position dar gestellt wird Bei Klassendiagrammen kann element z B angeben ob die Position zum Namen einer Assoziation oder einem Rollenbezeichner geh rt Dadurch ergibt sich auch implizit wie die x und y Koordinaten der Position interpretiert werden z B ob sie relativ zu Start Mitte oder Endpunkt der Kante zu interpretieren sind Dadurch dass hier String Bezeichner zur Zu ordnung der Positionen zu Eigenschaften der Modellelemente gew hlt wur den bleiben die Layoutklassen auch hier vom restlichen Metamodell unab h ngig Neben Assoziationen und Generalisierungen k nnte GraphicalEdge z B genauso Layoutinformation
60. dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Klasse nicht mehr angezeigt 22 4 9 Klasse aus Modell l schen Dieser Test deckt das L schen einer Klasse aus einem Modell ab Vorbedingung 1 Es wurde eine Klasse erstellt Test 1 Links in der ModelTreeView rechtsklick auf die Klasse unter Model Elements 2 Delete Class from model anklicken Erwartetes Ergebnis 1 Links in der ModelTreeView wird das gel schte Element nicht mehr angezeigt 22 4 10 Klasse aus Modell in Diagramm einf gen Dieser Test deckt das Einf gen einer Klasse aus einem Modell in ein Dia gramm ab 184 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Klasse erstellt 2 Die erstellte Klasse wurde aus dem Diagramm gel scht Test 1 Links in der Model TreeView auf die Klasse unter Model Elements dop pelklicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die eingef gte Klasse an gezeigt 22 4 11 Refactoring eines Klassennamens Dieser Test deckt das Umbenennen einer Klasse ab welche durch ein Klas senattribut referenziert wird Hierbei muss das Klassenattribut seinen Typ korrekt anpassen Vorbedingung 1 Es wurde eine Klasse erstellt 2 Diese Klasse wurde myClass genannt 3 Dieser Klasse wurde der Klassenattribut my Attribute myClass hin zugef gt Test 1 Die Klasse umbenennen zu refactoredClass Er
61. dritte antwortet wieder auf Direct Editing nur das hier ein RenameLiteralCommand statt CreateLiteralCommand erstellt wird public class KLiteralEditPart extends AbstractNameEditPart Override protected IFigure createFigure Label figure new LeftAlignedLabel getLiteral get name QO return figure KLiteral getLiteral return KLiteral getModel 40 41 42 43 44 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 16 2 DETAILLIERTES BEISPIEL ENUMERATIONEN 145 Override protected void createEditPolicies installEditPolicy EditPolicy COMPONENT_ROLE new ComponentEditPolicy Override protected Command createDeleteCommand GroupRequest deleteRequest return new DeleteKLiteralCommand getLiteral installEditPolicy EditPolicy SELECTION FEEDBACK ROLE new SelectionEditPolicy Override protected void showSelection KLiteralEditPart this figure setBorder new LineBorder 1 Override protected void hideSelection KLiteralEditPart this figure setBorder null installEditPolicy EditPolicy DIRECT EDIT ROLE new DirectEditPolicy Override protected void showCurrentEditValue DirectEditRequest request System out println request getCellEditor getValue Override protected Command getDirectEditCommand D
62. einer Assoziation von einem Interface zu einer Abstrakten Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf das Interface klicken 3 Auf die Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation vom In terface zur Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Assoziation unter dem In terface im firstDiagram angezeigt 22 16 10 Selektion einer Assoziation Dieser Test deckt das L schen einer Assoziation ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt Test 1 Im Editor Bereich auf die Assoziation klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che ist die Assoziation hervorgeho ben 294 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 16 11 L schen einer Assoziation aus dem Diagramm Dieser Test deckt das L schen einer Assoziation aus dem Diagramm ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Entfernen dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Assoziation nicht mehr angezeigt 2 Links in der ModelTreeView wird die gel schte Assoziation
63. einer Kompositi on ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzpro dukt fehlerfrei durchgef hrt wurde 22 16 TESTS F R ASSOZIATIONEN 299 Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Rechtsklick auf die Assoziation 2 Klick auf Change to composition Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird anstelle der Assoziation eine Komposition angezeigt 2 Links in der ModelTreeView wird anstelle der Assoziation eine Kom position angezeigt 22 16 21 Erstellen eines Bendpoints in einer Assoziation Dieser Test deckt das Erstellen eines Bendpoints in einer Assoziation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Klick auf den mittleren markierten Punkt auf der Assoziation 2 Verschieben des Bendpoints per Drag and Drop Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Assoziation ber den Bendpoint umgeleitet angezeigt 300 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 16 22 Verschieben eines Be
64. extends KAbstractEditPart private List lt Object gt childrenList new ArrayList Object In createFigure wird die Draw2D Figure erstellt um eine Enumeration zu zeichnen Override protected IFigure createFigure RectangleFigure rectangleFigure new RectangleFigure rectangleFigure setLayoutManager new ToolbarLayout return rectangleFigure public KNode getKNode return this getRepresentation get kNode private KEnum getKEnum return KEnum getKNode Override protected void createEditPolicies this installEditPolicy EditPolicy COMPONENT_ROLE new ComponentEditPolicy Override protected Command getDeleteCommand GroupRequest request return GenericDeleteCommandFactory createDeleteCommand getRepresentation Override protected void refreshVisuals BoundingBox representation this getRepresentation if representation null return Rectangle rect new Rectangle representation get_x representation get_y representation get width representation get_height AbstractGraphicalEditPart this getParent setLayoutConstraint this getFigure rect setColor getFigure 83 84 85 86 87 88 89 90 9 92 93 94 96 97 98 99 00 01 02 03 04 05 06 07 08 09 Po N 142 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN private void setColor
65. for Requirements Engineering Exam Foundation Level IREB compliant Rocky Nook Computing 2011 RUBEL Dan WREN Jaime CLAYBERG Eric The Eclipse Graphical Editor Framework GEF Addison Wesley 2011 WIELAND Konrad LANGER Philip SEIDL Martina WIM MER Manuel KAPPEL Gerti Turning Conflicts into Collabo ration In Computer Supported Cooperative Work CSCW 22 2013 Nr 2 S 181 240
66. hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 22 6 TESTS F R KLASSENMETHODEN 203 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt mit Leerzeichen 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt mit Leerzeichen 22 6 15 Klassenmethode mit package protection Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Klassenmethode mit package protection Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 16 Klassenmethode mit privater Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Klassenmethode mit privater Sichtbar keit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbe
67. http www gnu org licenses gt Also add information on how to contact you by electronic and paper mail If the program does terminal interaction make it output a short notice like this when it starts in an interactive mode program Copyright C year name of author This program comes with ABSOLUTELY NO WARRANIY for details type show w This is free software and you are welcome to redistribute it under certain conditions type show c for details The hypothetical commands show wi and show should show the appropriate parts of the General Public License Of course your program s commands might be different for a GUI interface you would use an about box You should also get your employer if you work as a programmer or school if any to sign a copyright disclaimer for the program if necessary For more information on this and how to apply and follow the GNU GPL see lt http www gnu org licenses gt The GNU 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 Lesser General Public License instead of this License But first please read http www gnu org philosophy why not lgpl html 370 KAPITEL 26 GNU GENERAL PUBLIC LICENSE VERSION 3 Kapitel 27 JDOM Lizenz
68. in Zeile 88 berschrieben und false zur ckgegeben Der Event um das Direct Editing zu starten wird vom KEnumEditPart bzw einer Oberklasse 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 46 47 48 e o c ct om o o o a o rt OO 6 60 61 62 63 64 65 66 67 68 16 2 DETAILLIERTES BEISPIEL ENUMERATIONEN 143 weitergeleitet In isSelectable false zur ckzugeben unterbindet n mlich jegliche Events In Zeile 57 wird das Direct Editing als Antwort auf einen entsprechenden Request gestartet Es wird der CompartmentDirectEditManager genutzt eine Hilfsklasse die auch in anderen Editparts in Kotelett eingesetzt wird public class KLiteralsEditPart extends KAbstract Override protected IFigure createFigure return new CompartmentFigure Override protected void createEditPolicies this installEditPolicy EditPolicy DIRECT_ DirectEditPolicy Override protected Command getDirect EditPart EDIT_ROLE new DirectEditRequest request EditCommand String name String request getCellEditor getValue if name trim isEmpty return new CreateKLiteralCommand getKEnum name else return null Override protected void showCurrent request Override public void performRequest Request req EditValue DirectEditRequest
69. in der Zeichenfl che klicken und nach unten rechts ziehen Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klasse mit ange zeigt 2 Die neue Klasse f llt den Bereich vom Dr cken der Maustaste bis zum Loslassen der Maustaste 3 Links in der ModelTreeView wird die neue Klasse im firstDiagram angezeigt 22 4 3 Klasse ausw hlen Dieser Test deckt das Ausw hlen einer Klasse ab 224 TESTS F R KLASSEN 181 Vorbedingung Es wurde eine Klasse erstellt Test 1 Im Editor Bereich die erstellte Klasse anklicken Erwartetes Ergebnis 1 Im Editor Bereich wird die ausgew hlte Klasse umrandet angezeigt 22 4 4 Mehrfachauswahl von Klassen Dieser Test deckt das Ausw hlen mehrerer Klassen ab Vorbedingung 1 Es wurden zwei Klassen erstellt Test 1 Im Editor Bereich oben links von den beiden Klassen klicken und ge dr ckt halten 2 Die Maus nach unten rechts ziehen bis die Auswahlanzeige beide Ele mente komplett umfasst 3 Maustaste loslassen Erwartetes Ergebnis 1 Im Editor Bereich werden die beiden ausgew hlte Klasse umrandet angezeigt 22 4 5 Klasse umbenennen Dieser Test deckt das Umbenennen einer Klasse ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich den Namen der ausgew hlten Klasse anklicken 2 Im Eingabefeld den neuen Namen MyTestClass eingeben 3 Im Editor Bereich auf ein beliebigen Punkt klicken
70. infringed only as a consequence of further modification of the contributor version For purposes of this definition control includes the right to grant patent sublicenses in a manner consistent with the requirements of this License Each contributor grants you a non exclusive worldwide royalty free patent license under the contributor s essential patent claims to make use sell offer for sale import and otherwise run modify and propagate the contents of its contributor version In the following three paragraphs a patent license is any express agreement or commitment however denominated not to enforce a patent such as an express permission to practice a patent or covenant not to sue for patent infringement To grant such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party If you convey covered work knowingly relying on a patent license and the Corresponding Source of the work is not available for anyone to copy free of charge and under the terms of this License through a publicly available network server or other readily accessible means then you must either 1 cause the Corresponding Source to be so available or 2 arrange to deprive yourself of the benefit of the patent license for this particular work or 3 arrange in a manner consistent with the requirements of this License to extend the patent license to downstream recipients Knowingly r
71. ist Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Assoziation ohne Bend point angezeigt 22 17 Tests f r Aggregationen Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Aggregationen ab 22 17 1 Aggregation von einer Klasse zu einer Klasse Dieser Test deckt das Erstellen einer Aggregation von einer Klasse zu einer Klasse ab Vorbedingung 1 Es wurden 2 Klassen erstellt Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf die erste Klasse klicken 3 Auf die zweite Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation von der ersten zur zweiten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Aggregation unter der ers ten Klasse im firstDiagram angezeigt 22 17 2 Aggregation von einer Klasse zu einer Abstrakten Klasse Dieser Test deckt das Erstellen einer Aggregation von einer Klasse zu einer Abstrakten Klasse ab 302 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf die Klasse klicken 3 Auf die Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation von der Klasse zur Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue A
72. klassischen VCS erfolgt textbasiert Gitl4 Wenn ein automatisches Mergen nicht m glich ist muss der Konflikt manuell behoben werden Manuelles Mergen von Modelldifferenzen ist jedoch kaum m glich da die Speicherstruktur von Modellen f r Menschen nicht nachvollziehbar ist Die Folge ist dass der Zugriff auf die Dateien abwechselnd erfolgen muss was dem Team bereits ab einer Gr e von zwei Teilnehmern ein hohes Ma an Koordination aufzwingt Dabei steigt der Mehraufwand der Koordination exponentiell pro weiterem Teilnehmer Dies hat zur Folge dass Entwickler gemeinsam an einem Rechner ein einziges Modell erstellen um Konfliktsituationen zu vermeiden Dabei leidet die Produktivit t der Entwickler In einem kollaborativen Modellierungswerkzeug ist eine Modellimple mentierung notwendig um z B die Korrektheit von Modellen zu berpr fen Ein Modell ist eine Beschreibung eines realen Systems z B in Form eines UML Klassendiagramms Da Modelle wiederum durch Metamodelle beschrieben werden ist ein Modell Instanz eines Metamodells Diagramme also verschiedene Sichten auf das Modell werden samt ihrer Layoutinforma tionen als Schnittstelle zwischen dem Anwender und dem Modell ben tigt Um Diagramme implementieren und versionieren zu k nnen werden Infor mationen ber Diagramme im Metamodell integriert Somit beschreibt das Metamodell Modelle samt zu einem Modell dazugeh rige Diagramme Um die Kollaborativit t in einem Modellierun
73. links ist leer 2 Es ist kein Editor ge ffnet 22 1 4 Modell l schen Dieser Test deckt das L schen eines Modells ab 22 1 TESTS F R DIE MODELLVERWALTUNG 175 Vorbedingung 1 Es wurde ein Modell ge ffnet Test 1 Links in der TreeView auf das Modell oberstes Element rechtsklicken 2 Delete Model anklicken 3 Im Popup das L schen des Modells best tigen Erwartetes Ergebnis 1 Die ModelTreeView links ist leer 2 Es ist kein Editor ge ffnet 3 Es erscheint das Dialog zum ffnen eines neuen Modells indem das gel schte Modell nicht enthalten ist 22 1 5 Diagramm erstellen Dieser Test deckt das Erstellen eines Diagramms ab Test 1 Links in der ModelTreeView rechtsklick auf das oberste Element das Modell 2 Create new Diagram anklicken 3 Im Popup Fenster den Namen des neuen Diagramms eintragen und auf Ok klicken Erwartetes Ergebnis 1 Links in der ModelTreeView wird das neue Diagramm unter Diagrams angezeigt 22 1 6 Diagramm Umbenennen Dieser Test deckt das Umbenennen eines Diagramms ab 176 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Links in der ModelTreeView rechtsklick auf das umzubenennende Dia gramm 2 Rename Diagram anklicken 3 Im Popup Fenster den neuen Namen des Diagramms eintragen und auf Ok klicken Erwartetes Ergebnis 1 Links in der ModelTreeView wird der neue Name des Diagramms an gezeigt 22 2 Tests f r SWT G
74. neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 21 Abstrakte Klassenmethode mit Parameter vom String Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit Para meter vom String Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello parameter String Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 22 Abstrakte Klassenmethode mit Parameter vom Boo lean Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit Para meter vom Boolean Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist 22 9 TESTS F R ABSTRAKTE KLASSENMETHODEN 239 Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello parameter Boolean Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue A
75. nichtfunktionalen Anforderungen Die Anforderun gen werden f r das gesamte System gesammelt Generell unterscheiden wir Muss Kriterien Wunsch Kriterien sowie Ab grenzungs Kriterien Die Muss Kriterien beschreiben die wesentlichen Anforderungen der PG die zum Erreichen des Projektziels erf llt werden m ssen Wunsch Kriterien sind Features die durchaus w nschenswert sind aber im Zeitrahmen der PG voraussichtlich nicht mehr erf llbar sind F r den Fall dass jedoch noch etwas Zeit brig ist sind dies Features die noch umgesetzt werden k nn ten Wunsch Kriterien m ssen ebenfalls f r Architektur Entscheidungen be r cksichtigt werden da diese nicht vorzeitig eine Realisierung der Wunsch Kriterien unm glich bzw nur mit hohem Aufwand m glich machen darf Die Abgrenzungs Kriterien beschreiben dagegen Anforderungen die das Projekt ausdr cklich nicht als Ziel gesetzt hat Dabei handelt es sich um Anforderungen die an der Idee des Projektes vorbeigehen oder Features die so umfangreich sind dass sie f r unser Projekt auch dann nicht mehr betrachtet werden k nnen wenn noch etwas Zeit brig sein sollte Dennoch ist es wichtig diese zu beschreiben damit Klarheit dar ber herrscht was nicht mehr geschafft werden kann bzw was nicht Ziel des Projektes ist aber leicht als ein solches gesehen werden k nnte wenn dies nicht explizit ausgeschlossen wird Struktur der Anforderungen Die Anforderungen werden gem der im Projektha
76. noch an gezeigt 22 16 12 L schen einer Assoziation aus dem Modell Dieser Test deckt das L schen einer Assoziation aus dem Modell ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt Test 1 Links in der ModelTreeView rechtsklick auf die Assoziation 2 Delete Association from model anklicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Assoziation nicht mehr angezeigt 2 Links in der ModelTreeView wird die gel schte Assoziation nicht mehr angezeigt 22 16 TESTS F R ASSOZIATIONEN 295 22 16 13 Umh ngen des Startpunktes einer Assoziation Dieser Test deckt das Umh ngen des Startpunktes einer Generalisierung ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Assoziationen zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Der Startpunkt der Assoziation per Drag and Drop auf ein anderes Knoten ver ndern Erwartetes Ergebnis 1 Der Startpunkt der Assoziation wird nur dann ver ndert wenn die daraus resultierende Assoziation g ltig ist 22 16 14 Umh ngen des Endpunktes einer Assoziation Dieser Test deckt das Umh ngen des Endpunktes einer Generalisierung ab Dieser Test ist generisch dokumentiert da da
77. of the Licensor for the purpose of discussing and improving the Work but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as Not a Contribution Contributor shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work Grant of Copyright License Subject to the terms and conditions of this License each Contributor hereby grants to You a perpetual worldwide non exclusive no charge royalty free irrevocable copyright license to reproduce prepare Derivative Works of publicly display publicly perform sublicense and distribute the Work and such Derivative Works in Source or Object form Grant of Patent License Subject to the terms and conditions of this License each Contributor hereby grants to You a perpetual worldwide non exclusive no charge royalty free irrevocable except as stated in this section patent license to make have made use offer to sell sell import and otherwise transfer the Work where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution s alone or by combination of their Contribution s with the Work to which such Contribution s was submitted If You institute patent litigation against any entity including a cross claim or counterclaim in a lawsuit
78. part of the work For example Corresponding Source includes interface definition files associated with source files for the work and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require such as by intimate data communication or control flow between those subprograms and other parts of the work The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source The Corresponding Source for a work in source code form is that same work 2 Basic Permissions 11 rights granted under this License are granted for the term of copyright on the Program and are irrevocable provided the stated conditions are met This License explicitly affirms your unlimited permission to run the unmodified Program The output from running a covered work is covered by this License only if the output given its content constitutes a covered work This License acknowledges your rights of fair use or other equivalent as provided by copyright law You may make run and propagate covered works that you do not convey without conditions so long as your license otherwise remains in force You may convey covered works to others for the sole purpose of having them make modifications exclusively for you or provide you with facilities for running those works provided that you comply with the terms of this License in conveying all
79. sen ColorHelper und FinalBendPoint sind Hilfsklassen f r den Klassendiagramm Editor 13 2 CLIENT DETAILLIERTERE STRUKTUR 125 Die Klasse OpenEditorOnStartup initialisiert die Verbindung zum Ser ver und die Modellverwaltung Die Verwendung dieser Hilfsklasse ist not wendig da sichergestellt sein muss dass die GUI vor der Modellverwaltung und der Client Server Verbindung vollst ndig initialisiert wird de uniol pgktltt gef client command Dieses Package enth lt die GEF Commands f r den Klassendiagramm Editor Zur Verwendung von Commands siehe Abschnitt 8 2 und RWC11 Alle Commands sollten von AbstractModelCommand erben siehe schnitt 16 2 Eine wichtige Oberklasse f r Commands ist noch CreateNodeCommand der die Erstellung eines KNodes siehe im Editor einschlie lich der BoundingBox kapselt Es muss lediglich createNode ausimplemen tiert werden In der Methode muss dann der KNode im Modell erstellt und zur ckgegeben werden Desweiteren ist die GenericDeleteCommandFactory interessant Mit der Methode createDeleteCommand wird ein Command erstellt der das ber gebene Modell oder Layoutobjekt l scht Verbundene Elemente wie Kanten werden mit gel scht sodass das Modell korrekt bez glich des Metamodells bleibt Bei Modellobjekten werden die Layoutobjekte mit gel scht umge kehrt allerdings nicht F r ein Anwendungsbeispiel siehe Abschnitt 16 2 de uniol pgktltt gef client control Dieses Package enth lt di
80. sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 16 Interfacemethode mit privater Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen einer Interfacemethode mit privater Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist 266 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 17 Interfacemethode mit Datentyp aus dem Modell Dieser Test deckt das Erstellen einer Interfacemethode mit Datentyp aus dem Modell ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Der Name dieses Interfaces lautet DefaultClass 3 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bere
81. werden Strategie Trennung von Client und Server Um einen Single Point of Truth zu realisieren wird ein Server eingesetzt um die g ltige Version des Modells zu speichern Strategie Nutzung von DOLSA als Blackbox Um die vom Auftraggeber verlangte Synchronisation via DOL zu er m glichen wird zu Vereinfachung das gesamte DOLSA auf dem Client gehalten und die Services Delta Calculator und Delta Applier daraus verwendet KAPITEL 6 GLOBALE ANALYSE 6 4 PRODUKT FAKTOREN 6 4 Produkt Faktoren 59 Faktor Flexibilit t Variabi lit t Wirkung P1 funktionale Eigenschaften P1 1 Erstellung von UML Modellen per GUI Umfang ist auf ein zelne Diagramme beschr nkt einzel ne Feinheiten sind verhandelbar Einfluss auf das ge samte System P1 2 Kollaboration Umfang der Kollabo ration ist begrenzt ver handelbar feste Vor gabe Einfluss auf das ge samte System P1 3 Versionierung von UML Modellen feste Vorgabe Einfluss auf die Daten haltung P1 4 Echtzeitsynchro nisation feste Vorgabe Einfluss auf das ge samte System P1 5 tung Modellverwal feste Vorgabe Einfluss auf die Daten haltung P1 6 mehrere Modelle feste Vorgabe Einfluss auf die gesam te Architektur P4 Verl sslichkeit P4 1 Verf gbarkeit P4 1 1 rtlich unab h ngige Verwendbar keit des Systems feste Vorgabe Einfluss auf die gesam te Arc
82. werden Dabei kann jedoch das Problem auftreten dass andere Anwender zwischenzeitlich ihre nde rungen durchf hren Um diese nderungen nicht versehentlich wieder r ckg ngig zu machen darf die Undo Funktion nur f r eigene nde rungen gelten I FA8 1 Das System muss es dem Anwender erm glichen eige ne r ckg ngig gemachte Arbeitsschritte zu wiederholen solange keine neuen nderungen von ihm durchgef hrt wurden Die Redo Funktion muss hnlich der Undo Funktion die letzten eigenen r ckg ngig gemachten nderungen wiederherstellen Um die Undo Redo Funktion schlank zu halten muss dies nur m g lich sein solange zwischendurch keine neuen nderungen des glei chen Anwenders durchgef hrt wurden Dies w rde ansonsten ein erheblich umfangreicheres Speichern der nderungen erfordern um bei s mtlichen Kombinationen das korrekte Ergebnis zu lie fern I FA8 2 Das System muss einem Undo Redo Befehl ignorieren wenn es sich auf ein Element bezieht das bereits ge l scht wurde mit Ausnahme der Befehle Undo Delete und Redo Create Im Falle von Undo Redo k nnen Konflikte auftreten da andere User zwischenzeitig ebenfalls nderungen an den gleichen Ele menten vornehmen Ein gro es Problem ist wenn das Element an 3 1 I MODELLIERUNG VON KLASSENDIAGRAMMEN 3l dem nderungen durchgef hrt werden sollen zwischendurch von einem anderen Anwender gel scht wurde In diesem Fall soll das System eine einfache Konfliktl
83. wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 222 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 8 12 Abstrakte Klassenattribut mit default Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit default Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der Model TreeView wird das neue Abstrakte Klassenattribut mit protected Sichtbarkeit in der Abstrakten Klasse angezeigt 22 8 13 Abstrakte Klassenattribut mit public Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit public Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 22 8 TESTS F R ABSTRAKTE KLASSENATTRIBUTE 223 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut
84. wird die vom An wender durchgef hrte nderung aus der Differenz zweier Modellversionen gebildet In diesem Fall muss sichergestellt werden dass nur die nderung die der Anwender durchgef hrt hat in das Delta einflie t Au erdem m s sen vom Server eintreffende Deltas in der korrekten Reihenfolge angewandt werden Aus diesem Grund wurde der ModelMonitor geschaffen Dieser sorgt daf r das Zugriffe auf das Modell in der richtigen Reihenfolge durchgef hrt werden Bei eingehenden Deltas nimmt er diese entgegen und speichert sie in einer Queue damit sie in der richtigen Reihenfolge angewandt werden k nnen Die genau Funktionalit t soll anhand zweier Sequenzdiagramme erl utert werden Abbildung 9 3 und Abbildung 9 4 Abbildung 9 3 zeigt die Behandlung eine nderung auf dem Client Zu n chst wird der aktuelle Stand des Modells f r die sp tere Berechnung der nderung kopiert Nach dem Kopiervorgang wird die nderung auf das Modell angewandt Jetzt kann aus dem alten und neuen Modell mithilfe der DOLSA Services das Delta gewonnen werden Dieses Delta wird an den Server verschickt SequenceClientServerProtokoll Abbildung 9 4 zeigt die Behandlung einer nderung auf dem Server An kommende nderungen auf dem Server werden in eine Queue zum Arbei ten abgelegt Der runner Thread nimmt immer die erste nderung aus der Queue und arbeitet diese ab Das Delta wird mit Hilfe der DOLSA Services auf das Modell angewandt Daraufhin wir da
85. zeugung der DOL Befehle fordert der Auftraggeber die Austausch barkeit von Strategien e 15 4 3 Der Auftraggeber fordert zwingend eine Behandlung von Konflikten e P5 1 1 Zur Vorbereitung syntaktischer Pr fungen von Nutzerein gaben muss das System erweiterbar sein e P5 1 2 Die Art der L sung von Synchronisationskonflikten ist ver handelbar L sung Um die Integration und Entfernung von Komponente zur erm glichen muss das System in Aufgaben bezogene Komponenten zerlegt werden um Teilmodule dieser Aufgaben ein und ausbauen zu k nnen Weiter hin muss ein Architekturmuster gefunden werden um Strategien aus tauschen zu k nnen Strategie Aufteilung der Komponenten nach dem Prinzip der Belange Um die Auswirkung der Integration und Entfernung von Komponenten so gering wie m glich zu halten wird das System nach den Hauptanfor derungen aufgeteilt So ist sichergestellt dass bei nderungen in einer Komponente andere Komponenten m glichst wenig beeinflusst werden Strategie Nutzung des Strategy Entwursmusters Um die M glichkeit zu haben Strategien auszutauschen biete sich das Strategy Muster nahezu an da dies f r solche Aufgaben entwurfen wur de 55 56 KAPITEL 6 GLOBALE ANALYSE 6 3 Technische Faktoren Viele Hardwarefaktoren werden in Java durch die JVM gekapselt Bemer kenswert sind bei den technischen Faktoren zahlreiche externe Anforderun gen des Auftraggebers der in der Regel nur funkti
86. 58 KAPITEL 18 FEHLGESCHLAGENE AKZEPTANZTESTS Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde eine Generalisierung zwischen diesen erstellt Test 1 Strg Z dr cken Undo Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die erstellte Generalisie rung nicht mehr angezeigt 2 Links in der ModelTreeView wird die Generalisierung nicht mehr an gezeigt Tats chliches Ergebnis 1 Die Funktion die Erstellung der Generalisierung R ckg ngig zu ma chen ist nicht verf gbar 2 Dieses Fehlverhalten tritt f r alle m glichen Generalisierung zwi 18 5 Umh ngen des Startpunktes einer Generali sierung Dieser Test deckt das Umh ngen des Startpunktes einer Generalisierung ab Dieser Test ist generisch formuliert da das Problem hierbei eine fehlende berpr fung der Constraints beim Umh ngen ist Diese Constraints sind bei der Erstellung von Generalisierungen eingehalten Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Generalisierung zwischen diesen erstellt 3 Die Generalisierung wurde selektiert Test 1 Der Startpunkt der Generalisierung wird per Drag and Drop auf einen anderen Knoten gezogen 18 6 UMH NGEN DES ENDPUNKTES EINER GENERALISIERUNGI159 Erwartetes Ergebnis 1 Der Startpunkt der Generalisierung wird nur dann ver ndert wenn die daraus resultierende Generalisierung g ltig ist Tats chliches Ergebnis 1 Die Constraints der Generalisierung wer
87. A9 1 Diagrammelement nderungsobjekt Art der nderung Klassen selbst Gr e ndern Interfaces verschieben abstrakte Klassen Enumerationen Assoziation Bendpoints hinzuf gen Aggregation entfernen Komposition verschieben Generalisierung Tabelle 3 3 M gliche nderungen an Diagrammelementen Wenn ein Knoten oder eine Kante verschoben wird muss 32 KAPITEL 3 MUSS KRITERIEN das System sicherstellen dass alle dazugeh rigen Texte mitverschoben werden In Klassen werden neben dem Klassennamen auch Attributsna men und Methoden als Text erfasst Assoziationen entspre chend Multiplizit ten oder Rollenbezeichner Es muss daher si chergestellt werden dass derartige Texte mitverschoben werden wenn das bergeordnete Element Klasse Assoziation usw ver schoben wird I FA9 2 Wenn ein Knoten in einem Diagramm verschoben wird I FA10 1 11 1 12 muss das System sicherstellen dass die Verbindung mit allen ein und ausgehenden Kanten erhalten bleibt Analog zu den Texten m ssen auch an Knoten h ngende Kanten z B Assoziationen an Klassen fest an der Klasse h ngen bleiben Wenn die L nge eines Textes in einem Diagrammelement die Grenzen des ihn umschlieDenden Elements berschreitet muss das System die Darstellung des Textes so behandeln dass er in das Diagrammelement passt und der vollst ndige Text f r den Anwender einsehbar ist Diese Anforderung definiert wie mit
88. Clock clock void enter StClock clock void exit StClock clock void getDisplay Date currentTimeDate String SetMinuteState getinstance SetMinuteState up StClock clock void down StClock clock void set StClock clock void mode StClock clock void enter StClock clock void exit StClock clock void getDisplay Date currentTimeDate String stclock util DateHelper addHour Date date Date subHour Date date Date addMinute Date date Date subMinute Date date Date add Date date int field int amount Date ER Abbildung 19 1 StClock in Echtzeit synchronisiert werden Ein asynchroner Arbeitsablauf wie in Git und SVN umgesetzt gen gt f r den gew nschten Grad der Kol laborativit t nicht In klassischen Versionskontrollsystemen f gt der Benutzer seine nderungen manuell dem Repository hinzu und er muss auch manuell eine neue Version des Repositories abrufen Beides soll vom System automatisiert geschehen so dass nderungen sofort FA III FA IV NFA I NFA II 165 hinzugef gt werden und dann sofort an alle anderen Bearbeiter ver teilt werden Die Anforderung ist erf llt Das Tool wurde zum Beispiel beim Sch lerinformationstag siehe Prozessbericht eingesetzt Das System muss es dem Anwender erm glichen mehrere Modelle zu verwalten Anwender wollen mehrere Modelle erstellen l schen und bearbeiten k nnen da bereits
89. E AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der Model TreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 3 Interfacemethode mit String Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello String eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 4 Interfacemethode mit Boolean Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist 22 12 TESTS F R INTERFACEMETHODEN 259 Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Boolean eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in
90. EGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES 7 GENERAL If any provision of this Agreement is invalid or unenforceable under applicable law it shall not affect the validity or enforceability of the remainder of the terms of this Agreement and without further action by the parties hereto such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable If Recipient institutes patent litigation against any entity including a cross claim or counterclaim in a lawsuit alleging that the Program itself excluding combinations of the Program with other software or hardware infringes such Recipient s patent s then such Recipient s rights granted under Section 2 b shall terminate as of the date such litigation is filed 11 Recipient s rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance If all Recipient s rights under this Agreement terminate Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable However Recipient s obligations under this Agreement and any licenses granted by Recipient relating to
91. Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue angeklickte Feld hervorgehoben angezeigt 22 19 4 Selektion des Ziel Rollenbezeichners Dieser Test deckt das Selektieren der Ziel Rollenbezeichners ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt Test 1 Im Editor Bereich auf das null Textfeld am Endpunkt der Asso ziation klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue angeklickte Feld hervorgehoben angezeigt 22 19 5 Selektion des Assoziationsbezeichners Dieser Test deckt das Selektieren des Assoziationsbezeichners ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 380 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich auf das Textfeld in der Mitte der Assoziation klicken Mit einer hellen Nutzerfarbe schwer sichtbar Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue angeklickte Feld hervorgehoben angezeigt 22 19 6 Bearbeiten des Assoziationsbezeichners Dieser Test deckt das Bearbeiten des Assoziationsbezeichners ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Assoziationsbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird
92. G BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE DATA OR PROFITS OR BUSINESS INTERRUPTION HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY WHETHER IN CONTRACT STRICT LIABILITY OR TORT INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE 355 356 KAPITEL 24 BSD LIZENZ Kapitel 25 Eclipse Public License Eclipse sowie SWT und GEF stehen unter Eclipse Public License Eclipse Public License v 1 0 THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE AGREEMENT ANY USE REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT S ACCEPTANCE OF THIS AGREEMENT 1 DEFINITIONS Contribution means a in the case of the initial Contributor the initial code and documentation distributed under this Agreement and b in the case of each subsequent Contributor i changes to the Program and ii additions to the Program where such changes and or additions to the Program originate from and are distributed by that particular Contributor A Contribution originates from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor s behalf Contributions do not include additions to the Program which i are separate modules of software distributed in conjunction with the Program under their own li
93. IELVEREINBARUNG Kapitel 20 Bekannte Fehler Dieses Kapitel beschreibt offene bekannte Fehler die aufgrund Zeitmangels nicht w hrend des Projektes behoben werden konnten 20 1 Fehlgeschlagene Akzeptanztests Die fehlgeschlagenen Akzeptanztests in Kapitel 18 dokumentieren meist klei nere Fehler reproduzierbare Fehler mit einem Testfall sodass diese in ei ner potenzieller Weiterentwicklung durch eingearbeitete Entwickler behoben werden k nnen 20 2 Verbindungstabilit t ist nicht gew hrleistet Die Verbindung zum Server kann unvorhersehbar abbrechen Dies ist ver mutlich ein Problem im Zusammenspiel zwischen KryoNet und der Eclip seumgebung da KryoNet schon in reinen Javaprojekten sehr zuverl ssig eingesetzt wurde 20 3 Gleichzeitige Bearbeitung eines Elements Wenn zwei Benutzer ein Element zugleich bearbeiten ist das Verhalten von Kotelett undefiniert Es kann passieren dass die Deltas auf einem Client vertauscht werden wodurch die jeweilige nderung des Users berschrieben wird Um dies zu beheben m ssten die Deltas zum Beispiel mit Zeitstempeln versehen sein 20 4 L schen von Modellen In wenigen nicht reproduzierbaren F llen kann das L schen von Modellen zum Absturz des Servers f hren In diesem Fall wird an den Nutzer eine er 167 168 KAPITEL 20 BEKANNTE FEHLER folgreiche L schung des Modells gemeldet aber das Modell taucht weiterhin in der Liste verf gbarer Modelle auf Leider f hrt dieser Fehl
94. IFigure figure if ColorHelper getColorsVisible figure setBackgroundColor null return String lastChangedUserId ModelElement this getRepresentation get kNode get lastChangingUser int color ColorHelper getColorByUserlId lastChangedUserId org eclipse swt graphics Color c new org eclipse swt graphics Color null color 0 color 1 color 2 figure setBackgroundColor c protected BoundingBox getRepresentation return BoundingBox getModel SuppressWarnings rawtypes Override public List getModelChildren return this childrenlist Override public void setModel Object model super setModel model this childrenList clear this childrenList add new GenericWrapper lt KEnum gt this getKEnum StereoTypeEditPart class this childrenList add new KDomainNameModel this getKEnum this childrenList add new GenericWrapper lt KEnum gt this getKEnum KLiteralsEditPart class Sub Part f r Literale Dieser Editpart KLiteralsEditPart der oben schon dem KEnumEditPart hinzugef gt wurde beinhaltet die Literale Diese werden von getModelChildren in Zeile 69 zur ckgegeben Ab Zeile 36 werden wieder die Edit Policies registriert Das Direct Editing wird benutzt um neue Literale zu erstellen Der Editpart selbst soll nicht anw hlbar sein damit der Anwender die gesamte Enumeration besser ausw hlen kann Daher wird isSelectable
95. Meldung The current model H does not contain a type with the requested name NonExistant Class 22 9 TESTS F R ABSTRAKTE KLASSENMETHODEN 237 22 9 19 Abstrakte Klassenmethode l schen Dieser Test deckt das L schen einer Abstrakte Klassenmethode ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Abstrakte Klassenme thode nicht mehr angezeigt 2 Links in der ModelTreeView wird die Abstrakte Klassenmethod in der Abstrakten Klasse nicht mehr angezeigt 22 9 20 Abstrakte Klassenmethode mit Parameter vom In teger Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit Para meter vom Integer Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr fert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello parameter Integer Void eingeben 3 Enter dr cken 238 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der Model TreeView wird die
96. P verwendet den Presenter um Eingaben des Anwenders von der View an das Modell weiter zu leiten und angefragte Informationen von dem Modell an die View weiter zu geben DOLSA Kommunikation Wie in der Abbildung 9 1 zu entnehmen ist verwendet der Presenter aus dem Kotelett MVP die DOLSA Komponente Zum verschicken der nderungen zwischen den Clients und dem Server wird die DOL Service Komponente verwendet Diese berechnet die nde rungen und verpackt diese in eine Nachricht Die versendete Nachricht kann anschlie end ebenfalls mit DOL Service auf das Modell angewandt werden Dar ber hinaus verwendet der Serverteil des Presenters noch die DOL Application um die Modelle mit den dazugeh rigen Versionen zu speichern Die DOL Application bietet auch weitere Services damit eine vollwertige Modell und Versionsverwaltung erstellt werden kann F r eine sch rfere Systemabgrenzung wurde eine Schnittstelle zu DOL SA mit den DOLSA Entwicklern vereinbart Die Schnittstel le fasst die F higkeiten von DOLSA bez glich Deltaerzeugung und Anwen dung sowie Modell und Versionsverwaltung zusammen Die Deltaerzeugung und Anwendung ist zustandlos DOLSA arbeitet nur auf den bergebenen Modellen Die Modell und Versionsverwaltung persistiert Modelle und Ver sionen und wird nur auf dem Server verwendet um einen Single Point of Truth zu haben 84 KAPITEL 9 MODULSICHT interface DOLSAToKotelettAdapter calculateDelta Graph ol
97. PTANZTESTS 22 10 6 Interface umbenennen Best tigung mit Enter Dieser Test deckt das Umbenennen eines Interfaces ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt Test 1 Im Editor Bereich den Namen des ausgew hlten Interfaces anklicken 2 Im Eingabefeld den neuen Namen MyTestInterfaces eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name des Inter faces angezeigt 2 Links in der ModelTreeView wird der neue Name des Interfaces ange zeigt 22 10 7 Interface verschieben Dieser Test deckt das Verschieben eines Interfaces ab Vorbedingung 1 Es wurde ein Interface erstellt Test 1 Im Editor Bereich das erstellte Interface anklicken und gedr ckt hal ten 2 Den Mauszeiger innerhalb des Editor Bereichs an die neue Position des Interfaces bewegen 3 Maustaste loslassen Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che befindet sich das verschobene Interface an der neuen Position 22 10 TESTS F R INTERFACES 245 22 10 8 Interface aus Diagramm l schen Dieser Test deckt das L schen eines Interfaces aus einem Diagramm ab Vorbedingung Es wurde ein Interface erstellt Test 1 Im Editor Bereich das erstellte Interface anklicken 2 Entfernen Taste dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das gel schte Interface nicht mehr angezeigt 22 10 9 Interfac
98. RONISATION 33 ten wird 3 2 II Echtzeitkollaboration und Synchronisation von Modellen Hauptanforderung II Das System muss den Anwendern erm g lichen Diagramme kollaborativ und in Echtzeit mit anderen An wendern zu bearbeiten Bei der zweiten Hauptanforderung handelt es sich um die Echtzeitkol laboration und eine damit verbundene Synchronisation von Modell nde rungen Modell nderungen die von einem Anwender durchgef hrt wurden m ssen dabei auf das Modell aller anderen Anwender bertragen werden sofern diese am gleichen Modell arbeiten nderungen am Modell ziehen dabei auch nderungen am Diagramm nach sich sofern der ge nderte Teil im Diagramm dargestellt wird Auferdem muss ersichtlich werden wer wel che nderungen durchgef hrt hat Diese Unteranforderungen werden daher nachfolgend weiter konkretisiert Anmerkung Auch wenn nachfolgend von Diagrammen und Modellen gesprochen wird sind im Rahmen dieses Projektes damit Klassendiagramme und ein dahinter stehendes Modell gemeint Funktionale Anforderungen Synchronisation der Diagramm und Modell nderungen II FA1 Das System muss nderungen die ein Anwender an einem Modell durchf hrt an alle Anwender bzw deren Clients des gleichen Modells bertragen und in allen von der nde rung betroffenen Diagrammen visualisieren Eine wesentliche Anforderung an das zu entwickelnde System ist es dass die Anwender nicht blo ein Diagramm zeichnen sondern das da h
99. STRAKTE KLASSENMETHODEN 229 Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr fert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Float eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 6 Abstrakte Klassenmethode mit UnlimitedNatural Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello UnlimitedNatural eingeben 3 Enter dr cken 230 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der Model TreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 7 Abstrakte Klassenmethode mit default Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenmet
100. Steuerelemente haben statt des betriebsystemspezifischen Aussehens wie es bei AWT direkt bernommen wird das von Eclipse gew hnte Layout Die Eclipse Plugin API arbeitet in Verbindung mit SWT und stellt Ober Klassen bereit um Views Editoren und Men eintr ge zu erstellen In Eclipse sind Views Fenster die Informationen visualisieren wie z B der Projekt Explorer oder das Konsolenfenster Diese werden standardm ig am Rand des Hauptfensters angeordnet Von jeder View existiert zur Lauf zeit gew hnlich nur eine Instanz In Kotelett basieren z B die Baumansicht und die Anwenderliste siehe in auf Eclipse Views Editoren sind Fenster zur Bearbeitung von Inhalten wie der Java Editor Sie werden standardm ig in Tabs in der Mitte der Anwendung angezeigt Von einer Editor Klasse kann es zur Laufzeit beliebig viele Instanzen geben Die Diagrammeditoren in Kotelett sind solche Editoren Die GUI ist in Eclipse immer sehr modular aufgebaut Editoren und Views werden getrennt voneinander entwickelt Gew hnlich werden diese nicht im Code instanziiert Stattdessen werden Views und Editoren mittels 72 KAPITEL 8 VERWENDETE TECHNOLOGIEN einer XML Datei in der Anwendung registriert und dann von der Eclipse Laufzeitumgebung automatisch erstellt und angeordnet 8 2 GEF Zur Darstellung der Diagramme wird mindestens eine Zeichen Bibliothek ben tigt Dazu kommt GEF Graphical Editing Framework zum Einsatz da es bereits im Rahmen des Projek
101. String etc Enums Enums KEnum besitzen eine Menge von Literalen KLiteral Sie sind keine Klassen k nnen also nicht Quelle oder Ziel von Assoziationen oder Genera lisierungen sein Die Literale sind nicht geordnet 10 3 Layoutklassen Im Folgenden werden nun die Layoutklassen also jene Klassen des Daten modells die Layoutinformationen repr sentieren beschrieben Die Instanzen der Layoutklassen verweisen jeweils auf die Modellelemente Durch JGraLab k nnen die Layoutinformationen zu einem Modellobjekt leicht gefunden wer den Das Datenmodell erlaubt f r jedes Modellelement mehrere Instanzen mit Layoutinformationen was ein erster Schritt in Richtung multiperspek tivischer Modellierung ist mehrere Diagramme f r ein Modell 10 3 1 Diagramme Diagramme werden durch Diagram dargestellt Jede BoundingBox und je de GraphicalEdge ist genau einem Diagramm zugeordnet Da ein Mo dellelement aber mehreren Layoutelementen z B ein KNode mehreren BoundingBoxes zugeordnet sein kann werden mehrere Diagramme f r ein Modell erm glicht 10 3 2 Knoten F r jedes Element eines Klassendiagramms f r das zus tzlich Layoutin formationen verwaltet werden m ssen existiert zur Laufzeit noch min destens eine Instanz aus den Layoutklassen die diese Informationen spei chert F r Klassen und Enums sind Position und Gr e ausreichend die als BoundingBox abgebildet werden Da diese Information f r Klassen und Enums gleich ist haben
102. System muss sicherstellen dass jedes Modell mindestens ein Diagramm hat Jedes Modell muss mindestens ein Diagramm haben 3 4 IV VERSIONIERUNG VON MODELLEN 39 3 3 2 Nicht Funktionale Anforderungen III NFA1 Das System muss zur Speicherung der einzelnen Modelle und Diagramme das Modellversionierungssystem GMoVerS ver wenden GMoVerS bietet bereits das Speichern von Modellen an die mit leichten Anpassungen auch f r die Modellverwaltung unseres Pro jektes verwendet werden kann Es wurde daher in Absprache mit den Auftraggebern vereinbart dass diese verwendet wird 3 4 IV Versionierung von Modellen Hauptanforderung IV Das System muss dem Anwender die Ver sionierung von Modellen erm glichen Anwender in der Softwareentwicklung ben tigen Versionierung um auf fr here Versionen zur ckzugreifen Dies kann genutzt werden um unter an derem in Fehlerf llen fr here Versionen zu verwenden oder die Modellhisto rie nachzuvollziehen 3 4 1 Funktionale Anforderungen IV FA1 IV FA2 IV FA3 IV FA4 Das System muss dem Anwender alle verfiigbaren Versionen des ge ffneten Modells anzeigen Um auf ltere Versionen zur ckspringen zu k nnen muss den Anwen der eine Liste aller Versionen eines Modells angezeigt werden k nnen Dabei ist eine Unterscheidung der Diagramme nicht vorgesehen Es ist also nicht erforderlich dass eine Liste aller Versionen die ein bestimm tes Diagramm aus dem Modell betreffen angezeigt we
103. TEL 22 ERFOLGREICHE AKZEPTANZTESTS Fehler hervor was auf eine vollkommen analoge Abhandlung der Assozia tionslabels hindeutet Bei allen durchgef hrten Tests gab es kein mal Un terschiede zwischen Quell und Ziel Rollenbezeichner Ebenso gab es keine Unterschiede zwischen Quell und Ziel Multiplizit ten 22 19 1 Selektion der Quellmultiplizit t Dieser Test deckt das Selektieren der Quellmultiplizit t ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt Test 1 Im Editor Bereich auf das 0 Textfeld am Startpunkt der Assoziation klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue angeklickte Feld hervorgehoben angezeigt 22 19 2 Selektion der Zielmultiplizit t Dieser Test deckt das Selektieren der Zielmultiplizit t ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt Test 1 Im Editor Bereich auf das 0 Textfeld am Endpunkt der Assoziation klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue angeklickte Feld hervorgehoben angezeigt 22 19 3 Selektion des Quell Rollenbezeichners Dieser Test deckt das Selektieren der Quell Rollenbezeichners ab 22 19 TESTS F R ASSOZIATIONSLABELS 329 Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt Test 1 Im Editor Bereich auf das null Textfeld am Startpunkt der Asso ziation klicken Erwartetes
104. UI Die Tests in diesem Abschnitt decken die SWT GUI des Produktes ab 22 2 1 ffnen der LogView Dieser Test deckt das ffnen der LogView ab Test 1 Oben rechts im Quick Access Textfeld Log eingeben 2 Enter dr cken Erwartetes Ergebnis 1 Im unteren Bereich erscheint ein Log Tab neben dem Users Tab 22 2 2 Aktualisierung der LogView Dieser Test deckt das Aktualisierung der LogView ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde die LogView ge ffnet Test 1 Eine Klasse erstellen 22 2 TESTS F R SWT GUI 177 Erwartetes Ergebnis 1 In der LogView unten erscheinen die Zeilen begin send delta dann die versandtlen DOL Operationen und dann end send delta 22 2 3 Hervorhebung des eigenen Namens Dieser Test deckt die Hervorhebung des eigenen Namens in der Userliste ab Test 1 Ein Modell ffnen Erwartetes Ergebnis 1 Unten in der Userliste wird der eigene Nutzername hervorgehoben 22 2 4 Name ndern Dieser Test deckt das ndern des eigenen Namens ab Test 1 Unten rechts auf den Change Name Button klicken 2 Im Popup Fenster den neuen Nutzernamen eintragen und auf Ok klicken Erwartetes Ergebnis 1 Unten in der Userliste wird der neue Nutzername angezeigt 22 2 5 Farbe ndern Dieser Test deckt das ndern der eigenen Farbe ab Test 1 Unten rechts auf den Change Color Button klicken 2 Im Popup Fens
105. VM genutzt werden kann muss diese als Maven Toolchaiq registriert werden Damit die richtigen Bibliotheken geladen werden wird Maven so konfi guriert dass beim Testen die JVM mit den zus tzlichen Argumenten Dosgi arch x86 Dosgi os linux Dosgi ws gtk ausgef hrt wird Um den Build sowohl auf dem ARBI System als auch auf einem ande ren System ausf hren zu k nnen wurde f r das ARBI System ein Build Profil in Maven mit diesen Anpassungen erstellt das angewandt wird wenn Maven mit dem Parameter P joerg os gestartet wird Die Toolchain Definition wird in HOME m2 toolchains xml gesucht HOME ist das Home Verzeichnis des Unix Nutzers der den Build ausf hrt siehe http wiki eclipse org Tycho Reference_Card Selecting_JDK 120 KAPITEL 11 BAUEN VON KOTELETT 11 2 Build des Servers Im Gegensatz zum Client ist der Server ein konventionelles Java Projekt Output des Builds ist damit eine JAR Datei Beim Aufl sen der Abh ngig keiten ergeben sich allerdings einige Probleme Zun chst erwartet Maven dass alle Projekt Abh ngigkeiten aus einem Repository aufgel st werden k nnen d h dass alle Drittbibliotheken im Lokalen Maven Repository ent halten sind Dies ist in diesem Build Prozess nicht der Fall Das weitere schwerwiegendere Problem ist dass der gemeinsame Code f r Client und Server in einer Form vorliegen muss dass er sowohl als Eclipse Plugin als auch als konventionelle Java Bibliothek genutzt werde
106. Work and reproducing the content of the NOTICE file 7 Disclaimer of Warranty Unless required by applicable law or agreed to in writing Licensor provides the Work and each Contributor provides its Contributions on an AS IS BASIS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied including without limitation any warranties or conditions of TITLE NON INFRINGEMENT MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License 8 Limitation of Liability In no event and under no legal theory whether in tort including negligence contract or otherwise unless required by applicable law such as deliberate and grossly negligent acts or agreed to in writing shall any Contributor be liable to You for damages including any direct indirect special incidental or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work including but not limited to damages for loss of goodwill work stoppage computer failure or malfunction or any and all other commercial damages or losses even if such Contributor has been advised of the possibility of such damages 9 Accepting Warranty or Additional Liability While redistributing the Work or Derivative Works thereof You may choos
107. aber in keinem der dem Modell zugeordneten Diagramme enthalten I WA2 1 Das System muss es dem Anwender erm glichen die Ei genschaften eines Elements das nicht in einem Diagramm visualisiert wird zu ver ndern ausgenommen von Ei genschaften die mit der Visualisierung zusammenh ngen w rden Auch Elemente die Teil keines Diagramms sind m ssen vom An wender ver ndert werden k nnen Dies schlie t die nderung von Layoutinformationen Position Gr e explizit aus 4 2 II Echtzeitkollaboration und Synchronisation von verteilten Modellen Funktionale Anforderungen I WAI I WA2 Das System muss dem Anwender erm glichen die Darstel lung des letzten Bearbeiters aus und wieder einzublenden Eine Kennzeichnung welcher Anwender was ge ndert hat ist im Laufe der Bearbeitung sehr sinnvoll Um ein gemeinsam erstelltes Diagramm aber weiterzuverwenden ist eine solche Darstellung z B unterschiedli che Farben nicht gew nscht Es muss daher m glich sein die Darstel lung bisher durchgef hrter nderungen aus und wieder einzublenden Das System muss dem Anwender erm glichen den letzten Be arbeiter aller Elemente im Modell zu entfernen sodass alle bisherigen Elemente in einer neutralen Farbe dargestellt und durch weitere nderungen wieder eingef rbt werden Im Gegensatz zu I WA 1 soll es auch m glich sein die Farbe aller Ele mente auf eine neutrale Farbe zur ckzusetzen indem der letzte Bear beiter des Elemen
108. addMinute Date date Date subMinute Date date Date add Date date int field int amount Date Abbildung 1 2 ins StClock format new SimpleDateFormat HH mm ss SimpleDateFormat 1 7 ENDERGEBNIS 19 NFA II Die Modellversionierung aus Anforderung FA IV muss durch die Einbindung von Versioning erfolgen Da Modellversionierung ein aufwendiges Feature ist wird eine Schnittstelle zum Modellversio nierungssystem Versioning entwickelt womit die PG die Versionierung realisieren darf Dieses System wird von der ST Abteilung bereitge stellt Auf weitere Akzeptanztests wird verzichtet da der Kunde selbstst ndig in der Lage ist die Anforderungen auf Erf llung zu berpr fen 1 7 Endergebnis Die PG wird dem Kunden der ST Abteilung ein kollaboratives Model lierungswerkzeug wie in Abschnitt 1 4 beschrieben sowie die dazugeh rige Prozess und Produktdokumentation als Artefakte liefern Nachfolgend wer den Software und Dokumente kurz beschrieben 1 7 1 Software Die ausgelieferte Software wird aus einem graphischen Modellierungstool f r Klassendiagramme Client und einem Diagrammserver bestehen In Abbil dung ist ein erster Entwurf des Userinterfaces des Clients abgebildet Dieser Entwurf ist nicht endg ltig sondern stellt den momentanen Stand der Planung dar und soll einen Eindruck vom Endprodukt vermitteln Kotelett Lol Edit User Model Repository r Model 1 Version
109. aims and warranties are such Commercial Contributor s responsibility alone Under this section the Commercial Contributor would have to defend claims against the other 359 Contributors related to those performance claims and warranties and if a court requires any other Contributor to pay any damages as a result the Commercial Contributor must pay those damages 5 NO WARRANTY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT THE PROGRAM IS PROVIDED ON AN AS IS BASIS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND EITHER EXPRESS OR IMPLIED INCLUDING WITHOUT LIMITATION ANY WARRANTIES OR CONDITIONS OF TITLE NON INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement including but not limited to the risks and costs of program errors compliance with applicable laws damage to or loss of data programs or equipment and unavailability or interruption of operations 6 DISCLAIMER OF LIABILITY EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT INDIRECT INCIDENTAL SPECIAL EXEMPLARY OR CONSEQUENTIAL DAMAGES INCLUDING WITHOUT LIMITATION LOST PROFITS HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY WHETHER IN CONTRACT STRICT LIABILITY OR TORT INCLUDING N
110. alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed Redistribution You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium with or without modifications and in Source or Object form provided that You meet the following conditions a You must give any other recipients of the Work or Derivative Works a copy of this License and b You must cause any modified files to carry prominent notices stating that You changed the files and c You must retain in the Source form of any Derivative Works that You distribute all copyright patent trademark and attribution notices from the Source form of the Work excluding those notices that do not pertain to any part of the Derivative Works and d If the Work includes a NOTICE text file as part of its distribution then any Derivative Works that You distribute must include readable copy of the attribution notices contained within such NOTICE file excluding those notices that do not pertain to any part of the Derivative Works in at least one of the following places within a NOTICE text file distributed as part of the Derivative Works within the Source form or documentation if provided along with the Derivative Works or within a display g
111. allo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der ModelTreeView nicht angezeigt 22 19 11 Bearbeiten des Quell Rollenbezeichners mit Default Sichtbarkeit mit Leerzeichen Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Default Sichtbarkeit mit Leerzeichen ab Dieser Test wurde aufgrund des Fehlers beim Parsen der Sichtbarkeit bei Klassenattributen Abschnitt 18 1 durch gef hrt Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken 384 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der Model TreeView nicht angezeigt 22 19 12 Bearbeiten des Quell Rollenbezeichners mit Private Sichtbarkeit mit Leerzeichen Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Private Sichtbarkeit mit Leerzeichen ab Dieser Test wurde aufgrund des Fehlers beim Parsen der Sichtbarkeit bei Klassenattributen Abschnitt 18 1 durch
112. also der M glich keit einer externen nderung gekennzeichnet Flexibilit t dient zumeist der Charakterisierung der organisatorischen die Variabilit t der technischen so wie beide zusammen der Produktfaktoren Das letzte Merkmal eines Faktors ist die Wirkung die er auf andere Faktoren bzw durch seine nderung hat So kann f r jeden Faktor festgestellt werden in welche Komponenten er oder seiner nderungen in der Architektur ber cksichtigt werden m ssen Unten sind die wichtigsten einflussreichsten Faktoren aufgef hrt die sich im we sentlichen aus dem Inhalt der Zielvereinbarung sowie eigener berlegungen innerhalb der Architekturgruppe des Teams ergeben haben Viele Faktoren besonders funktionale Eigenschaften lassen sich relativ einfach als Komponenten in die Architektur integrieren Oft kommt es aber auch vor dass sich aus mehreren Komponenten spezifische Probleme erge 51 52 KAPITEL 6 GLOBALE ANALYSE ben f r die dann eine spezielle L sungsstrategie entwickelt werden muss In unserem Fall z B wirft der enge Zeitplan Probleme auf f r die eine L sung gefunden werden muss Aus der Analyse der Faktoren und den Strategien wurden dann die funktionalen Komponenten f r die Konzeptsicht erstellt sowie deren Verbindungen den Konnektoren In der Konzeptsicht wurden zun chst nur die Funktionen des Systems ber cksichtigt Diese wurde dann zur Modulsicht erweitert die implementierungsspezifische Elemente enth lt 6 2 Org
113. amm werden direkt auf das Modell bertragen Wenn andere Diagramme des selben Modells eben falls von den nderungen betroffen sind wirken diese sich auch dort aus Da sowohl Layoutinformationen als auch Modellelemente Instanzen des ge meinsamen Metamodells sind kennt der Client zu einem Diagramm immer das gesamte Modell Von dem Anwender ausgel ste Anderungen des Modells bzw eines Dia gramms werden an den Server verschickt Der Server hat ebenfalls eine Version des gleichen Modells und der Diagramme auf welchem die nde rungen angewandt werden Danach wird die nderung an alle Clients die an dem gleichen Modell arbeiten verschickt Ankommende nderungen von dem Server werden auf dem Client auf das Modell angewandt und in den Diagrammen visualisiert Der Server erf llt somit zwei Hauptaufgaben die Verwaltung der ver schiedenen Modelle einschlieflich ihrer Diagramme und die Synchronisie rung der verschiedenen Clients samt den Modell nderungen die sie vorneh men Eine zus tzliche Aufgabe des Servers besteht darin die Modelle zu ver sionieren Dabei wird der aktuelle Zustand des Modells einschlie lich der 14 KAPITEL 1 ZIELVEREINBARUNG Layoutinformationen gespeichert und der Server bietet die M glichkeit zu einem lteren Stand des Modells zur ckzukehren Das Speichern geschieht dabei manuell d h der Anwender teilt dem System durch die GUI auf dem Client mit wenn eine neue Version angelegt werden soll Als tec
114. amme bearbeitet werden die nderung aber Einfluss auf beide Diagramme hat Das System muss bei der Darstellung der nderungen jeweils den letzten Bearbeiter eines Knotens oder einer Kante dar stellen Eine wesentliche Fragestellung bei der Darstellung von nderungen die durch andere Anwender durchgef hrt wurden ist es wie feingra nular diese dargestellt werden sollen Im Rahmen dieses Projektes soll dies eher grob durchgef hrt werden indem nur jeweils die letzte n derung z B einer Klasse oder Assoziation angezeigt wird Dabei ist es unerheblich ob z B der Klassenname eine Methode oder ein At tribut ge ndert hinzugef gt oder gel scht wurde So k nnte bei einer der genannten nderungen die Klasse z B die Farbe des Anwenders erhalten der die nderung durchgef hrt hat Eine genauere Identifi kation was ge ndert wurde z B welche Zeichen ge ndert wurden ist nicht erforderlich Das System muss dem Anwender erm glichen die Darstel lung des letzten Bearbeiters aus und wieder einzublenden Eine Kennzeichnung welcher Anwender was ge ndert hat ist im Laufe der Bearbeitung sehr sinnvoll Um ein gemeinsam erstelltes Diagramm aber weiterzuverwenden ist eine solche Darstellung z B unterschiedli che Farben nicht gew nscht Es muss daher m glich sein die Darstel lung bisher durchgef hrter nderungen aus und wieder einzublenden Konfliktbehandlung Das System muss nderungskonflikte die durch die parallel
115. anisatorische Faktoren Die wichtigsten organisatorischen Faktoren beeinflussen die Architektur da hingehende dass diese den Kauf von externer Software und somit seinen Einsatz in der Architektur untersagen der enge Zeitplan und das kleine Team eine eigene Implementierung aller Komponenten nicht gestattet Die Funktionalit t kann verhandelt werden was den Umfang an Komponenten in der Architektur ebenfalls verhandelbar macht Faktor Flexibil t Variabili Wirkung t t O1 Management O1 1 Beschaffen oder Entwickeln Sinn des Projektes ist Keine Flexibilit t Wirkung auf die die Entwicklung es einsetzbare Fremd gibt kein Budget aber software moderater Fremdsoftware ohne Einfluss auf Pro Nutzungskosten ist duktumfang durch m glich gro en Umfang der Eigenentwicklung 01 2 Zeitplan oder Funktionalit t Zeitplan Feste Projektdauer Gro e Wirkung von 1 Jahr auf das gesamte Projekt Planung Produktumfang O4 Zeitplan O4 1 Time to Market Feste Deadline nderung der Deadli Gro er Einfluss auf 31 03 2014 ne nicht m gilch das gesamte Projekt 04 2 Lieferung von Funktionalit t Funktionalit t ist Funktionalit t ist ver Einfluss auf die gesam durch den Auftragge handelbar te Entwicklung ber bestimmt 04 3 Auslieferungsplan 6 2 ORGANISATORISCHE FAKTOREN 53 Erstellung einer Road Roadmap muss hin Gro er Einfluss auf map si
116. as Erstellen eines Klassenmethode mit Parameter vom Float Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist 208 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello parameter Float Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 24 Klassenmethode mit Parameter vom UnlimitedNa tural Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode mit Parameter vom UnlimitedNatural Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello parameter UnlimitedNatural Void ein geben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 TESTS F R KLASSENMETHODEN 209 22 6 25 Klassenmethode mit Parameter vom Datentyp aus dem Modell Dieser Test deckt das Erstellen ein
117. assenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode mit pro tected Sichtbarkeit in der Klasse angezeigt 22 6 TESTS F R KLASSENMETHODEN 199 22 6 8 Klassenmethode mit public Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenmethode mit public Sichtbarkeit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 9 Klassenmethode mit protected Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenmethode mit protected Sicht barkeit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 200 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse
118. at most closely approximates an absolute waiver of all civil liability in connection with the Program unless warranty or assumption of liability accompanies a copy of the Program in return for a fee END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new 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 state 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 year 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 3 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 WARRANIY without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License for more details You should have received copy of the GNU General Public License along with this program If not see lt
119. b Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist 228 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello String eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der Model TreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 4 Abstrakte Klassenmethode mit Boolean Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Boolean eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der Model TreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 5 Abstrakte Klassenmethode mit Float Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode vom Void Primitiv Typ ab 22 9 TESTS F R AB
120. berlangen Texten umgegangen werden soll Man k nnte zun chst eine Scrollbar einblenden welche in kleinen Elementen wie z B Klassen aber eher st ren w rde Eine andere M glichkeit w re es dass die Klassen automatisch vergr ert werden um den gesamten Text darstellen zu k nnen Diese L sung w rde dem Benutzer aber die Option verwehren die Klasse kleiner zu gestalten auch wenn dann Teile des Textes nicht mehr lesbar sind Die L sungsm glichkeiten sollen nicht vorgegeben werden aber der Text k nnte z B verk rzt oder automatisch umgebrochen werden Editor Das System muss dem Anwender ein grafisches Interface bie ten auf dem erstellbare Diagrammelemente angeboten wer den die in das Diagramm eingef gt werden k nnen Dem Anwender muss ein graphischer Editor in der GUI angeboten werden in dem er alle erstellbaren Elemente ausw hlen kann Diese m ssen sich dann in das Diagramm einf gen lassen Durch Anforde rung I FA5 wird dies dann ins Modell synchronisiert Das System muss sicherstellen dass alle Modelle jederzeit zu ihrem Metamodell konform sind Ein wesentliches Artefakt der Projektgruppe ist das Metamodell f r Klassendiagramme Dieses wird sowohl auf dem Server als auch auf den Clients verwendet Auferdem wird es zur Erstellung der DOL Statements von DOLSA verwendet Bei der Modellierung muss das System daher jederzeit sicherstellen dass dieses Metamodell eingehal 3 2 ECHTZEITKOLLABORATION UND SYNCH
121. bgebildet Herzst ck bildet die ModelRegistry die als Singleton implementiert ist Mit ihr wer den s mtliche Informationen zu Modellen und Diagrammen auf dem Client verwaltet Insbesondere e Welche Modelle stehen zur Bearbeitung zur Verf gung Welche Versionen dieses Modells gibt es e Welche Modelle sind gerade ge ffnet n welchen Editoren werden diese angezeigt Welche Nutzer bearbeiten das Modell gerade auferdem e Was ist die User ID des Clients Die ModelSynchronization nutzt die DOL Services und den KotelettNetworkClient um nderungen an einem Modell zu berechnen und an den Server zu versenden Dieselbe Komponente ist zust ndig eingehende Deltas auf den Graphen anzuwenden Dies wird ausf hrlich in Abschnitt 9 4 beschrieben Es existiert eine Instanz pro ge ffnetem Modell Dadurch dass ModelSynchronization CommandStackListener implemen tiert und als solcher bei den Viewern die Komponente eines GEF Editors in dem das Diagramm angezeigt und vom Benutzer bearbeitet wird die Diagramme des Modells anzeigen registriert ist wird jene bei nderungen von Nutzerseite automatisch informiert und ein Delta versendet Im Zusammenhang damit sorgt der ViewUpdater daf r dass die Viewer die jeweils ein Diagramm des Modells anzeigen bei nderungen des Modells aktualisiert werden Dazu implementiert auch ViewUpdater CommandStackListener 9 5 VERWALTUNG VON MODELLEN VERSIONEN UND DIAGRAMMEN97
122. bh ngigkeiten die den Classpath nutzen k nnen nicht benutzt werden da diese die Existenz der Bibliotheken pr fen bevor das shared Projekt entpackt werden kann Kapitel 12 Entwicklungsumgebung Kotelett wurde mit Eclipse Kepler Eclipse 4 3 2 entwickelt es sollten aber auch neuere Versionen zur Weiterentwicklung verwendet werden k nnen Es wird die Eclipse IDE for Java EE Developerd empfohlen Dazu muss das Graphical Editing Framework GEF SDEP von der Eclipse Update Site f r Kepler installiert werden Das Metamodell kann im Rational Software Architect BM14 bearbeitet werden Anweisungen wie ein ge ndertes Metamodell integriert wird finden sich in Abschnitt 16 2 http www eclipse org downloads packages eclipse ide java ee developers keplersr2 Es wurde Version 3 9 1 201308190730 verwendet http download eclipse org releases kepler 121 122 KAPITEL 12 ENTWICKLUNGSUMGEBUNG Kapitel 13 Projektstruktur Der Sourcecode ist auf die Projekte de uniol pgktltt gef client de uniol pgktltt shared und de uniol pgktltt server aufgeteilt wobei die beiden ersteren Eclipse Plugin Projekte und letzteres ein Java Projekt ist de uniol pgktltt gef client enth lt den Client Code de uniol pgktltt server enth lt den Server Code de uniol pgktltt shared enth lt Code und Bibliotheken die von Client und Server ben tigt werden Insbesondere Klassen zum Nach richtenaustausch das Metamodell als JAR und die E
123. bindung zum Diagramm und zum Modell Element Dadurch ist die ben tigte Navigierbarkeit auch ohne die IreeView Elemente gegeben Da an den TreeView Elementen bereits Funktionalit t anliegt wie z B Klick Listener w rde diese nderung eine Reihe weiterer Anpassungen nach sich ziehen Da dieser Fehler erst kurz vor dem finalen Codefreeze aufgefallen ist konnte diese nderung wegen Zeitmangel nicht mehr umgesetzt werden 170 KAPITEL 20 BEKANNTE FEHLER 20 8 Modellkorruption beim SIT Beim Sch lerinformationstag haben Sch ler an 4 Arbeitsrechnern das Pro dukt ausprobiert Hierbei ist beim modellieren im Laufe des Tages zwei mal ein Fehler aufgetreten welches eine vollst ndige Korruption des bearbeite ten Modells zur folge hatte Der Server ist hierbei nicht abgest rzt wodurch Arbeiten an anderen Modellen nicht gest rt wurden Das korrupte Modell konnte nicht mehr bearbeitet werden und stellt somit einen schweren Datenverlust dar Aus diesem Grund haben wir den Stacktrace analysiert und haben den Ausschnitt in Abbildung 20 1 bei bei den Vorkommnissen identifizieren k nnen Die Ausl ser f r den Fehler konn te nicht identifiziert werden und der Fehler konnte durch die Projektgruppe nicht reproduziert werden NFO de unioldenburg kotlett impl GMoVerSToKotelettServerAdapterImpl getActiveDelta Creating active delta for the given model NFO de unioldenburg dol services patcher impl PatcherImpl applyDelta Please wait applying op
124. bstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 23 Abstrakte Klassenmethode mit Parameter vom Float Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit Para meter vom Float Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr fert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello parameter Float Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 24 Abstrakte Klassenmethode mit Parameter vom Un limitedNatural Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit Para meter vom UnlimitedNatural Primitiv Typ ab 240 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello parameter UnlimitedNatural Void ein gebe
125. bstrakte Klassenattribut mit privater Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit pri vater Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 17 Abstrakte Klassenattribut mit Datentyp aus dem Modell Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit Da tentyp aus dem Modell ab 22 8 TESTS F R ABSTRAKTE KLASSENATTRIBUTE 225 Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Der Name dieser Abstrakte Klasse lautet DefaultClass Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello DefaultClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 18 Abstrakte Klassenattribut mit ung ltigem Datentyp Dieser Te
126. bzw ung ltige nde rungen an dem Modell vorgenommen werden sollen Das Problem ist auf dem Client und Server nahezu gleich Es kommen in einem sehr kurzen Abstand zwei widerspr chliche nderungen Auf dem Cli ent kommt die eine nderung von den Anwender und die anderen von dem Server Auf dem Server kommen beide nderungen von zwei Anwendern die an dem selben Modell arbeiten 86 KAPITEL 9 MODULSICHT Das Problem liegt darin dass nach dem Anwenden der ersten nderung die zweite nderung nicht auf das Modell angewendet werden kann Wenn zum Beispiel die erste nderung das Element l scht die zweite nderung das gleiche Element aber umbenennen m chte Das Umbenennen kann nicht ausgef hrt werden da das Element nicht mehr existiert Bei der L sung des Problems muss darauf geachtet werden dass der Server Single Point of Truth darstellt und deswegen immer stabil sein muss Um dieses Problem zu beheben m ssen die Konflikte in den nderungen aufgel st werden Die genaue L sung wird in Abschnitt 9 4 beschrieben 9 3 Serialisierung der nderungen Bei Mehrbenutzeranwendungen stellt die korrekte Behandlung gleichzeitiger Aktionen durch verschiedene Anwender die sogenannte Nebenl ufigkeit ei ne Herausforderung dar In diesem Projekt tritt dieses Problem insbesondere bei der Ver nderung des Modells auf Zum einen behandelt JGralab Nebenl ufigkeit nicht so dass es hier zu undefiniertem Verhalten kommen kann Zum anderen
127. cense agreement and ii are not derivative works of the Program Contributor means any person or entity that distributes the Program Licensed Patents mean patent claims licensable by Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program Program means the Contributions distributed in accordance with this Agreement Recipient means anyone who receives the Program under this Agreement including all Contributors 2 GRANT OF RIGHTS a Subject to the terms of this Agreement each Contributor hereby grants Recipient a non exclusive worldwide royalty free copyright license to reproduce prepare derivative works of publicly display publicly perform distribute and sublicense the Contribution of such Contributor if any and such derivative works in source code and object code form b Subject to the terms of this Agreement each Contributor hereby grants Recipient a non exclusive worldwide royalty free patent license under Licensed Patents to make use sell offer to sell import and otherwise transfer the Contribution of such Contributor if any in source code and object code form This patent license shall apply to the combination of the Contribution and the Program if at the time the Contribution is added by the Contributor such addition of the Contribution causes such combination to be covered by the Licensed Patents The patent lice
128. ch als Container f r die inneren Parts Dadurch kann pr zise gesteu ert werden wo die eigentlichen Kinder in diesem Fall Literale angezeigt werden sollen Die Methode getModelChildren Zeile 106 gibt die Kinder auf Mo dellebene zur ck Hier kommt die soeben erl uterte Strategie zum Tragen Der Editpart f r Enumerationen hat zun chst drei Kinder je einen Edit part f r den Text KEnum einen f r den Namen und einen in dem die Literale hinzugef gt werden Die ersten beiden werden in Kotelett auch f r Interfaces und Klassen verwendet sodass nur KLiteralsEditPart neu er stellt werden muss Wie die verwendeten Edit Parts dargestellt werden ist in dargestellt In createEditPolicies Zeile 61 werden die EditPolicies erstellt Diese Kapseln die Behandlung von Nutzereingaben in diesem Fall nur L schen der Enumeration refreshVisuals Zeile 73 wird von GEF aufgerufen wenn die Darstel lung des Editparts aktualisiert werden soll Hier wird dies benutzt um die Positionen der Enumeration an den bergeordneten Editpart zu bergeben der f r das Layout zust ndig ist 42 43 44 o o o o o o o o o E A A BA 0 ro HM a O o 10 61 62 63 64 66 67 68 69 70 71 72 73 74 76 77 78 79 80 81 82 16 2 DETAILLIERTES BEISPIEL ENUMERATIONEN 141 Die Methode setColor ist eine Hilfsmethode um die Figure gem des letzten Bearbeiters einzuf rben public class KEnumEditPart
129. ch auf Aggregation klicken 2 Auf das Interface klicken 3 Auf die Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation vom Interface zur Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Aggregation unter dem Interface im firstDiagram angezeigt 22 17 10 Selektion einer Aggregation Dieser Test deckt das L schen einer Aggregation ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt Test 1 Im Editor Bereich auf die Aggregation klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che ist die Aggregation hervorge hoben 22 17 TESTS F R AGGREGATIONEN 307 22 17 11 L schen einer Aggregation aus dem Diagramm Dieser Test deckt das L schen einer Aggregation aus dem Diagramm ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Die Aggregation wurde selektiert Test 1 Entfernen dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Aggregation nicht mehr angezeigt 2 Links in der ModelTreeView wird die gel schte Aggregation noch an gezeigt 22 17 12 L schen einer Aggregation aus dem Modell Dieser Test deckt das L schen einer Aggregation aus dem Modell ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Aggregation zwischen diesen erstel
130. ch die Modellliste ndern so bringt er die Clients auf den neusten Stand Die DOL Applikation stellt CRUD Operationen f r Modelle bereit 7 2 4 Versionierung Nutzereingaben und Anzeigen der Versionen wird vom Client bernommen Der Server bringt die Clients auf den neusten Stand sollte sich die Versi onsliste ndern Die DOL Application erm glich es Versionen zu speichern und wieder zu laden alle Versionen aufzulisten sowie zu einer Version das aktive Delta abzufragen 7 3 Komponenten zur Umsetzung der Hauptfunk tionalit ten Aus Abschnitt 7 2 geht hervor dass jede Hauptfunktionalit t von einer oder mehreren Komponenten bereitgestellt wird Durch die Zerlegung von vor ausgesetzten Komponenten in Client Server und Fremdsystem ergibt sich die Abbildung 73 Die Komponente Kotelett stellt dabei das zu entwickelnde System in seiner Gesamtheit dar Die Komponente DOLSA ist das verwendete Fremd system und stellt Services zur Realisierung der geforderten Funktionalit t bereit Die in den Komponenten enthaltenen Module die jeweils einer Haupt funktionalit t entsprechen sind farblich hinterlegt um ihre Zusammengeh rigkeit zu verdeutlichen Dar ber hinaus werden Module die in einer Kom ponente vorrangig verarbeitet werden mit einem durchgezogenem Rechteck und Module die nebens chlich verarbeitet werden mit einem gestricheltem Rechteck abgebildet 66 KAPITEL 7 KONZEPTSICHT
131. ch in der Zeichenfl che wird das Enumliteral nicht mehr angezeigt 2 Links in der ModelTreeView wird das Enumliteral nicht mehr im Enum angezeigt 22 15 Tests f r Generalisierungen Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Generalisierungen Implementierungen ab 22 15 TESTS F R GENERALISIERUNGEN 279 22 15 1 Generalisierung von einer Klasse zu einer Klasse Dieser Test deckt das Erstellen einer Generalisierung von einer Klasse zu einer Klasse ab Vorbedingung 1 Es wurden 2 Klassen erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die erste Klasse klicken 3 Auf die zweite Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Generalisierung von der ersten zur zweiten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Generalisierung unter der ersten Klasse im firstDiagram angezeigt 22 15 2 Generalisierung von einer Klasse zu einer Abstrak ten Klasse Dieser Test deckt das Erstellen einer Generalisierung von einer Klasse zu einer Abstrakten Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die Klasse klicken 3 Auf die Abstrakte Klasse klicken 280 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Z
132. che wird die gel schte Komposition nicht mehr angezeigt 2 Links in der Model TreeView wird die gel schte Komposition nicht mehr angezeigt 22 18 13 Umh ngen des Startpunktes einer Komposition Dieser Test deckt das Umh ngen des Startpunktes einer Generalisierung ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Kompositionen zwischen diesen erstellt 3 Die Komposition wurde selektiert Test 1 Der Startpunkt der Komposition per Drag and Drop auf ein anderes Knoten ver ndern Erwartetes Ergebnis 1 Der Startpunkt der Komposition wird nur dann ver ndert wenn die daraus resultierende Komposition g ltig ist 22 18 14 Umh ngen des Endpunktes einer Komposition Dieser Test deckt das Umh ngen des Endpunktes einer Generalisierung ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde 322 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Kompositionen zwischen diesen erstellt 3 Die Komposition wurde selektiert Test 1 Der Endpunkt der Komposition per Drag and Drop auf ein anderes Knoten ver ndern Erwartetes Ergebnis 1 Der Endpunkt der K
133. chtlich des Endter umzusetzende Funk mins und des erzielten tionalit t Fortschritts stetig an gepasst werden O5 Budget O5 1 Mitarbeiter 7 Projektteilnehmer Ausstiege m glich Einfluss auf das ge samte Projekt O5 2 Werkzeuge kein Budget Feste Vorgabe Einfluss auf einsetzba re Fremdsoftware Wie bereits oben erw hnt gehen mehrere Faktoren auf einen zu engen Zeitplan zur ck dieses Problem soll hier mit Hilfe von Strategien gel st werden 54 Enger Zeitplan Die Zeit bis zum Abschluss des Projektes ist durch entstandene Verz gerungen begrenzt Eine vollst ndige Entwicklung in der gegeben Zeit mit dem vorhandenen Team ist nicht m glich beeinflussende Faktoren O1 2 Zeitplan ist fest und nicht verhandelbar eine komplette Ent wicklung eine Systems zur kollaborativen Modellierung mit allen F higkeiten w rde sch tzungsweise mindestens ein weiteres Jahr dauern e 1 1 Der Sinn der Projektes ist die Entwicklung und nicht der Zusammenkauf des Systems e O1 4 Ziel des Projektes ndert sich oft e O4 1 Das Ende des Projektes ist auf den 31 03 2015 begrenzt O5 1 Zahl der Projektteilnehmer ist bei 7 aber noch nach unten flexibel L sung Die vollst ndige Implementierung des geforderten Systems w rde sch t zungsweise ein weiteres Jahr dauern Strategie Nutzung von Frameworks Die Implementierung einer Benutzerschnittstelle du
134. covered by the terms of the Eclipse Public License EPL the licensors of this Program grant you additional permission to convey the resulting work Corresponding Source for a non source form of such a combination shall include the source code for the parts of JGraLab used as well as that of the covered work GNU GENERAL PUBLIC LICENSE Version 3 29 June 2007 Copyright C 2007 Free Software Foundation Inc lt http fsf org gt Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed Preamble The GNU General Public License is a free copyleft license for software and other kinds of works The licenses for most software and other practical works are designed to take away your freedom to share and change the works By contrast the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program to make sure it remains free software for all its users We the Free Software Foundation use the GNU General Public License for most of our software it applies also to any other work released this way by its authors 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 them if you wish that you receive source code or can get it if y
135. d hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 190 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 5 11 Klassenattribut mit privater Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenattributes mit privater Sicht barkeit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 12 Klassenattribut mit default Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Klassenattributes mit default Sichtbar keit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut mit pro tected Sichtbarkeit in der Klasse angezeigt 22 5 TESTS F R
136. d 3 werden rekursiv wiederholt bis das gesamte Modell aufgebaut ist Alle GraphicalEditParts haben zudem eine Methode getFigure die das Draw2d Figure Objekt zur ckgibt das in der View angezeigt werden soll Diese bekommt als Kinder automatisch die Figures der Kinder des Edit Parts Die Top Level Figure wird dann zusammen mit ihren Kindern ge zeichnet So wird die gesamte View aufgebaut 8 2 2 Anwenderinteraktion Die Anwenderinteraktion l uft ebenfalls ber die EditParts Jedes EditPart implementiert eine oder mehrere Schnittstellen genannt EditPolicies die 74 KAPITEL 8 VERWENDETE TECHNOLOGIEN als Event Listener fungieren und als Antwort auf eine Eingabe des Anwen ders ein Command Objekt zur ckgeben Auf diese Weise sind in Kotelett fast s mtliche Bearbeitungsschritte in Diagrammen wie z B das Erstel len und Verschieben von Klassen und Assoziationen implementiert Diese Commands sind Teil eines Command Pattern Sie werden von GEF in ei nem Command Stack verwaltet was ein UNDO und REDO des Anwenders erm glicht Diese Funktionen sind in GEF standardm ig vorhanden Die Commands ver ndern bei ihrer Ausf hrung in der Regel das Modell nicht die View Die View wird danach lediglich aktualisiert Die Events die bei den EditParts ankommen sind keine einfachen Maus Events sondern liegen bereits eine Abstraktionsebene h her GEF wandelt Eingaben abh ngig vom gerade ausgew hlten Werkzeug GEF bringt bereits eine Palett
137. d zu verwendete Fremdsystem DOLSA auf Basis von JGraLab arbeitet 8 3 MODELLREPRES NTATION MIT JGRALAB 75 Entsprechend verwendet die Anwendung sowohl in der Client als auch der Server Komponente zur internen Modellrepr sentation das Framework JGraLab zur Behandlung von TGraphen Kah06 TGraphen sind typisierte geordnete und gerichtete Graphen Sie eignen sich mit diesen Eigenschaften zur Darstellung Repr sentation jeglicher Modelle was bereits in mehreren Arbeiten als auch innerhalb von DOLSA erprobt wurde Desweiteren ist durch diverse Abschlussarbeiten und nebenberufliche Erfahrung bereits Ex pertenwissen zu JGraLab und dessen Funktionalit t im Team vorhanden Dieser Abschnitt widmet sich der Abgrenzung zwischen dem zu entwi ckelnden System und JGraLab und beschreibt welche Komponenten von JGraLab im Rahmen der Anwendung verwendet werden 8 3 1 TGraphen und Schemata Die grundlegendste Aufgabe von JGraLab besteht in der Bereitstellung einer API zur programmatischen Handhabung von TGraphen TGraphen sind Graphen gem dem mathematischen Konzept die folgende Eigenschaften erf llen e Typisierung Jeder Knoten und jede Kante des Graphen ist typisiert e Attribute Jeder Knoten und jede Kante des Graphen kann Attribute besitzen e Ordnung Alle Knoten und Kanten des Graphen sind geordnet so dass es eine ausgezeichnete Ordnung gibt in der ber die Graphele mente iteriert werden kann e Richtung Jede Kante im Graphen
138. dModel Graph newModel DeltaRepresentation applyDelta Graph model DeltaRepresentation delta lt A May throw an exception lt lt interface gt gt DOLSATokotelettServerAdapter createModel String modelName Modelldentifier loadModel Modelldentifier id Graph deleteModel Modellldentifier id getActiveDelta Graph model DeltaRepresentation getModelList List lt Modelldentifier gt saveVersion Modelldentifier id Graph model String commitMessage Versionldentifier loadVersion Modelldentifier id Versionldentifier versionld Graph getVersionList Modelldentifier id List lt Versionldentifier gt Interface Modelldentifier getModelld String vu interface Versionldentifier getVersionld String getCommitMessage String lt lt interface gt gt DeltaRepresentation Need a no args constructor 7 for serialization Abbildung 9 2 Vereinbarte Schnittstelle zwischen Kotelett und DOLSA 9 2 SYNCHRONISATIONSPROBLEME DES MODELLS 85 9 2 Synchronisationsprobleme des Modells Da beim Synchronisieren der Clients Probleme auftreten k nnen z B wenn Anwender widerspr chliche nderungen vornehmen sollen diese in diesem Kapitel gesammelt und erl utert werden Die Probleme k nnen in zwei Kategorien klassifiziert werden Grund und Ort Mit Grundproblemen sind technische oder Zustandsprobleme gemeint Technische Probleme treten auf wenn z B ei
139. das Projekt somit ein Fallbeispiel f r die Arbeit aus der ST Abteilung darstellt Der Server und die Clients m ssen ein gemeinsames Meta modell zur Differenzberechnung Anwendung verwenden Eine weitere technische Entscheidung die explizit vom Auftraggeber gefordert wurde und somit zu einer wesentlichen Anforderung wurde ist die Verwendung eines gemeinsamen Metamodells zur Berechnung von Modelldifferenzen und zur Anwendung dieser Differenzen Diese Anforderung ergibt sich aus II NF A5 da ein einheitliches Metamodell sowohl auf Client Server als auch innerhalb der DOL Services verwen det werden muss damit die Synchronisation mit DOL durchgef hrt werden kann Die Konfliktl sungsstrategie muss austauschbar sein Der Auftraggeber w nscht sich eine Austauschbarkeit der geplanten einfachen Konfliktl sungsstrategie auf Seiten des Servers Das System muss es Anwendern erm glichen von verschiede 3 3 III VERWALTUNG MEHRERER MODELLE 37 nen Standorten kollaborativ zu Modellieren Das System soll es Anwendern erm glichen von verschiedenen Stand orten z B zwei B ros in verschiedenen Universit ten kollaborativ an einem Modell zu arbeiten 3 3 III Verwaltung mehrerer Modelle Hauptanforderung III Das System muss dem Anwender erm gli chen mehrere Modelle zu verwalten Um die Kollaboration f r mehr als ein Modell zu erm glichen muss das System dem Anwender eine Modellverwaltung bereitstellen Ohne diese w re das System a
140. de berschrieben werden muss 1 package de uniol pgktltt gef client commands 2 3 import org eclipse draw2d geometry Rectangle 4 5 import de uniol pgktltt gef model Diagram 6 import de uniol pgktltt gef model KClassDiagram 7 import de uniol pgktltt gef model KEnum 8 9 public class CreateKEnumCommand extends CreateNodeCommand 10 11 private static final String DEFAULT ENUM NAME DefaultEnum 12 13 public CreateKEnumCommand Diagram diagram Rectangle bounds 14 this diagram diagram 15 this bounds bounds 16 this model KClassDiagram diagram getGraph 17 18 19 Override 20 protected KEnum createNode 21 KEnum kenum model createKEnum 22 kenum set name DEFAULT ENUM NAME 23 return kenum 24 25 26 Dieser Command kann jetzt die KClassDiagramEditPolicy einge baut werden Hier muss in der Methode getCreateCommand ein Fall im switch case Block hinzugef gt werden 45 Switch 46 case CLASS 47 return new CreateKClassCommand diagram bounds 48 case ABSTRACT CLASS 49 return new CreateAbstractKClassCommand diagram bounds 50 case INTERFACE 51 return new CreateKInterfaceCommand diagram bounds 138 52 53 54 55 56 57 10 11 12 13 14 15 16 TT 18 19 20 21 22 23 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN case ENUM return new CreateKEnumCommand diag
141. delHandler Dadurch kann die Implementierung ent scheiden ob das in GEF zur Anzeige verwendete Modell ver ndert wird oder nicht wodurch die zuvor beschriebenen Ans tze implementiert werden k nnen Nach den nderungen am Modell wird dem ModelHandler mitge teilt dass die nderungen vollst ndig durchgef hrt wurden Hier wird dann das Delta aus den Daten des ChangeListeners oder per Diff erstellt und versandt Bei der Umsetzung ist aufgefallen dass GEF nicht daf r ausgelegt ist das Modell auszutauschen dies w rde auch dem GEF Workflow widerspre 90 KAPITEL 9 MODULSICHT lien 2 Clien erver Serve changeModel UserChangeMessage Seen apply failed ResetRequest gt l ResetModelMessage Serverapply failed resetMode ResetModelMessage Abbildung 9 5 Client Server Kommunikationsprotokoll 9 4 PROTOKOLL DER CLIENT SERVER KOMMUNIKATION 91 Model DolServi ServerM Man men lient1 Clien Client2 Client applyDelta delta hangeModel T lt send delta 1 1 je tue gt Ji l l l send delta gt send delta l 1 l l 1 l 1 l 1 1 l 1 l 1 l 1 l l l l l 1 l l l 1 l 1 l Abbildung 9 6 Client Server Kommunikationsprotokoll GEF Mode
142. den beim Umh ngen des Start punktes nicht berpr ft 2 Die m glichen ung ltige Resultate sind Diese Menge ist vollst ndig a Generalisierung von Interface zu Klasse b Generalisierung von Interface zu Abstrakter Klasse c Generalisierung mit dem selben Knoten als Start und Endpunkt Selbst Transition 18 6 Umh ngen des Endpunktes einer Generali sierung Dieser Test deckt das Umh ngen des Endpunktes einer Generalisierung ab Dieser Test ist generisch formuliert da das Problem hierbei eine fehlende berpr fung der Constraints beim Umh ngen ist Diese Constraints sind bei der Erstellung von Generalisierungen eingehalten Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Generalisierung zwischen diesen erstellt 3 Die Generalisierung wurde selektiert Test 1 Der Endpunkt der Generalisierung wird per Drag and Drop auf einen anderen Knoten gelegt Erwartetes Ergebnis 1 Der Endpunkt der Generalisierung wird nur dann ver ndert wenn die daraus resultierende Generalisierung g ltig ist 160 KAPITEL 18 FEHLGESCHLAGENE AKZEPTANZTESTS Tats chliches Ergebnis 1 Die Constraints der Generalisierung werden beim Umh ngen des End punktes nicht berpr ft 2 Die m glichen ung ltige Resultate sind Diese Menge ist vollst ndig a Generalisierung von Interface zu Klasse b Generalisierung von Interface zu Abstrakter Klasse c Generalisierung mit dem selben Knoten als Start und End
143. der Methodenbereich sichtbar ist 22 12 TESTS F R INTERFACEMETHODEN 263 Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 12 Interfacemethode mit default Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen einer Interfacemethode mit default Sichtbar keit mit Leerzeichen ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode mit pro tected Sichtbarkeit in des Interfaces angezeigt 22 12 13 Interfacemethode mit public Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen einer Interfacemethode mit public Sichtbar keit mit Leerzeichen ab 264 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr fert sodass der Meth
144. der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 5 Interfacemethode mit Float Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Float eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 6 Interfacemethode mit UnlimitedNatural Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode vom Void Primitiv Typ ab 260 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello UnlimitedNatural eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der Model TreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 7 Interfacemethode mit default Sichtbark
145. dukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Es wurde an der Aggregation ein Bendpoint erstellt 4 Die Aggregation wurde selektiert Test 1 Klick auf den Bendpoint auf der Aggregation 2 Verschieben des Bendpoints per Drag and Drop an eine Position so dass die Aggregation nicht gerade ist Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Aggregation ber den verschobenen Bendpoint umgeleitet angezeigt 22 17 23 L schen eines Bendpoints in einer Aggregation Dieser Test deckt das L schen eines Bendpoints in einer Aggregation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde 314 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Es wurde an der Aggregation ein Bendpoint erstellt 4 Die Aggregation wurde selektiert Test 1 Klick auf den Bendpoint auf der Aggregation 2 Verschieben des Bendpoints per Drag and Drop sodass die Aggrega tion wieder gerade ist Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Aggregation ohne Bendpoint angezeigt 22 18 Tests f r Kompositionen Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen
146. e Bearbeitung eines Modelles entstehen k nnen abfangen und nach der First Come First Serve Strategie behandeln sodass kein inkonsistenter Zustand oder Fehler entsteht Im Rahmen kollaborativer Modellierung ist es m glich dass Konflikte auftreten Eine M glichkeit ist es dass ein Element von einem Anwen der gel scht wird w hrend zeitgleich ein anderer nderungen daran 3 2 II ECHTZEITKOLLABORATION UND SYNCHRONISATION 35 durchf hrt Das f hrt dazu dass eine nderung auf einem Element ausgef hrt werden soll das nicht mehr existiert Derartige Fehlerf l le m ssen vom System erkannt und behandelt werden Hierbei wird die einfache L sungsstrategie First Come First Serve angewandt Dies hat zur Folge dass nderungen von Anwendern vom Server verworfen werden da sie im Konflikt zu vorherigen nderungen stehen II FA5 1 Das System muss einem Client durch dessen nderung ein Konflikt aufgetreten ist den aktuell auf dem Server liegenden Stand schicken damit dieser wieder synchron ist Im zuvor genannten Fall dass zwei nderungen zueinander im Konflikt stehen soll der zweite Anwender dessen nderung ver worfen wurde eine Resynchronisation seines Modells und damit des ge ffneten Diagramms erhalten Dazu soll der auf dem Server gespeicherte aktuell g ltige Stand nur diesem Client neu zuge schickt werden II FA5 2 Das System muss den Anwender informieren wenn seine II FA6 Anderung verworfen wurde Als K
147. e Interface erstellt und ausgew hlt 2 Der Name dieser Interface lautet DefaultInterface Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello DefaultInterface eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 18 Interface Attribut mit ung ltigem Datentyp Dieser Test deckt das Erstellen eines Interface Attributes mit ung ltigem Datentyp ab 256 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt 2 Der Name dieser Interface lautet DefaultInterface Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello NonExistantInterface eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Eine Fehlermeldung erscheint mit der Meldung The current model does not contain a type with the requested name NonExistantInter face 22 11 19 Interface Attribut l schen Dieser Test deckt das L schen eines Interface Attributes ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter driicken Erwartetes Ergebnis 1 Im Edito
148. e ModelRegistry wie sie in Abschnitt 9 5 be schrieben ist Nachfolgend werden einige wichtige Methoden der Klasse ModelRegistry beschrieben Die Methoden deren Namen mit request be ginnen senden Nachrichten Requests an den Server Die Methoden die mit incomming und handle anfangen behandeln eingehende Nachrichten vom Server e closeDiagramEditor Diese Methode schlie t den zu dem bergebe nen Diagramm geh rigen Editor e closeModel Diese Methode schlie t das bergebene Modell Alle zu geh rigen Editoren werden geschlossen und eine Nachricht an den Ser ver gesendet dass der Anwender das Modell geschlossen hat e createEditor Diese Methode ffnet einen Editor f r ein Diagramm bzw Modell oder Version Wenn bereits ein Editor ge ffnet ist be kommt dieser den Fokus e force penEditorRefresh Aktualisiert alle ge ffneten Editoren 126 KAPITEL 13 PROJEKTSTRUKTUR e getActiveEditor Gibt den Editor zur ck der aktuell den Fokus hat bzw als letzter Editor den Fokus hatte e getAllModels Gibt eine Liste aller dem Client bekannten Modelle zur ck sowohl ge ffnete als auch nicht ge ffnete Editoren e getModellist Gibt die Graphen zu allen ge ffneten Modellen zur ck e get penModels Wie getModelList nur dass Modell Identifier anstel le der Graphen zur ckgegeben werden e getCommandStack Auf dem Client wird ein gemeinsamer Com mandStackt f r alle Editoren verwendet Dieser wird von getCommandS
149. e an Standardwerkzeugen mit die dem Anwender zur Verf gung gestellt werden k nnen z B in Events zum Erstellen oder Bewegen eines Modellobjekts um Eingaben k nnen also weitestgehend auf Modellebene behandelt werden 8 3 Modellrepres ntation mit JGraLab Aufgrund mehrerer Faktoren ist es notwendig eine geeignete Technologie zur Modellrepr sentation zu w hlen e Das verwendete Diagrammbearbeitungs Framework GEF s schreibt zur Implementierung das MVC Pattern vor Das Modell im Sinne von MVC ist dabei nicht vorgeschrieben aber notwendig Im Rahmen des Projekts ist das Modell des GEF MVC ebenso das Modell im Sinne der kollaborativen Modellierung e Die Zielanwendung ist ein Produkt zur kollaborativen Modellierung Die unterst tzten Modellarten sollen dabei erweiterbar sein e Der Auftraggeber w nscht explizit die Ablage des Modells und die Verwendung eines Metamodells auf Client und Server e Der Auftraggeber w nscht explizit die Verwendung des in Abschnitt 8 4 beschriebenen Systems DOLSA zur Modellversionierung Da dieses System metamodell generisch entwickelt wurde ist die Verwendung eines Metamodells zwingend erforderlich Entsprechend wird eine Modelltechnologie ben tigt mit der sich Klassen diagramme und deren Metamodell repr sentieren lassen Fin Abw gung von Alternativen ist f r diese Technologie nicht notwendig da der Auftraggeber explizit die Verwendung vom Java Graphen Labor JGraLab fordert und das zwingen
150. e aus Modell l schen Dieser Test deckt das L schen eines Interfaces aus einem Modell ab Vorbedingung 1 Es wurde ein Interface erstellt Test 1 Links in der ModelTreeView rechtsklick auf das Interface unter Mo delElements 2 Delete Interface from model anklicken Erwartetes Ergebnis 1 Links in der ModelTreeView wird das gel schte Element nicht mehr angezeigt 22 10 10 Interface aus Modell in Diagramm einf gen Dieser Test deckt das Einf gen eines Interfaces aus einem Modell in ein Diagramm ab Vorbedingung 1 Es wurde ein Interface erstellt 2 Das erstellte Interface wurde aus dem Diagramm gel scht 246 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Links in der ModelTreeView auf das Interface unter ModelElements doppelklicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das eingef gte Interface angezeigt 22 10 11 Refactoring eines Interfacenamens Dieser Test deckt das Umbenennen eines Interfaces ab welche durch ein Interfaceattribut referenziert wird Hierbei muss das Interfaceattribut seinen Typ korrekt anpassen Vorbedingung 1 Es wurde ein Interface erstellt 2 Dieses Interface wurde mylInterface genannt 3 Diesem Interface wurde das Interfaceattribut my Attribute myInter face hinzugef gt Test 1 Das Interface umbenennen zu refactoredInterface Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das Interfaceattrib
151. e erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenflache wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 252 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 11 11 Interface Attribut mit privater Sichtbarkeit Dieser Test deckt das Erstellen eines Interface Attributes mit privater Sicht barkeit ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 12 Interface Attribut mit default Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Interface Attributes mit default Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Inte
152. e gel schte Generalisie rung nicht mehr angezeigt 2 Links in der ModelTreeView wird die gel schte Generalisierung noch angezeigt 284 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 15 10 L schen einer Generalisierung aus dem Modell Dieser Test deckt das L schen einer Generalisierung aus dem Modell ab Vorbedingung Es wurden 2 Klassen erstellt 2 Es wurde 1 Generalisierung zwischen diesen erstellt Test 1 Links in der ModelTreeView rechtsklick auf die Generalisierung 2 Delete Generalization from model anklicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Generalisie rung nicht mehr angezeigt 2 Links in der ModelTreeView wird die gel schte Generalisierung nicht mehr angezeigt 22 15 11 Keine Generalisierung von einem Interface zu einer Klasse Dieser Test deckt das Fehlschlagen einer Generalisierung von einem Interface zu einer Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Klasse erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf das Interface klicken 3 Auf die Klasse klicken 22 15 TESTS F R GENERALISIERUNGEN 285 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird keine Generalisierung vom Interface zur Klasse angezeigt 2 Links in der ModelTreeView wird keine neue Generalisierung unter dem Interface im firstDiagram angezeigt
153. e selektiert 22 19 TESTS F R ASSOZIATIONSLABELS 327 Test 1 Klick auf den Bendpoint auf der Komposition 2 Verschieben des Bendpoints per Drag and Drop an eine Position so dass die Komposition nicht gerade ist Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Komposition ber den verschobenen Bendpoint umgeleitet angezeigt 22 18 23 L schen eines Bendpoints in einer Komposition Dieser Test deckt das L schen eines Bendpoints in einer Komposition ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Es wurde an der Komposition ein Bendpoint erstellt 4 Die Komposition wurde selektiert Test 1 Klick auf den Bendpoint auf der Komposition 2 Verschieben des Bendpoints per Drag and Drop sodass die Komposi tion wieder gerade ist Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Komposition ohne Bendpoint angezeigt 22 19 Tests f r Assoziationslabels Die Tests in diesem Abschnitt decken das Interagieren und Bearbeiten von Assoziationslabels ab Da diese Tests Fehlerfrei f r Assoziationen Aggrega tionen und Komposition durchgef hrt wurden sind diese nur f r Assozia tionen dokumentiert Auch die verschiedenen Knotentypen brachten keine 328 KAPI
154. e to apply to the part which is the covered work but the special requirements of the GNU Affero General Public License section 13 concerning interaction through a network will apply to the combination as such 14 Revised Versions of this License The Free Software Foundation may publish revised and or new versions of the GNU 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 that a certain numbered version of the GNU General Public License or any later version applies to it you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation If the Program does not specify a version number of the GNU General Public License you may choose any version ever published by the Free Software Foundation If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used that proxy s public statement of acceptance of a version permanently authorizes you to choose that version for the Program Later license versions may give you additional or different permissions However no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version 15 Di
155. e to offer and charge a fee for acceptance of support warranty indemnity or other liability obligations and or rights consistent with this License However in accepting such obligations You may act only on Your own behalf and on Your sole responsibility not on behalf of any other Contributor and only if You agree to indemnify defend and hold each Contributor harmless for any liability incurred by or claims asserted against such Contributor by reason of your accepting any such warranty or additional liability END OF TERMS AND CONDITIONS APPENDIX How to apply the Apache License to your work To apply the Apache License to your work attach the following boilerplate notice with the fields enclosed by brackets replaced with your own identifying information Don t include the brackets The text should be enclosed in the appropriate comment syntax for the file format We also recommend that a file or class name and description of purpose be included on the same printed page as the copyright notice for easier identification within third party archives Copyright yyyy name of copyright owner Licensed under the Apache License Version 2 0 the License you may not use this file except in compliance with the License You may obtain a copy of the License at http www apache org licenses LICENSE 2 0 Unless required by applicable law or agreed to in writing software distributed under the License is distributed
156. eerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit public Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 284 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der Model TreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 14 Abstrakte Klassenmethode mit protected Sichtbar keit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit protec ted Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt mit Leerzeichen 2 Links in der Model TreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezei
157. eichen 22 11 15 Interface Attribut mit package protection Sichtbar keit mit Leerzeichen Dieser Test deckt das Erstellen eines Interface Attributes mit package protection Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 16 Interface Attribut mit privater Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Interface Attributes mit privater Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt 22 11 TESTS F R INTERFACE ATTRIBUTE 255 Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenflache wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 17 Interface Attribut mit Datentyp aus dem Modell Dieser Test deckt das Erstellen eines Interface Attributes mit Datentyp aus dem Modell ab Vorbedingung 1 Es wurde ein
158. eichenfl che wird eine Generalisierung von der Klasse zur Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Generalisierung unter der Klasse im firstDiagram angezeigt 22 15 3 Implementierung von einer Klasse zu einem Inter face Dieser Test deckt das Erstellen einer Generalisierung von einer Klasse zu einem Interface ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Interface erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die Klasse klicken 3 Auf das Interace klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Implementierung von der Klasse zum Interace angezeigt 2 Links in der ModelTreeView wird die neue Implementierung unter der Klasse im firstDiagram angezeigt 22 15 4 Generalisierung von einer Abstrakten Klasse zu ei ner Abstrakten Klasse Dieser Test deckt das Erstellen einer Generalisierung von einer Abstrakten Klasse zu einer Abstrakten Klasse ab Vorbedingung 1 Es wurden 2 Abstrakte Klassen erstellt 22 15 TESTS F R GENERALISIERUNGEN 281 Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die erste Abstrakte Klasse klicken 3 Auf die zweite Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Generalisierung von der ersten zur zweiten Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue G
159. einer Anfrage des Clients ob ein Modell erstellt bzw ver ndert und ob von einem Modell eine neue Version gespeichert werden soll Die DOLSA Komponente bietet eine Reihe von Services zur Realisie rung von Echtzeit Kollaborativit t Modellverwaltung und Versionierung Diese Services werden sowohl von der Client als auch von der Server Komponente verwendet 7 4 VERFEINERUNG DER HAUPTFUNKTIONALIT TEN 67 7 4 Verfeinerung der Hauptfunktionalit ten component Kotelett component component Client Server component Modell component Delta verteilen component Modell Del d Del f EU elta versenden elta empfangen anzeigen 5 F ellalempjangen Aktive Modelld Versionsliste Nutzereingaben verwalten verteilen behandeln Q Nutzer in O PE Modellen ives Mode verwalten Versionen Modellauswahl speichern anzeigen anzeigen Modellliste Nutzereingaben Nutzereingaben verteilen behandeln behandeln component DOLSA component component DOL Service DOL Application Delta berechnen Modell speichern Version speichern Del d elta anwenden Modell laden Version laden Modell erstellen Aktives Delta bereitstellen Modell l schen 5 Versionen auflisten Modelle auflist
160. eines Metamodells welches die Struktur des Modells und dessen Semantik beschreibt Diagramm Ein Diagramm ist eine bestimmte Sicht auf ein Modell W h rend das Modell einen Teilaspekt der Realit t als Ganzes betrachtet zeigt ein Diagramm nur einen kleinen Teil des Modells Es ist somit ei ne grafische Repr sentation des Modells wobei es mehrere Diagramme je Modell geben kann da in der Regel ein Diagramm alleine nicht alles beinhaltet was im Modell beschrieben ist Somit ist eine vollst ndige Sicht auf das Modell nur durch Kombination der verschiedenen Sich ten m glich Aus technischer Sicht ist ein Diagramm wie ein Modell Instanz eines Metamodells das vor allem das Layout anstelle der Semantik beschreibt Da ein Diagramm eine Sicht auf das Modell be schreibt stellt es aus Datensicht eine Referenz auf das Modell dar EL11 22 KAPITEL 1 ZIELVEREINBARUNG UML Die Unified Modeling Language kurz UML ist ein Industriestan dard f r die Modellierung von Softwaresystemen Sie wird von der Object Management Group ver ffentlicht und entwickelt Versionierung Der Begriff der Versionierung beinhaltet im Rahmen die ses Projektes zwei Arten der Versionierung Mikroversionierung und Makroversionierung Teil II Anforderungen 23 Kapitel 2 Einleitung Dieses Dokument beschreibt die wesentlichen Anforderungen an das zu ent wickelnde kollaborative Modellierungstool Hierbei unterscheiden wir zwi schen funktionalen und
161. eit Dieser Test deckt das Erstellen einer Interfacemethode mit default Sichtbar keit ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode mit pro tected Sichtbarkeit in des Interfaces angezeigt 22 12 TESTS F R INTERFACEMETHODEN 261 22 12 8 Interfacemethode mit public Sichtbarkeit Dieser Test deckt das Erstellen einer Interfacemethode mit public Sichtbar keit ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 9 Interfacemethode mit protected Sichtbarkeit Dieser Test deckt das Erstellen einer Interfacemethode mit protected Sicht barkeit ab Vorbedingung
162. elTreeView nicht angezeigt 22 19 14 Bearbeiten des Quell Rollenbezeichners mit Public Sichtbarkeit mit Leerzeichen Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Public Sichtbarkeit mit Leerzeichen ab Dieser Test wurde aufgrund des Fehlers beim Parsen der Sichtbarkeit bei Klassenattributen Abschnitt 18 1 durch gef hrt Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert 386 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der ModelTreeView nicht angezeigt 22 19 15 Setzen von 0 als Quell Multiplizit t Dieser Test deckt das Setzen der Quell Multiplizit t auf 0 ab Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde die Quell Multiplizit t selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 0 eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird 0 im selektierten Text feld angezeigt 2 In der ModelTreeView links wurde d
163. ellen eines Abstrakte Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Float eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 6 Abstrakte Klassenattribut mit UnlimitedNatural Pri mitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello UnlimitedNatural eingeben 3 Enter dr cken 22 8 TESTS F R ABSTRAKTE KLASSENATTRIBUTE 219 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 7 Abstrakte Klassenattribut mit default Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit default Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1
164. elying means you have actual knowledge that but for the patent license your conveying the covered work in a country or your recipient s use of the covered work in country would infringe one or more identifiable patents in that country that you have reason to believe are valid If pursuant to or in connection with a single transaction or arrangement you convey or propagate by procuring conveyance of a covered work and grant a patent license to some of the parties receiving the covered work authorizing them to use propagate modify or convey specific copy of the covered work then the patent license you grant is automatically extended to all recipients of the covered work and works based on it A patent license is discriminatory if it does not include within the scope of its coverage prohibits the exercise of or is conditioned on the non exercise of one or more of the rights that are specifically granted under this License You may not convey a covered work if you are party to an arrangement with a third party that is in the business of distributing software under which you make payment to the third party based on the extent of your activity of conveying the work and under which the third party grants to any of the parties who would receive the covered work from you a discriminatory 368 KAPITEL 26 GNU GENERAL PUBLIC LICENSE VERSION 3 patent license a in connection with copies of the covered work conveyed by yo
165. en 3 Wenn alle Anwender zugestimmt haben wird eine Version des aktu ellen Heads mit der Commit Message aus 1 erstellt sozusagen ein Backup 4 Der Server berechnet das Delta R ckw rts Delta zwischen der Head Version und der alten Version die diese ersetzen soll 5 Der Server wendet dieses Delta auf die Head Version an und sendet es als Bearbeitungsschritt an die Clients L schen von Modellen Modelle k nnen nur gel scht werden wenn sie von keinem Anwender mehr ge ffnet sind 9 5 2 Diagrammverwaltung Da Diagramme Teil des Metamodells sind unterscheiden sie sich aus Con troller Sicht kaum von Modellelementen nderungen an Diagrammen Er stellen Umbennenen L schen durch den Synchronisationsmechanismus f r Modelle verteilt siehe Unterabschnitt 9 4 1 96 KAPITEL 9 MODULSICHT Ge ffnet werden Diagramme durch einen Doppelklick auf den entspre chenden Eintrag in der Baumansicht siehe Abschnitt 9 5 In der Bauman sicht k nnen ebenso ein Kontextmen zum Erstelen und Entfernen von Diagrammen angezeigt werden Beim Erstellen eines Diagramms wird der Anwender ber eine sim ple Eingabemaske zur Benennung des Diagramms aufgefordert Geschlossen wird ein Diagramm ber das X am Editorfenster 9 5 3 Presenter Client In diesem Abschnitt wird der Presenter auf dem Client Siehe auch dung 9 1 und dessen Zusammenspiel mit Modell und View genauer beschrie ben Die detaillierte Architektur ist in Abbildung 11 a
166. en laut Auftraggeber zur Modellsynchronisation die Komponenten des momen tan in der zur Forschung entwickelten Delta Operations Language with Ser vices and Applications DOLSA verwendet werden In diesem Abschnitt wird zum besseren Verst ndnis die Grundfunktionalit t und Architektur von DOLSA beschrieben Zudem wird beschrieben welche Komponenten und zu welchem Zweck diese genutzt werden Wie bereits erw hnt handelt es sich bei DOLSA um ein System zur Mo dellversionierung hnlich zu textbasierten Ans tzen die bspw zur Quellco deversionierung in Softwareprojekten genutzt werden Bei einem Modellver sionierungssystem m ssen aber die Semantiken von Modellen ber cksichtigt werden was durch m gliche textuelle Repr sentationen der Modelle und Versionierung dieser nicht ohne weiteres m glich ist Grundlegend f r die Versionierungsfunktionalit t ist die Handhabung von Differenzen zwischen Versionen eines Objekts anstatt jede Version in seiner Gesamtheit zu verarbeiten F r die Repr sentation von Modelldiffe renzen verwendet DOLSA einen operationsbasierten Ansatz der zun chst beschrieben werden soll da diese Repr sentation die Grundlage f r DOLSA darstellt und au erdem zur Modellsynchronisation im Rahmen des Projekts verwendet werden soll 8 4 1 Delta Operation Language Zur Repr sentation von Modelldifferenzen wird in DOLSA ein operationsba sierter Ansatz mit dem Namen Delta Operations Language DOL verwen det Dieser Ansatz
167. en auf In den meis ten F llen wird ein Redo angeboten wobei nichts passiert oder nderungen am Modell durchgef hrt werden da das dazugeh rige Diagramm Element von einem anderen Anwender gel scht wurde Die Problematik wurde eine Woche vor Abschluss der Implementierung entdeckt Beim Versuch der Kor rektur hatte sich herausgestellt dass dabei noch sehr viele weitere Randf lle betrachtet werden m ssten sodass nur die wesentlichen Undo F lle behoben werden konnten 20 7 Treeview Problem Das Problem ist dass in der TreeView unter dem Diagramm Knoten Mo dellelemente angezeigt werden die in dem Diagramm keine Graphische Repr sentation besitzen 20 7 TREEVIEW PROBLEM 169 Das Problem tritt auf wenn sich im Diagramm ein Knoten befindet der im Modell eine Kante zu anderen Knoten hat diese Kante aber nicht in dem Diagramm vorhanden ist Das Problem wird durch das verschachtelte Aufbauen der TreeView er zeugt Dabei wird immer von einem Element ausgegangen und gepr ft was seine direkten Kinder sind Wenn er welche hat werden diese in der Tree View dargestellt Kinder der tieferen Ebenen werden ausgehend von diesem Element nicht betrachtet Erlauterung an einem kleinen Beispiel Wenn man von dem Diagramm ausgeht kommt der Knoten rein da dieser das einzige direkte Kind des Diagramms ist Dieser hat auch eine Graphische Repr sentation ansonsten w re er kein Kind des Diagramms Als n chstes wird die TreeView weiter ausge
168. en beinhalten da diese redundant zu Quelle und Ziel der Generalisierung w ren vgl Abbildung 10 3 Die Oberklasse KRelationship hat zwar keine Attribute source und target sind jeweils nur in den Unterklassen existiert aber konzeptionell Die Darstellung mit GEF ist am einfachsten wenn f r jedes Element in der View Knoten Kanten ein entsprechendes Modellelement existiert 106 KAPITEL 10 DATENMODELL KRelationship stellt zusammen mit KNode der Oberklasse f r alle Modell elemente die als Knoten in einem Diagramm dargestellt werden k nnen so zusagen die Schnittstelle zwischen Modellelementen und ihrer Graphischen Repr sentation dar Daher sind diese Klassen in Abbildung auf der Trennungslinie positioniert Generalisierungen und Implementierungen Sowohl Generalisierungen als auch Implementierungen werden durch die Klasse KGeneralization beschrieben source und target von KGeneralization sind somit vom Typ KClassifier Ob eine Instanz von KGeneralization eine Generalisierung oder Implementierung beschreibt ergibt sich durch den Typ von source und target Wenn source und target vom gleichen Typ KClass oder KInterface sind wird eine Ge neralisierung modelliert Wenn source vom KInterface und target vom Typ KClass ist ist es dementsprechend eine Implementierung Eine Verbindung von KClass zu KInterface ist nicht erlaubt Assoziationen Ausgehend von KAssociation sind source und target vom Typ KAssociationEndP
169. en f r Transitionen zwischen Aktionen in einem Aktivit tsdiagramm beschreiben Da GraphicalEdge eine Referenz auf das Modellelement h lt ist eine Referenz auf die BoundingBox von Quelle und Ziel nicht zwingend n tig Um das Zeichnen des Diagramms zu erleichtern wurden dennoch entsprechende Assoziationen zwischen BoundingBox und GraphicalEdge eingef hrt Hier muss selbstverst ndlich verst rkt auf die Konsistenz des Modells geachtet werden dass edgeSource und edgeTarget einer GraphicalEdge mit den Modellelementen bereinstimmen 10 4 Constraints Folgende Bedingungen m ssen eingehalten werden um die Konsistenz Va lidit t in Bezug auf korrektes UML und eindeutige Darstellung eines Mo dells zu gew hrleisten 10 4 1 Konsistenz CONSISTENCY 1 Die Quelle edgeSource einer GraphicalEdge muss im selben Diagramm wie die GraphicalEdge enthalten sein CONSISTENCY 2 Das Ziel edgeTarget einer GraphicalEdge muss im selben Diagramm wie die GraphicalEdge enthalten sein 10 5 INTERPRETATION VON LAYOUTANGABEN 109 CONSISTENCY 3 Die Quelle der KRelationship auf die eine GraphicalEdge zeigt muss das Modellelement Instanz von KNode sein auf die die BoundingBox zeigt die Quelle der GraphicalEdge ist CONSISTENCY 4 Das Ziel der KRelationship auf die eine GraphicalEdge zeigt muss das Modellelement Instanz von KNode sein auf die die BoundingBox zeigt die Ziel der GraphicalEdge ist 10 4 2 Valides UML UML 1 Wenn
170. ende Modulsicht beeinflussen Die Modulsicht aus Kapitel 9 verfeinert die Konzeptsicht Sie beschreibt die Architektur genauer und n her an der Implementierung Dabei wird zum Beispiel die Art und Weise wie Fremdsoftware z B DOLSA KW14 in das Projekt integriert werden soll festgelegt Schlie lich wird das verwende te Metamodell in Kapitel 10 vorgestellt 50 Kapitel 6 Globale Analyse Angelehnt an dem mit den Siemens Sichten verbundenen Vorgehensmodell sollte zun chst eine Globale Analyse durchgef hrt werden Aufgrund eines Personalausfalls ist diese nicht fertiggestellt worden wordurch die Verbin dung zwischen Anforderungen und Architektur fehlt Dieses Kapitel be schreibt die unvollst ndige und veraltete Globale Analyse 6 1 Einf hrung Zu Beginn der globalen Analyse wurden die wesentlichen Faktoren erhoben Dies sind Faktoren die Einfluss auf die gesamte Struktur der Architektur haben und nicht innerhalb einer Komponente abgedeckt werden k nnen Hierzu z hlen organisatorische Faktoren also Faktoren die direkt aus dem Unternehmen an sich erwachsen technischer Faktoren wie allgemeine oder spezielle Hardware Architektur Technologien Standards sowie die einfluss reichsten Faktoren die Produktfaktoren die sich auf die F higkeiten und Eigenschaften des Produktes selbst beziehen Die Faktoren werden mit ihrer Flexibilit t also der Umfang des Einflus ses des Entwicklers auf den Faktor und ihrer Variabilit t
171. eneralisierung unter der ersten Abstrakten Klasse im firstDiagram angezeigt 22 15 5 Generalisierung von einer Abstrakten Klasse zu ei ner Klasse Dieser Test deckt das Erstellen einer Generalisierung von einer Abstrakten Klasse zu einer Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Klasse erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die Abstrakte Klasse klicken 3 Auf die Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Generalisierung von der Abstrakten Klasse zur Klasse angezeigt 2 Links in der ModelTreeView wird die neue Generalisierung unter der Abstrakten Klasse im firstDiagram angezeigt 282 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 15 6 Generalisierung von einer Abstrakten Klasse zu ei nem Interface Dieser Test deckt das Erstellen einer Generalisierung von einer Abstrakten Klasse zu einem Interface ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Interface erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die Abstrakte Klasse klicken 3 Auf das Interface klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Implementierung von der Abstrakten Klasse zum Interface angezeigt 2 Links in der ModelTreeView wird die neue Implementierung unte
172. enerated by the Derivative Works if and wherever such third party notices normally appear The contents of the NOTICE file are for informational purposes only and do not modify the License You may add Your own attribution notices within Derivative Works that You distribute alongside or as an addendum to the NOTICE text from the Work provided that such additional attribution notices cannot be construed as modifying the License You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use reproduction or distribution of Your modifications or for any such Derivative Works as whole provided Your use reproduction and distribution of the Work otherwise complies with the conditions stated in this License Submission of Contributions Unless You explicitly state otherwise any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License without any additional terms or conditions Notwithstanding the above nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions Trademarks This License does not grant permission to use the trade names trademarks service marks or product names of the Licensor 353 except as required for reasonable and customary use in describing the origin of the
173. enmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 22 9 TESTS F R ABSTRAKTE KLASSENMETHODEN 227 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 2 Abstrakte Klassenmethode mit Integer Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Integer eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 3 Abstrakte Klassenmethode mit String Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode vom Void Primitiv Typ a
174. enn ein Diagramm ge ffnet werden soll f r das bereits ein Editor existiert wird dieser aktiviert Ein Editor wird unter folgenden Umst nden aktiviert bzw ge ffnet e Wenn ein Modell ge ffnet wird e Wenn ein Diagramm per Doppelklick in der Baumansicht ausgew hlt wird e Wenn ein Modellelement unter einem Diagramm in der Baumansicht angeklickt wird Ein Editor wird geschlossen wenn einer der folgenden Halle eintritt e Der Benutzer schlie t den Editor e Das Diagramm das im Editor angezeigt wird wird gel scht e Das Modell zu dem der Editor geh rt wird geschlossen 98 KAPITEL 9 MODULSICHT o Es gibt immer maximal einen aktiven Editor geschlossen Abbildung 9 12 Lifecycle f r Editoren 9 5 4 View Client Da bei mehreren Modellen und Diagrammen die bersicht ber die erstellten Modellelemente verloren geht wird eine TreeView erstellt welche die Mo dellelemente einem Diagramm bzw Modell zuordnet In dieser TreeView k nnen Modellelemente selektiert werden sodass diese im entsprechenden Diagramm ausgew hlt werden Die TreeView wird mit SWT siehe Abschnitt 8 1 als ModelTreeViewPart realisiert und als ein zus tzlicher Bereich im Editor eingebettet Die notwen digen Informationen zu dem Zustand des Modells werden von der Model Registry geholt aufbereitet und anschlie end als TreeView dargestellt Bei nderungen des Modells wird der ModelChangeListener aktiviert und die TreeView wird aktualisiert
175. enzdiagramm zum Erstellen neuer Modelle 9 5 VERWALTUNG VON MODELLEN VERSIONEN UND DIAGRAMMEN95 Version zu benennen Auf dem Server wird dann eine neue Version angelegt und alle Clients ber die Existenz einer neuen Version informiert Da der Editor in dem die Bearbeitung stattfindet nach wie vor die Head Version referenziert ndert sich nur in der Anzeige der Versionen etwas Wenn der letzte Anwender das Modell schlie t legt der Server automa tisch eine neue Version an Zur ckspringen zu einer alten Version revert Der Anwender hat die M glichkeit eine zur Ansicht ge ffnete ltere Version als neue Head Version zu bernehmen Dabei wird die Head Version durch jene ltere Version ersetzt Da dies mit Zustimmung der restlichen Benutzer geschehen soll sendet der Client lediglich eine Anfrage an den Server Wenn die restlichen Bearbeiter des Modells zugestimmt haben setzt der Server die Head Version zur ck Technisch ergibt sich dies durch die Anwendung eines Deltas auf die Head Version Der gesamte Ablauf ist damit wie folgt 1 Der Client des Anwenders sendet eine Anfrage an den Server den Head zur ckzusetzen Diese beinhaltet ewine Referenz auf die Zielversion zu der zur ckgekehrt werden soll sowie eine Commit Message f r den aktuellen Stand des Head 2 Der Server schickt eine Anfrage um Best tigung an die anderen Cli ents die das Modell ge ffnet haben Wenn ein Client dem Revert nicht zustimmt wird abgebroch
176. er Hauptfunktionalit ten 65 qae ee 67 69 EHTK 71 ea a EOS X ec A 72 8 3 Modellrepres ntation mit JGraLab 74 ty eee T oe Geet Bene MEE 76 8 5 IKryoNet z 24 2568 24 9 28 R B ee RA dee be es 79 9 Modulsicht 81 9 1 Model View Presenter 81 9 2 Synchronisationsprobleme des Modells 85 CERS 86 EE 88 Rg toh te Bek ge Hee cs oe 100 10 Datenmodell 103 10 1 Grobe Strukturl e 105 ee KE en a 105 EE 107 10 4 Constraints 2 2 2 Em ea 108 109 D URN RR Gee der hake eat US MS 110 IV Wartungshandbuch 113 11 Bauen von Kotelett 117 11 1 Build des Clientl 2 2222 22 Co on nn 119 11 2 Build des 120 11 3 Build des 5 120 12 Entwicklungsumgebung 121 INHALTSVERZEICHNIS 5 13 Projektstruktur 123 13 1 Shared detailliertere Struktur 124 13 2 Client detailliertere Struktur 124 13 3 Server detaillierte Strukturl 127 14 Logging 129 14 1 Logging auf dem Server 129 14 2 Logging auf dem Client 129 15 Updates und zuk nftige Nutzung 131 16 Erweiterungsm glichkeiten 133 16 1 Beispiel UML Notizen e 133 16 2 Detailliertes Beispiel Enumerationen 136 16 3 Probleme bei der Erweiterbarkeit 2
177. er ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 17 Abstrakte Klassenmethode mit Datentyp aus dem Modell Dieser Test deckt das Erstellen einer Abstrakte Klassenmethode mit Daten typ aus dem Modell ab 236 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Der Name dieser Abstrakte Klasse lautet Default Class 3 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello DefaultClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 18 Abstrakte Klassenmethode mit ung ltigem Daten typ Dieser Test deckt das Erstellen einer Abstrakte Klassenmethode mit ung l tigem Datentyp ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello NonExistantClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Eine Fehlermeldung erscheint mit der
178. er Wert des Textfelds and der Assoziation aktualisiert 22 19 16 Setzen von 1 als Quell Multiplizit t Dieser Test deckt das Setzen der Quell Multiplizit t auf 1 ab 22 19 TESTS F R ASSOZIATIONSLABELS 337 Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde die Quell Multiplizit t selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 1 eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird 1 im selektierten Text feld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 22 19 17 Setzen von 0 1 als Quell Multiplizit t Dieser Test deckt das Setzen der Quell Multiplizit t auf 0 1 ab Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde die Quell Multiplizit t selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 0 1 eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird 0 1 im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 338 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 19 18 Setzen von als Quell Multiplizit t Dieser Test deckt das Setzen der Quell Multiplizit t auf ab Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 A
179. er dem Klassennamen klicken 2 Im Texteingabefeld hello Float eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 6 Klassenattribut mit UnlimitedNatural Primitiv Typ Dieser Test deckt das Erstellen eines Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello UnlimitedNatural eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 188 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 5 7 Klassenattribut mit default Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenattributes mit default Sichtbar keit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut mit pro tected Sichtbarkeit in der K
180. er zu einem korrumpierten Modellrepository wes halb die einzige m gliche L sung ein Herunterfahren des Servers und manu elles L schen des Modells im Repository ist Um das korrumpierte Modellr epository zu reparieren muss im Arbeitsverzeichnis des Servers das Unter verzeichnis repository ge ffnet werden Darin befinden sich mehrere Un terverzeichnisse die jeweils mehrere Dateien enthalten In einem der Ver zeichnisse sollte sich lediglich eine XML Datei befinden Dieses Verzeichnis muss gel scht werden Danach kann der Server wieder gestartet werden 20 5 Aktualisierung der Userliste Die Userliste soll immer die Nutzer des aktuell ausgew hlten Editors anzei gen Dies funktioniert nicht immer richtig Bei mehreren Modellen kommt es immer wieder vor dass eine falsche Userliste angezeigt wird Dies tritt bei User Beitritten zu nicht aktiven Modellen und auch bei Namens sowie Farb nderungen auf Au erdem wird die Userliste nicht gel scht wenn der letzte Editor geschlossen wird s Abschnitt 18 8 20 6 Undo Redo Problematik Ein bekannter Fehler ist falsches Verhalten durch verschiedene Kombinatio nen von Undo Redo und nderungen anderer Anwender Auf Client Seite kann es hier zu einer falschen Ul Darstellung kommen Dies passiert z B wenn eine Kante umgehangen wird die alte Klasse von einem anderen An wender gel scht wird und dann das Umh ngen r ckg ngig gemacht wird Au erdem tritt das Problem auch bei Redo Funktion
181. erations to the model NFO de unioldenburg dol services patcher impl PatcherImpl applyDelta Please wait applying operations to the model NFO de unioldenburg kotlett impl GMoVerSToKotelettServerAdapterImpl saveVersion Saving the model version into the repository SEVERE de unioldenburg dol config impl RepositoryFacadelmpl loadDelta Delta representation doesn t exist for repository 4 active gmvs NFO de unioldenburg dol services patcher impl PatcherImpl applyDelta Please wait applying operations to the model NFO de unioldenburg dol services calculator impl CalculatorImpl calculateDelta Fetching model elements e NFO de unioldenburg dol services calculator impl CalculatorImpl calculateDelta Calculating differences NFO de unioldenburg dol services calculator impl CalculatorImpl calculateDelta Optimizing modeling delta NFO de unioldenburg dol config impl LogFileFacadelmpl writeLogMessage Writing the commit message to log file NFO de unioldenburg kotlett impl GMoVerSToKotelettServerAdapterImpl saveVersion The model Version is successfully saved into the repository Abbildung 20 1 Stacktrace des Fehlers Kapitel 21 Fazit Die fehlgeschlagenen Tests in Kapitel 18 zeigen dass das Produkt noch nicht f r den produktiven Einsatz in der Softwareentwicklung bereit ist Auch wurde die Usability des Produktes im Rahmen dieses Projektes nicht hoch priorisiert wie in Abschnitt 1 3 beschrieben Die erfolgreich du
182. ere Diagramme gleichzeitig jedes in einem eigenen Editor ge ffnet sein Die nderungen eines Anwenders in einem Diagramm werden in Echtzeit an alle anderen Clients bertragen So werden s mtliche nderungen von allen Anwendern sofort wahrgenommen Die Zeichentools f r Diagrammelemente Klassen Assoziationen etc sowie Bearbeitungstools Auswahl Zoom etc befinden sich in dem Me n direkt rechts neben dem Editor In Abbildung sind hier nur einige Bearbeitungs und Zeichentools exemplarisch abgebildet In der Spalte am rechten Rand ist Platz f r eine einfache Anwenderver waltung Wie diese aussehen soll ist aber noch unklar Wahrscheinlich wird sie sich auf eine Auflistung aller momentan im System angemeldeten Anwen der und eventuell ihnen zugeordneten Farben zur nderungsverfolgung im Diagramm beschr nken Da voraussichtlich GEF als Framework verwendet wird wird die Anwenderverwaltung sich nicht ohne einen erheblichen Mehr aufwand bei der Implementierung in eine Spalte mit den Modellierungstools bringen lassen 1 7 2 Dokumentation Die Dokumentation f r dieses Projekt wird die folgenden Dokumente bein halten e Ein Endbericht welcher das Produkt und die dazugeh rigen Anforde rungen Architektur Implementierung und Evaluation dokumentiert e Ein Benutzerhandbuch welches aus Anwendersicht den Umgang mit dem Produkt dokumentiert e Ein Installationshandbuch welches die Installation und Einrichtung des Produkt
183. erl Abbildung 7 3 Verfeinerte Architektur Wie bereits in Abschnitt 7 3 angedeutet k nnen bereits auf dieser Gra nularit tsebene des Architekturentwurfs Unterfunktionalit ten aus den Haupt funktionalit ten abgeleitet werden Dies ist in Abbildung 7 3 dargestellt Die Farbgebung zur Verdeutlichung von zusammengeh rigen Modulen wel che der gleichen Hauptfunktionalit t dienen vgl wird hier beibehalten Die wesentlichen nderungen der verfeinerten Architektur in Abbildung 7 3 sind die Aufteilung des Clients und des Fremdsystems DOL SA Der Client wurde zur sauberen Trennung von Daten und Anzeige in GUI und Modell aufgeteilt DOLSA wurde in DOL Services und DOL App lication aufgeteilt wobei die DOL Services von Client und Server verwendet werden und zustandslos sind Die DOL Application wird nur vom Server verwendet und persistiert Modelle und deren Versionen Desweiteren k nnen die Hauptfunktionalit tsmodule bspw Modellie rung von Klassendiagrammen in der Komponente Client weiter unterteilt werden In der GUI Komponente des Clients werden getrennte Module zur Anzeige und zur Verarbeitung von Nutzerinteraktionen sowohl f r Klassen 68 KAPITEL 7 KONZEPTSICHT diagramme Versionen als auch Modellauswahl ben tigt Die Kommunikation zwischen Client und Server besteht aus dem bidirek tionalen Senden und Empfangen von Deltas was zwei Modulen mit hnlichen aber doch unterschiedlichen
184. ersions of a covered work in that User Product from a modified version of its Corresponding Source The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made If you convey an object code work under this section in or with or specifically for use in a User Product and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term regardless of how the transaction is characterized the Corresponding Source conveyed under this section must be accompanied by the Installation Information But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product for example the work has been installed in ROM The requirement to provide Installation Information does not include a requirement to continue to provide support service warranty or updates for work that has been modified or installed by the recipient or for the User Product in which it has been modified or installed Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network Corresponding Source conveyed and Installation Information pro
185. es Klassenmethode mit Parameter vom Datentyp aus dem Modell ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Der Name der Klasse wurde zu myClass ge ndert 3 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello parameter myClass Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 20 Klassenmethode mit zwei Parametern Dieser Test deckt das Erstellen eines Klassenmethode mit zwei Parametern ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist 210 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello parameterl Integer parameter Integer Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 7 Tests f r Abstrakte Klassen Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Abstrakte Klas
186. es regelm fig manuell durchf hren insbesondere auch da technische Ausf lle ebenfalls daf r sorgen k nnten dass ein Anwender von einem Modell abgemeldet wird Um Datenverlust zu vermeiden soll der letzte Stand also immer als neue Version gespeichert werden IV FA7 Das System muss dem Anwender erm glichen auf fr here Versionen des Modells zur ckzugreifen Die Anwender m ssen eine beliebige Version eines Modells ausw hlen und ffnen k nnen Diese Version wird dann f r alle Anwender ge ff net die an dem Modell arbeiten Der davor letzte Stand des Modells wird dabei mit dem Stand der geladenen Version berschrieben AI le nderungen die zwischen der geladenen Version und dem letzten Stand des Modells durchgef hrt wurden werden damit verworfen Der artige Zwischenversionen k nnen aber wiederhergestellt werden indem eine entsprechende Version geladen wird 3 4 2 Nichtfunktionale Anforderungen IV NFA1 Das System muss zur Modellversionierung das Modellversio nierungssystem GMoVerS verwenden K W 14 Eine wesentliche Anforderung des Auftraggebers ist es dass zur Ver sionierung GMoVerS verwendet wird Kapitel 4 Wunsch Kriterien Die in diesem Kapitel vorgestellten Anforderungen sind im Rahmen des Pro jektes durchaus w nschenswert allerdings aktuell nicht fest eingeplant Falls die Bearbeitung der geplanten Features unter den Muss Kriterien schneller als geplant verl uft und noch Zeit brig bleibt k nnen Features a
187. ests f r die Modellverwaltung Die Tests in diesem Abschnitt decken den Funktionsumfang der Modellver waltung ab 22 1 1 Modellerstellung Dieser Test deckt die Erstellung und das ffnen eines neuen Modells ab Test 1 Oben im Men den Men eintrag File gt New Model anklicken 2 Im Popup Fenster den Namen des neuen Modells eintragen und auf Ok klicken 3 Oben im Men den Men eintrag File gt Open Model anklicken 173 174 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 4 Das Listenelement des neuen Modells anklicken und auf klicken Erwartetes Ergebnis 1 Es ist das neu erstellte Modell ge ffnet und links in der ModelTreeView angezeigt 2 Es ist ein Editor des ersten Diagramms des neuen Modells ge ffnet 22 1 2 Modell ffnen Dieser Test deckt das ffnen eines Modells ab Test 1 Oben im Men den Men eintrag File gt Open Model anklicken 2 Das Listenelement des neuen Modells anklicken und auf Ok klicken Erwartetes Ergebnis 1 Es ist das ge ffnete Modell links in der ModelTreeView angezeigt 2 Es ist ein Editor des ersten Diagramms des ge ffneten Modells ge ffnet 22 1 3 Modell schlie en Dieser Test deckt das Schlie en eines Modells ab Vorbedingung 1 Es wurde ein Modell ge ffnet Test 1 Links in der TreeView auf das Modell oberstes Element rechtsklicken 2 Close Model anklicken Erwartetes Ergebnis 1 Die ModelTreeView
188. et Gebaut wird in einem lokalen Abbild des Projekt Git Aus den Quelldateien zusammen mit den in den Manifest Dateien enthaltenen Abh ngigkeiten werden die Eclipse Plugin Projekte compiliert Detaillierte Konfigurationen sind in den pom xm1 Dateien in den Projekten enthalten Ben tigte dritte Eclipse Plugins werden direkt aus der Update Site f r Eclipse Kepler geladen Kotelett kann aus dem Projekt Ordner de uniol pgktltt gef mittels mvn clean build gebaut werden Es werden der Client und der Server ge baut zus tzlich werden die Tests ausgef hrt Die Client Produkte befinden sich dann in de uniol pgktltt gef client rcp target products es gibt ein ZIP Archiv pro Betriebssystem bzw Architektur Der gebaute Server befindet sich in de uniol pgktltt gef client rcp target de uniol pgktltt server 1 0 0 SNAPSHOT jar die ben tigten Bibliotheken sind in de uniol pgktltt gef client rcp target dependency zus tzlich sind sie in von de uniol pgktltt shared target de uniol pgktltt shared 1 0 0 SNAPSHOT jar enthalten In den folgenden Abschnitten wird der Buildprozess detaillierter be schrieben 117 118 KAPITEL 11 BAUEN VON KOTELETT Jenkins Git push oo Git fetch Fehler ee automatisches packen testen Test Result Zip mit lauff higem Produkt Abbildung 11 1 Grobe Darstellung des Build Prozess 11 1 BUILD DES CLIENT 119 11 1 Build des Client Die gebau
189. etUserId this oldUserId kEnum get lastChangingUser Override public void execute newKLiteral model createKLiteral newKLiteral set_name name kEnum add_literal newKLiteral kEnum set lastChangingUser newUserId newKLiteral set lastChangingUser newUserId d I D 16 2 DETAILLIERTES BEISPIEL ENUMERATIONEN 139 33 34 35 Override 36 public void redo 37 InternalVertex newKLiteral setId 0 38 InternalGraph model addVertex newKLiteral 39 kEnum add literal newKLiteral 40 kEnum set lastChangingUser newUserId 41 newKLiteral set lastChangingUser newUserlId 42 43 Override 44 public void 45 kEnum remove_literal newKLiteral 46 kEnum set lastChangingUser oldUserId AT 48 e RenameKLiteralCommand Dieser Command ist f r das Umbenennen eines Literals zust ndig In der execute Methode wird der Name neu gesetzt und bei undo der alte Name wiederhergestellt 14 public class RenameLiteralCommand extends AbstractModelCommand 15 16 private KLiteral literal 17 private String newName 18 private String oldName 19 private KEnum kEnum 20 String newUserId oldUserId oldKEnumUserId 21 22 public RenameLiteralCommand KLiteral literal String newName 23 super Rename literal to newName literal 24 this literal literal 25 this newName
190. etes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird kein Pfeil am Startpunkt der Komposition angezeigt 22 18 17 Sichtbarkeit des Endpunktes einer Komposition ak tivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Endpunktes einer Komposition ab Dieser Test ist generisch dokumentiert da das Kreuzpro dukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Komposition wurde selektiert 324 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Rechtsklick auf die Komposition 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird ein Pfeil am Endpunkt der Komposition angezeigt 22 18 18 Sichtbarkeit des Endpunktes einer Komposition de aktivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Endpunktes einer Komposition ab Dieser Test ist generisch dokumentiert da das Kreuzpro dukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Sichtbarkeit des Endpunktes der Komposition wurde aktiviert 4 Die Komposition wurde selektiert Test 1 Rechtsklick auf die Komposition 2 Klick auf Toggle source
191. ezeigt 22 12 26 Interfacemethode mit zwei Parametern Dieser Test deckt das Erstellen einer Interfacemethode mit zwei Parametern ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist 272 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello parameterl Integer parameter Integer Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 13 Tests f r Enumerationen Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Enumerationen ab 22 13 1 Enumeration erstellen Dieser Test deckt das Erstellen einer Enumeration ab Test 1 Im Editor Bereich links auf Enum klicken 2 Im Editor Bereich in der Zeichenfl che klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Enumeration angezeigt 2 Links in der ModelTreeView wird die neue Enumeration im firstDia gram angezeigt 22 13 2 Enumeration erstellen mit Gr enangabe Dieser Test deckt das Erstellen einer Enumeration mit Gr enangabe ab 22 13 TESTS F R ENUMERATIONEN 273 Test 1 Im Editor Bereich links auf Enu
192. ezeigt 22 6 21 Klassenmethode mit Parameter vom String Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode mit Parameter vom String Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello parameter String Void eingeben 3 Enter dr cken 22 6 TESTS F R KLASSENMETHODEN 207 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 22 Klassenmethode mit Parameter vom Boolean Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode mit Parameter vom Boolean Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello parameter Boolean Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 23 Klassenmethode mit Parameter vom Float Primitiv Typ Dieser Test deckt d
193. ezeigt 22 11 3 Interface Attribut mit String Primitiv Typ Dieser Test deckt das Erstellen eines Interface Attributes vom Void Primitiv Typ ab 248 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello String eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 4 Interface Attribut mit Boolean Primitiv Typ Dieser Test deckt das Erstellen eines Interface Attributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Boolean eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 5 Interface Attribut mit Float Primitiv Typ Dieser Test deckt das Erstellen eines Interface Attributes vom Void Primitiv Typ ab 22 11 TESTS F R INTERFACE ATTRIBUTE 249 Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bere
194. fert eine Modelldifferenz in DOL 8 5 KRYONET 79 2 Patcher Appliziert eine Modelldifferenz in DOL zu einem Modell und liefert das ge nderte Modell zur ck 3 Tracer Erkennt und verbindet Modellelemente ber mehrere Versio nen hinweg 4 Optimizer Optimiert Modelldifferenzen in Bezug auf Redundanz 5 Adapter Schnittstelle zu externen Modellierungstools um Modelle zu im und exportieren Das DOL based Repository dient im Kontext von DOLSA zur Persistie rung von Modellen und nderungen wird jedoch im Rahmen des Projekts nicht direkt als Service verwendet werden F r das Zielsystem sind einzig die Services Calculator und Patcher rele vant Mit ihnen lassen sich die bei Modell nderung zu versendeten Modell differenzen ermitteln und auf anderen Systemen auf das Modell anwenden Somit kann mithilfe dieser zwei Services die Modellsynchronisierung zwi schen mehreren Clients und dem Server umgesetzt werden 8 4 5 DOL Application Das Subsystem DOL Application stellt letztendlich den Versionierungsser vice im Sinne der Verwaltung von Modellen und Versionen zur Verf ng Urspr nglich ist dieses Subsystem eine Orchestrierung der DOL Services um Versionierung zu erm glichen Da im Rahmen dieses Projektes zwei Ser vices der DOL Services direkt genutzt werden ist aus der DOL Application lediglich die Persistierung von Versionen und Modellen sowie deren Abruf relevant 8 5 KryoNet Zur bertragung der Daten zwischen Server und C
195. g bieten Die Modellierung ist dabei nach Absprache mit dem Auftraggebern auf Klas sendiagramme reduziert Die zweite Funktionalit t ist die Echtzeit Kollaboration Damit die Anwender zusammen an einem Diagramm arbeiten k nnen wird eine Kom ponente mit Kollaboration ben tigt Diese Komponente wird um Echtzeit erweitert damit die Anwender gleichzeitig und ohne Blockaden arbeiten k nnen Die dritte Funktionalit t ist die Modellverwaltung Diese erm glicht dem Anwender die Modelle zu erstellen zu bearbeiten oder zu l schen Die vierte Funktionalit t ist die Versionierung von Modellen Damit sollen die Modelle um eine Historie erweitert werden Dies erm glicht dem Anwender Versionen von dem Modell zu erstellen und zu lteren Versionen zur ckzukehren Als Fremdsystem wird der Projektgruppe von der ST Abteilung DOL SA zur Verf gung gestellt Dieses System soll zur Realisierung der Kollaboration Modellverwaltung und der Versionierung verwendet werden Dadurch wir der Projektgruppe ein Teil des Implementierungsaufwandes ab genommen F r DOLSA bietet das zu entwickelnde System wiederum einen Anwendungsfall in dem die entwickelten Services in der Praxis erprobt wer den k nnen 7 2 Zerteilung der Hauptfunktionalit ten Im Folgenden sollen die in Abschnitt genannten Hauptfunktionalit ten zerlegt werden um deutlich zu machen machen welche Teilaufgaben an welcher Stelle im System behandelt werden Aus der zweiten Hauptanforderun
196. g des Anforderungsdokumentes ergibt sich dass eine verteilte Architektur f r das Zielsystem ben tigt wird Zus tz lich hat der Auftraggeber einen Single Point of Truth gefordert was eine Client Server L sung ergibt Somit wird das zu entwickelnde System in eine Client und eine Server Komponente unterteilt Dar ber hinaus wird das zu entwickelnde System aus einer Eigenentwicklung und einer Anbindung des Fremdsystems DOLSA bestehen Entsprechend k nnen die Hauptfunktionalit ten auf diese drei Kompo nenten Client Server und externes System DOLSA aufgeteilt werden 7 2 1 Modellierung von Klassendiagrammen Die Modellierung von Klassendiagrammen zerf llt in zwei Teilaufgaben Die Anzeige sowie die Verarbeitung von Nutzereingaben Beide Aufgaben werden 7 3 KOMPONENTEN ZUR UMSETZUNG DER HAUPTFUNKTIONALITATEN65 auf dem Client erledigt 7 2 2 Echtzeit Kollaboration Bei der Echtzeit Kollaboration sind sowohl Client als auch Server beteiligt Der Client erstellt unter Nutzung der DOL Services Deltas der Nutzer nde rungen Er verschickt diese Deltas an der Server und empf ngt nderungen der anderen Nutzer sowie Kontrollnachrichten vom Server Die empfangenen Deltas l sst er durch den DOL Service anwenden 7 2 3 Modellverwaltung Nutzereingaben und Anzeigen der Modellauswahl werden vom Client be handelt Dazu h lt der Client das aktuelle Modell Der Server verwaltet die aktiven Modelle und die dazu geh rigen Nutzer Sollte si
197. g immer architekturkonform bleibt 1 5 3 Meilenstein Implementierung der Modellverwaltung Bis zum Ende des zweiten Implementierungsmeilensteins soll die Architektur vertikal verfeinert werden Dabei sollen vor allen der Client in der grafischen Repr sentation und Funktionalit t erweitert werden Wie bei der vertikalen Implementierung vorgesehen sollen die vorhandenen Abl ufe mit zus tzli chen Funktionalit t erweitert werden Der Fokus liegt auf den letzten beiden Teilzielen aus der Zielsetzung siehe Kapitel 1 2 Modellverwaltung und Versionierung Es sollen die fehlenden Modellelemente von Klassendiagrammen reali siert werden Die Modellverwaltung und die Versionsverwaltung sollen auf bauend auf der vorbereiteten Implementierung weiter implementiert wer den Bei ausreichend Zeit soll die Anwenderverwaltung mit der gef rbten n derungsdarstellung umgesetzt werden W hrend der Implementierung kann die Verwendung von DOLSA in ei nem Produktivsystem getestet werden Es k nnen Zugriffszeiten und Echt zeitverhalten f r die Evaluation aufgezeichnet werden Ben tigte nderun gen an DOLSA m ssen mit Dilshodbek Kuryazov abgesprochen werden was wiederum Auswirkungen auf die Architektur haben kann Die Architekturplanung soll abschlie end verfeinert werden 1 5 4 Meilenstein Abschluss Bis zum Ende der PG soll die Dokumentation f r die Abgabe vorbereitet werden Es muss die bisherige Dokumentation berpr ft und gegebene
198. gal action under this Agreement more than one year after the cause of action arose Each party waives its rights to a jury trial in any resulting litigation 360 KAPITEL 25 ECLIPSE PUBLIC LICENSE Kapitel 26 GNU General Public License Version 3 In Kotelett wird das Java Graphenlabor jGralab verwendet welches unter der GPLv3 mit einem zus tzlichen Artikel steht JGraLab The Java Graph Laboratory Copyright C 2006 2014 Institute for Software Technology University of Koblenz Landau Germany ist uni koblenz de For bug reports documentation and further information visit https github com jgralab jgralab 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 3 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 License for more details You should have received a copy of the GNU General Public License along with this program if not see lt http www gnu org licenses gt Additional permission under GNU GPL version 3 section 7 If you modify this Program or any covered work by linking or combining it with Eclipse or a modified version of that program or an Eclipse plugin containing parts
199. ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Interface erstellt 316 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Links im Editor Bereich auf Composition klicken 2 Auf die Klasse klicken 3 Auf das Interace klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition von der Klasse zum Interace angezeigt 2 Links in der ModelTreeView wird die neue Komposition unter der Klas se im firstDiagram angezeigt 22 18 4 Komposition von einer Abstrakten Klasse zu einer Abstrakten Klasse Dieser Test deckt das Erstellen einer Komposition von einer Abstrakten Klasse zu einer Abstrakten Klasse ab Vorbedingung Es wurden 2 Abstrakte Klassen erstellt Test 1 Links im Editor Bereich auf Composition klicken 2 Auf die erste Abstrakte Klasse klicken 3 Auf die zweite Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition von der ersten zur zweiten Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Komposition unter der ers ten Abstrakten Klasse im firstDiagram angezeigt 22 18 5 Komposition von einer Abstrakten Klasse zu einer Klasse Dieser Test deckt das Erstellen einer Komposition von einer Abstrakten Klasse zu einer Klasse ab 22 18 TESTS F R KOMPOSITIONEN 317 Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Klasse erste
200. ggregation unter der Klas se im firstDiagram angezeigt 22 17 3 Aggregation von einer Klasse zu einem Interface Dieser Test deckt das Erstellen einer Aggregation von einer Klasse zu einem Interface ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Interface erstellt Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf die Klasse klicken 3 Auf das Interace klicken 22 17 TESTS F R AGGREGATIONEN 303 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation von der Klasse zum Interace angezeigt 2 Links in der Model TreeView wird die neue Aggregation unter der Klas se im firstDiagram angezeigt 22 17 4 Aggregation von einer Abstrakten Klasse zu einer Abstrakten Klasse Dieser Test deckt das Erstellen einer Aggregation von einer Abstrakten Klas se zu einer Abstrakten Klasse ab Vorbedingung Es wurden 2 Abstrakte Klassen erstellt Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf die erste Abstrakte Klasse klicken 3 Auf die zweite Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation von der ersten zur zweiten Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Aggregation unter der ers ten Abstrakten Klasse im firstDiagram angezeigt 22 17 5 Aggregation von einer Abstrakten Klasse zu einer Klasse Dieser Test dec
201. gram in a commercial product offering should do so in a manner which does not create potential liability for other Contributors Therefore if Contributor includes the Program in a commercial product offering such Contributor Commercial Contributor hereby agrees to defend and indemnify every other Contributor Indemnified Contributor against any losses damages and costs collectively Losses arising from claims lawsuits and other legal actions brought by third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement In order to qualify an Indemnified Contributor must a promptly notify the Commercial Contributor in writing of such claim and b allow the Commercial Contributor to control and cooperate with the Commercial Contributor in the defense and any related settlement negotiations The Indemnified Contributor may participate in any such claim at its own expense For example Contributor might include the Program in a commercial product offering Product X That Contributor is then a Commercial Contributor If that Commercial Contributor then makes performance claims or offers warranties related to Product X those performance cl
202. gram und w hlt Revert HEAD to this version 3 Der andere Nutzer stimmt dem Revert zu Erwartetes Ergebnis 1 Die nderung in HEAD gegen ber der zweiten Version verschwindet und ist gleich Version zwei 22 20 11 Version nicht zur cksetzen wenn nicht alle Mitbe nutzer zugestimmt haben Dieser Test stellt sicher dass ein Mehrbenutzermodell nur bei einstimmiger Zustimmung auf eine fr here Version zur ckgesetzt werden kann 22 20 TESTS F R KOLLABORATION 345 Vorbedingung 1 Es wurde ein Modell geladen 2 Zu diesem Modell ist genau ein Editor ge ffnet 3 Im diesem Modell befinden sich zwei Benutzer 4 Vom Model ist eine zweite Version gespeichert 5 Gegen ber der zweiten Version enth lt HEAD eine nderung Test 1 Der Nutzer w hlt die zweite Version aus der Combobox aus 2 Der Nutzer rechtsklickt auf ClassDiagram und w hlt Revert HEAD to this version 3 Der andere Nutzer lehnt den Revert ab Erwartetes Ergebnis 1 Die nderung in HEAD gegen ber der zweiten Version bleibt erhalten 2 Beide Benutzer erhalten eine Nachricht dass der Revert abgelehnt wurde 346 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Teil VI Softwarelizenzen 347 349 In diesem Teil werden die Software Lizenzen der im Projekt verwendeten Bibliotheken aufgelistet Dies ist notwendig weil alle Lizenzen fordern eine Kopie der Lizenz mit dem Produkt auszuliefern 350 Kapitel 23 Apache 2 0 Lizenz
203. gswerkzeug zu erzie len ist eine Modellversionierung notwendig Diese synchronisiert die n derungen zwischen den einzelnen Anwendern Mikroversionierung und er laubt den Anwendern auf fr here Versionen zur ckzugreifen Makroversio nierung Die Softwaretechnik Abteilung der Universit t Oldenburg ST Abteilung forscht aktuell unter dem Namen DOLSA Delta Operations Language with Services and Applications an der effizienten Versionierung von Modellen KW14 Diese Forschungsarbeit definiert die Delta Operation Language DOL als Metamodell generische Implementierung von operationsbasierten Diff Repr sentationen f r Modelle Desweiteren stellt die Softwaretechnik Ab teilung der Projektgruppe einen funktionalen Prototypen zur Verf gung welcher als Drittkomponente angebunden werden soll Diese bietet uns zwei Schnittstellen DOL Services f r die Mikroversionierung und DOL Appli cation f r die Makroversionierung Somit soll in der Projektgruppe ein kollaboratives Modellierungstool auf der Basis dieser Forschung entwickelt werden 1 2 Zielsetzung Das Ziel des Projekts ist die Entwicklung einer Anwendung zur kollabora tiven Modellierung von Klassendiagrammen unter Verwendung von DOL 1 2 ZIELSETZUNG 11 Damit dieses Ziel erreicht werden kann werden vier Teilziele definiert die das Hauptziel repr sentieren und f r dessen Realisierung notwendig sind Das erste Teilziel ist die Modellierung von Klassendiagrammen Daf r m
204. gt mit Leerzeichen 22 9 15 Abstrakte Klassenmethode mit package protection Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit package protection Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist 22 9 TESTS F R ABSTRAKTE KLASSENMETHODEN 235 Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 16 Abstrakte Klassenmethode mit privater Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit privater Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in d
205. guage for Model Difference Representation In PLODEREDER Erhard Hrsg GRUNSKE Lars Hrsg SCHNEIDER ULL Eric D Hrsg 44 Jahrestagung der Gesellschaft f r Informatik e V GI ISBN 978 8 88579 626 8 Bd 232 Stuttgart Germany Gesellschaft f r Informatik 22 26 September 2014 S 2221 2232 KURYAZOV Dilshodbek WINTER Andreas Software Enginee ring Group Publications http www se uni oldenburg de 60716 html Version 2014 MULLER Pierre Alain FONDEMENT Fr d ric BAUDRY Be noit COMBEMALE Benoit Modeling modeling modeling In Software amp Systems Modeling 11 2012 Nr 3 347 359 http dx doi org 10 1007 s10270 010 0172 x DOI 10 1007 s10270 010 0172 x ISSN 1619 1366 MCAFFER Jeff Hrsg LEMIEUX Jean Michel Hrsg ANISZ CYK Chris Hrsg Eclipse Rich Client Platform 2nd Edition Addison Wesley 2010 NULAB Inc Cacoo Online Diagram Software for Flow Chart UML and More https cacoo com Version 2014 Abruf 2014 06 11 OBJECT MANAGMENT GROUP Unified Modelung Lanugage OMG UML Superstructure Version 2 4 1 www omg org spec UML 2 4 1 Superstructure PDF Version 2011 Abruf 2014 06 11 ORACLE CORPORATION Java Compiler Compiler JavaCC The Java Parser Generator https java net projects Version 2014 Abruf 2015 03 16 POHL K Requirements Engineering Fundamentals A Study Guide for the Certified Professional
206. hen von dem Knoten aufgebaut Die Kinder des Knoten sind seine Kanten zu anderen Knoten dabei wird aber nicht betrachtet ob sich die Kanten in dem gleichen Diagramm befinden welches das Root Parent dieses Zweiges in der TreeView darstellt Diese berpr fung kann leider auch nicht ohne gro e nderungen eingef gt werden Die TreeView wird mit einem ContentProvider aufgebaut Dieser nimmt das Modell und erzeugt daraus die eigentliche TreeView mit den einzelnen TreeView Elementen Mit den TreeView Elementen kann man in beide Rich tungen navigieren Man kann von jedem Element auf die Eltern und die Kin der zugreifen Dieser kennt auch immer sein dazugeh riges ModellElement aus welchem er erzeugt wurde W hrend der Aufbau des ContentProviders ist der Zugriff auf die Eltern und die Kinder nicht m glich Denn der ContenProvider merkt sich nicht welches das Vorg ngerelement war Somit kann von dem Knoten aus nicht sein TreeView Parent beim Aufbau der TreeView ermittelt werden Es fehlt der Zugriff auf die TreeView Elemente Direkt auf dem Modell kann dies nicht bestimmt werden da ein Knoten sich in mehreren Digrammen befinden kann Um dieses Problem zu l sen m sste der Aufbau der TreeView unter den Diagramm Knoten von den Modell Repr sentationen auf Graphische Repr sentationen umgeschrieben werden Dabei w rden dort bei Aufbau keine Knoten sondern BoundingBoxen vorliegen und anstatt Kanten Gra phicalEdges Diese haben eine 1 zu 1 Ver
207. hitektur P5 Fehlererkennung Dokumentation und Wiederherstellung P5 1 Diagnose P5 1 1 Syntaktische v llig verhandelbar Einfluss auf den Client Pr fung der Nut zereingaben P5 1 2 L sung von eingeschr nkt verhan Einfluss auf Synchro Synchronisationskon delbar nisation flikten 60 Mehrere verteilte Modelle im System In dem System werden viele verschiedene Modelle verwendet Weiterhin sind die Benutzer des Systems im System verteilt in Verbindung mit der zwingenden Implementierung eines Metamodells auf jedem Client ergibt das auch eine technischer Verteilung des Systems Im System soll zwin gend DOL verwendet werden Daher muss die Wahrung der Konsistenz und Widerspruchsfreiheit der verschieden Modelle in der Architektur be r cksichtigt werden Eine Modellverwaltung ist zwingende Anforderung des Auftraggebers Diese muss in der verteilten Architektur aufgespalten werden beeinflussende Faktoren e 13 3 3 Vorgabe von DOLSAs DOL zu Synchronisation e 13 3 5 Vorgabe von DOLSAs DOL zu Modellverwaltung e 4 2 1 Vorgabe einer Metamodellimplementierung auf allen Cli ents e 15 4 2 Vorgabe eines Single Point of Truth e P1 3 Zwingende Versionierung von UML Modellen e P1 5 Zwingende Realisierung einer Modellverwaltung e P1 6 Die vorgegeben F higkeit des Systems mit mehreren Model len umgehen zu k nnen L sung Die Durchf hrung des Zugriffs auf und die Anzeige
208. hlen mehrerer Abstrakte Klassen ab Vorbedingung 1 Es wurden zwei Abstrakte Klassen erstellt 212 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich oben links von den beiden Abstrakte Klassen klicken und gedr ckt halten 2 Die Maus nach unten rechts ziehen bis die Auswahlanzeige beide Ele mente komplett umfasst 3 Maustaste loslassen Erwartetes Ergebnis 1 Im Editor Bereich werden die beiden ausgew hlte Abstrakte Klasse umrandet angezeigt 22 7 5 Abstrakte Klasse umbenennen Dieser Test deckt das Umbenennen einer Abstrakten Klasse ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich den Namen der ausgew hlten Abstrakte Klasse ankli cken 2 Im Eingabefeld den neuen Namen MyTestClass eingeben 3 Im Editor Bereich auf ein beliebigen Punkt klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name der Ab strakte Klasse angezeigt 2 Links in der ModelTreeView wird der neue Name der Abstrakte Klasse angezeigt 22 7 6 Abstrakte Klasse umbenennen Best tigung mit En ter Dieser Test deckt das Umbenennen einer Abstrakten Klasse ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 22 7 TESTS F R ABSTRAKTE KLASSEN 213 Test 1 Im Editor Bereich den Namen der ausgew hlten Abstrakte Klasse ankli cken 2 Im Eingabefeld den neuen Namen MyTestClass eingeben
209. hliches Ergebnis 1 Das Sichtbarkeitssymbol wird als Beginn des Namens interpretiert 2 Der Name des Rollenbezeichners lautet hallo 18 3 BEARBEITEN DES QUELL ROLLENBEZEICHNERS AN ASSOZIATIONEN MIT PROTECTED 18 3 Bearbeiten des Quell Rollenbezeichners an As soziationen mit Protected Sichtbarkeit mit Leerzeichen Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Public Sichtbarkeit ab Dieser Test wurde aufgrund des Fehlers beim Parsen der Sichtbarkeit bei Klassenattributen Abschnitt 18 1 durchgef hrt Dieser Fehler tritt auch bei Ziel Rollenbezeichnern auf Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der ModelTreeView nicht angezeigt Tats chliches Ergebnis 1 Das Sichtbarkeitssymbol wird als Beginn des Namens interpretiert 2 Der Name des Rollenbezeichners lautet hallo 18 4 Undo der Erstellung einer Generalisierung Dieser Test deckt das Undo der Erstellung einer Generalisierung von einer Klasse zu einer Klasse ab 1
210. hnische Unterst tzung zur Umsetzung des kollaborativen Mo dellierungwerkzeugs stellt die ST Abteilung zwei Services aus der DOLSA Arbeit der PG zu Verf gung DOL Service wird f r die bersetzung der nderungen in eine ein heitliche Syntax sowie zur Anwendung dieser nderungen auf das Modell verwendet Versioning speichert die Modelle mit den dazugeh rige Versionen und erm glicht Interaktion mit diesen 1 5 Meilensteine e Planung bis Ende November Metamodell f r Klassendiagramme Anforderungskatalog des Produktes Zielvereinbarung Vision 2 0 der PG Abstimmung der Funktionalit t mit DOLSA Architektur des Produktes Fertige Dokumentation der Planung e Implementierung der kollaborativen Modellierung bis 16 Januar mit zwei Wochen Weihnachtsferien Horizontale Realisierung Realisierung der Client Server Architektur Realisierung der Klassendiagramme Realisierung der Synchronisation Verwendung von DOLSA e Implementierung der Modellverwaltung bis Ende Februar Vertikale Erweiterung Realisierung der Modellverwaltung Realisierung der Anwenderverwaltung Realisierung der Versionierung Evaluation von DOLSA e Abschluss bis Ende M rz 1 5 MEILENSTEINE 15 Vollst ndige Dokumentation der PG Erstellung der Abschlusspr sentation der PG Die verbleibende Zeit 5 5 Monate wird in vier Meilensteine eingeteilt Dies ist m glich da die verbleibende Zei
211. hode mit default Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode mit protected Sichtbarkeit in der Abstrakten Klasse angezeigt 22 9 8 Abstrakte Klassenmethode mit public Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit public Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist 22 9 TESTS F R ABSTRAKTE KLASSENMETHODEN 231 Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 9 Abstrakte Klassenmethode mit protected Sichtbar keit Dieser Test deckt das Erstellen eines Abstrakte K
212. iately publish on each copy an appropriate copyright notice keep intact all notices stating that this License and any non permissive terms added in accord with section 7 apply to the code keep intact all notices of the absence of any warranty and give all recipients a copy of this License along with the Program You may charge any price or no price for each copy that you convey and you may offer support or warranty protection for a fee 5 Conveying Modified Source Versions You may convey a work based on the Program or the modifications to produce it from the Program in the form of source code under the terms of section 4 provided that you also meet all of these conditions a The work must carry prominent notices stating that you modified it and giving a relevant date b The work must carry prominent notices stating that it is released under this License and any conditions added under section K This requirement modifies the requirement in section 4 to keep intact all notices c You must license the entire work as a whole under this License to anyone who comes into possession of a copy This License will therefore apply along with any applicable section 7 additional terms to the whole of the work and all its parts regardless of how they are packaged This License gives no permission to license the work in any other way but it does not invalidate such permission if you have separately received it d If the work has
213. ich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Float eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 6 Interface Attribut mit UnlimitedNatural Primitiv Typ Dieser Test deckt das Erstellen eines Interface Attributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello UnlimitedNatural eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 250 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 11 7 Interface Attribut mit default Sichtbarkeit Dieser Test deckt das Erstellen eines Interface Attributes mit default Sicht barkeit ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der Model TreeView w
214. ich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello DefaultClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 18 Interfacemethode mit ung ltigem Datentyp Dieser Test deckt das Erstellen einer Interfacemethode mit ung ltigem Da tentyp ab 22 12 TESTS F R INTERFACEMETHODEN 267 Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello NonExistantClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Eine Fehlermeldung erscheint mit der Meldung The current model does not contain a type with the requested name NonExistantClass 22 12 19 Interfacemethode l schen Dieser Test deckt das L schen einer Interfacemethode ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Entfernen dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Interfacemethode nicht mehr angezeigt 2 Links in der ModelTreeView wird die Interfacemethode in des Interfa ces nicht angezeigt 22 12
215. icherge stellt werden dass der Kotelett Client auf allen Systemen unterst tzt wird 131 132 KAPITEL 15 UPDATES UND ZUK NFTIGE NUTZUNG Kapitel 16 Erweiterungsm glichkeiten In diesem Abschnitt wird vorgestellt wie sich das Produkt erweitern l sst und an welchen Stellen daf r Hand angelegt werden muss In Abschnitt wird beschrieben wie sich ein neues Modellelement in das Produkt einf gen l sst Die Erweiterung um weitere Diagrammtypen ist erst m glich wenn das Produkt mehrere Diagramme pro Modell vollst ndig unterst tzt Zu einem groben berblick zu GEF siehe Abschnitt 8 2 F r Details muss hier auf Literatur z B RWC11 verwiesen werden Neben dem Metamodell muss nur die GUI des Clients erweitert werden Es m ssen GEF Edit Parts zur Anzeige sowie GEF Edit Policies und GEF Commands zum Bearbeiten der neuen Diagrammelemente erstellt werden Zus tzlich m ssen die ClassDiagramEditPartFacory die Toolbar des Edi tors und die Baumansicht ModelTreeView erweitert werden 16 1 Beispiel UML Notizen Im Folgenden soll die Erweiterbarkeit anhand eines Beispiels beschrieben werden Zu dem bestehenden Metamodell soll ein UML Notzelement hin zugef gt werden das an Klassen Interfaces und Enumerationen angef gt werden kann 16 1 1 Erweiterung des Metamodells Zun chst wird das Metamodell um eine Klasse KNote erweitert wie in Abbil dung 16 1 angegeben Notizen sind Knoten im Modell weshalb KNote von KNode e
216. ies RWCIT1 Ecl14 installieren ComponentEditPolicy die einen Delete Command erzeugt hier f r kann die GenericDeleteCommandFactory benutzt werden DirectEditPolicy die einen Command zum ndern des Notiz Texts zur ckgibt GrahicalNodeEditPolicy bei der GetConnectionCreateCommand berschrieben wird um einen Command zu erzeugen um eine KNoteConnection zu erstellen 16 1 BEISPIEL UML NOTIZEN 135 F r die KNoteConnection muss entsprechend ein GraphicalConnectionEditPart implementiert werden Folgende Me thoden m ssen hier berschrieben werden e createFigure Muss ein Draw2D PolylineConnection Objekt zu r ckgeben e createEditPolicies sollte folgende Edit Policies installieren ConnectionEditPolicy die einen Delete Command erzeugt ConnectionEndpointEditPolicy und KBendpointEditPolicy von denen keine Unterklasen erstellt werden m ssen Folgende Commands m ssen implementiert werden Dort m ssen jeweils die Methoden execute undo und ggf redo berschrieben werden e CreateKNoteCommand Hier kann von CreateNodeCommand geerbt werden sofern KNote von KNode erbt e ChangeKNoteTextCommand e CreateKNoteConnectionCommand e ChangeKNoteConnectionCommand F r Delete Commands existiert eine generische Implementierung die be nutzt werden kann Details und Codebeispiele finden sich im n chsten Ab schnitt Existierende Klassen die benutzt werden k nnen sind im Wartungs
217. ilable for as long as needed to satisfy these requirements e Convey the object code using peer to peer transmission provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d A separable portion of the object code whose source code is excluded from the Corresponding Source as a System Library need not be included in conveying the object code work A User Product is either 1 a consumer product which means tangible personal property which is normally used for personal family or household purposes or 2 anything designed or sold for incorporation into a dwelling In determining whether product is a consumer product doubtful cases shall be resolved in favor of coverage For particular product received by a particular user normally used refers to a typical or common use of that class of product regardless of the status of the particular user or of the way in which the particular user actually uses or expects or is expected to use the product A product is consumer product regardless of whether the product has substantial commercial industrial or non consumer uses unless such uses represent the only significant mode of use of the product Installation Information for a User Product means any methods procedures authorization keys or other information required to install and execute modified v
218. im Folgenden farbig her vorgehoben 26 else if layoutObject instanceof KMethod 27 result new KMethodEditPart 28 else if layoutObject instanceof KLiteral 29 result new KLiteralEditPart 30 else 31 throw new IllegalArgumentException Unkown Layoutobject layoutObject getClass 32 ER if modelObject instanceof Diagram 34 result new KClassDiagramEditPart 35 else if modelObject instanceof KClassifier 36 result new KClassifierEditPart 37 else if modelObject instanceof KEnum 38 result new KEnumEditPart 39 else if modelObject instanceof KAssociation 40 result new AssociationEditPart e F r die Baumansicht muss der ViewContentProvider erweitert wer den um Enumerationen und Literale anzuzeigen in den Methoden getChildren getParent und hasChildren muss jeweils ein Eintrag hinzugef gt werden 46 Override 47 public ObjectObject getChildren Object parentElement 16 2 48 49 50 51 52 53 54 55 56 57 58 59 60 61 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 151 DETAILLIERTES BEISPIEL ENUMERATIONEN 147 Modell Diagramme DiagrammA Anzegeigte Elemente DiagrammB Angezeigte Elemente Modellelemente Vorhandenen Elemente Model2 Diagramme Modellelemente List Object list new ArrayList lt gt
219. interactive user interfaces each must display Appropriate Legal Notices however if the Program has interactive interfaces that do not display Appropriate Legal Notices your work need not make them do so A compilation of a covered work with other separate and independent works which are not by their nature extensions of the covered work and which are not combined with it such as to form a larger program in or on volume of a storage or distribution medium is called an aggregate if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation s users beyond what the individual works permit Inclusion of covered work in an aggregate does not cause this License to apply to the other parts of the aggregate 6 Conveying Non Source Forms You may convey a covered work in object code form under the terms of sections 4 and 5 provided that you also convey the machine readable Corresponding Source under the terms of this License in one of these ways a Convey the object code in or embodied in a physical product including a physical distribution medium accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange b Convey the object code in or embodied in a physical product including a physical distribution medium accompanied by a written offer valid for at least three years and valid for as long as you offer
220. interliegende Modell ver ndern Dabei kann es grunds tzlich mehrere Diagramme zu einem Modell geben wobei zwei oder mehr Diagram me auch die gleichen Modellelemente anzeigen k nnen Wenn diese nun ver ndert werden muss sich diese nderung auf s mtliche Diagramme auswirken in denen das Modellelement dargestellt wird Dies hat zur Folge dass alle Anwender die am selben Modell arbeiten ber s mt liche Modell nderungen informiert werden m ssen auch wenn sie ein ganz anderes Diagramm bearbeiten da es eventuell auch Auswirkun gen auf ihr Diagramm haben kann Anwenderverfolgbarkeit I FA2 Das System muss Diagramm nderungen die von anderen 34 4 5 KAPITEL 3 MUSS KRITERIEN Anwendern durch Ver nderung des Modells ausgel st wur den gesondert darstellen um eine visuelle Trennung der eige nen nderungen von denen anderer Teilnehmer zu erhalten Im Rahmen der kollaborativen Bearbeitung ist es erforderlich dass ein Anwender erkennen kann welche nderungen von Anderen durchge f hrt wurden um den berblick zu behalten Dem Anwender muss dies in irgendeiner Form ersichtlich gemacht werden z B indem die betrof fenen Diagrammelemente in einer anderen Farbe dargestellt werden Da Diagramm nderungen immer durch eine nderung des Modells ausgel st werden schlie t dies sowohl den Fall ein dass zwei Anwender das gleiche Diagramm bearbeiten als auch den Fall dass unterschied liche Diagr
221. ion klicken 2 Auf das Interface klicken 3 Auf das Enum klicken 288 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird keine Generalisierung vom Interface zum Enum angezeigt 2 Links in der ModelTreeView wird keine neue Generalisierung unter dem Interface im firstDiagram angezeigt 22 16 Tests f r Assoziationen Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Assoziationen ab 22 16 1 Assoziation von einer Klasse zu einer Klasse Dieser Test deckt das Erstellen einer Assoziation von einer Klasse zu einer Klasse ab Vorbedingung 1 Es wurden 2 Klassen erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf die erste Klasse klicken 3 Auf die zweite Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation von der ersten zur zweiten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Assoziation unter der ersten Klasse im firstDiagram angezeigt 22 16 2 Assoziation von einer Klasse zu einer Abstrakten Klasse Dieser Test deckt das Erstellen einer Assoziation von einer Klasse zu einer Abstrakten Klasse ab 22 16 TESTS F R ASSOZIATIONEN 289 Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf die Klasse klic
222. ird das neue Interface Attribut mit pro tected Sichtbarkeit im Interface angezeigt 22 11 8 Interface Attribut mit public Sichtbarkeit Dieser Test deckt das Erstellen eines Interface Attributes mit public Sicht barkeit ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 TESTS F R INTERFACE ATTRIBUTE 251 22 11 9 Interface Attribut mit protected Sichtbarkeit Dieser Test deckt das Erstellen eines Interface Attributes mit protected Sichtbarkeit ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 10 Interface Attribut mit package protection Sichtbar keit Dieser Test deckt das Erstellen eines Interface Attributes mit package protection Sichtbarkeit ab Vorbedingung 1 Es wurde eine Interfac
223. irectEditRequest request return new RenameLiteralCommand getLiteral String request getCellEditor getValue Override protected void refreshVisuals super refreshVisuals Label label Label this getFigure label setText this getLiteral get name 146 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN 16 2 4 Andere Anpassungen im Code Im Folgenden werden die weiteren Anpassungen beschrieben die n tig sind um Enumerationen in den Client zu integrieren Dies sind u a Erweiterungen in der Toolbar des Editors und der Baumansicht e Im Editor ClassDiagramEditor java muss in der Methode createAndFillPaletteDrawer ein Eintrag hinzugef gt werden um Enumerationen erstellen zu k nnen 98 tool new CreationToolEntry Enum Enumeration new ClassDiagramFactory ModelElementType ENUM loadImage Enuml16 imageSufix 99 loadImage Enum32 imageSufix F r die Icons m ssen Bilder Enum16 png Enum16b png Enum160 png in Gr e 16 x 16 in def Farben Schwarz Blau und Orange sowie Enum32 png Enum32b png Enum320 png in Gr e 32 x 32 im Pro jektordner de uniol pgktltt gef client icons vorhanden sein e Im Enum ModelElementType java muss ein Literal f r Enumeratio nen ENUM KEnum VC hinzugef gt werden e Die Klasse ClassDiagramEditPartFactory java muss an zwei Stellen erweitert werden um Instanzen von KEnumEditPart und KLiteralEditPart zu erstellen Diese sind
224. ist gerichtet kann aber birektional genutzt werden Es ist also zu jeder Kante m glich von ihrem Zielkno ten zu ihrem Startknoten zu gelangen und umgekehrt TGraphen gen gen einem eindeutigen Graphschema dem Metamodell f r TGraphen In diesem wird festgelegt welche Typen es gibt welche Attribu te diese besitzen und wie Elemente miteinander mittels Kanten verbunden werden k nnen 8 3 2 grUML Die Modellierungssprache Graph UML grUML erlaubt das Erstellen von Metamodellen Schemata f r TGraphen mithilfe von UML Klassendia grammen Diese k nnen bspw mit dem Rational Software Architect erstellt als XMI exportiert und in JGraLab importiert werden JGraLab erstellt dann automatisch eine generische API die die Manipulation und Betrach tung des Schemas auf Programmebene erlaubt Dies kann zur Kompilier oder zur Laufzeit erfolgen Ebenso wird von JGraLab eine generische API zur 76 KAPITEL 8 VERWENDETE TECHNOLOGIEN Handhabung der Graphelemente einer Instanz des Schemas erzeugt Da die Zielvereinbarung des Projekts die Umsetzung von UML Klassendiagrammen vorsieht ist davon auszugehen dass das Metamodell im Laufe des Projekts gr tenteils unver ndert und bei kleineren nderungen nur Teile der API regeneriert werden m ssen Entsprechend wird eine zur Kompilierzeit gene rierte API verwendet 8 4 Generic Model Versioning System und Delta Operation Language Wie aus den technischen Faktoren der globalen Analyse hervorgeht soll
225. ken 3 Auf die Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation von der Klasse zur Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Assoziation unter der Klasse im firstDiagram angezeigt 22 16 3 Assoziation von einer Klasse zu einem Interface Dieser Test deckt das Erstellen einer Assoziation von einer Klasse zu einem Interface ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Klasse erstellt 3 Es wurde 1 Interface erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf die Klasse klicken 3 Auf das Interace klicken 290 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation von der Klasse zum Interace angezeigt 2 Links in der ModelTreeView wird die neue Assoziation unter der Klasse im firstDiagram angezeigt 22 16 4 Assoziation von einer Abstrakten Klasse zu einer Abstrakten Klasse Dieser Test deckt das Erstellen einer Assoziation von einer Abstrakten Klas se zu einer Abstrakten Klasse ab Vorbedingung Es wurden 2 Abstrakte Klassen erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf die erste Abstrakte Klasse klicken 3 Auf die zweite Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation von der ersten zur zweiten Ab
226. kt das Erstellen einer Aggregation von einer Abstrakten Klas se zu einer Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Klasse erstellt 304 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf die Abstrakte Klasse klicken 3 Auf die Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation von der Abstrakten Klasse zur Klasse angezeigt 2 Links in der ModelTreeView wird die neue Aggregation unter der Ab strakten Klasse im firstDiagram angezeigt 22 17 6 Aggregation von einer Abstrakten Klasse zu einem Interface Dieser Test deckt das Erstellen einer Aggregation von einer Abstrakten Klas se zu einem Interface ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Interface erstellt Test 1 Links im Editor Bereich auf Aggregation klicken 2 Auf die Abstrakte Klasse klicken 3 Auf das Interface klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Aggregation von der Abstrakten Klasse zum Interface angezeigt 2 Links in der Model frech ew wird die neue Aggregation unter der Ab strakten Klasse im firstDiagram angezeigt 22 17 7 Aggregation von einem Interface zu einem Interface Dieser Test deckt das Erstellen einer Aggregation von einem Interface zu einem Interface ab 22 17
227. kte Klassenattributel 2 2 2 22 2 215 22 9 Tests f r Abstrakte Klassenmethoden 226 22 10Tests f r Interfacesl m m mn 241 22 11 Tests f r Interface Attributel nn nn nn 246 22 12 Tests f r Interfacemethoden 2 256 22 13 Tests f r 212 22 14Tests f r Enumliteralel 277 22 15 Tests f r Generalisierungen 278 22 16 Tests f r Assoziationenl 2 2 2 2 Emm nn 288 22 17 Tests f r Aggregationen 301 22 18 Tests f r 314 22 19 Tests f r Assoziationslabels nn 327 22 20Tests f r Kollaborationl 2 2 2 2 Hmm nr nn 339 VI Softwarelizenzen 347 23 Apache 2 0 Lizenz 351 24 BSD Lizenz 355 25 Eclipse Public License 357 26 GNU General Public License Version 3 361 7 JDOM Lizenz 371 Teil I Zielvereinbarung Kapitel 1 Zielvereinbarung 1 1 Motivation UML Modelle sind essenziell f r die Planung und Entwicklung in Softwa reprojekten da sie die Kommunikation mit diversen Stakeholdern wie z B Kunden und Entwicklern vereinfachen Beim Erstellen von Modellen modelliert jeder Entwickler nach seinen eigenen Vorstellungen Diese k nnen zwischen einzelnen Mitgliedern eines Teams das an einem Modell arbeitet teilweise stark auseinandergehen Zu dem werden besonders in fr hen Phasen des Entwurfsprozesses von Software Modellelemente in
228. l 14 2 Logging auf dem Client Unter Linux werden Log Messages aus Kotelett automatisch ausgegeben solange Kotelett ber die Konsole gestartet wird Auf Windows wird ei ne Konsole ge ffnet wenn Kotelett mit dem Parameter console gestartet wird Neben den Log Messages von Kotelett gibt es noch die Log Messages des Eclipse Frameworks Diese werden standardm ig in die Datei workspace metadata log im Arbeitsverzeichnis des Clients geschrieben Wenn der Parameter consoleLog verwendet wird gegebenenfalls in Verbindung mit console werden die Eclipse Log Eintr ge auch in den Standard Output geschrieben Dar ber hinaus gibt es im Client eine Log View die die versendeten DOL Statements gesondert anzeigt Diese kann ge ffnet werden indem im Quick Access Feld oben rechts im Client Log eingegeben wird http help eclipse org luna topic org eclipse platform doc isv re erence nisc runtine options html 12 03 2015 129 130 KAPITEL 14 LOGGING Kapitel 15 Updates und zuk nftige Nutzung Das verwendete Framework GEF 3 x wird nicht mehr weiterentwickelt Ebenso wurde die verwendete Eclipse 3 x lechnologie bereits von Eclipse4 abgel st Da GEF 3 x auf der alten Technologie basiert in neueren Eclipse Versionen also nur in einem Kompabilit tsmodus genutzt werden kann und im Entwicklerteam zuvor keine Erfahrung mit Eclipse4 gemacht wurde wur de Eclipse 3 4 als Platform beibehalten Auf lange Sicht kann nicht s
229. l che wird 25 im selektierten Text feld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 22 20 Tests f r Kollaboration Die Tests in diesem Abschnitt decken die Kollaborativen Featues des Pro duktes ab 22 20 1 Laden der Userliste beim beitreten Dieser Test deckt das Aktualisieren der Userliste beim Betreten eines Models Benutzer ab 340 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Ein zweiter Nutzer ist in einem Modell Test 1 Der Nutzer tritt diesem Modell bei Erwartetes Ergebnis 1 In der Userliste werden jetzt beide Nutzer angezeigt 22 20 2 Aktualisieren der Userliste wenn ein Benutzer dem Modell beitritt Dieser Test deckt das Aktualisieren der Userliste beim Beitreten neuer Be nutzer ab Vorbedingung 1 Es wurde ein Model geladen 2 In diesem Modell ist kein Nutzer au er dem Tester Test 1 Ein zweiter Nutzer tritt dem Modell bei Erwartetes Ergebnis 1 In der Userliste werden jetzt zwei Nutzer angezeigt 22 20 3 Aktualisieren der Userliste beim Modell wechseln I Dieser Test deckt das Aktualisieren der Userliste beim Ausw hlen eines Edi tors aus einem Modell mit mehr Nutzern ab Vorbedingung 1 Es wurden zwei Modelle geladen 2 Von jedem Modell ist genau ein Editor ge ffnet 3 Im ersten Modell ist kein Nutzer au er dem Tester 4 Im zweiten Modell ist auch noch ein weiterer Nutzer 5 Der Editor de
230. l befinden Diese bergeordnete GUI wird mit SW T umgesetzt Durch die Entscheidung GEF als Framework f r den Editor zu verwenden wird die verwendung von SWT vorausgesetzt 69 KAPITEL 8 VERWENDETE TECHNOLOGIEN component Kotelett component component Client Server scomponenty component GEF JGralab Klassendiagramme component anzeigen Aktives Modell JGralab Nutzer in speichern Aktive Modelle Modellen Nutzereingaben verwalten verwalten behandeln component component mE component KryoNet KryoNet Delta verteilen Versionsliste Versionen Modellauswahl Dias verteilen anzeigen anzeigen ella versenden OH z Beeren Delta empfangen Modellliste Nutzereingaben Nutzereingaben Delta empfangen verteilen behandeln behandeln f A gt 7 component DOLSA component component DOL Service DOL Application Delta berechnen Modell speichern Version speichern Del nwenden eltacanwend Modell laden Version laden Modell erstellen Aktives Delta bereitstellen Modell l schen n Versionen auflisten Modelle auflisten Abbildung 8 1 Zuordnung der Technologien 8 1 SWT UND JFACE 71 Zur Realisierung des M
231. l erstellt muss das Sys tem diesem Anwender ein leeres Diagramm zur Bearbeitung zur Verf gung stellen Zu Beginn muss zu einem leeren Modell ein ebenfalls leeres Diagramm zur Verf gung stehen in dem Klassendiagramme gezeichnet werden k nnen Zur Erstellung von neuen Modellen und Diagrammen siehe auch Abschnitt 3 3 I FA2 Das System muss es dem Anwender erm glichen die in belle 3 1 genannten nderungen der jeweils aufgef hrten Dia 27 28 1 1 4 KAPITEL 3 MUSS KRITERIEN grammelemente durchzuf hren Die aufgef hrte Tabelle gibt zu den verschiedenen Diagrammelementen eine Aktion an Art der nde rung und ein nderungsobjekt also was in dem Fall ge ndert wird Aus der Tabelle wird somit ersichtlich welche Aktionen der Anwender auf dem Modell durchf hren kann Das System muss dem Anwender erm glichen die in genannten Anderungen an Generalisierungen im Dia gramm durchzuf hren Da f r Generalisierungen etwas andere Re geln gelten werden diese hier gesondert aufgef hrt Das System muss es dem Anwender erm glichen ein Dia grammelement auszuw hlen Die Selektion ist ein wesentliches Feature um ein Diagramm bearbei ten zu k nnen Die Selektion ist damit auch Basis f r die folgende Anforderung I FA4 1 Wenn ein Anwender ein Diagrammelement ausgew hlt hat muss das System ihm erm glichen das ausgew hlte Element zu bewegen Die Position eines Elements im Diagramm muss nach der Aus
232. lHandler ClientMessageManagement Server j T T T T changeDiagram User 1 1 startUserChange I 1 1 I eae I I getModelToChange Model gt 1 model 1 EE occu endUserChange gt makeDelta DelfaRepresentation 4 PRAET lt sendDol delta gt qp ET ee 1 Abbildung 9 7 Ablauf einer Nutzer nderung mit austauschbarem Kommu nikationsprotokoll 92 KAPITEL 9 MODULSICHT chen Um die gew nschte Funktionalit t zu erreichen m sste das normale Verhalten von GEF angepasst werden Da dies mit sehr gro em Aufwand verbunden und sehr fehleranf llig ist wurde die Umsetzung des Strategy Patterns auf dem Client verworfen 9 5 Verwaltung von Modellen Versionen und Dia grammen In diesem Abschnitt wird die Modellverwaltung beschrieben Die Modellver waltung stellt die Schnittstelle zur DOL Application dar Sie erm glicht es dem Benutzer damit Modelle und Versionen zu erstellen und auszuw hlen Diese Funktionalit t ist in und in gelb dargestellt Bei der Modellverwaltung sind in erster Linie ein Teil der View des Clients in Abbildung 9 1 als SWT bezeichnet der Presenter vom Client und Server sowie die DOL Application involviert In Abbildung 9 8 ist die GUI des Clients abgebildet Zur Modellverwaltung dienen die
233. lasse angezeigt 22 5 8 Klassenattribut mit public Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenattributes mit public Sichtbar keit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 TESTS F R KLASSENATTRIBUTE 189 22 5 9 Klassenattribut mit protected Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenattributes mit protected Sicht barkeit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 10 Klassenattribut mit package protection Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenattributes mit package protection Sichtbarkeit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefel
234. lassen die f r den Nachrichtenaustausch be nutzt werden m ssen registriert werden Diese m ssen zudem einen Default Konstruktor haben der public ist Eine weitere wichitige Utility Klasse ist GraphUtils Diese Klasse de finiert die Methoden addMissingUUIDs zum Hinzuf gen fehlender UUIDs in einem Graphen arelIsomorph die berpr ft ob zwei Graphen bis auf Reihenfolge und JGraLab IDs der Knoten und Kanten isomorph sind und clone die einen Graphen kopiert de uni pgktltt shared message Hier und in den Subpackages befinden sich die Nachrichten zur Client Server Kommunikation siehe Abschnitt 9 4 und Abschnitt 9 5 Das Packa ge de uni pgktltt shared message enth lt die Oberklassen und Inter faces f r Nachrichten Alle Nachrichten implementieren KotelettMessage Die Nachrichten die von Client zu Server geschickt werden implementie ren zus tzlich ClientToServerRequest und befinden sich im Subpackage de uni pgktltt shared message clientToServer Die Nachrichten von Server zu Client implementieren ServerToClientMessage und befinden sich im Package de uni pgktltt shared message serverToClient 13 2 Client detailliertere Struktur In diesem Abschnitt wird das Client Projekt genauer beschrieben Aus Platz gr nden beschr nkt sich diese Dokumentation auf die Klassen die f r die Weiterentwicklung und Pflege am wichtigsten sind de uniol pgktltt gef client Hier sind die Entrypoint Klassen f r den Client enthalten Die Klas
235. lassenattribut mit dem refactoredClass in der Abstrakte Klasse angezeigt 22 8 Tests f r Abstrakte Klassenattribute Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Abstrakte Klassenattributen ab 22 8 1 Abstrakte Klassenattribut mit Void Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 216 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 2 Abstrakte Klassenattribut mit Integer Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Integer eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Kla
236. lassenmethode mit protec ted Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 10 Abstrakte Klassenmethode mit package protection Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit package protection Sichtbarkeit ab 232 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der Model TreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 11 Abstrakte Klassenmethode mit privater Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrak
237. le with the aim of protecting users freedom to change the software The systematic pattern of such abuse occurs in the area of products for individuals to use which is precisely where it is most unacceptable Therefore we have designed this version of the GPL to prohibit the practice for those products If such problems arise substantially in other domains we stand ready to extend this provision to those domains in future versions of the GPL as needed to protect the freedom of users Finally every program is threatened constantly by software patents States should not allow patents to restrict development and use of software on general purpose computers but in those that do we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary To prevent this the GPL assures that patents cannot be used to render the program non free The precise terms and conditions for copying distribution and modification follow TERMS AND CONDITIONS 0 Definitions This License refers to version 3 of the GNU General Public License Copyright also means copyright like laws that apply to other kinds of works such as semiconductor masks The Program refers to any copyrightable work licensed under this License Each licensee is addressed as you Licensees and recipients may be individuals or organizations To modify a work means to copy from or adapt all or part of the work in a fashion
238. lickt auf Clear Colors 2 Der andere Nutzer stimmt der Farbl schung zu Erwartetes Ergebnis 1 Die Elemente werden wieder in wei dargestellt 22 20 9 Farbe nicht l schen wenn nicht alle Mitbenutzer zu stimmen Dieser Test stellt sicher das die Farben aus einem Mehrbenutzermodell nur bei einstimmiger Zustimmung gel scht werden Vorbedingung 1 Es wurde ein Modell geladen 2 Zu diesem Modell ist genau ein Editor ge ffnet 3 Im diesem Modell befinden sich zwei Benutzer 4 Im Model ist von jedem Benutzer ein Element erzeugt worden 344 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Der Nutzer klickt auf Clear Colors 2 Der andere Nutzer lehnt die Farbl schung ab Erwartetes Ergebnis 1 Die Elemente werden weiterhin farbig dargestellt 2 Beide Nutzer erhalten eine Nachricht dass die Farbl schung abgelehnt wurde 22 20 10 Version zur cksetzen nur wenn alle Mitbenutzer zugestimmt haben Dieser Test stellt sicher dass ein Mehrbenutzermodell nur bei einstimmiger Zustimmung auf eine fr here Version zur ckgesetzt werden kann Vorbedingung 1 Es wurde ein Modell geladen 2 Zu diesem Modell ist genau ein Editor ge ffnet 3 Im diesem Modell befinden sich zwei Benutzer 4 Vom Model ist eine zweite Version gespeichert 5 Gegen ber der zweiten Version enth lt HEAD eine nderung Test 1 Der Nutzer w hlt die zweite Version aus der Combobox aus 2 Der Nutzer rechtsklickt auf ClassDia
239. lient wird eine Techno logie ben tigt die das Netzwerk aus Java heraus benutzbar macht Kryo Net bietet die M glichkeit Javaobjekte von zur Kompilierzeit fest gelegten Klassen ber TCP oder UDP Verbindungen zu verschicken Die Serialisierung der Objekte wird automatisch gehandhabt kann aber voll st ndig oder auch nur f r einzelne Klassen ausgestauscht werden wenn dies notwendig sein sollte Die Schnittstelle f r den Programmier besteht aus mehreren Listenermethoden f r das Eintreffen eines Objekts sowie den Auf und Abbau einer Verbindung Es bietet auch die M glichkeit Remote Me thod Invocation zu verwenden Die Einfachheit in der Benutzung wird von anderen L sungen nicht erreicht auferdem haben einige Projektmitglieder bereits Erfahrung in der Verwendung von KryoNet Aus diesem Grund wird Kryonet zur Daten bertragung verwendet 80 KAPITEL 8 VERWENDETE TECHNOLOGIEN Kapitel 9 Modulsicht Die Modulsicht baut auf die vorab angefertigte Konzeptsicht siehe Kapitel auf Ausgehend von den vorgestellten Funktionalit ten und Technologien soll in diesem Kapitel die Realisierung und dabei auftretende Probleme erl utert werden Im Abschnitt 9 1 wird die Umsetzung der Architektur erl utert Im Abschnitt 9 2 werden auftretende Probleme vorgestellt und klassifi ziert Daraufhin werden in Abschnitt 9 3 und Abschnitt 9 4 L sungsans tze zur Behebung der Probleme vorgestellt Im Abschnitt 9 5 wird die Realisierung der
240. llen Dieser Test deckt das Erstellen eines Enumliterals ab Vorbedingung 1 Es wurde eine Enumeration erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Enumerationsnamen klicken 2 Im Texteingabefeld myLiteral eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Enumliteral an gezeigt 2 Links in der ModelTreeView wird das neue Enumliteral im Enum an gezeigt 22 14 2 Enumliteral umbenennen Dieser Test deckt das Umbenennen eines Enumliterals ab Vorbedingung 1 Es wurde eine Enumeration erstellt und ausgew hlt 2 Es wurde ein Enumliteral in diesem Enum erstellt 278 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Enum auf das Enumliteral klicken 2 Im Texteingabefeld newLiteralName eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name des Enum literals angezeigt 2 Links in der ModelTreeView wird der neue Name des Enumliterals im Enum angezeigt 22 14 3 Enumliteral umbenennen Dieser Test deckt das L schen eines Klassenattributes mit default Sichtbar keit ab Vorbedingung 1 Es wurde eine Enumeration erstellt und ausgew hlt 2 Es wurde ein Enumliteral in diesem Enum erstellt Test 1 Im Editor Bereich im Enum auf das Enumliteral klicken 2 Entfernen Taste dr cken Erwartetes Ergebnis 1 Im Editor Berei
241. llt Test 1 Links im Editor Bereich auf Composition klicken 2 Auf die Abstrakte Klasse klicken 3 Auf die Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition von der Abstrakten Klasse zur Klasse angezeigt 2 Links in der ModelTreeView wird die neue Komposition unter der Ab strakten Klasse im firstDiagram angezeigt 22 18 6 Komposition von einer Abstrakten Klasse zu einem Interface Dieser Test deckt das Erstellen einer Komposition von einer Abstrakten Klasse zu einem Interface ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Interface erstellt Test 1 Links im Editor Bereich auf Composition klicken 2 Auf die Abstrakte Klasse klicken 3 Auf das Interface klicken 318 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition von der Abstrakten Klasse zum Interface angezeigt 2 Links in der Model TreeView wird die neue Komposition unter der Ab strakten Klasse im firstDiagram angezeigt 22 18 7 Komposition von einem Interface zu einem Interface Dieser Test deckt das Erstellen einer Komposition von einem Interface zu einem Interface ab Vorbedingung Es wurden 2 Interfaces erstellt Test 1 Links im Editor Bereich auf Composition klicken 2 Auf das erste Interface klicken 3 Auf das zweite Interface klicken Er
242. lt Test 1 Links in der ModelTreeView rechtsklick auf die Aggregation 2 Delete Aggregation from model anklicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Aggregation nicht mehr angezeigt 2 Links in der ModelTreeView wird die gel schte Aggregation nicht mehr angezeigt 308 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 17 13 Umh ngen des Startpunktes einer Aggregation Dieser Test deckt das Umh ngen des Startpunktes einer Generalisierung ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Aggregationen zwischen diesen erstellt 3 Die Aggregation wurde selektiert Test 1 Der Startpunkt der Aggregation per Drag and Drop auf ein anderes Knoten ver ndern Erwartetes Ergebnis 1 Der Startpunkt der Aggregation wird nur dann ver ndert wenn die daraus resultierende Aggregation g ltig ist 22 17 14 Umh ngen des Endpunktes einer Aggregation Dieser Test deckt das Umh ngen des Endpunktes einer Generalisierung ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Aggregationen zwischen diesen erstellt
243. m klicken 2 Im Editor Bereich in der Zeichenfl che klicken und nach unten rechts ziehen Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Enumeration mit angezeigt 2 Die neue Enumeration f llt den Bereich vom Dr cken der Maustaste bis zum Loslassen der Maustaste 3 Links in der ModelTreeView wird die neue Enumeration im firstDia gram angezeigt 22 13 3 Enumeration ausw hlen Dieser Test deckt das Ausw hlen einer Enumeration ab Vorbedingung 1 Es wurde eine Enumeration erstellt Test 1 Im Editor Bereich die erstellte Enumeration anklicken Erwartetes Ergebnis 1 Im Editor Bereich wird die ausgew hlte Enumeration umrandet ange zeigt 22 13 4 Mehrfachauswahl von Enumerationn Dieser Test deckt das Ausw hlen mehrerer Enumerationn ab Vorbedingung 1 Es wurden zwei Enumerationn erstellt 274 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich oben links von den beiden Enumerationn klicken und gedr ckt halten 2 Die Maus nach unten rechts ziehen bis die Auswahlanzeige beide Ele mente komplett umfasst 3 Maustaste loslassen Erwartetes Ergebnis 1 Im Editor Bereich werden die beiden ausgew hlte Enumeration um randet angezeigt 22 13 5 Enumeration umbenennen Dieser Test deckt das Umbenennen einer Enumeration ab Vorbedingung 1 Es wurde eine Enumeration erstellt und ausgew hlt Test 1 Im Editor Bereich den Namen der ausgew hlten E
244. material for which you do not control copyright Those thus making or running the covered works for you must do so exclusively on your behalf under your direction and control on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you Conveying under any other circumstances is permitted solely under the conditions stated below Sublicensing is not allowed section 10 makes it unnecessary D 3 Protecting Users Legal Rights From Anti Circumvention Law No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996 or similar laws prohibiting or restricting circumvention of such measures When you convey a covered work you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work and you disclaim any intention to limit operation or modification of the work as a means of enforcing against the work s users your or third parties legal rights to forbid circumvention of technological measures 364 KAPITEL 26 GNU GENERAL PUBLIC LICENSE VERSION 3 4 Conveying Verbatim Copies You may convey verbatim copies of the Program s source code as you receive it in any medium provided that you conspicuously and appropr
245. men f gt der Be nutzer seine nderungen manuell dem Repository hinzu und er muss auch manuell eine neue Version des Repositories abrufen Beides soll vom System automatisiert geschehen so dass nderungen sofort hin zugef gt werden und dann sofort an alle anderen Bearbeiter verteilt werden Das System muss es dem Anwender erm glichen mehrere Modelle zu verwalten Anwender wollen mehrere Modelle erstellen l schen und bearbeiten k nnen da bereits verh ltnism ig kleine Soft waresysteme mehrere Modelle ben tigen Diese Anforderung ist zudem f r die Erweiterbarkeit des Systems sehr wichtig Das System muss es dem Anwender erm glichen zu fr he ren Versionen eines Modells zur ckzuspringen Anwender in der Softwareentwicklung ben tigen Versionierung um auf fr here Ver sionen zur ckzugreifen Dies kann genutzt werden um in Fehlerf llen fr here Versionen zu verwenden oder die Modellhistorie nachzuvollzie hen Die Synchronisierung aus Anforderung FA IT muss unter Ver wendung der DOL Services geschehen Der Auftraggeber will dass die DOL als Austauschformat zur Synchronisierung verwendet wird Um dies zu realisieren wird dem Team die DOL Service Kom ponente von DOLSA zur Verf gung gestellt 18 interface stclock ClockListener timeChanged ClockDisplay clock void listeners KAPITEL 1 ZIELVEREINBARUNG stclock StClock INTERVAL 100 int timeSetAt Date timeSetTo
246. mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode mit pro tected Sichtbarkeit in der Klasse angezeigt 22 6 13 Klassenmethode mit public Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Klassenmethode mit public Sichtbarkeit mit Leerzeichen ab 202 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 14 Klassenmethode mit protected Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Klassenmethode mit protected Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew
247. mited Natural Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode mit Parameter vom UnlimitedNatural Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello parameter UnlimitedNatural Void ein geben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 TESTS F R INTERFACEMETHODEN 271 22 12 25 Interfacemethode mit Parameter vom Datentyp aus dem Modell Dieser Test deckt das Erstellen einer Interfacemethode mit Parameter vom Datentyp aus dem Modell ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Der Name des Interfaces wurde zu myClass ge ndert 3 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello parameter myClass Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces ang
248. n 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 25 Abstrakte Klassenmethode mit Parameter vom Da tentyp aus dem Modell Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit Para meter vom Datentyp aus dem Modell ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Der Name der Abstrakte Klasse wurde zu myAbstractClass ge n dert 3 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello parameter myAbstractClass Void ein geben 3 Enter dr cken 22 10 TESTS F R INTERFACES 241 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 26 Abstrakte Klassenmethode mit zwei Parametern Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit zwei Parametern ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Edi
249. n K return KLiteral Override Enum EdgeDirection IN getAlpha public boolean hasChildren Object element if element instanceof KClassDiagram else if 1 Lement return this h else if 1 Lemen return false else if 1 Lement return false else if 1 Lemen return this h else if 1 Lement return false else if 1 Lemen return false else return false instanceof KEnum asMoreTheZeroChildren element instanceof KLiteral instanceof KPrimitiveType instanceof KAssociation asMoreTheZeroChildren element instanceof KAssociationEndPoint instanceof KGeneralization private boolean hasMoreTheZeroChildren Object element return this getChildren lement length 0 e In der Klasse ViewLabelProvider muss die Methode getElementLabel um Eintr ge f r Enumerationen und Literale erweitert werden private String 0 String label if element instanceof KClassDiagram tElementLabel Object element else if element instanceof KEnum label Enum KI Enum lement get name 16 3 PROBLEME BEI DER ERWEITERBARKEIT 149 128 else if element instanceof KLiteral 129 label Literal KLiteral element get name 16 3 Probleme bei der Erweiterbarkeit Um Kotelett um weitere Modellelemente zu erweiter
250. n Diese Syntax wird in der Anwendung als Eingabe durch den An wender in definierten Eingabebereichen erwartet und direkt in die entspre chenden Modellinformationen umgewandelt Hierzu wurden Parser imple mentiert die diese Aufgabe bernehmen und Fehler direkt an den Anwender zur ckmelden Dieser Abschnitt erkl rt die verwendete und erwartete Syn tax und die technische Umsetzung der Parser zum Erf llen der Funktiona lit t 9 6 1 Implementierung der Parser Die Anwendereingaben werden mithilfe der Java String Standardfunktionen verarbeitet Eine generischere L sung mit definierten Grammatiken auf Pro grammebene wurde in Form von JavaCC evaluiert jedoch aufgrund der Funktionalit t von JavaCC und der eher geringf gigen Verwendung von Parsing im Projekt verworfen JavaCC wurde als zu m chtiges und um fangreiches Werkzeug f r den umzusetzenden Task bewertet Um die n tigen Modellinformationen aus der Eingabe abzuleiten wird die Eingabe fortlaufend dass hei t nach jeder erfolgreich ausgewerteten Model linformation mithilfe der String split O Funktion anhand eines Begren zers zerteilt Bspw anhand des Separators zwischen Bezeichner und Typ eines Attributs Dieses einfache Vorgehen erlaubt genaue R ckmeldungen an den Anwender im Fehlerfall macht jedoch die Erkennung mehrerer Fehler in der Eingabe unm glich Die Parser werden in der jeweiligen EditPolicy zur Bearbeitung von Text vgl des bearbeiteten Elements verwendet und aufge
251. n Anwendern in Echtzeit synchronisieren Um kol laboratives Arbeiten zu erm glichen m ssen die Clients der Anwender 163 164 KAPITEL 19 EVALUATION NACH ZIELVEREINBARUNG stclock frontend ClockPanel interface stclock ClockListener timeChanged ClockDisplay clock void serialVersionUID 1L long displayLabel javax swing JLabel downButton javax swing JButton jPanel1 javax swing JPanel modeButton javax swing JButton setButton javax swing JButton upButton javax swing JButton listeners ClockPanel ClockButtonListener listener initComponents void upButtonActionPerformed java awt event ActionEvent evt void downButtonActionPerformed java awt event ActionEvent evt void setButtonActionPerformed java awt event ActionEvent evt void modeButtonActionPerformed java awt event ActionEvent evt void timeChanged ClockDisplay clock void stclock StClock INTERVAL 100 int timeSetAt Date timeSetTo Date clockRunner Thread stclock ClockDisplay interface StClock Date setTo StClock Date setTo Date setAt addClockListener ClockListener listener void getDisplay String removeClockListener ClockListener listener void start void stop void getDisplay String getCurrentTime Date up void down void set void mode void getState ClockState setState ClockState
252. n Verbindung mit JGraLab sowie einen Single Point of Truth beeinflussende Faktoren e 13 3 1 Der Auftraggeber fordert zwingend den Einsatz von JGraLab e 13 3 2 Der Auftraggeber fordert fordert zwingend eine Metamo dellimplementierung auf Client amp Server e 13 3 3 Der Auftraggeber fordert zwingend die Umsetzung der Client Server Synchronisation via DOLSAs DOL e 15 4 2 Der Auftraggeber fordert zwingend einen Single Point of Truth des Modells L sung Zur L sung der technischen Anforderungen des Auftraggabers werden verschiedene Strukturen in die Architektur intergriert Nutzung von Java als Programmiersprache DOLSA verlangt durch die Intergration von JGraLab zwingend den Ein satz von Java Eine Nutzung von verschiedenen Programmiersprachen im System w rde einen Risiko behafteten Overhead bedeuteten Wei terhin wurde mit GEF bereits ein Framework in Java f r die Erstellung des Editors evaluiert Strategie Nutzung von GEF Ein Metamodell in JGraLab verlangt Java als Programmiersprache f r den Client so dass statt eines bisher realisierten Webclients in Javas cript ein Java Framework f r die Diagrammerstellung verwendet werden muss GEF wurde bereits von der Gruppe evaluiert und ist f r diesen Zweck geeignet Strategie Nutzung von MVP Die Nutzung des Architekturmuster Modell View Presenter ist Vorraus setzung f r GEF Au erdem kann durch die Extrahierung des Modells die Verwendung von JGraLab realisiert
253. n kann Die gemein samen Klassen werden zum Eclipse Plugin de uniol pgktltt gef shared gepackt in dem zugleich alle Drittbibliotheken DOLSA JGraLab Kryonet und Guava enthalten sind Diese Bibliotheken nun noch einmal getrennt in das Maven Repository auf dem Build Server einzupflegen w rde ein zu hohes Risiko von Versions Inkompabilit ten birgen Stattdessen wird das Dependency Management von Maven umgangen und das shared Plugin in einem Unterverzeichnis im Build Verzeichnis des Server Projekts entpackt Dann liegen alle Abh ngigkeiten als einzelne JARs vor Das Unterverzeicnis in dem die JARs liegen wird dem Java Compiler mit dem Kommandozeilen parameter ext bergeben 11 3 Build des Metamodells Das Bauen des Metamodells wurde aus mehreren Gr nden nicht in den Buildprozess integriert Der Code Generator hat zwar eine Schnittstelle f r Ant diese m sste aber in den Maven Prozess integriert werden Die gene rierte m sste in das Shared Projekt kopiert werden und bei gr eren nderungen z B Umbenennungen von Packages auch das Shared Projekt selbst angepasst werden Da sich w hrend der Entwicklung das Metamodell nur selten ge ndert hat w re kein Nutzen aus einer aufw ndigen Integration entstanden Dies ist tats chlich etwas gehackt Der ext Parameter soll eigentlich auf weitere Bibliotheken der Java Laufzeitumgebung zeigen Hier wird er als Claspath missbraucht Andere Maven Mechanismen wie z B System A
254. n muss generell nur die Nutzerschnittstelle des Clients angepasst werden die Client Server Kom munikation sowie der Server sind soweit generisch dass eine Erweiterung des Metamodells um einzelne Modellelemente keine zus tzliche Funktiona lit t erfordert Das die View weitaus weniger generisch ist hat die einfache Ursache dass ein Metamodell zu seiner graphischen Repr sentation prin zipiell nicht in Zusammenhang steht und damit jedes Element und jede Nutzerinteraktion einzelnt behandelt werden m ssen Bei der Entwicklung des Editors wurde sich an die von GEF vorgegebenen Pattern gehalten M glicherweise lassen sich durch ein Refactoring noch Teile finden wo bei spielsweise wiederkehrende Funktionalit t in den Edit Parts in Oberklassen ausgelagert werden kann oder die if else Kaskaden in einigen Klassen ver mieden werden k nnen Ein solches Refactoring oder dies noch mehr in der Planung zu ber cksichtigen war aufgrund der verk rzten Entwicklungszeit siehe Prozessbericht nicht m glich Das Entwicklerteam kann diese Aussage selbstverst ndlich nur bez glich des ihm be kannten Kotelett Codes treffen ber die Erfahrungen diesbez glich in der DOLSA API wird in Abschnitt 8 4 berichtet 150 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN Teil V Evaluation 151 Kapitel 17 Einleitung Dieses Kapitel besch ftigt sich mit der Evaluation des Produktes welche im Rahmen des Projektes entwickelt wurde Der Prozess des Projekte
255. n und der Teil unterhalb als Meta modellklassen bezeichnet ModelElement ist eine abstrakte Oberklasse von der alle Klassen des Modells erben sowohl die Klassen f r Layoutinformationen als auch jene die die logische Struktur beschreiben Sie stellt das Attribut gDiff UUID bereit das von DOLSA zur eindeutigen Identifizierung der Elemente ben tigt wird Der bersicht halber sind in der Abbildung 10 1 nicht alle Generalisie rungen eingezeichnet Das Datenmodell behandelt in der vorliegenden Version keine Kommen tare und Assoziationsklassen 10 2 Metamodellklassen Zun chst sollen die Metamodellklassen also jener Teil der die logische Struktur von Klassendiagrammen beschreibt erl utert werden Wesentliche Oberklassen sind KRelationship und KDomain KRelationship beschreibt die Beziehungen Generalisierungen KGeneralization und Assoziationen KAssociation zwischen Klassen KDomain ist die Oberklasse f r primitive Typen KPrimitiveType Klassen und Enums KClass und KInterface mit der gemeinsamen Oberklasse KClassifier und Enums KEnum Alle Metamodellklassen haben ein K f r Kotelett vorangestellt um berschneidungen mit Schl sselw rter z B Class zu vermeiden 10 2 1 Beziehungen Es wurde entschieden Generalisierungen wie Assoziationen durch eine Un terklasse von KRelationship darzustellen Dies bietet sich in Hinblick auf die Visualisierung anf KClass hat somit keine eigenen Attribute die Ober und Unterklass
256. n und vorhandene Modelle zu l schen Dies gilt auch f r die in den Modellen enthaltenen Diagramme Das vierte Teilziel ist die Versionierung Damit Anwender zu jedem Modell eine nderungshistorie haben k nnen wird eine Versionsverwaltung ben tigt Dabei m ssen die Anwender die M glichkeit haben den aktuellen Stand eines Modells versionieren k nnen Dieser Schritt der Versionierung wird in diesem Dokument als Makroversionierung bezeichnet und zur seiner Realisierung soll die DOL Application der DOLSA Arbeit verwendet wer den Zus tzlich sollen die Anwender die M glichkeit haben die vorhandenen Versionen einzusehen und zu diesen zur ck zu kehren Die Verwendung der DOLSA Arbeit reduziert den Implementierungsauf wand in der PG und schafft ein Anwendungsfall f r die DOL Gleichzeitig wird der Ansatz mit einem weiteren Diagrammtyp erprobt Klassendiagram me statt der bisher getesteten Aktivit tsdiagramme 12 KAPITEL 1 ZIELVEREINBARUNG 1 3 Abgrenzung In diesem Kapitel wird eine Einschr nkung in der Funktionalit t beschrie ben Diese ist notwendig da eine vollst ndige Entwicklung eines kollaba ratives Modellierungstools zu umfangreich und in einer PG nicht machbar ist Bestimmte Funktionalit ten sind f r ein kollaboratives Modellierungs tool notwendig aber im Rahmen der PG zur Realisierung der Hauptfunk tionalit ten nicht kritisch Deswegen werden diese aus Mangel an Zeit nicht umgesetzt oder nur rudiment r behandelt
257. navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird kein Pfeil am Endpunkt der Komposition angezeigt 22 18 19 Umwandlung einer Komposition zu einer Aggrega tion Dieser Test deckt das Umwandeln einer Komposition zu einer Aggregati on ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzpro dukt fehlerfrei durchgef hrt wurde 22 18 TESTS F R KOMPOSITIONEN 325 Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Komposition wurde selektiert Test 1 Rechtsklick auf die Komposition 2 Klick auf Change to aggregation Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird anstelle der Komposition eine Aggregation angezeigt 2 Links in der ModelTreeView wird anstelle der Komposition eine Ag gregation angezeigt 22 18 20 Umwandlung einer Komposition zu einer Assozia tion Dieser Test deckt das Umwandeln einer Komposition zu einer Assoziati on ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzpro dukt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Komposition wurde selektiert Test 1 Rechtsklick auf die Komposition 2 Klick auf Change to a
258. ndbuch definierten Struk tur f r Anforderungen aufgeschrieben Der erste Teil dieser Struktur PBI lt ID gt wird allerdings ausgelassen da in dieser Phase noch keine Zu ordnung zu PBls festgelegt wurde Weitere auf PBIs bezogene Informationen 25 26 KAPITEL 2 EINLEITUNG werden ebenfalls noch nicht aufgef hrt z B User Stories und Akzeptanz tests Das Projektziel kann grob in 4 wesentliche Hauptanforderungen unter teilt werden siehe Abschnitt 1 2 I Modellierung von Klassendiagrammen II Entwicklung einer L sung zur Synchronisation zwischen Clients und Server III Verwaltung mehrerer Modelle Laden Speichern etc IV Versionierung von Modellen Die Anforderungen werden nach diesen 4 Hauptanforderungen gruppiert aufgeschrieben Um dies zu verdeutlichen wird die entsprechende Nummer in r mischer Schreibweise der Anforderung vorangestellt Die erste Anforde rung zur Entwicklung eines kollaborativen Modellierungstools erh lt somit die Nummer I FA1 die zweite Anforderung zur Versionierung von Modellen w rde dagegen IV FA2 als Nummer bekommen Lies Funktionale Anforde rung aus der Kategorie 4 davon Anforderung Nummer 2 Dar ber hinaus werden zusammengeh rige Unteranforderungen zur besseren bersichtlich keit ebenfalls gruppiert dargestellt bergeordnete Anforderungen werden nur im ersten der jeweiligen Kategorien erw hnt und ggfs in den anderen Kategorien referenziert Falls Anforderungen in keine der genan
259. nde des ersten Implementierungsmeilensteins soll die geplante Client Server Architektur horizontal umgesetzt werden Dabei soll der Cli ent der Server und geplante Kommunikation zwischen diesen grob realisiert werden Wie bei der horizontalen Implementierung vorgesehen ist dabei der gesamte Ablauf wichtiger als vollst ndige Funktionalit t Der Fokus liegt auf den ersten beiden Teilzielen aus der Zielsetzung siehe Kapitel 112 Modellierung von Klassendiagrammen und Echtzeit Kollaboration Der Client soll den Anwendern erm glichen Klassendiagramme zu mo dellieren und nderungen an den Server verschicken Der Server soll die nderungen der Clients annehmen und die einzelnen Clients mikroversio nieren 16 KAPITEL 1 ZIELVEREINBARUNG Damit die Modellverwaltung die Versionsverwaltung und die Anwender verwaltung bereits im Projekt enthalten sind sollen diese grob implementiert werden Dabei soll die Realisierung auf dem Server vorgezogen und nur bei ausreichend Zeit auf dem Client fortgef hrt werden Es sollen auch bereits die DOL Services aus der DOLSA Arbeit der 5 Abteilung zur Generierung und Anwendung der nderungen verwendet wer den Damit dies m glich ist muss die Implementierung der DOLSA Arbeit zu Beginn der Implementierung also am 1 12 2014 vorliegen Die Mikrover sionierung geschieht mit der generierten DOL Die Architekturplanung soll w hrend der Implementierung weiter verfei nert werden damit die Implementierun
260. ndpoints in einer Assoziation Dieser Test deckt das Verschieben eines Bendpoints in einer Assoziation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Es wurde an der Assoziation ein Bendpoint erstellt 4 Die Assoziation wurde selektiert Test 1 Klick auf den Bendpoint auf der Assoziation 2 Verschieben des Bendpoints per Drag and Drop an eine Position so dass die Assoziation nicht gerade ist Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Assoziation ber den verschobenen Bendpoint umgeleitet angezeigt 22 16 23 L schen eines Bendpoints in einer Assoziation Dieser Test deckt das L schen eines Bendpoints in einer Assoziation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Es wurde an der Assoziation ein Bendpoint erstellt 4 Die Assoziation wurde selektiert 22 17 TESTS F R AGGREGATIONEN 301 Test 1 Klick auf den Bendpoint auf der Assoziation 2 Verschieben des Bendpoints per Drag and Drop sodass die Assoziation wieder gerade
261. ne verwendete Technologie in terne Fehler aufweist und dadurch das Gesamtsystem gef hrdet Zustands probleme treten auf wenn z B ung ltige nderungen auf dem Modell ge macht werden Probleme auf dem Client treten auf wenn z B der Anwender eine nderung macht und gleichzeitig eine nderung von dem Server an kommt Probleme auf dem Server treten auf wenn wenn z B ein Anwender ein Element l scht und ein anderer Anwender das gleiche Element ndern m chte 9 2 1 Technische Probleme Technische Probleme sind stark mit den verwendeten Technologien ver kn pft Es gibt Probleme mit JGraLab siehe Abschnitt 8 3 da dieses nicht threadsicher ist Dies betrifft den Client und den Server gleicherma en da in beiden die Modellrepr sentation mit JGraLab realisiert wird Das Problem tritt auf wenn nderungen an dem Modell parallel geschehen Dabei ist es irrelevant ob beide nderungen im Konflikt stehen Das Modell kann einfach bei parallelen nderungen korrumpiert werden Auf dem Client geschieht es wenn der Anwender eine nderung vor nimmt und gleichzeitig eine nderung von dem Server eingeht Auf dem Server geschieht es wenn zwei Anwender gleichzeitig nderun gen zum Server schicken und dieser beide verarbeitet Um dieses Problem zu beheben muss die Threadsicherheit sichergestellt werden Die genaue L sung wird in Abschnitt 9 3 beschrieben 9 2 2 Zustandsprobleme Zustandsprobleme treten auf wenn widerspr chliche
262. neue Klassenattribut in der Klas se angezeigt 186 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 5 3 Klassenattribut mit String Primitiv Typ Dieser Test deckt das Erstellen eines Klassenattributes vom Void Primitiv ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello String eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 4 Klassenattribut mit Boolean Primitiv Typ Dieser Test deckt das Erstellen eines Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Boolean eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 TESTS F R KLASSENATTRIBUTE 187 22 5 5 Klassenattribut mit Float Primitiv Typ Dieser Test deckt das Erstellen eines Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unt
263. nfalls angepasst werden Es soll auch die Erfahrung des Teams mit dem Arbeitsprozess doku mentiert werden Dabei soll auf gelungene Entscheidungen Probleme und dazugeh rige L sungsvorschl ge eingegangen werden Zum Abschluss soll eine Pr sentation der Arbeitsergebnisse und der ge sammelten Erfahrungen vorgestellt werden 1 6 EVALUATION 17 1 6 Evaluation Um das Ergebnis des Projektes zu evaluieren wird die Erf llung der Haupt anforderungen berpr ft Da ein Kriterium von Anforderungen an Software systemen die Erf llbarkeit ist sind diese als Evaluierungskriterien geeignet FA I FA II FA III FA IV NFA I Das System muss dem Anwender die Modellierung von Klas sendiagrammen erm glichen Die verf gbaren Sprachmittel sind dabei durch das Metamodell definiert Die grapische Repr sentation soll sich dabei am UML 2 4 1 Standard orientieren Obj11 Als Akzep tanztest soll der Nutzer in der Lage sein die StClock zu modellieren Dabei soll das Ergebniss semantisch quivalent zu dem Klassendia gramm in Abbildung 1 2 sein Das System muss den Zustand eines Modells unter allen be arbeitenden Anwendern in Echtzeit synchronisieren Um kolla boratives arbeiten zu erm glichen m ssen die Clients der Anwender in Echtzeit synchronisiert werden Ein asynchroner Arbeitsablauf wie in Git und SVN umgesetzt gen gt f r den gew nschten Grad der Kolla borativit t nicht In klassischen Versionskontrollsyste
264. nitt 1 2 und ist daf r verantwortlich den insgesamt g ltigen Stand des Modells zu halten zu speichern neuen Clients zur Verf gung zu stellen und auftretende Konflikte zu behandeln Das System muss zur Darstellung eines vom Anwender ge ffneten bereits existierenden Diagrammes das zugeh rige Modell vom Server laden und verwenden Eine grunds tzliche Anforderung ist neben einer Client Server Archi tektur die Festlegung dass der Server den Single Point of Truth bildet siehe Abschnitt 1 2 Als Konsequenz muss ein Anwender der ein Diagramm ffnet einen aktuellen Modell Stand vom Server geliefert bekommen sodass er den letzten g ltigen Stand erh lt Das System soll Diagramm nderungen in Echtzeit lt 1 Se kunde innerhalb des ARBI Netzes bertragen Zur Synchronisation zwischen den Clients und dem Server muss die Delta Operating Language DOL KW14 verwen det werden Ein wesentlicher Bestandteil des Systems ist die Synchronisation zwi schen den Clients Dabei ist eine Anforderung vom Auftraggeber dass diese mithilfe der Delta Operating Language durchgef hrt werden soll DOL bietet bereits ein Verfahren um mithilfe eines fest definierten Me tamodells DOL Statements zum Austausch zu definieren die aufgetre tenen Differenzen durch die nderung eines Anwenders zu bestimmen und von einem anderen Client empfangene DOL Statements auf des sen Modell anzuwenden Es handelt sich hierbei um eine wesentliche Anforderung da
265. nktes der Aggregation wurde aktiviert 4 Die Aggregation wurde selektiert 310 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Rechtsklick auf die Aggregation 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird kein Pfeil am Startpunkt der Aggregation angezeigt 22 17 17 Sichtbarkeit des Endpunktes einer Aggregation ak tivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Endpunktes einer Ag gregation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuz produkt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Die Aggregation wurde selektiert Test 1 Rechtsklick auf die Aggregation 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird ein Pfeil am Endpunkt der Aggregation angezeigt 22 17 18 Sichtbarkeit des Endpunktes einer Aggregation de aktivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Endpunktes einer Ag gregation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuz produkt fehlerfrei durchgef hrt wurde 22 17 TESTS F R AGGREGATIONEN 311 Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1
266. nse shall not apply to any other combinations which include the Contribution No hardware per se is licensed hereunder 357 358 KAPITEL 25 ECLIPSE PUBLIC LICENSE c Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise As a condition to exercising the rights and licenses granted hereunder each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed if any For example if a third party patent license is required to allow Recipient to distribute the Program it is Recipient s responsibility to acquire that license before distributing the Program d Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution if any to grant the copyright license set forth in this Agreement 3 REQUIREMENTS A Contributor may choose to distribute the Program in object code form under its own license agreement provided that a it complies with the terms and conditions of this Agreement and b its license agreement i effectively disclaims on behalf of all Contributors all warranties and condition
267. nt verwalten GEF Aktives Modell Klassendiagramme KO speichern anzeigen Nutzereingaben behandeln s ehande Y Presenter component component Presenter KryoNet component Delta verteilen Versionsliste Versionen Modellauswahl HOF KryoNet verteilen anzeigen anzeigen A versenden elta versende Delta empfangen Modellliste Nutzereingaben Nutzereingaben verteilen behandeln behandeln Delta empfangen Z DOLSA T component DOL Application component DOL Service Abbildung 9 1 Verteilung der Module auf das Model View Presenter Pattern Delta berechnen Modell speichern Version speichern Delta anwenden Modell laden Version laden Modell erstellen Aktives Delta bereitstellen Modell l schen Versionen auflisten Modelle auflisterl 9 1 MODEL VIEW PRESENTER 83 Komponenten stattfinden kann wenn diese auf unterschiedlichen Systemen liegen Das zweite MVP umfasst nur die Client Komponente Hier sind die Un terkomponenten bereits nach MVP benannt siehe Abbildung 9 1 Der Presenter wird von beiden MVPs verwendet Der Kotelett MVP verwendet den Presenter um Nachrichten zwischen den Client und Server zu verschicken Der Client MV
268. nten Kategorien passen werden sie als Sonstiges mit der Nummer 5 erfasst Um nachvollziehbar zu machen woher die Anforderungen stammen wird die Quelle jeweils in Klammern hinter den einzelnen Anforderungen genannt In diesem Dokument werden die Begriffe Diagramm Modell Metamodell bzw Diagramm Modellelement verwendet Eine genauere Begriffsdefinition befindet sich in unserem Glossar Kapitel 3 Muss Kriterien In diesem Kapitel werden alle Muss Kriterien gesammelt also Anforderun gen die erf llt werden m ssen um das Projektziel zu erreichen Diese sind nach den 4 bereits vorgestellten wesentlichen Anforderungen sowie funktio nalen und nichtfunktionalen Anforderungen einsortiert und gruppiert 3 1 I Modellierung von Klassendiagrammen Hauptanforderung I Das System muss den Anwendern erm gli chen Klassendiagramme zu modellieren Die Modellierung von Klassendiagrammen ist eine Hauptanforderung Dabei geht es im wesentlichen darum dass Klassendiagramme gezeichnet werden k nnen und hinter dem Diagramm auch ein entsprechendes Modell liegt Die genaueren Unteranforderungen werden im folgenden erl utert Die Typen Klasse abstrakte Klasse Enumeration und Interface werden im folgenden als Knoten bezeichnet Assoziationen Aggregationen Kom positionen Generalisierungen und Implementierungen werden dagegen als Kanten bezeichnet Funktionale Anforderungen Klassendiagramm zeichnen I FA1 Wenn ein Anwender ein neues Model
269. num erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die Klasse klicken 3 Auf das Enum klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird keine Generalisierung von der Klasse zur Abstrakten Klasse angezeigt 2 Links in der Model TreeView wird keine neue Generalisierung unter der Klasse im firstDiagram angezeigt 22 15 15 Keine Generalisierung von einer Abstrakten Klasse zu einem Enum Dieser Test deckt das Fehlschlagen einer Generalisierung von einer Abstrak ten Klasse zu einem Enum ab 22 15 TESTS F R GENERALISIERUNGEN 287 Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Enum erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf die Abstrakte Klasse klicken 3 Auf das Enum klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird keine Generalisierung von der Abstrakten Klasse zur Abstrakten Klasse angezeigt 2 Links in der ModelTreeView wird keine neue Generalisierung unter der Abstrakten Klasse im firstDiagram angezeigt 22 15 16 Keine Generalisierung von einem Interface zu ei nem Enum Dieser Test deckt das Fehlschlagen einer Generalisierung von einem Interface zu einem Enum ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Enum erstellt Test 1 Links im Editor Bereich auf Generalizat
270. numeration ankli cken 2 Im Eingabefeld den neuen Namen MyTestEnum eingeben 3 Im Editor Bereich auf ein beliebigen Punkt klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name der Enu meration angezeigt 2 Links in der ModelTreeView wird der neue Name der Enumeration angezeigt 22 13 6 Enumeration umbenennen Best tigung mit Enter Dieser Test deckt das Umbenennen einer Enumeration ab Vorbedingung 1 Es wurde eine Enumeration erstellt und ausgew hlt 22 13 TESTS F R ENUMERATIONEN 275 Test 1 Im Editor Bereich den Namen der ausgew hlten Enumeration ankli cken 2 Im Eingabefeld den neuen Namen MyTestEnum eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name der Enu meration angezeigt 2 Links in der ModelTreeView wird der neue Name der Enumeration angezeigt 22 13 7 Enumeration verschieben Dieser Test deckt das Verschieben einer Enumeration ab Vorbedingung 1 Es wurde eine Enumeration erstellt Test 1 Im Editor Bereich die erstellte Enumeration anklicken und gedr ckt halten 2 Den Mauszeiger innerhalb des Editor Bereichs an die neue Position der Enumeration bewegen 3 Maustaste loslassen Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che befindet sich die verschobene Enumeration an der neuen Position 22 13 8 Enumeration aus Diagramm l schen Dieser Tes
271. odelTreeView wird das neue Interface im firstDiagram angezeigt 22 10 3 Interface ausw hlen Dieser Test deckt das Ausw hlen eines Interface ab Vorbedingung 1 Es wurde ein Interface erstellt Test 1 Im Editor Bereich das erstellte Interface anklicken 22 10 TESTS F R INTERFACES 243 Erwartetes Ergebnis 1 Im Editor Bereich wird das erstellte Interface umrandet angezeigt 22 10 4 Mehrfachauswahl von Interfaces Dieser Test deckt das Ausw hlen mehrerer Interfaces ab Vorbedingung Es wurden zwei Interfaces erstellt Test 1 Im Editor Bereich oben links von den beiden Interfaces klicken und gedr ckt halten 2 Die Maus nach unten rechts ziehen bis die Auswahlanzeige beide Ele mente komplett umfasst 3 Maustaste loslassen Erwartetes Ergebnis 1 Im Editor Bereich werden die beiden ausgew hlten Interfaces umran det angezeigt 22 10 5 Interface umbenennen Dieser Test deckt das Umbenennen eines Interfaces ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt Test 1 Im Editor Bereich den Namen des ausgew hlten Interfaces anklicken 2 Im Eingabefeld den neuen Namen MyTestInterface eingeben 3 Im Editor Bereich auf ein beliebigen Punkt klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird der neue Name des Inter faces angezeigt 2 Links in der ModelTreeView wird der neue Name des Interfaces ange zeigt 244 KAPITEL 22 ERFOLGREICHE AKZE
272. odell geladen 2 Zu diesem Modell ist genau ein Editor ge ffnet 3 Im diesem Modell befinden sich zwei Benutzer Test 1 Der Nutzer ndert seine Farbe Erwartetes Ergebnis 1 In der Userliste beider Clients wird die neue Farbe des Benutzers an gezeigt 22 20 7 Synchronisierung von Modelldifferenzen Dieser Test deckt das Synchronisierung der Modelldifferenzen bei Nutzer nderungen ab Da f r die Differenzerzeugung eine Metamodellgenerische Drittsoftware verwendet wird und die Umsetzung von Nutzereingaben in Modell nderungen in den vorangehenden Akzeptanztest ausf hrlich durch gef hrt wurden wird hier nur ein einziger Test durchgef hrt Vorbedingung 1 Es wurde ein Modell geladen 2 Zu diesem Modell ist genau ein Editor ge ffnet 3 Im diesem Modell befinden sich zwei Benutzer 22 20 TESTS F R KOLLABORATION 343 Test 1 Der Nutzer f hrt eine Modell nderung durch Erwartetes Ergebnis 1 Das versandte Delta entspricht dem empfangen Delta Dies kann mit tels der LogView berpr ft werden 22 20 8 Farbe l schen wenn alle Mitbenutzer zustimmen Dieser Test stellt sicher das die Farben aus einem Mehrbenutzermodell nur bei einstimmiger Zustimmung gel scht werden Vorbedingung 1 Es wurde ein Modell geladen 2 Zu diesem Modell ist genau ein Editor ge ffnet 3 Im diesem Modell befinden sich zwei Benutzer 4 Im Model ist von jedem Benutzer ein Element erzeugt worden Test 1 Der Nutzer k
273. odells auf dem Client und Server wird JGraLab Abschnitt 8 3 verwendet Dabei speichert der Client sein aktuelles Mo dell und der Server verwaltet alle aktiven Modelle Um die Modelle und dazugeh rige Versionen zu persistieren verwendet der Server die DOL Ap plication aus DOLSA Abschnitt 8 4 F r die Realisierung des Datenaustauschs zwischen Client und Server wird KryoNet verwendet Verschicket werden Modellin formationen und einzelne nderungen eines Modells F r die Repr senta tion der Modell nderungen wird DOL verwendet welche ebenfalls im beschrieben wird Zur Generierung und Anwendung der DOL stellt DOLSA die DOL Services dem Client und dem Server zur Verf gung siehe Abbildung 8 1 8 1 SWT und JFace SWT Standard Widget Toolkit und JFace sind Teil des Standard GUI Frameworks das in Eclipse Produkten eingesetzt wird Ecl13 Da der Diagrammeditor in Kotelett mithilfe des Graphical Editor Frameworks GEF RWC11 implementiert wird siehe und GEF auf SWT basiert sollte SW T ebenfalls f r den Rest der GUI eingesetzt werden In Kotelett wird SWT daher f r die gesamte GUI Baumansichten Dia loge usw au erhalb des Klassendiagramm Editors eingesetzt So ist eine optimale Integration mit GEF m glich SWT stellt Standard Steuerelemente wie Buttons Eingabefelder etc be reit Im Gegensatz zu Swing nutzt SWT native Elemente des Betriebssys tems im Gegensatz zu AWT allerdings mit eigenem Look And Feel d h die
274. odenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 14 Interfacemethode mit protected Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen einer Interfacemethode mit protected Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 22 12 TESTS F R INTERFACEMETHODEN 265 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt mit Leerzeichen 2 Links in der ModelTreeView wird die neue Interfacemethode in des Interfaces angezeigt mit Leerzeichen 22 12 15 Interfacemethode mit package protection Sichtbar keit mit Leerzeichen Dieser Test deckt das Erstellen einer Interfacemethode mit package protection Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgewahlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich
275. oint was das Ende einer Assoziation darstellt KAssociationEndPoint enth lt Informationen ber die Rollen Multipli zit ten und Navigierbarkeit einer Assoziation Alternativ k nnte man dies mittels einer Assoziationsklasse modellieren siehe Abbildung 10 3 dies er schwert aber wahrscheinlich die Umsetzung in DOL Kompositionen und Aggregationen werden durch ein Attribut aggregationKind modelliert das angibt ob eine KAssociation Aggrega tion oder Komposition ist So k nnen Assoziationen Aggregationen und kompositionen einfach ineinander umgewandelt werden Leserichtungen f r Assoziationen sind nicht modelliert Generell sind alle Assoziationen von source nach target gerichtet 10 2 2 Typen Die Oberklasse f r alle Typen primitive Typen Klassen Enums ist KDomain Klassen und Interfaces Klassen KClass und Interfaces KInterface haben die gemeinsame Ober klasse KClassifier Klassen k nnen im Unterschied zu Interfaces abstrakt sein Attribute und Methoden sind nicht explizit geordnet Sie werden grund s tzlich in alphabetischer Reihenfolge angezeigt Der Typ von Attributen 10 3 LAYOUTKLASSEN 107 Methoden R ckgabewerten und Parametern kann primitiver Typ Klasse oder Enum sein Statische Methoden und Attribute sowie abstrakte Metho den werden unterst tzt Primitive Typen Primitive Typen sind Instanzen von KPrimitiveType In jedem Diagramm existieren dann zur Laufzeit Instanzen f r Integer Float Boolean
276. omposition wird nur dann ver ndert wenn die daraus resultierende Komposition g ltig ist 22 18 15 Sichtbarkeit des Startpunktes einer Komposition aktivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Startpunktes einer Komposition ab Dieser Test ist generisch dokumentiert da das Kreuzpro dukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Komposition wurde selektiert Test 1 Rechtsklick auf die Komposition 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird ein Pfeil am Startpunkt der Komposition angezeigt 22 18 TESTS F R KOMPOSITIONEN 323 22 18 16 Sichtbarkeit des Startpunktes einer Komposition deaktivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Startpunktes einer Komposition ab Dieser Test ist generisch dokumentiert da das Kreuzpro dukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuzprodukt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Sichtbarkeit des Startpunktes der Komposition wurde aktiviert 4 Die Komposition wurde selektiert Test 1 Rechtsklick auf die Komposition 2 Klick auf Toggle source navigability Erwart
277. on an AS IS BASIS WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND either express or implied See the License for the specific language governing permissions and limitations under the License 354 KAPITEL 23 APACHE 2 0 LIZENZ Kapitel 24 BSD Lizenz Die im Projekt Kotelett verwendete Bibliothek KryoNet steht unter einer BSD artigen Lizenz Copyright c 2008 Nathan Sweet 11 rights reserved Redistribution and use in source and binary forms with or without modification are permitted provided that the following conditions are met Redistributions of source code must retain the above copyright notice this list of conditions and the following disclaimer Redistributions in binary form must reproduce the above copyright notice this list of conditions and the following disclaimer in the documentation and or other materials provided with the distribution Neither the name of Esoteric Software nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT INDIRECT INCIDENTAL SPECIAL EXEMPLARY OR CONSEQUENTIAL DAMAGES INCLUDIN
278. onale Aspekte des Systems definiert Faktor Flexibilit t Variali Wirkung bit t T3 1 Betriebssysteme Windows Mac OS X Vorgabe durch den Wirkung auf den Linux Auftraggeber An Buildprozess forderung aus der Gruppe T3 2 Benutzerschnittstelle Maus und Tastatur langfristig stabile Gro er Einfluss auf die Schnittstelle Benutzerschnittstelle T3 3 Software Fremdkomponenten T3 3 1 Der Auftrag stabile Vorgabe Gro er Einfluss auf die zung der Synchronisa tion via DOLSAs DOL geber fordert den Ein Datenhaltung satz von JGraLab T3 3 2 Der Auftragge stabile Vorgabe Gro er Einfluss auf ber fordert eine gene Client rische Metamodellim plementierung auf Cli ent T3 3 3 Der Auftragge stabile Vorgabe Gro er Einfluss die ber fordert die Umset Synchronisation T3 3 5 Der Auftragge stabile Vorgabe Gro er Einfluss auf die grund der verwendeten Technologien ber fordert dass DOL Modellverwaltung SA zur Modellvera tung verwendet wird T3 3 4 Einsatz des verhandelbar eigene Gro er Einfluss auf GEF Frameworks zur Evaluation den Client Erstellung des Editors T3 4 Entwicklungssprache Java stabile Vorgabe auf Gro er Einfluss auf das gesamte System 4 Architektur T4 2 Architekturmuster 6 3 TECHNISCHE FAKTOREN 57 Modell View Vorraussetzung f r Einfluss auf das ge Controller GEF samte
279. onsequenz aus I FA5 und I FA5 1 muss der Anwender dar ber informiert werden dass seine letzte Anderung vom Server verworfen wurde Dies k nnte z B durch eine Texteinblendung geschehen Das System muss es dem Anwender erm glichen sich alle Anwender welche am gleichen Modell arbeiten anzeigen zu lassen Nichtfunktionale Anforderungen II NFA1 II NFA2 Das System soll nderungskonflikte auf dem Server behan deln Alle Konflikte die bei der Synchronisation der Clients entstehen k n nen sollen vom Server gepr ft werden Der Server entscheidet dar ber ob nderungen g ltig sind und l st im Falle von Fehlern eine Resyn chronisation einzelner Clients aus Die Clients m ssen damit lediglich Fehler die durch ung ltige nderungen entstehen k nnen abfangen ohne weitere Aktion Da in einem solchen Fall aber auch ein Konflikt auf dem Server auftritt muss der Server diesen durch eine Resynchro nisation beheben Das System muss nderungen aller Anwender an den Ser ver bertragen damit dieser den aktuell g ltigen Stand spei chern und im Falle von Konflikten die Clients synchronisieren kann nderungen die durch die Anwender durchgef hrt wurden m ssen 36 II NFA3 4 II NFA5 II NFA6 I NFA7 8 KAPITEL 3 MUSS KRITERIEN nicht nur zwischen den Anwendern ausgetauscht werden sondern auch auf einen Server bertragen werden Dieser bildet den Single Point of Truth siehe Absch
280. ou 361 362 KAPITEL 26 GNU GENERAL PUBLIC LICENSE VERSION 3 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 prevent others from denying you these rights or asking you to surrender the rights Therefore you have certain responsibilities if you distribute copies of the software or if you modify it responsibilities to respect the freedom of others For example if you distribute copies of such a program whether gratis or for a fee you must pass on to the recipients the same freedoms that you received 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 Developers that use the GNU GPL protect your rights with two steps 1 assert copyright on the software and 2 offer you this License giving you legal permission to copy distribute and or modify it H For the developers and authors protection the GPL clearly explains that there is no warranty for this free software For both users and authors sake the GPL requires that modified versions be marked as changed so that their problems will not be attributed erroneously to authors of previous versions Some devices are designed to deny users access to install or run modified versions of the software inside them although the manufacturer can do so This is fundamentally incompatib
281. pository orchestration DOL Applications Model Versioning Model History Collaborative Analysis Modeling Abbildung 8 4 bersicht ber das Gesamtsystem DOLSA DOL x Application sprechend ihres Typs benannt werden Im Subsystem DOL Generation ver f gt DOLSA ber die M glichkeit den genauen Sprachumfang zu einem Metamodell direkt aus diesem heraus zu generieren Dies erfolgt im DOL Generator Der Generator erh lt als Eingabe ein Metamodell in Form eines TGra phenschemas und generiert daraus eine Java API die dann den DOL Services zur Verf gung gestellt wird Wie bereits in Abschnitt 8 3 dargelegt wird der Umfang des Metamodells aufgrund der Reduzierung auf Klassendiagramme begrenzt sein und sich im Verlauf des Projekts nur geringf gig ndern Das gleiche gilt entsprechend f r die vom Generator erzeugte DOL Zu kl ren bleibt ob die bersetzung des Metamodells in DOL von au fien durchgef hrt werden muss oder ob die Services die bersetzung selbstst ndig durchf hren Dies stellt aber kein Hindernis f r den Architek turentwurf dar 8 4 4 DOL Services Das Subsystem der von DOLSA bereitgestellten DOL Services dient der Verarbeitung und Erstellung von Modelldifferenzen in DOL Repr sentation Das Subsystem enth lt die folgenden f nf Services 1 Calculator Berechnet die Differenz zwischen zwei Versionen des glei chen Modells und lie
282. punkt Selbst Transition 18 7 Redo vom Umh ngen einer Assoziation nach dem ein anderer Anwender die Zielklasse ge l scht hat Dieser Test deckt das Redo vom Umh ngen einer Assoziation nachdem ein anderer Anwender die Zielklasse gel scht hat ab Vorbedingung 1 Zwei Anwender sind am System angemeldet 2 Es wurden drei Klassen erstellt 3 Es wurde eine Assoziation zwischen 2 Klassen erstellt 4 Das Ziel der Assoziation wurde ge ndert 5 Das ndern des Zieles der Assoziation wurde r ckg ngig gemacht Strg4 Z 6 Der andere Anwender l scht das vorherige Ziel der Assoziation mit dem die Assoziation jetzt nicht mehr verbunden ist Test 1 Der Anwender welcher das ndern des Zieles der Assoziation r ck g ngig gemacht hat f hrt ein Redo durch Strg Shift 2 Erwartetes Ergebnis 1 Das Redo ist nicht durchf hrbar da die Zielklasse nicht mehr existiert 18 8 LEEREN DER USERLISTE BEIM SCHLIESSEN DES LETZTEN EDITORSI161 Tats chliches Ergebnis 1 Eine NullPointerException tritt auf und das Modell wird inkonsistent 2 Hierauf folgt nicht definiertes Verhalten 18 8 Leeren der Userliste beim Schlie en des letz ten Editors Dieser Test deckt das Leeren der Userliste beim Schlie en des letzten Editors ab Vorbedingung 1 Es ist ein Modell ge ffnet 2 Zu diesem Modell ist ein Editor ge ffnet Test 1 Der Anwender schlie t den Editor Erwartetes Ergebnis 1 Da kein Editor ge ffne
283. r Bereich in der Zeichenflache wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 12 Tests fiir Interfacemethoden Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Interfacemethoden ab 22 12 TESTS F R INTERFACEMETHODEN 257 22 12 1 Interfacemethode mit Void Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Interfacemethode angezeigt 2 Links in der Model TreeView wird die neue Interfacemethode in des Interfaces angezeigt 22 12 2 Interfacemethode mit Integer Primitiv Typ Dieser Test deckt das Erstellen einer Interfacemethode vom Void Primitiv Typ ab Vorbedingung 1 Es wurde ein Interface erstellt und ausgew hlt 2 Das erstellte Interface wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich des Interfaces klicken 2 Im Texteingabefeld hello Integer eingeben 3 Enter dr cken 258 KAPITEL 22 ERFOLGREICH
284. r Klasse klicken 2 Im Texteingabefeld hello Float eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 6 Klassenmethode mit UnlimitedNatural Primitiv Typ Dieser Test deckt das Erstellen eines Klassenmethode vom Void Primitiv Typ ab 198 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello UnlimitedNatural eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 7 Klassenmethode mit default Sichtbarkeit Dieser Test deckt das Erstellen eines Klassenmethode mit default Sichtbar keit ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Kl
285. r Modelelement zu verwalten e index Da DOL nicht von geordneten Kanten ausgeht und Deltas so mit keine Information ber die Reihenfolge von Modellelementen bein halten enthalten alle Modellelemente deren Reihenfolge innerhalb des Modells von Bedeutung ist ein Attribut index das diese Reihenfolge bestimmt 112 KAPITEL 10 DATENMODELL AssociationSourc role String H Kcass EI KAssociation aS i aggregationKind AggregationKint 1 kcass superClass 1 subClass S cy AssociationTargel CET enumeration role String E AggregationKinc 2 None E Shared Containment Abbildung 10 3 Alternative Modellierungsm glichkeiten Wartungshandbuch 113 115 Dieses Kapitel stellt ein Wartungshandbuch f r das Projekt Kotelett dar Ziel dieses Kapitels ist es einen berblick ber die Package Struktur des Projekts zu verschaffen um die Weiterentwicklung und Wartung von Kotelett zu erleichtern 116 Kapitel 11 Bauen von Kotelett In diesem Abschnitt wird beschrieben wie der Kotelett Client und Server gebaut wird Der grobe Ablauf des Builds ist in Abbildung 11 1 dargestellt Es wird je des mal gebaut wenn nderungen in das serverseitige Repository bertragen werden Dies wird durch einen post update hook des Git Repositorys erm g licht Als Build Server wurde w hrend des Entwicklungsprozesses Jenkins in Verbindung mit Maven verwend
286. r der Abstrakten Klasse im firstDiagram angezeigt 22 15 7 Generalisierung von einem Interface zu einem Inter face Dieser Test deckt das Erstellen einer Generalisierung von einem Interface zu einem Interface ab Vorbedingung 1 Es wurden 2 Interfaces erstellt Test 1 Links im Editor Bereich auf Generalization klicken 2 Auf das erste Interface klicken 3 Auf das zweite Interface klicken 22 15 TESTS F R GENERALISIERUNGEN 283 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Generalisierung vom ersten zum zweiten Interface angezeigt 2 Links in der ModelTreeView wird die neue Generalisierung unter dem ersten Interface im firstDiagram angezeigt 22 15 8 Selektion einer Generalisierung Dieser Test deckt das L schen einer Generalisierung ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Generalisierung zwischen diesen erstellt Test 1 Im Editor Bereich auf die Generalisierung klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che ist die Generalisierung hervor gehoben 22 15 9 L schen einer Generalisierung aus dem Diagramm Dieser Test deckt das L schen einer Generalisierung aus dem Diagramm ab Vorbedingung 1 Es wurden 2 Klassen erstellt 2 Es wurde 1 Generalisierung zwischen diesen erstellt 3 Die Generalisierung wurde selektiert Test 1 Entfernen dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird di
287. ram bounds default return null Das Literal ENUM muss in der Form ENUM KEnum VC dem Enum ModelElementType hinzugef gt werden dies geschieht zusammen mit der Erweiterung des Editors in Unterabschnitt 16 2 4 CreateKLiteralCommand Dieser Command wird zum Erstellen von Literalen ben tigt Die execute Methode wird aufgerufen wenn der Command ausge f hrt wird Hier soll das KLiteral erstellt werden In Zeile 32 wird der Benutzer gesetzt der als letztes die Enumeration bearbeitet hat Dies ist der Benutzer dieses Clients Die redo Methode wird aufgerufen wenn der Command erneut ausge f hrt wird REDO Damit auf diesen Command folgende Commands ebenfalls wieder ausgef hrt werden k nnen muss das alte JGraLab Vertex wieder eingef gt werden statt ein neues Literal zu erstellen Die undo Methode wird aufgerufen wenn der Command widerrufen wird UNDO Das Literal wird einfach entfernt und der letzte Bear beiter zur ckgesetzt public class CreateKLiteralCommand extends AbstractModelCommand private KEnum kEnum private KClassDiagram model private String name KLiteral newKLiteral String newUserId oldUserIg public CreateKLiteralCommand KEnum kEnum String name super Create literal name kEnum this model KClassDiagram kEnum getGraph this kEnum kEnum this name name this newUserId ModelRegistry getInstance getUser g
288. rben muss Die Notizen sollen ber eine Kante KNoteConnection mit den Knoten verbunden werden Dazu wird eine zun chst eine weitere Abstrakte Klasse KNoteTarget erstellt von der KClassifier und KEnum zu s tzlich erben Die Klasse KNodeConnection erbt dann von KRelationship und hat Knote und KNoteTarget als Source bzw Target 133 134 KAPITEL 16 ERWEITERUNGSM GLICHKEITEN KNode KRelationship target KEnum KClassifier Abbildung 16 1 Ausschnitt des um KNote erweiterten Metamodells 16 1 2 Erweiterung der View In der View muss dann zun chst ein EditPart siehe Abschnitt 8 2 f r das Notizelement erstellt werden Die Klasse heift hier KNoteEditPart und sollte von KAbstractEditPart siehe Abschnitt 13 2 erben und NodeEditPart implementieren Bei der Implementierung kann z B KEnumEditPart siehe Abschnitt 16 2 als Vorlage dienen Der Editpart soll te die GraphicalBox der Notiz als Modellelement haben Folgende Methoden m ssen berschrieben werden Ec e createFigure Muss eine Notiz Figur zur ckgeben Diese muss ggf eigens daf r implementiert werden e getModelSourceConnections Muss die verbundenen KNoteConnection Elemente zur ckgeben e getSourceConnectionAnchor wie in KEnumEditPart e performRequest f r Direct Editing Es muss der entsprechende DirectEditManager instanziiert und aufgerufen werden e createEditPolicies sollte folgende Edit Polic
289. rch ein zu evaluie rendes Framework verk rzt die Zeit f r die Implementierung Strategie Fremdentwicklung Die Anpasung von DOLSA an die Anforderungen des Projektes ist mit der vorhandenen Teamgr e nicht zu realisieren Das System wird vom Entwickler an das Projekt angepasst Strategie Anpassung der Systemf higkeiten Die Implementierung des vollst ndigen UML Standarts im System ist nicht zu schaffen stattdessen wird das System auf die Modellierung von Klassendiagrammen mit k nftiger Erweiterbarkeit angepasst Die Feh lerbehandlung wird rudiment r ausgef hrt und die Anwenderfreundlich keit wird vernachl ssigt KAPITEL 6 GLOBALE ANALYSE 6 2 ORGANISATORISCHE FAKTOREN Leichtes Hinzuf gen und Entfernen von Komponenten Zahlreiche F higkeiten und Eigenschaften des Systems sind verhandel bar und m ssen somit in die Struktur des Systems eingef gt werden au erdem verlangt der Auftraggeber nach einer M glichkeit zur Aus tauschbarkeit von Konfliktl sungsstrategien und Mechanismen zur Er zeugung von DOL Befehlen Austauschbare Komponenten m ssen unbe dingt fr hzeitig bei der Planung der Architektur ber cksichtigt werden beeinflussende Faktoren e O4 2 Funktionalit ten im System sind mit dem Auftraggeber ver handelbar e 13 3 3 Der Auftraggeber fordert zwingend die Umsetzung der Client Server Synchronisation via GMoVerS DOL e 14 2 3 F r die L sung von Synchronisationskonflikten und die Er
290. rchgef hrten Akzeptanztests in Kapitel 22 zeigen jedoch dass die Hauptfunktionalit t des Produktes gew hrleistet wird Zu Forschungszwecken ist das Projekt somit einsetzbar und erf llt die in der Zielvereinbarung in definierten Kriterien abgesehen von dem Modellierungsumfang der StClock Gerade als praktisches Anwendungsbeispiel der Delta Operation Language der Abtei lung Softwaretechnik der Universit t Oldenburg ist das Produkt geeignet Anhand der LogView im Client und der Protokollierung auf dem Server ist es auch f r Demonstrationen der DOLSA Synchronisation gut geeignet 171 172 KAPITEL 21 FAZIT Kapitel 22 Erfolgreiche Akzeptanztests Die Akzeptanztests in diesem Kapitel zielen auf eine vollst ndige Abdeckung der Benutzereingabe ab um die Funktionalit t des Systems auf UI Ebene zu evaluieren und f r die weitere Entwicklung zu dokumentieren Die folgenden Akzeptanzstests wurden fehlerfrei zum Ende des Projektes am 18 03 2015 unter der Linux Distribution Ubuntu 14 04 2 mit dem nativen Widget Tool kit GTK2 in der Version 2 24 durchgef hrt Aufgrund der exzessiven Menge von Tests wurde auf das dokumentieren der Undo Redo von allen Commands sowie der Kreuzprodukte von aufein ander folgenden Aktionen verzichtet Alle Undo Redo Operationen wurden getestet und der einzige fehlgeschlagene Test wurde in Kapitel 18 dokumen tiert Wo keine Vorbedingungen definiert sind wird von einem neuen leeren Modell ausgegangen 22 1 T
291. rden kann Das System muss dem Anwender alle zu einer Version zuge h rigen Modellelemente anzeigen Der Anwender muss sehen k nnen welche Modellelemente in einer ge w hlten Version vorhanden sind Das System muss es dem Anwender erm glichen den jeweils aktuellen Zustand des Modells als eine neue Version zu spei chern Um eine neue Version anzulegen muss der Anwender die M glichkeit haben eine neue Version vom Zustand des Modells das auf dem Server liegt zu erstellen Wenn der Anwender eine neue Version speichert muss das System dem Anwender erm glichen der Version einen Na men zu geben Der Anwender muss die M glichkeit haben einer Version einen festen 40 KAPITEL 3 MUSS KRITERIEN Namen zu geben damit er diese sp ter wiederfinden kann falls er zu ihr zur ckspringen m chte IV FA5 Das System muss die Liste aller Versionen in zeitlicher Rei henfolge darstellen Der Anwender muss erkennen k nnen wie alt eine Version ist Aus die sem Grund ist es erforderlich dass die Versionen nach Anlagedatum sortiert angezeigt werden IV FA6 Wenn kein Anwender mehr an einem Modell arbeitet muss das System den derzeitigen Zustand des Modells als eine neue Version speichern bevor das Modell geschlossen wird Sobald der letzte Anwender die Bearbeitung eines Modells beendet hat muss eine neue Version gespeichert werden damit der erarbeitete Stand nicht verloren geht Es kann nicht davon ausgegangen werden dass die Anwender di
292. reich sichtbar ist 204 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 17 Klassenmethode mit Datentyp aus dem Modell Dieser Test deckt das Erstellen einer Klassenmethode mit Datentyp aus dem Modell ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Der Name dieser Klasse lautet Default Class 3 Die erstellte Klasse wurde vergr ert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken 2 Im Texteingabefeld hello DefaultClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Klassenmethode angezeigt 2 Links in der ModelTreeView wird die neue Klassenmethode in der Klasse angezeigt 22 6 18 Klassenmethode mit ung ltigem Datentyp Dieser Test deckt das Erstellen einer Klassenmethode mit ung ltigem Da tentyp ab 22 6 TESTS F R KLASSENMETHODEN 205 Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Die erstellte Klasse wurde vergr fert sodass der Methodenbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Klasse klicken
293. requiring copyright permission other than the making of an exact copy The resulting work is called a modified version of the earlier work or a work based the earlier work A covered work means either the unmodified Program or a work based on the Program To propagate a work means to do anything with it that without permission would make you directly or secondarily liable for infringement under applicable copyright law except executing it on a computer or modifying a private copy Propagation includes copying distribution with or without modification making available to the public and in some countries other activities as well To convey a work means any kind of propagation that enables other parties to make or receive copies Mere interaction with a user through computer network with no transfer of a copy is not conveying An interactive user interface displays Appropriate Legal Notices to the extent that it includes convenient and prominently visible feature that 1 displays an appropriate copyright notice and 2 tells the user that there is no warranty for the work except to the extent that warranties are provided that licensees may convey the work under this License and how to view a copy of this License If the interface presents a list of user commands or options such as a 363 menu a prominent item in the list meets this criterion 1 Source Code The source code for a work means the prefe
294. rface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut mit pro tected Sichtbarkeit im Interface angezeigt 22 11 TESTS F R INTERFACE ATTRIBUTE 253 22 11 13 Interface Attribut mit public Sichtbarkeit mit Leer zeichen Dieser Test deckt das Erstellen eines Interface Attributes mit public Sicht barkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 14 Interface Attribut mit protected Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Interface Attributes mit protected Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken 254 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt mit Leerzeichen 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt mit Leerz
295. rk from that copyright holder and you cure the violation prior to 30 days after your receipt of the notice Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License If your rights have been terminated and not permanently reinstated you do not qualify to receive new licenses for the same material under section 10 9 Acceptance Not Required for Having Copies You are not required to accept this License in order to receive or run a copy of the Program Ancillary propagation of a covered work occurring solely as a consequence of using peer to peer transmission to receive a copy likewise does not require acceptance However nothing other than this License grants you permission to propagate or modify any covered work These actions infringe copyright if you do not accept this License Therefore by modifying or propagating a covered work you indicate your acceptance of this License to do so 367 10 Automatic Licensing of Downstream Recipients Each time you convey covered work the recipient automatically receives a license from the original licensors to run modify and propagate that work subject to this License You are not responsible for enforcing compliance by third parties with this License An entity transaction is transaction transferring control of an organization or substantially all assets of one or subdividing an
296. rred form of the work for making modifications to it Object code means any non source form of a work A Standard Interface means an interface that either is an official standard defined by a recognized standards body or in the case of interfaces specified for particular programming language one that is widely used among developers working in that language The System Libraries of an executable work include anything other than the work as a whole that a is included in the normal form of packaging a Major Component but which is not part of that Major Component and b serves only to enable use of the work with that Major Component or to implement a Standard Interface for which an implementation is available to the public in source code form Major Component in this context means a major essential component kernel window system and so on of the specific operating system if any on which the executable work runs or a compiler used to produce the work or an object code interpreter used to run it The Corresponding Source for a work in object code form means all the source code needed to generate install and for an executable work run the object code and to modify the work including scripts to control those activities However it does not include the work s System Libraries or general purpose tools or generally available free programs which are used unmodified in performing those activities but which are not
297. rten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der ModelTreeView nicht angezeigt 22 19 9 Bearbeiten des Quell Rollenbezeichners mit Package Sichtbarkeit Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Package Sichtbarkeit ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der ModelTreeView nicht angezeigt 22 19 10 Bearbeiten des Quell Rollenbezeichners mit Public Sichtbarkeit Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Public Sichtbarkeit ab 22 19 TESTS F R ASSOZIATIONSLABELS 333 Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird h
298. s Model elements Diagrams Diagram A Diagram B Diagram B KClass KAssociation KGeneralization CClass x int Model 2 calc Model 3 AClass BClass aint knows d int b int eint doA c int int doB c int int Abbildung 1 3 GUI Entworf des kollaborativen Modellierungswerkzeugs 20 KAPITEL 1 ZIELVEREINBARUNG Mithilfe der Baumansicht links k nnen die Modelle auf dem Server vom Client aus verwaltet werden Hier werden zugleich die Modellelemente und Diagramme zu einem Modell aufgelistet um Diagramme ausw hlen zu k n nen Wie die Baumstruktur im Detail aussehen soll steht noch nicht fest Eine weitere berlegung ist ber der Baumstruktur ein Drop Down Men einzuf gen so dass der Anwender dort eine Version eines Modells ausw hlen kann und in der Baumstruktur dann nur noch die Elemente und Diagramme f r die gew hlte Version angezeigt bekommt Ansonsten w rde die Baum struktur unter Umst nden un bersichtlich werden Um neue Diagramme erstellen zu k nnen und neue Versionen anzulegen wird ein Kontextmen Rechtsklick angeboten Die Diagrammverwaltung bietet somit M glichkeiten alle auf dem Server gespeicherten Diagramme und ihre Versionen aufzulisten Diagramme zu ffnen oder zu fr heren Ver sionen zur ckzukehren In der Mitte befinden sich die eigentlichen Editoren Durch die Verwen dung von Tabs k nnen mehr
299. s express and implied including warranties or conditions of title and non infringement and implied warranties or conditions of merchantability and fitness for a particular purpose ii effectively excludes on behalf of all Contributors all liability for damages including direct indirect special incidental and consequential damages such as lost profits iii states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party and iv states that source code for the Program is available from such Contributor and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange When the Program is made available in source code form a it must be made available under this Agreement and b copy of this Agreement must be included with each copy of the Program Contributors may not remove or alter any copyright notices contained within the Program Each Contributor must identify itself as the originator of its Contribution if any in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution 4 CO ERCIAL DISTRIBUTION Commercial distributors of software may accept certain responsibilities with respect to end users business partners and the like While this license is intended to acilitate the commercial use of the Program the Contributor who includes the Pro
300. s of that license document provided that the further restriction does not survive such relicensing or conveying If you add terms to a covered work in accord with this section you must place in the relevant source files statement of the additional terms that apply to those files or notice indicating where to find the applicable terms Additional terms permissive or non permissive may be stated in the form of separately written license or stated as exceptions the above requirements apply either way 8 Termination You may not propagate or modify a covered work except as expressly provided under this License Any attempt otherwise to propagate or modify it is void and will automatically terminate your rights under this License including any patent licenses granted under the third paragraph of section 11 However if you cease all violation of this License then your license from a particular copyright holder is reinstated a provisionally unless and until the copyright holder explicitly and finally terminates your license and b permanently if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation Moreover your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means this is the first time you have received notice of violation of this License for any wo
301. s welches ein wesentliches Ergebnis darstellt wird im Prozessbericht evaluiert Um die Software zu evaluieren wurden Akzeptanztests auf Basis der Anforderungen in Teil II erstellt Aufgrund der Unvollst ndigkeit der Globalen Analyse in Kapitel 6 wurden ebenso Informationen aus der Architektur in TeiT ITI ver wendet Die Traceability dieser Akzeptanzstests ist somit nicht l ckenlos Auferdem wurden die Evaluationskriterien aus der Zielvereinbarung ausge wertet Abschnitt 1 6 Dieser Evaluierungsprozess hat zum Ziel neben der Evaluierung des Pro dukts eine m glichst vollst ndige Dokumentation der Fehlerf lle f r die Wei terentwicklung zu liefern Die getestete Software baut auf Eclipse auf welches SWT 4 3 als Widget Toolkit Framework verwendet Da SWT 4 3 ein Wrapper f r die nativen Widget Toolkits ist f hrt dies unter jedem der folgenden nativen Widget Toolkits zu unterschiedlichem Verhalten Ecl15 e win32 Windows e GTK2 Linux Unix Windows OS X e Cocoa 32 bit OS X e Cocoa 64 bit OS X e Motif Unix Linux 153 154 KAPITEL 17 EINLEITUNG Kapitel 18 Fehlgeschlagene Akzeptanztests Dieser Abschnitt beinhaltet jene Akzeptanztests welche fehlgeschlagen sind mit dem unerwarteten Verhalten 18 1 Klassenattribut mit protected Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Klassenattributes mit protected Sicht barkeit mit Leerzeichen ab Dieser Fehler tritt bei Abstrakten Kla
302. s Delta an dazugeh rige Clients verschickt Danach arbeitet der runner Thread die n chste nderung aus der Queue ab Da DOLSA keine Fehler zur ckmeldet ist der einzige Fall wo eine nderung nicht angewandt werden kann wenn eine Exception von JGralab 9 3 SERIALISIERUNG DER NDERUNGEN GEF Model ModelSynchronization DolServices KotelettNetworkClient Server T T T T T T I 1 User changeDiagram 1 1 r preCh nge gt f 1 1 1 1 I clone Model i oldModel 1 UNE KEE gt 1 eres ete at tein 1 1 I i changeModel S postChbnge gt PalculateDelta oldModel currentModel geltaRepresentation i 1 i I 1 I 1 sendDol delta send delta I 1 Le Bee i ERE POP Siess K 1 i 1 1 1 Abbildung 9 3 Send Change mit den neuen Komponenten Model ModelMonitor DolServices KotelettNetworkServer Client1 Client Client2 Client amp runner Thread 1 i 2 send delta 1 queueDelta della 1 IESSE q 4 2 gt I 1 l 1 1 1 1applyDelta deltay I 1 I changeModel i lt SEENEN
303. s Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 18 Klassenattribut mit ung ltigem Datentyp Dieser Test deckt das Erstellen eines Klassenattributes mit ung ltigem Da tentyp ab 194 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt 2 Der Name dieser Klasse lautet DefaultClass Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello NonExistantClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Eine Fehlermeldung erscheint mit der Meldung The current model does not contain a type with the requested name NonExistantClass 22 5 19 Klassenattribut l schen Dieser Test deckt das L schen eines Klassenattributes ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 6 Tests f r Klassenmethoden Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Klassenmethoden ab 22 6
304. s Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 3 Knoten erstellt 2 Es wurde eine Assoziationen zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Der Endpunkt der Assoziation per Drag and Drop auf ein anderes Knoten ver ndern Erwartetes Ergebnis 1 Der Endpunkt der Assoziation wird nur dann ver ndert wenn die daraus resultierende Assoziation g ltig ist 296 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 16 15 Sichtbarkeit des Startpunktes einer Assoziation ak tivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Startpunktes einer As soziation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr grof ist und die Tests ber dieses Kreuz produkt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Rechtsklick auf die Assoziation 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird ein Pfeil am Startpunkt der Assoziation angezeigt 22 16 16 Sichtbarkeit des Startpunktes einer Assoziation de aktivieren Dieser Test deckt das Aktivieren der Sichtbarkeit des Startpunktes einer As soziation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der
305. s Modells zu beenden Der Anwender muss die Bearbeitung eines Modelles beenden k nnen z B durch Schlie en der Anwendung Dies muss vom System erkannt werden damit festgestellt werden kann ob und welche Anwender an einem Modell aktiv arbeiten Diagramme Das System muss es dem Anwender erm glichen ein Dia gramm zu einem Modell zu erstellen Der Anwender muss zu dem Modell das er ge ffnet hat ein neues Diagramm erstellen k nnen Dabei k nnen zu einem Modell mehrere Diagramme angelegt werden III FA7 1 Wenn der Anwender ein Diagramm erstellt muss das III FAS III FA9 III FA10 III FA11 III FA12 System den Anwender dazu auffordern dem Diagramm einen Namen zu geben Das System muss es dem Anwender erm glichen Diagramme zu l schen Das System muss es dem Anwender erm glichen Diagramme zur Bearbeitung zu ffnen Auch Diagramme m ssen ge ffnet werden k nnen damit der Anwen der weitere nderungen daran durchf hren kann Das System muss dem Anwender eine Liste aller zum aktuell ge ffneten Modell verf gbaren Diagramme anbieten Damit ein Diagramm ge ffnet werden kann muss der Anwender auch eine Liste aller verf gbaren Diagramme angezeigt bekommen damit er eines zur Bearbeitung ffnen kann Das System muss es dem Anwender erm glichen seine Be arbeitung eines Diagramms zu beenden Der Anwender muss die Bearbeitung eines Diagramms beenden k n nen z B durch Schlie en des Diagramms Das
306. s dabei zur Synchronisation Modellverwaltung und Versionierung ver wendet werden JGraLab muss zur Repr sentation und Verwendung eines Metamodells auf dem Client und Server verwendet werden Daraus ergibt sich die Abh ngigkeit dass der Client und Server in Java implementiert werden m ssen Bei den Untersuchungen nach einem Model lierungstool aus dem ersten Halbjahr war bereits GEF als Kandidat f r ein Java Modellierungstool gew hlt worden F r die Implementierung ben tigt GEF ein Metamodell f r die Daten repr sentation JGraLab kann dieses Metamodell stellen und ist auch mit GEF kompatibel Somit passt GEF sehr gut zu den geforderten Technologien und wird f r die Implementierung des Clients verwendet Dar ber hinaus kennt sich das Teammitglied Jan Becker sehr gut mit Eclipse aus und hat sich bereits vertieft in GEF eingearbeitet Somit be sitzt das Team eine Person die ggf f r Fragen bereit steht und diese auch beantworten kann Die Abbildung 8 1 soll die Zuordnung zwischen den definierten Funktio nalit ten aus Kapitel 7 mit den ben tigten Technologien erleichtern F r die Realisierung der grafischen Benutzeroberfl che werden SWT Abschnitt 8 1 und GEF verwendet siehe Abbildung 8 1 Die Darstellung der Diagramme und die M glichkeit diese zu ver ndern wird als Editor f r Klassendiagramme mittels GEF umgesetzt Der Editor wird in eine bergeordnete GUI eingebettet in der sich die Modell und die Ver sionsauswah
307. s dokumentiert 1 8 GLOSSAR 21 e Ein Projekthandbuch welches die Rahmenbedingungen des Projektes samt dem Entwicklungsprozess dokumentiert e Ein Prozessbericht welches Prozessprobleme und die dazugeh rigen L sungen sowie Lessons Learned aus diesem Projekt dokumentiert 1 8 Glossar DOL Delta Operation Language Operationsbasierte Repr sentationss prache f r Modellunterschiede DOLSA Delta Operations Language with Services and Applications Ein Modellversionierungssystem welches in der Softwaretechnik Abteilung der Universit t Oldenburg entwickelt wird Echtzeitsynchronisation Darstellung der nderungen bei allen Anwen dern im nahezu selben Moment Makroversionierung Klassische Versionierung wie sie von g ngigen Ver sionskontrollsystemen Git Subversion Mercurial 0 4 umgesetzt wird Mikroversionierung Die Synchronisation zweier Modelle mittels Techni ken die aus der Versionierung kommen z B diff merge etc Metamodell Ein Metamodell beschreibt Aufbau und Semantik eines Mo dells Es kann somit auch als Datenstruktur gesehen werden Modell F r den Begriff Modell gibt es viele verschiedene Definitionen H u fig wird ein Modell als eine Beschreibung eines Aspektes aus der Rea lit t verstanden MFBC12 Wir verwenden den Modell Begriff nach dieser Definition da ein Modell die Dinge beschreiben sollte die f r das zu entwickelnde Softwaresystem relevant sind Ein Modell ist da bei Instanz
308. s ersten Modells ist aktiv 22 20 TESTS F R KOLLABORATION 341 Test 1 Der Nutzer wechselt zum Editor des zweiten Modells Erwartetes Ergebnis 1 In der Userliste werden jetzt zwei Nutzer angezeigt 22 20 4 Aktualisieren der Userliste beim Modell wechseln II Dieser Test deckt das Aktualisieren der Userliste beim Ausw hlen eines Edi tors eines Modells mit weniger Nutzern ab Vorbedingung 1 Es wurden zwei Modelle geladen 2 Von jedem Modell ist genau ein Editor ge ffnet 3 Im ersten Modell ist kein Nutzer au er dem Tester 4 Im zweiten Modell ist auch noch ein weiterer Nutzer 5 Der Editor des zweiten Modells ist aktiv Test 1 Der Nutzer wechselt zum Editor des ersten Modells Erwartetes Ergebnis 1 In der Userliste wird jetzt ein Nutzer angezeigt 22 20 5 Aktualisieren der Userliste bei Names nderung Dieser Test deckt das Aktualisieren der Userliste bei Namens nderung eines Nutzers ab Vorbedingung 1 Es wurde ein Modell geladen 2 Zu diesem Modell ist genau ein Editor ge ffnet 3 Im diesem Modell befinden sich zwei Benutzer 342 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Der Nutzer ndert seinen Namen Erwartetes Ergebnis 1 In der Userliste beider Clients wird der neue Name des Benutzers an gezeigt 22 20 6 Aktualisieren der Userliste bei Farb nderung Dieser Test deckt das Aktualisieren der Userliste bei Farb nderung eines Nutzers ab Vorbedingung 1 Es wurde ein M
309. schneller Reihenfolge erstellt und bearbeitet WLS 13 Daher ist es unerl sslich dass nderungen von allen Beteiligten m glichst schnell gesehen werden k nnen Der klassische Ansatz ein Versionskontroll system VCS z B Git oder SVN zu verwenden um die Arbeit an mehreren Standorten zu synchronisieren ist dabei nicht ausreichend Der Arbeitsab lauf manuelles Check Out und Check In den diese Tools vorsehen ist f r eine Synchronisation in Echtzeit nicht geeignet Um effizientes verteiltes Arbeiten zu erm glichen ist es also notwendig dass Teammitglieder gleichzeitig an den selben Modellen arbeiten k nnen Derzeit verf gbare Tools wie Cacoo Null4 die eine solche Form des kol laborativen Arbeitens erm glichen sind reine Diagrammeditoren und kei ne Modellierungswerkzeuge Sie kennen die einzelnen Diagrammformen wie z B Rechtecke und Pfeile jedoch nicht deren Semantik wie z B Klassen und Assoziationen Aber bereits die Versionierung von Modellen stellt ein Problem Versio nierung ist z B notwendig um die Modellhistorie nachvollziehen und einen fr heren Stand der gemeinsamen Arbeit wieder herstellen zu k nnen Die klassische Versionierung erfolgt ber Versionskontrollsysteme wie z B Git Subversion CVS oder Mercurial Bla14 Diese Versionskontrollsysteme er m glichen das Verwalten aller Versionen von Dateien sowie das Zusammen f hren mehrerer Versionen Mergen 10 KAPITEL 1 ZIELVEREINBARUNG Das Mergen in
310. sclaimer of Warranty 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 EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED 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 16 Limitation of Liability IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER OR ANY OTHER PARTY WHO MODIFIES AND OR CONVEYS THE PROGRAM AS PERMITTED ABOVE BE LIABLE TO YOU FOR DAMAGES INCLUDING ANY GENERAL SPECIAL INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE 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 17 Interpretation of Sections 15 and 16 369 If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms reviewing courts shall apply local law th
311. sclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License or b Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it or c Prohibiting misrepresentation of the origin of that material or requiring that modified versions of such material be marked in reasonable ways as different from the original version or d Limiting the use for publicity purposes of names of licensors or authors of the material or e Declining to grant rights under trademark law for use of some trade names trademarks or service marks or f Requiring indemnification of licensors and authors of that material by anyone who conveys the material or modified versions of it with contractual assumptions of liability to the recipient for any liability that these contractual assumptions directly impose on those licensors and authors 11 other non permissive additional terms are considered further restrictions within the meaning of section 10 If the Program as you received it or any part of it contains a notice stating that it is governed by this License along with a term that is a further restriction you may remove that term If license document contains further restriction but permits relicensing or conveying under this License you may add to a covered work material governed by the term
312. sen ab 22 7 1 Abstrakte Klasse erstellen Dieser Test deckt das Erstellen einer Abstrakten Klasse ab Test 1 Im Editor Bereich links auf Class klicken 2 Im Editor Bereich in der Zeichenfl che klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klasse angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klasse im first Diagram angezeigt 22 7 2 Abstrakte Klasse erstellen mit Gr enangabe Dieser Test deckt das Erstellen einer Abstrakten Klasse mit Gr enangabe ab 22 7 TESTS F R ABSTRAKTE KLASSEN 211 Test 1 Im Editor Bereich links auf Class klicken 2 Im Editor Bereich in der Zeichenfl che klicken und nach unten rechts ziehen Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klasse mit angezeigt 2 Die neue Abstrakte Klasse f llt den Bereich vom Dr cken der Maustas te bis zum Loslassen der Maustaste 3 Links in der ModelTreeView wird die neue Abstrakte Klasse im first Diagram angezeigt 22 7 3 Abstrakte Klasse ausw hlen Dieser Test deckt das Ausw hlen einer Abstrakten Klasse ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt Test 1 Im Editor Bereich die erstellte Abstrakte Klasse anklicken Erwartetes Ergebnis 1 Im Editor Bereich wird die ausgew hlte Abstrakte Klasse umrandet angezeigt 22 7 4 Mehrfachauswahl von Abstrakte Klassen Dieser Test deckt das Ausw
313. spare parts or customer support for that product model to give anyone who possesses the object code either 1 a copy of the Corresponding Source for all the software in the product that is covered by this License on a durable physical medium customarily used for software interchange for price no more than your reasonable cost of physically performing this conveying of source or 2 access to copy the Corresponding Source from a network server at no charge c Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source This alternative is allowed only occasionally and noncommercially and only if you received the object code with such an offer in accord with subsection 6b d Convey the object code by offering access from a designated place gratis or for charge and offer equivalent access to the Corresponding Source in the same way through the same place at no 365 further charge You need not require recipients to copy the Corresponding Source along with the object code If the place to copy the object code is a network server the Corresponding Source may be on a different server operated by you or a third party that supports equivalent copying facilities provided you maintain clear directions next to the object code saying where to find the Corresponding Source Regardless of what server hosts the Corresponding Source you remain obligated to ensure that it is ava
314. ssen die Anwender die M glichkeit haben Klassendiagramme zu modellieren Dabei sollen die Klassendiagramme angelehnt an den UML 2 4 1 Standard realisiert werden Der Umfang wird auf den Inhalt der ST Vorlesung reduziert und mit den Auftraggebern abgesprochen Der zu realisierende Umfang wird in einem Metamodell festgehalten siehe pitel 10 Die grafische Oberfl che muss dabei dem Anwender erm glichen das Modell zu bearbeiten Das zweite Teilziel ist die Echtzeit Kollaboration Damit die Anwen der zusammen an einem Modell arbeiten k nnen m ssen die nderungen eines Anwenders an alle Anwender die an dem Modell arbeiten verteilt werden Dieser Schritt der Synchronisation wird in diesem Dokument als Mikroversionierung bezeichnet und zur seiner Realisierung sollen die DOL Services aus der DOLSA Arbeit verwendet werden Dabei darf das Modell w hrend der Bearbeitung durch das System f r andere Anwender nicht ge sperrt werden Jeder Anwender soll jederzeit das Modell ver ndern k nnen Damit die Kollaboration in Echtzeit geschieht muss eine verschickte nde rung unter einer Sekunde bei allen anderen Anwendern ankommen Dabei sollen nderungen der einzelnen Anwender voneinander optisch unterschie den werden k nnen Das dritte Teilziel ist die Modellverwaltung Damit Anwender an ver schiedenen Modellen arbeiten k nnen muss das System eine Modellverwal tung bereitstellen Diese muss es dem Anwender erm glichen neue Modelle anzulege
315. ssen und Interfaces ebenfalls auf Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt mit Leerzeichen 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt mit Leerzeichen 155 156 KAPITEL 18 FEHLGESCHLAGENE AKZEPTANZTESTS Tats chliches Ergebnis 1 Eine Fehlermeldung erscheint mit der Meldung Unrecognized modi fier in hello Void 18 2 Bearbeiten des Quell Rollenbezeichners an As soziationen mit Protected Sichtbarkeit Dieser Test deckt das Bearbeiten des Quell Rollenbezeichners mit Public Sichtbarkeit ab Dieser Fehler tritt bei Ziel Rollenbezeichnern ebenfalls auf Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde der Quell Rollenbezeichner selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 hallo eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird hallo im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 3 Die Sichtbarkeit des Rollenbezeichners wird in der ModelTreeView nicht angezeigt Tats c
316. ssenattribut in der Abstrakten Klasse angezeigt 22 8 3 Abstrakte Klassenattribut mit String Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes vom Void Primitiv Typ ab 22 8 TESTS F R ABSTRAKTE KLASSENATTRIBUTE 217 Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello String eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 4 Abstrakte Klassenattribut mit Boolean Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Boolean eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 218 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 8 5 Abstrakte Klassenattribut mit Float Primitiv Typ Dieser Test deckt das Erst
317. ssociation 326 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird anstelle der Komposition eine Assoziation angezeigt 2 Links in der ModelTreeView wird anstelle der Komposition eine Asso ziation angezeigt 22 18 21 Erstellen eines Bendpoints in einer Komposition Dieser Test deckt das Erstellen eines Bendpoints in einer Komposition ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Die Komposition wurde selektiert Test 1 Klick auf den mittleren markierten Punkt auf der Komposition 2 Verschieben des Bendpoints per Drag and Drop Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Komposition ber den Bendpoint umgeleitet angezeigt 22 18 22 Verschieben eines Bendpoints in einer Komposition Dieser Test deckt das Verschieben eines Bendpoints in einer Komposition ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Komposition zwischen diesen erstellt 3 Es wurde an der Komposition ein Bendpoint erstellt 4 Die Komposition wurd
318. ssoziation erstellt 3 Es wurde die Quell Multiplizit t selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird im selektierten Text feld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 22 19 19 Setzen von 1 als Quell Multiplizit t Dieser Test deckt das Setzen der Quell Multiplizit t auf 1 ab Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde die Quell Multiplizit t selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 1 eingeben 3 Enter dr cken 22 20 TESTS F R KOLLABORATION 339 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird 1 im selektierten Textfeld angezeigt 2 In der ModelTreeView links wurde der Wert des Textfelds and der Assoziation aktualisiert 22 19 20 Setzen von 25 als Quell Multiplizit t Dieser Test deckt das Setzen der Quell Multiplizit t auf eine beliebige aber feste Zahl ab Vorbedingung Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation erstellt 3 Es wurde die Quell Multiplizit t selektiert Test 1 Im Editor Bereich auf das selektierte Textfeld klicken 2 25 eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenf
319. st deckt das Erstellen eines Abstrakte Klassenattributes mit un g ltigem Datentyp ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Der Name dieser Abstrakte Klasse lautet DefaultClass Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello NonExistantClass eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Eine Fehlermeldung erscheint mit der Meldung The current model H does not contain type with the requested name NonExistantClass 226 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 8 19 Abstrakte Klassenattribut l schen Dieser Test deckt das L schen eines Abstrakte Klassenattributes ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 9 Tests f r Abstrakte Klassenmethoden Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Abstrakte Klassenmethoden ab 22 9 1 Abstrakte Klassenmethode mit Void Primitiv Typ Dieser Test deckt das Erstellen eines Abstrakte Klass
320. state void getTimeSetTo Date setTimeSetTo Date setTo void run void notifyClockListeners void main String args void buttonListener 1 interface stclock ClockButtonListener down void mode void set void up void HER nce siate 1 stclock states SetHourState format new SimpleDateFormat HH mm ss SimpleDateFormat interface stclock states ClockState SetHourState getinstance SetHourState up StClock clock void down StClock clock void set StClock clock void mode StClock clock void enter StClock clock void exit StClock clock void getDisplay Date currentTimeDate String gt up StClock clock void down StClock clock void mode StClock clock void set StClock clock void getDisplay Date currentTimeDate String enter StClock clock void exit StClock clock void 1 1 stclock states ShowTimeState stclock states SetMinuteState instance null ShowTimeState format new SimpleDateFormat HH mm ss SimpleDateFormat instance null SetMinuteState format_ new SimpleDateFormat HH mm ss SimpleDateFormat ShowTimeState getinstance ShowTimeState up StClock clock void down StClock clock void set StClock clock void mode St
321. strakten Klasse angezeigt 2 Links in der ModelTreeView wird die neue Assoziation unter der ersten Abstrakten Klasse im firstDiagram angezeigt 22 16 5 Assoziation von einer Abstrakten Klasse zu einer Klasse Dieser Test deckt das Erstellen einer Assoziation von einer Abstrakten Klas se zu einer Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Klasse erstellt 22 16 TESTS F R ASSOZIATIONEN 291 Test 1 Links im Editor Bereich auf Association klicken 2 Auf die Abstrakte Klasse klicken 3 Auf die Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation von der Abstrakten Klasse zur Klasse angezeigt 2 Links in der ModelTreeView wird die neue Assoziation unter der Ab strakten Klasse im firstDiagram angezeigt 22 16 6 Assoziation von einer Abstrakten Klasse zu einem Interface Dieser Test deckt das Erstellen einer Assoziation von einer Abstrakten Klas se zu einem Interface ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Abstrakte Klasse erstellt 3 Es wurde 1 Interface erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf die Abstrakte Klasse klicken 3 Auf das Interface klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation von der Abstrakten Klasse zum Interface angezeigt 2 Links in der ModelTreeView wird die neue Assozia
322. sungsstrategie verwenden indem es einen derartigen ung ltigen Undo Redo Command dann ein fach ignoriert Ausnahme bilden hierbei Undo Delete sowie Redo Create da durch diese beiden Befehle die zuvor gel schten Ele mente wiederhergestellt werden sollen Der Unterschied ist hier dass der selbe Anwender zuvor die Elemente auch gel scht hatte und dieses L schen damit r ckg ngig machen m chte I FA8 3 Das System muss nderungen durch Undo Redo Com mands auch dann bernehmen k nnen wenn zwischen durch nderungen anderer User am selben Element durch gef hrt wurden Ein weiterer Konfliktfall besteht darin dass andere Anwender das gleiche Element zwar nicht l schen aber daran ebenfalls etwas ndern So k nnte es sein dass Anwender 1 den Klassennamen von Test auf MeinTest ndert Ein anderer Anwender k nnte den Namen dann auf UnserTest ndern Wenn Anwender 1 nun Undo ausf hrt w rde die nderung des zweiten Anwenders durch den urspr nglichen Klassennamen Test berschrieben Layout I FA9 Das System muss es dem Anwender erm glichen die in genannten nderungen am Layout der jeweils auf gef hrten Diagrammelemente durchzuf hren Die aufgef hrte Tabelle gibt zu den verschiedenen Diagrammelementen eine Aktion an Art der nderung und ein nderungsobjekt also was in dem Fall ge ndert wird Aus der Tabelle wird somit ersichtlich welche Aktionen der Anwender am Layout des Diagramms durchf hren kann I F
323. t berschaubar ist und die zu ver wendeten Technologien bis auf die Kommunikationstechnologie feststehen 1 5 1 Meilenstein Planung Bis zum ersten Meilenstein muss eine neue Zielvereinbarung und das Me tamodell f r Klassendiagramme erstellt werden Die Zielvereinbarung wird f r die Abstimmung der Anforderungen mit den Auftraggebern und f r die Planung des Produktes im Team ben tigt Hieraus wird ein Anforderungs katalog f r das Produkt erstellt Das Metamodell wird von allen Komponenten des Produktes ben tigt Es soll m glichst fr h erstellt werden damit alle Komponenten eine bereits fortgeschrittene Version des Metamodells verwenden k nnen Ausgehend von der Zielsetzung und dem Metamodell kann die Schnitt stellen zu DOLSA mit Dilshodbek Kuryazov abgestimmt und die detaillierte Architektur f r das Produkt erstellt werden W hrend des Architekturent wurfs m ssen einige kleine Prototypen geschrieben werden um die Schnitt stellen zwischen den einzelnen Komponenten auszuprobieren Die Schnitt stelle und die Architektur werden mit den Auftraggebern abgestimmt und gegebenenfalls angepasst Den Abschluss dieser Phase soll eine Dokumentation der bisherigen Ak tivit ten und Artefakten in der PG darstellen Dar ber hinaus kann ein Prototyp der GEF jGraLab Kommunikation in dem Client und die Kom munikation mit den DOLSA Services vorgestellt werden 1 5 2 Meilenstein Implementierung der kollaborativen Mo dellierung Bis zum E
324. t ndige ModelMonitor und User bezogene Anfragen an den UserManager Anfragen bez glich des Repositories werden der DolApplication bergeben Der UserManager verwaltet alle User Es unterscheiden sich dabei an gemeldete User und historische User Historische User werden aufgehoben damit dem Client die zu dieser UserId geh rige Farbe hat Einem angemel deten User ist eine Connection zugeordnet diese wird verwendet um dem Client des Users Nachrichten zu schicken sowie die Menge der Modellldenti fier der Modelle an denen er arbeitet Jedem Modellldentifier ist umgekehrt auch die Menge der User die auf seinem Modell arbeiten zugeordnet Der ModelMonitor stellt sicher dass eingehende Deltas in der korrekten Reihenfolge auf das Modell angewandt werden und dass die Deltas an alle am Modell mitarbeitenden User verteilt werden Die Anwendung der Deltas geschiet durch Nutzung der DolServices 100 KAPITEL 9 MODULSICHT 9 6 Parsen von Benutzereingaben Bei der Modellierung von Klassendiagrammen auf Diagrammebene gibt es einige Anwendungsf lle in denen textuelle Benutzereingaben direkt in Mo dellinformationen umgewandelt geparst werden m ssen e Attributsignaturen e Methodensignaturen e Rollenbezeichner e Multiplizit ten In all diesen F llen wird durch die Spezifikation von Klassendiagrammen nach der UML Super Structure eine spezielle Syntax definiert in der Modellinformationen in Textrepr sentationen im Diagramm umgewandelt werde
325. t deckt das L schen einer Enumeration aus einem Diagramm ab Vorbedingung 1 Es wurde eine Enumeration erstellt 276 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich die erstellte Enumeration anklicken 2 Entfernen Taste dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die gel schte Enumeration nicht mehr angezeigt 22 13 9 Enumeration aus Modell l schen Dieser Test deckt das L schen einer Enumeration aus einem Modell ab Vorbedingung Es wurde eine Enumeration erstellt Test 1 Links in der ModelTreeView rechtsklick auf die Enumeration unter ModelElements 2 Delete Enum from model anklicken Erwartetes Ergebnis 1 Links in der ModelTreeView wird das gel schte Element nicht mehr angezeigt 22 13 10 Enumeration aus Modell in Diagramm einf gen Dieser Test deckt das Einf gen einer Enumeration aus einem Modell in ein Diagramm ab Vorbedingung 1 Es wurde eine Enumeration erstellt 2 Die erstellte Enumeration wurde aus dem Diagramm gel scht Test 1 Links in der ModelTreeView auf die Enumeration unter ModelEle ments doppelklicken 22 14 TESTS F R ENUMLITERALE 277 Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die eingef gte Enumera tion angezeigt 22 14 Tests f r Enumliterale Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Enumliteralen ab 22 14 1 Enumliteral erste
326. t fordert eine ResetModelMessage an e ResetModelMessage Enth lt ein ActiveDelta in DOL Der Client ver wirft sein aktuelles Modell und wendet das Delta auf ein leeres Model an Zur Fehlerbehandlung kann das Modell an zwei verschiedenen Stellen zu r ckgesetzt werden Zum einen wenn die nderung der Clients auf dem Server nicht angewandt werden kann Dies tritt auf wenn eine in Konflikt stehende nderung eines anderen Clients zuerst angewandt wurde Zum an deren kann die Anwendung einer von Server eingehenden nderung auf dem Client fehlschlagen In diesem Fall treffen die beiden in Konflikt stehenden nderung auf dem Client zusammen Die eben beschriebene Fehlerbehandlung legt ein Problem des Protokolls offen Die Clients sind immer wieder asynchron Ein deutlicher Vorteil ist allerdings dass Nutzer nderungen sofort durchgef hrt werden so dass der Arbeitsfluss nicht unterbrochen wird Ein wichtiger Faktor dabei ist wie oft 9 4 PROTOKOLL DER CLIENT SERVER KOMMUNIKATION 89 die Modelle resettet werden m ssen dies kann allerdings erst am Produkt festgestellt werden 9 4 2 Best tigung abwarten Das Protokoll der Client Server Kommunikation mit Abwarten der Best ti gung durch den Server ist in Abbildung 9 6 dargestellt Die RequestDenied Message teilt dem Client mit das seine nderung nicht angewandt werden konnte Die Fehlerbehandlung bei diesem Ansatz besteht nur darin inkom patible nderungen auf dem Server abzuweisen
327. t ist ist die Userliste leer Tats chliches Ergebnis 1 Die Userliste wird nicht geleert 2 Wenn man jetzt z B seine Farbe ndert kann der Client nicht mehr mit dem Server kommunizieren 162 KAPITEL 18 FEHLGESCHLAGENE AKZEPTANZTESTS Kapitel 19 Evaluation nach Zielvereinbarung In diesem Kapitel werden die in der Zielvereinbarung definierten Evaluati onskriterien ausgewertet siehe Abschnitt 1 6 FA I Das System muss dem Anwender die Modellierung von Klas sendiagrammen erm glichen Die verf gbaren Sprachmittel sind dabei durch das Metamodell definiert Die grapische Repr sentation soll sich dabei am UML 2 4 1 Standard orientieren Obj11 Als Akzep tanztest soll der Nutzer in der Lage sein die StClock zu modellieren Dabei soll das Ergebniss semantisch quivalent zu dem Klassendia gramm in Abbildung 1 2 sein Folgende Sprachmittel unterst tzt Kotelett nicht Default Werte f r Attribute Leere Rollenbezeichner Konstruktoren Arrays Namespaces in Klassennamen long int und alle JDK Klassen fehlen Es existiert allerdings In teger In Abbildung 19 1 sind die Fehler in Rot markiert Die leeren K sten stehen dabei f r leere Rollenbezeichner die Kotelett nicht unterst tzt Den gr sten Aufwand hierbei stellen Arrays dar da sie weitere Da tentypen f r jeden vorhandenen Datentyp darstellen Das System muss den Zustand eines Modells unter allen be arbeitende
328. tack zur ckgegeben e setColorsVisible Aktiviert und deaktiviert die farblichen Hervor hebungen im Editor de uniol pgktltt gef client editor In diesem Package ist die Editor Klasse und Hilfsklassen enthal ten ClassDiagramEditor erbt von org eclipse gef ui parts GraphicalEditorWithPalett und stellt damit die Editorklasse f r Klassendiagramme dar Der korrespondierende EditorInput ist ClassDiagramEditorInput Der ClassDiagramEditorInput h lt eine Referenz auf das Diagram Objekt siehe sowie den zugeh rigen Modell und Versions Identifier Letzterer ist bei Head Versionen null Das Zusammenspiel von ClassDiagramEditor und ModelRegistry ist in beschrieben F r die Erstellung von Diagrammelementen ist ZU dem ClassDiagramFactory wichtig Diese implementiert org eclipse gef requests CreationFactory Instanzen dieser Klasse werden von GEF in den Paletteneintr gen siehe und den CreationRequestd verwendet Die Methode getNewObject gibt allerdings immer null zur ck da JGraLab Vertices nicht ohne einen Graphen oder eine Factory instanziiert werden k nnen http help eclipse org luna topic org eclipse gef doc isv reference api org eclipse gef commands CommandStack html ecli reference api org eclipse gef requests CreateRequest html 12 03 2015 13 3 SERVER DETAILLIERTE STRUKTUR 127 Das Enum ModelElementType wird dazu verwendet um Typinforma tionen zu Modellelementen in CreationRequests zu
329. target einer KGeneralization eine Instanz von KInterface ist muss source der KGeneralization ebenfalls Instanz von KGeneralization sein 10 4 3 Eindeutigkeit der Darstellung LAYOUT 1 Die Indices index der BendPoints einer GraphicalEdge m ssen verschieden sein Sie sollten fortlaufend sein LAYOUT 2 Die Indices index der KParameter einer KMethod m ssen verschieden sein Sie sollten fortlaufend sein LAYOUT 3 Das Attribut element einer LabelPosition darf nur zuvor f r den Kantentyp definierte Werte annehmen LAYOUT A Das Attribut element aller LabelPositions einer GraphicalEdge muss verschieden sein 10 5 Interpretation von Layoutangaben Die in diesem Abschnitt geschilderte Darstellung ist noch nicht vollst ndig auf ihre Umsetzbarkeit in GEF getestet ist aber voraussichtlich mit akzeptablem Aufwand umsetzbar Im folgenden wird erl utert wie die Attribute der Layoutklassen voraus sichtlich bei der Darstellung interpretiert werden Die Interpretation zielt auf eine einfache Umsetzung in GEF Koordinatenursprung im Editor ist oben Links Die Achsen verlaufen von links nach rechts bzw oben nach unten Somit bezeichnen die x und y Koordinaten einer BoundingBox die obere linke Ecke des Rechtecks Kanten werden als Polygonz ge durch alle Eckpunkte BendPoints der Kante interpretiert Koordinaten von Eckpunkten k nnen sowohl absolut als auch relativ interpretiert werden In einem fr heren Prototyp hat es sich be
330. te Klassenmethode mit privater Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr ert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 9 TESTS F R ABSTRAKTE KLASSENMETHODEN 233 22 9 12 Abstrakte Klassenmethode mit default Sichtbarkeit mit Leerzeichen Dieser Test deckt das Erstellen eines Abstrakte Klassenmethode mit default Sichtbarkeit mit Leerzeichen ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt 2 Die erstellte Abstrakte Klasse wurde vergr fert sodass der Metho denbereich sichtbar ist Test 1 Im Editor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode mit protected Sichtbarkeit in der Abstrakten Klasse angezeigt 22 9 13 Abstrakte Klassenmethode mit public Sichtbarkeit mit L
331. ten Eclipse Plugins de uniol pgktltt gef client und de uniol pgktltt shared werden zu je einem lauff higen Produkt f r Windows 32 und 64 Bit Linux 32 und 64 Bit und Mac Os X 64 Bit zusammengestellt und zu einem ZIP Archiv verpackt Die in de uniol pgktltt gef test enthaltenen Unit und Integrati onstests werden automatisch in einer Eclipse Laufzeitumgebung ausgef hrt und die Testergebnisse auf dem Server gespeichert F r die Maven Konfiguration und die Aufteilung in ein extra Plugin f r das RCP und die Tests dienten die Beispiele in http git eclipse org c tycho org eclipse tycho demo git tree als Vorbild 11 1 1 Spezielle Anpassungen f r das ARBI System Damit automatisierte Tests auf dem virtuellen Server der Projektgruppe m glich sind m ssen ein paar spezielle Konfigurationen vorgenommen wer den Grund ist dass das ELF Format von FreeBSD sich von dem in Linux benutzen unterscheidet so dass f r Linux compilierte Binaries nur mit der Linux Emulation von FreeBSD ausf hrbar sind Diese unterst tzt zudem nur 32 Bit Binaries Da Eclipse Anwendungen viel nativen Code enthalten und diese Bibliotheken nicht f r FreeBSD existieren muss auf die Linux Emulation zur ckgegriffen werden Dies bedeutet dass die Tests zum einen auf einer 32 Bit Linux JVM ausgef hrt werden m ssen und zum anderen die entsprechenden nativen Bibliotheken von der Eclipse Laufzeitumgebung geladen werden m ssen Damit eine andere als die standard J
332. ter die neue Farbe ausw hlen und best tigen Erwartetes Ergebnis 1 Unten in der Userliste wird die neue Farbe angezeigt 2 In allen Diagrammen werden die Elemente des Nutzers in der neuen Farbe angezeigt 178 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS 22 2 6 Farben ausblenden Dieser Test deckt das tempor re Ausblenden der Farben im Diagrammedi tor Vorbedingung 1 Es wurde eine Klasse erstellt Test 1 Unten rechts auf Colors Visible klicken Erwartetes Ergebnis 1 In allen Diagrammen werden alle Elemente mit wei em Hintergrund angezeigt 22 2 7 Farben wieder einblenden Dieser Test deckt das Einblenden der Farben im Diagrammeditor Vorbedingung 1 Es wurde eine Klasse erstellt 2 Die Farben im Diagramm wurden tempor r ausgeblendet Test 1 Unten rechts auf Colors Visible klicken Erwartetes Ergebnis 1 In allen Diagrammen werden alle Elemente mit der Farbe des Anwen ders als Hintergrund angezeigt 22 2 8 Farben im Modell permanent l schen Dieser Test deckt das L schen aller Farben aus dem Modell ab Vorbedingung 1 Es wurde eine Klasse erstellt Test 1 Unten rechts auf Clear Colors klicken 22 3 TESTS F R DIE VERSIONIERUNG 179 Erwartetes Ergebnis 1 In allen Diagrammen werden alle Elemente mit wei em Hintergrund angezeigt 22 2 9 Diagramm Drucken Dieser Test deckt das Drucken eines Diagramms ab Vorbedingung 1 Es wurde eine Klasse erstellt Test
333. terten Metamodells portiert Mithilfe des im Projekt erstellten Konsolentools JGraLabHelper kann der Modellcode aus der XMI Datei erstellt werden Das Tool sollte in dem Verzeichnis aufgerufen werden in dem die XMI Datei liegt Der Aufruf lautet java jar pfad zu JGraLabHelper jar Modellname xmi Das Tool erstellt dann in einem Unterordner dest den Modellcode so wie einen DOT Graphen und JGraLab Schema Graphen im aktuellen Ver zeichnis Der Modellcode muss dann compiliert und zu einem Java Archiv JAR kotelett model jar gepackt werden das das existierende Archiv im Eclipse Projekt de uniol pgktltt shared ersetzt Das Compilieren und Packen kann z B erfolgen indem der Code in ein leeres Eclipse Projekt eingef gt wird und dann von dem Projekt eine JAR exportiert wird Aufgrund geringer Unterschiede im XMI Export sind andere Tools ungeeignet Warum dieser Schritt nicht in den Buildprozess integriert wurde ist im Wartungs handbuch Abschnitt 11 3 erkl rt 16 2 DETAILLIERTES BEISPIEL ENUMERATIONEN 137 16 2 2 Commands Im Folgenden ist beschrieben welche GEF Commands implementiert werden m ssen Alle Commands sollten von AbstractModelCommand erben da dort sichergestellt wird dass nur die Head Version bearbeitet werden kann e CreateKEnumCommand Dieser Command wird zum Erstellen von Enu merationen ben tigt Wir erben von CreateNodeCommand der wie derum von AbstractModelCommand erbt so dass nur die Methode createNo
334. tes evaluiert wurde und als beste L sung zum Zeichnen von Diagrammen in Java betrachtet wurde Hierzu wurde ein Kriterienkatalog aufgestellt N here Informationen dazu k nnen dem Prozessbericht Beschreibung der ersten Iteration entnommen werden Bei GEF handelt es sich um eine auf dem Eclipse Framework basierende L sung zum Erstellen von Diagramm Editoren Es gibt bereits eine View Model Struktur vor Die f r das Kotelett Projekt wesentlichen Struktur Elemente werden im Folgenden grob beschrieben F r tiefergehende Infor mationen muss auf Ecl14 RWCII verwiesen werden res Interaction v md Gel Model KE a osa Event Handlers Actions Canvas ER a e Menus e Toolbars Tools e Keybindings Vi figure User Input i figure figure m figure figure figure Abbildung 8 2 bersicht ber GEF Quelle http help eclipse org luna topic org eclipse gef doc isv guide guide html 8 2 1 Visualisierung Wie in Abbildung B 2 dargestellt schreibt GEF eine Art Model View Control vor Dabei macht GEF keine Vorgaben wie das Modell auszusehen hat Als Konsequenz m ssen Layoutinformationen im Modell gehalten bzw aus die sem abgeleitet werden Der Modellbegriff meint bei GEF damit also eher den Diagrammbegriff wie er im Rahmen dieses Projekts gepr gt wurde Im folgenden wird dazu trotzdem der Begriff Modell verwendet 8 2 GEF 73 Die Schnittstelle z
335. tes im Modell entfernt wird Dadurch geht die In formation des letzten Bearbeiters verloren Damit ist es m glich einen gemeinsamen Zwischenstand zu definieren Nachfolgende nderungen sind damit dann f r alle besser ersichtlich 4 3 III VERWALTUNG MEHRERER MODELLE 43 4 3 III Verwaltung mehrerer Modelle Funktionale Anforderungen III WA1 Das System muss es dem Anwender erm glichen ein Modell element zu mehreren Diagrammen des Modells hinzuzuf gen Da mehrere Diagramme pro Modell nach m glich sein m s sen w re es w nschenswert wenn im Rahmen von Klassendiagram men auch multiperspektivische Modellierung m glich ist D h dass sich bspw dieselben Klassen aus einem Modell in unterschiedlichen Diagrammen des Modells unterschiedlich betrachten lassen III WA1 1 Wenn der Anwender ein Modellelement ndert dass in mehreren Diagrammen enthalten ist dann muss diese nderungen in allen Diagrammen dargestellt werden Um die Konsistenz des Modells und den Diagrammen zu gew hr leisten m ssen nderungen an Modellelementen immer auch in den zugeordneten Diagrammen widergespiegelt werden III WA2 Das System soll dem Anwender erm glichen alte Versionen zu betrachten ohne den aktuellen Stand zu verwerfen Falls ein Benutzer sich eine ltere Version anschauen m chte soll das System ihm die M glichkeit dazu bieten ohne dass der aktuelle Stand direkt bersprungen wird d h die ausgew hlte Version geladen wird Es soll sich
336. tform Plug in Developer Guide 2013 Eclipse Hilfe ECLIPSE FOUNDATION GEF Programmer s Guide http help eclipse org luna topic org eclipse gef doc isv guide guide html Version 2014 Abruf 2015 01 25 ECLIPSE FOUNDATION The SWT FAQ http www eclipse org swt faq php Version 2015 Abruf 2015 03 11 ELAASAR Maged LABICHE Yvan Diagram Definition A Case Study with the UML Class Diagram Version 2011 doi org 10 1007 978 3 642 24485 8_26 In WHITTLE Jon Hrsg CLARK Tony Hrsg K HNE Thomas Hrsg Model Driven Engineering Languages and Systems Bd 6981 Springer Berlin Heidelberg 2011 DOI 10 1007 978 3 642 24485 8 26 ISBN 978 3 642 24484 1 364 378 GIT Git git diff Documentation http git scm com docs Version 2014 Abruf 2014 11 07 IBM IBM Rational Software Architect http www 03 ibm com software products en ratisoftarch Version 2014 Abruf 2014 06 11 KAHLE Steffen JGraLab Konzeption Entwurf und Implemen tierung einer Java Klassenbibliothek f r TGraphen Universi t t Koblenz Landau Institut f r Softwaretechnik Diplomarbeit 2006 KRYONET KryoNet TCP UDP Client Server library for Java https github com EsotericSoftware kryonet Version 2014 Abruf 2014 11 16 373 374 Kur14 KW14 MFBC12 MLA10 Nul14 Obj11 14 PR11 RWC11 WLS 13 LITERATURVERZEICHNIS KURYAZOV Dilshodbek Delta Operations Lan
337. the Program shall continue and survive Everyone is permitted to copy and distribute copies of this Agreement but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner The Agreement Steward reserves the right to publish new versions including revisions of this Agreement from time to time No one other than the Agreement Steward has the right to modify this Agreement The Eclipse Foundation is the initial Agreement Steward The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity Each new version of the Agreement will be given a distinguishing version number The Program including Contributions may always be distributed subject to the version of the Agreement under which it was received In addition after a new version of the Agreement is published Contributor may elect to distribute the Program including its Contributions under the new version Except as expressly stated in Sections 2 a and 2 b above Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement whether expressly by implication estoppel or otherwise All rights in the Program not expressly granted under this Agreement are reserved This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America No party to this Agreement will bring a le
338. tion unter der Ab strakten Klasse im firstDiagram angezeigt 22 16 7 Assoziation von einem Interface zu einem Interface Dieser Test deckt das Erstellen einer Assoziation von einem Interface zu einem Interface ab 292 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Vorbedingung Es wurden 2 Interfaces erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf das erste Interface klicken 3 Auf das zweite Interface klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation vom ers ten zum zweiten Interface angezeigt 2 Links in der Model TreeView wird die neue Assoziation unter dem ers ten Interface im firstDiagram angezeigt 22 16 8 Assoziation von einem Interface zu einer Klasse Dieser Test deckt das Erstellen einer Assoziation von einem Interface zu einer Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Klasse erstellt Test 1 Links im Editor Bereich auf Association klicken 2 Auf das Interface klicken 3 Auf die Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Assoziation vom In terface zur Klasse angezeigt 2 Links in der ModelTreeView wird die neue Assoziation unter dem In terface im firstDiagram angezeigt 22 16 TESTS F R ASSOZIATIONEN 293 22 16 9 Assoziation von einem Interface zu einer Abstrakten Klasse Dieser Test deckt das Erstellen
339. tltt gef client views modeltreeview listener selection 13 3 Server detaillierte Struktur Der Server hat nur zwei Packages de uniol pgktltt server und de uniol pgktltt server voting help ee org luna topic org eclipse gef doc isv reference api org eclipse gef editparts Abstract raphicalEditPart html T07 03 2015 128 KAPITEL 13 PROJEKTSTRUKTUR Die Hauptklasse mit der main Methode ist de uniol pgktltt server KotelettServer Eingehende Nachrichten vom Client werden vom KotelettNetworkServer entgegengenommen und an Registry und UserManager weitergegeben Der ColorCalculator wird benutzt um neuen Anwendern automatisch eine Farbe zuzuweisen Genauer ist der Server in beschrieben Das Package de uniol pgktltt server voting enth lt die serversei tige implementierung des Voting Systems mit dem Anfragen an die Clients verschickt werden bei denen alle Anwender zustimmen m ssen Die Benut zung ist sehr einfach und kann beispielsweise in der Methode Registry revertModel nachgesehen werden Kapitel 14 Logging In Kotelett werden generell wenig Debug Messages verwendet In jedem Fall werden aber Exceptions geloggt Sowohl auf Client als auf dem Server werden Logging Ausgaben in den Standard Output geschrieben 14 1 Logging auf dem Server Wenn das Startskript aus dem Installationshandbuch verwendet wird wird der Output des Servers in die Datei server log umgeleitet Die Log Messages enthalten keine Zeitstempe
340. tor Bereich im Methodenbereich der Abstrakte Klasse klicken 2 Im Texteingabefeld hello parameterl Integer parameter Integer Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die neue Abstrakte Klas senmethode angezeigt 2 Links in der ModelTreeView wird die neue Abstrakte Klassenmethode in der Abstrakten Klasse angezeigt 22 10 Tests f r Interfaces Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Interfaces ab 22 10 1 Interface erstellen Dieser Test deckt das Erstellen eines Interface ab 242 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Im Editor Bereich links auf Interface klicken 2 Im Editor Bereich in der Zeichenfl che klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface ange zeigt 2 Links in der ModelTreeView wird das neue Interface im firstDiagram angezeigt 22 10 2 Interface erstellen mit Gr enangabe Dieser Test deckt das Erstellen eines Interface mit Gr enangabe ab Test 1 Im Editor Bereich links auf Interface klicken 2 Im Editor Bereich in der Zeichenfl che klicken und nach unten rechts ziehen Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface mit angezeigt 2 Das neue Interface f llt den Bereich vom Dr cken der Maustaste bis zum Loslassen der Maustaste 3 Links in der M
341. u or copies made from those copies or b primarily for and in connection with specific products or compilations that contain the covered work unless you entered into that arrangement or that patent license was granted prior to 28 March 2007 Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law 12 No Surrender of Others Freedom If 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 convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations then as a consequence you may not convey it at all For example if you agree to terms that obligate you to collect royalty for further conveying from those to whom you convey the Program the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program 13 Use with the GNU Affero General Public License Notwithstanding any other provision of this License you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work and to convey the resulting work The terms of this License will continu
342. uf dem Server persistieren zu lassen Auch hierf r gibt es einen Kontextmen Eintrag Der Anwender wird aufgefordert die 94 KAPITEL 9 MODULSICHT SWT Presenter Presenter DOL Application Client Server SC A T E getModelList gt getModelList Anwender A A _ _ modelListList i displayModelList K modelList __ lt seleciModel j selectVersion modelSelected TA I getVersionList model getVersionList model Dan ale 1 versionList List versionList Kar isplayVersionList K Al i versionSelected E Headversion selected lgetActiveDelta mod getActiveDelta Delta DOL lt loadVersion version Nx d version DOL Ee SC displayModelElements Abbildung 9 9 Sequenzdiagramm zum Anzeigen und Laden von Modellen SWT Presenter Presenter DOL Application Anwender newModel Server Client T createModel M anne oreateModel S model Modelldentifier 1 1 1 1 lanother clien ig newModel initModel 5 l l LupdateModelList l l l l 1 l 1 l newModel 1 1 1 Abbildung 9 10 Sequ
343. uf genau ein Modell beschr nkt welches den effektiven Einsatz des Systems unterbinden w rde Zudem ist die Modellverwaltung kritisch f r die Skalierbarkeit und Erweiterbarkeit des Systems 3 3 1 Funktionale Anforderungen Modelle III FA1 Das System muss es dem Anwender erm glichen Modelle zu erstellen III FA1 1 Wenn der Anwender ein Modell erstellt muss das Sys tem den Anwender dazu auffordern dem Modell einen eindeutigen Namen zu geben Der Anwender muss beim Erstellen eines Modells einen eindeuti gen Namen angeben damit er und andere Anwender das Modell sp ter wiederfinden k nnen III FA2 Das System muss es dem Anwender erm glichen Modelle zu l schen II FA3 Wenn ein Modell gel scht wird muss das System sicherstel len dass auch alle dazugeh rigen Diagramme gel scht werden III FA4 Das System muss es dem Anwender erm glichen Modelle zur Bearbeitung zu ffnen Ein Modell das bereits ge ffnet und gespeichert wurde muss zu ei nem sp teren Zeitpunkt wieder ge ffnet werden k nnen damit weitere nderungen daran durchgef hrt werden k nnen III FA5 Das System muss dem Anwender eine Liste aller verf gbaren Modelle anbieten 38 III FA6 III FA7 KAPITEL 3 MUSS KRITERIEN Um ein Modell zu ffnen muss dem Anwender eine Liste aller verf g baren Modelle angeboten werden aus denen er dann eines ausw hlen kann Das System muss es dem Anwender erm glichen seine Be arbeitung eine
344. us diesem Katalog noch mit aufgenommen werden 4 1 I Modellierung von Klassendiagrammen Funktionale Anforderungen I WA1 Das System soll dem Anwender erm glichen mehrere Dia grammelemente gleichzeitig auszuw hlen Dies ist eine Erwei terung von Anforderung I FA4 um auch mehrere Diagrammelemente gleichzeitig ausw hlen und verschieben bzw entfernen zu k nnen I WA1 1 I WA1 2 Wenn ein Anwender mehrere Elemente ausgew hlt hat muss das System ihm erm glichen die ausgew hlten Ele mente zusammen zu bewegen Selektierte Elemente m ssen vom Anwender verschoben werden k nnen Dies muss auch gelten wenn mehr als ein Element selek tiert wurde Dazu siehe auch LFA4 1 Wenn ein Anwender mehrere Elemente ausgew hlt hat muss das System ihm erm glichen die ausgew hlten Ele mente zusammen zu entfernen Selektierte Elemente m ssen vom Anwender gel scht werden k n nen Dies muss auch gelten wenn mehr als ein Element selektiert wurde Dazu siehe auch I FA4 3 I WA2 Das System muss es dem Anwender erm glichen Elemente zum Modell hinzuzuf gen ohne dass diese auch Teil eines Diagramms sind 41 42 KAPITEL 4 WUNSCH KRITERIEN Zur Modellierung kann es n tig sein Elemente zu erstellen aber nicht zu visualisieren Bspw Datenstrukturen die nur als Parameter von Me thoden verwendet werden Dies wird erm glicht in dem der Anwen der Elemente direkt im Modell erstellen kann Diese sind dann Teil des Modells
345. ut mit dem Typ refactoredInterface angezeigt 2 Links in der ModelTreeView wird das Interfaceattribut mit dem Typ refactoredInterface im Interface angezeigt 22 11 Tests f r Interface Attribute Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Interface Attributen ab 22 11 1 Interface Attribut mit Void Primitiv Typ Dieser Test deckt das Erstellen eines Interface Attributes vom Void Primitiv Typ ab 22 11 TESTS F R INTERFACE ATTRIBUTE 247 Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface angezeigt 22 11 2 Interface Attribut mit Integer Primitiv Typ Dieser Test deckt das Erstellen eines Interface Attributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Interface erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Interfacenamen klicken 2 Im Texteingabefeld hello Integer eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Interface Attribut angezeigt 2 Links in der ModelTreeView wird das neue Interface Attribut im In terface ang
346. uweisungssoperators einem neuen modellweit ein deutigen Identifier bspw g1 zugewiesen Im Rahmen dieser Projektgruppe soll erprobt werden ob sich dieser Ansatz auch zur Synchronisation von kollaborativer Echtzeitmodellierung nutzen l sst Entsprechend werden nderungen die ein Nutzer an einem Modell auf seinem Client vornimmt lokal in Modelldifferenzen gem der DOL Repr sentation umgewandelt und in dieser Form an den Server und ggf weitere Clients gesendet 8 4 2 DOLSA Gesamt berblick In Abbildung 8 4 ist die Gesamtstruktur des Systems mit allen relevanten Komponenten dargestellt Das System besteht aus drei Teilen 1 DOL Generation Bereitstellung der DOL 2 DOL Services Atomar nutzbare Services zur Handhabung von Mo delldifferenzen in DOL 3 DOL Applications Versionierungsmodule zur Modellverwaltung und analyse Diese Teilsysteme und deren Relevanz f r die Entwicklung des Zielsystems werden einzeln in den folgenden Abschnitten betrachtet 8 4 3 DOL Generation Die Syntax des in Unterabschnitt 8 4 1 beschriebene Modelldifferenzrepr sentation DOL ist direkt vom Metamodell des repr sentierten Modells ab h ngig Beispielsweise m ssen Methoden zur nderung von Elementen ent 78 KAPITEL 8 VERWENDETE TECHNOLOGIEN DOL Generation J Delta DN imports enerates Meta model DOL Generator 2 Operations Language DOL Services implements manipulates DOL lt Service DOL based Re
347. verh ltnism ig kleine Soft waresysteme mehrere Modelle ben tigen Diese Anforderung ist zudem f r die Erweiterbarkeit des Systems sehr wichtig Die Anforderung ist erf llt Siehe dazu die Akzeptanztests Abschnitt 22 1 Das System muss es dem Anwender erm glichen zu fr he ren Versionen eines Modells zur ckzuspringen Anwender in der Softwareentwicklung ben tigen Versionierung um auf fr here Ver sionen zur ckzugreifen Dies kann genutzt werden um in Fehlerf llen fr here Versionen zu verwenden oder die Modellhistorie nachzuvollzie hen Die Anforderung ist erf llt Siehe dazu die Akzeptanztests Abschnitt 22 3 Die Synchronisierung aus Anforderung FA TI muss unter Ver wendung der DOL Services geschehen Der Auftraggeber will dass die DOL als Austauschformat zur Synchronisierung verwendet wird Um dies zu realisieren wird dem Team die DOL Service Kom ponente von DOLSA zur Verf gung gestellt Die Anforderung ist erf llt Dies ist in Abschnitt 8 4 dokumentiert Die Modellversionierung aus Anforderung FA IV muss durch die Einbindung von Versioning erfolgen Da Modellversionierung ein aufwendiges Feature ist wird eine Schnittstelle zum Modellversio nierungssystem Versioning entwickelt womit die PG die Versionierung realisieren darf Dieses System wird von der ST Abteilung bereitge stellt Die Anforderung ist erf llt Dies ist in Abschnitt 8 4 dokumentiert 166 KAPITEL 19 EVALUATION NACH Z
348. vided in accord with this section must be in a format that is publicly documented and with an implementation available to the public in source code form and must require no special password or key for unpacking reading or copying 7 Additional Terms Additional permissions are terms that supplement the terms of this License by making exceptions from one or more of its conditions Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License to the extent that they are valid under applicable law If additional permissions apply only to part of the Program that part may be used separately under those permissions but the entire Program remains governed by this License without regard to the additional permissions When you convey a copy of a covered work you may at your option remove any additional permissions from that copy or from any part of Yt Additional permissions may be written to require their own removal in certain cases when you modify the work You may place additional permissions on material added by you to a covered work for which you have or can give appropriate copyright permission Notwithstanding any other provision of this License for material you 366 KAPITEL 26 GNU GENERAL PUBLIC LICENSE VERSION 3 add to covered work you may if authorized by the copyright holders of that material supplement the terms of this License with terms a Di
349. w hrt Eckpunkte von Schlaufen relativ zum Mittelpunkt des zugeh rigen 110 KAPITEL 10 DATENMODELL Knotens zu interpretieren und Eckpunkte von Kanten zwischen zwei ver schiedenen Knoten absolut So verschieben sich Schlaufen automatisch mit dem verbundenen Knoten Zum Ankn pfungspunkt von Kanten an die Knoten gestaltet es sich am Einfachsten den Ber hrungspunkt so zu w hlen dass die Kante auf den Mittelpunkt der Box zeigt bzw von diesem ausgeht wie in Abbildung 10 2 oben dargestellt Um dem Anwender aber ein Rechteckiges Layout zu er m glichen herrscht die Idee bei Kanten mit mindestens einem Eckpunkt den Ber hrungspunkt m glichst so zu w hlen dass die Kante rechtwinklig auf der Kante der Box steht siehe Abbildung 10 2 unten Abbildung 10 2 Auf den Mittelpunkt gerichtete Kante oben und senkrecht stehende Kante unten 10 6 Sonstiges e Visibility Das Datenmodell unterst tzt f r Attribute Methoden und Rollen die Sichtbarkeiten Package keine Angabe Default angelehnt an Java Public Protected und Private e Interfaces und Constraints in grUML JGraLab unterst tzt keine In terfaces und keine Constraints die keine validen GreQL Anfragen ent halten Daher wurden im Datenmodell an Stelle von Interfaces abstrak te Klassen und anstelle von Constraints Kommentare benutzt 10 6 SONSTIGES 111 e gDiff UUID Das Attribut gDiff UUID der Oberklasse ModelElement wird von DOLSA ben tigt um die Identifier de
350. wahl des Elements ver nderbar sein I FA4 2 Wenn ein Anwender ein Diagrammelement ausgew hlt hat muss das System ihm erm glichen die Gr e des ausgew hlten Elements zu ndern Die Gr e eines Elements im Diagramm muss nach der Auswahl des Elements ver nderbar sein I FA4 3 Wenn ein Anwender ein Diagrammelement ausgew hlt I FA5 I FA6 hat muss das System ihm erm glichen das ausgew hlte Element zu entfernen Das L schen von Elementen aus einem Diagramm soll nach vor heriger Selektion m glich sein Wenn ein Anwender ein Diagramm ndert muss das System die nderung in das Modell bertragen Das Diagramm ist die Schnittstelle und die Visualisierung f r den An wender an dem er nderungen ausf hrt und diese angezeigt bekommt gespeichert werden die Daten im Model an das die Eingaben des Nut zer im Diagramm weitergeleitet werden m ssen Visualisierung Das System muss nderungen aus Tabelle 3 1 die der An wender am Diagramm durchf hrt im Diagramm visualisie ren Die in der Tabelle genannten nderungen wurden auf Modellebene be schrieben Der Anwender interagiert jedoch mit dem Diagramm daher 3 1 I MODELLIERUNG VON KLASSENDIAGRAMMEN 29 Diagrammelement Anderungsobjekt Art der nderung Klassen selbst hinzuf gen Interfaces entfernen abstrakte Klassen Enumerationen Name ndern Klassen Methoden hinzuf gen Interfaces Attribute entfernen
351. wartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das Klassenattribut mit dem Typ refactoredClass angezeigt 2 Links in der ModelTreeView wird das Klassenattribut mit dem Typ refactoredClass in der Klasse angezeigt 22 5 Tests f r Klassenattribute Die Tests in diesem Abschnitt decken das Erstellen Bearbeiten und L schen von Klassenattributen ab 22 5 TESTS F R KLASSENATTRIBUTE 185 22 5 1 Klassenattribut mit Void Primitiv Typ Dieser Test deckt das Erstellen eines Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das neue Klassenattribut in der Klas se angezeigt 22 5 2 Klassenattribut mit Integer Primitiv Typ Dieser Test deckt das Erstellen eines Klassenattributes vom Void Primitiv Typ ab Vorbedingung 1 Es wurde eine Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Klassennamen klicken 2 Im Texteingabefeld hello Integer eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Klassenattribut angezeigt 2 Links in der ModelTreeView wird das
352. wartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 10 Abstrakte Klassenattribut mit package protection Sicht barkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit package protection Sichtbarkeit ab 22 8 TESTS F R ABSTRAKTE KLASSENATTRIBUTE 221 Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView wird das neue Abstrakte Klassenattribut in der Abstrakten Klasse angezeigt 22 8 11 Abstrakte Klassenattribut mit privater Sichtbarkeit Dieser Test deckt das Erstellen eines Abstrakte Klassenattributes mit pri vater Sichtbarkeit ab Vorbedingung 1 Es wurde eine Abstrakte Klasse erstellt und ausgew hlt Test 1 Im Editor Bereich im Bereich unter dem Abstrakte Klassennamen kli cken 2 Im Texteingabefeld hello Void eingeben 3 Enter dr cken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird das neue Abstrakte Klas senattribut angezeigt 2 Links in der ModelTreeView
353. wartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition vom ersten zum zweiten Interface angezeigt 2 Links in der ModelTreeView wird die neue Komposition unter dem ersten Interface im firstDiagram angezeigt 22 18 8 Komposition von einem Interface zu einer Klasse Dieser Test deckt das Erstellen einer Komposition von einem Interface zu einer Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Klasse erstellt 22 18 TESTS F R KOMPOSITIONEN 319 Test 1 Links im Editor Bereich auf Composition klicken 2 Auf das Interface klicken 3 Auf die Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition vom Interface zur Klasse angezeigt 2 Links in der ModelTreeView wird die neue Komposition unter dem Interface im firstDiagram angezeigt 22 18 9 Komposition von einem Interface zu einer Abstrak ten Klasse Dieser Test deckt das Erstellen einer Komposition von einem Interface zu einer Abstrakten Klasse ab Vorbedingung 1 Es wurde ein Modell ge ffnet 2 Es wurde 1 Interface erstellt 3 Es wurde 1 Abstrakte Klasse erstellt Test 1 Links im Editor Bereich auf Composition klicken 2 Auf das Interface klicken 3 Auf die Abstrakte Klasse klicken Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird eine Komposition vom Interface zur Abstrakten Klasse angezeigt 2
354. wischen Modell und visueller Darstellung mit Draw2d bilden GraphicalEditParts GraphicalEditPart ist die Oberklasse f r diese Controller Klassen GEF nimmt an dass f r jedes Modellelement das dar gestellt wird und mit dem Nutzer interagieren soll ein EditPart existiert Die EditParts bilden somit eine Baumstruktur die parallel zur Struktur des Modells und der View ist siehe Abbildung 8 3 Diagram Model Root EditPart Diagram ED IR foure O T Diagram children E P ghe b K d Tu Abbildung 8 3 Modellelemente EditParts und Figures Quelle http help eclipse org luna topic org eclipse gef doc isv guide guide html Draw2d ist ein mit GEF verbundenes Objektorientiertes Zeichen Frame work mit dem die konkrete Darstellung erfolgt In Draw2d wird eine Ab bildung baumartig aus Formen Figures und ihren Kindern sowie Kanten zwischen Figures aufgebaut GEF baut die View dann grob nach folgendem Algorithmus auf Um die EditParts zum Modell zu instanziieren muss eine Factory implementiert werden 1 Das Wurzel Objekt des Modells wird an den Editor Viewer bergeben 2 Mithilfe der Factory wird der EditPart instanziiert und bekommt das Modellobjekt zugewiesen 3 Das GEF Framowork ruft spezifizierte Methoden wie getModelChild ren des EditParts auf um Kinder des Modellelements sowie Kanten zu ermitteln die ebenfalls visualisiert werden m ssen 4 Schritt 2 un
355. wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Die Aggregation wurde selektiert Test 1 Rechtsklick auf die Aggregation 2 Klick auf Change to composition Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird anstelle der Aggregation eine Komposition angezeigt 2 Links in der ModelTreeView wird anstelle der Aggregation eine Kom position angezeigt 22 17 21 Erstellen eines Bendpoints in einer Aggregation Dieser Test deckt das Erstellen eines Bendpoints in einer Aggregation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Aggregation zwischen diesen erstellt 3 Die Aggregation wurde selektiert 22 17 TESTS F R AGGREGATIONEN 313 Test 1 Klick auf den mittleren markierten Punkt auf der Aggregation 2 Verschieben des Bendpoints per Drag and Drop Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird die Aggregation ber den Bendpoint umgeleitet angezeigt 22 17 22 Verschieben eines Bendpoints in einer Aggregation Dieser Test deckt das Verschieben eines Bendpoints in einer Aggregation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzpro
356. xternen Biblio theken f r JGraLab DOLSA Kryonet und Guava Weitere Projekte sind de uniol pgktltt gef client rcp Dieses Projekt enth lt die Pro duktkonfiguration die ben tigt wird um Kotelett als Eclipse Product zu bauen Die Datei de uniol pgktltt gef client rcp sollte m g lichst nur manuell bearbeitet werden um zu verhindern dass Eclipse abh ngigkeiten entfernt die einen Build f r alle unterst tzen Betriebs systeme erm glichen de uniol pgktltt gef Dieses Projekt enth lt nur eine Konfigurati onsdatei f r Maven pom xml die den Hauptteil der Buildkonfiguration enth lt siehe oben Das Projekt dient somit als Elternprojekt f r die anderen f nf Projekte und als Startpunkt f r den Build Prozess de uniol pgktltt test Dieses Projekt enth lt Unit Tests f r DOL SA und kritische Komponenten von Kotelett 123 124 KAPITEL 13 PROJEKTSTRUKTUR 13 1 Shared detailliertere Struktur In diesem Abschnitt wird die Struktur des Shared Projekts genauer beschrie ben Dieses Projekt wird von Client und Server referenziert und enth lt somit gemeinsam benutzte Klassen und Drittbibliotheken de uni pgktltt shared In diesem Package befinden sich Datenklassen f r den Datenaustausch zwi schen Server und Client sowie gemeinsam benutzte Utilities Eine wichtige Klasse ist hier der SerializationInitializer Hier wer den alle Klassen registriert von denen Instanzen mittels Kryonet verschickt werden sollen Alle neuen K
357. y EE gt 1 i 1 K 1 1 e 1 i updateClientsOfDiagram delta 1 i 1 send delta e send delt eer Kee eee Excmo se Uum 1 Abbildung 9 4 Server Receive Change mit den neuen Komponenten 88 KAPITEL 9 MODULSICHT geworfen wird Dieser Fall wird behandelt indem vor Anwendung des Deltas eine Kopie des Models erstellt wird und im Fehlerfall diese zur ckgespielt wird da sonst ein Delta unvollst ndig angewandt sein k nnte 9 4 Protokoll der Client Server Kommunikation Bei der Behandlung der Nutzereingaben in diesem Fall Modell nderungen in einem verteilten System gibt es zwei fundamental unterschiedliche Vor gehensweisen 1 Die nderungen werden sofort auf dem Client angewandt und an den Server gesendet Unterabschnitt 9 4 1 2 Die nderungen werden an den Server gesendet und erst angewandt wenn dieser best tigt hat Unterabschnitt 9 4 2 Diese beiden Vorgehensweisen werden im Folgenden beschrieben 9 4 1 Sofortige nderung Das Protokoll der Client Server Kommunikation bei sofortiger Anwendung der Model nderungen ist in Abbildung 9 5 dargestellt Die Auswirkungen der einzelnen Nachrichten sind im Folgenden beschrieben e UserChangeRequest Client sendet seine nderungen an der Server Enth lt ein Delta in DOL e UserChangeMessage Server verteilt nderungen an die Clients Ent h lt ein Delta in DOL e ResetRequest Der Clien
358. y be graphical using the logos available at http www jdom org images logos THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED OR IMPLIED WARRANTIES INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT INDIRECT INCIDENTAL SPECIAL EXEMPLARY OR CONSEQUENTIAL DAMAGES INCLUDING BUT NOT LIMITED TO PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE DATA OR PROFITS OR BUSINESS INTERRUPTION HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY WHETHER IN CONTRACT STRICT LIABILITY OR TORT INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter lt AT jdom DOT org and Brett McLaughlin brett AT jdom DOT org For more information on the JDOM Project please see lt http www jdom org gt 371 372 KAPITEL 27 JDOM LIZENZ Literaturverzeichnis Bla14 Ecl13 Ecl1 4 115 EL11 Git14 IBM14 Kah06 Kry14 BLACK DUCK SOFTWARE Inc OpenHub Compare Repo sitories https www openhub net repositories compare Version 2014 Abruf 2014 11 07 ECLIPSE CONTRIBUTORS Pla
359. zprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuz produkt fehlerfrei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Sichtbarkeit des Endpunktes der Assoziation wurde aktiviert 4 Die Assoziation wurde selektiert 298 KAPITEL 22 ERFOLGREICHE AKZEPTANZTESTS Test 1 Rechtsklick auf die Assoziation 2 Klick auf Toggle source navigability Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird kein Pfeil am Endpunkt der Assoziation angezeigt 22 16 19 Umwandlung einer Assoziation zu einer Aggregati on Dieser Test deckt das Umwandeln einer Assoziation zu einer Aggregation ab Dieser Test ist generisch dokumentiert da das Kreuzprodukt der Knoten Kombinationen sehr gro ist und die Tests ber dieses Kreuzprodukt fehler frei durchgef hrt wurde Vorbedingung 1 Es wurden 2 Knoten erstellt 2 Es wurde 1 Assoziation zwischen diesen erstellt 3 Die Assoziation wurde selektiert Test 1 Rechtsklick auf die Assoziation 2 Klick auf Change to aggregation Erwartetes Ergebnis 1 Im Editor Bereich in der Zeichenfl che wird anstelle der Assoziation eine Aggregation angezeigt 2 Links in der ModelTreeView wird anstelle der Assoziation eine Aggre gation angezeigt 22 16 20 Umwandlung einer Assoziation zu einer Komposi tion Dieser Test deckt das Umwandeln einer Assoziation zu

Download Pdf Manuals

image

Related Search

Related Contents

Fujitsu PRIMERGY TX100 S3p  G01090 - gerbion  Gebrauchsanleitung Ubbelohde-Viskosimeter Mikro  Vivicam 3720 Manuel d`instructions - Copyright © michel  WINDY BOY 2500 / 3000 Manual de instruções  TONDEUSE À GAZON ROTATIVE DE PLUSIEURS COUPES  SageTV Installation & User Manual  Apricorn ADT-500 external hard drive  Excalibur electronic 9455Y Motorized Toy Car User Manual  Falk Neo 620 LMU  

Copyright © All rights reserved.
Failed to retrieve file