Reverse Engineering mit Eclipse Papyrus

Nachdem die letzten beiden Artikel die Themen der Erstellung von Klassendiagrammen und der Erzeugung von Java Quellcode aus diesen Diagrammen mit Eclipse Papyrus behandelt hatten, soll es in diesem Blogartikel um die Generierung eines Klassendiagramms aus bestehendem Java Source Code gehen.

Dazu wurde das Beispiel aus den letzten Artikeln wiederverwendet. Dieses Mal ist der Code allerdings bereits vollständig implementiert.

Es gibt wieder die beiden Klassen Employee und ExternalConsultant, welche von Person erben. Die Employee-Klasse hat dabei zusätzlich noch ein Attribut Position, welches einen Enumeration-Wert beinhaltet. Außerdem gibt es die Klasse EmployeeManager, bei der Employee-Objekte hinzugefügt und gelöscht werden können. Zusätzlich erhält die EmployeeManager-Klasse eine Methode getEmployeesByName(…), welche alle Employee-Objekte mit dem entsprechenden Namen als Liste zurückgibt.

Reverse Engineering

Um aus diesen Klassen nun ein UML-Diagramm zu erstellen, wird zunächst ein neues Papyrus Model hinzugefügt (Rechtsklick auf das Projekt mit den Klassen im Project Explorer -> New -> Other… -> Papyrus -> Papyrus Model -> UML -> Finish). Im graphische Model Editor wird nun auf die Schaltfläche Create View geklickt. Daraufhin öffnet sich ein Dialogfenster, in dem das RootElement ausgewählt werden kann. Nach einem Klick auf OK kann nun ein Diagrammtyp ausgewählt werden. Hier wird Class Diagram ausgewählt. Nachdem im nächsten Dialogfenster der Name für das Diagramm eingegeben wurde, taucht das ClassDiagram im Model Explorer auf.

Nun können die Klassen, aus denen ein UML-Diagramm erstellt werden soll, per Drag and Drop in das ClassDiagram im graphischen Model Editor gezogen werden. Im sich daraufhin öffnenden Dialogfenster reicht ein Klick auf OK.

Danach sollten die fünf Klassen übereinander im Editorfenster auftauchen. Dort können sie zunächst einmal deselektiert und neu selektiert werden. Anschließend kann im Properties Explorer unter dem Tab Appearence unter Synchronization die Synchronisation mit dem Modell aktiviert werden (siehe Abbildung 1).

Synchronisierung des Editors mit dem Modell

Abbildung 1: Synchronisierung des Editors mit dem Modell

Daraufhin werden automatisch alle Eigenschaften und Methoden in das Diagramm eingefügt.

Nach einem Klick auf Arrange All (siehe Abbildung 2) können diese noch automatisch angeordnet werden. Danach sind die Klassen alle nebeneinander und nicht mehr übereinander.

Arrange All

Abbildung 2: Arrange All

Anschließend können nach Belieben noch Assoziationen aus einigen Eigenschaften generiert werden. So kann etwa mit einem Rechtsklick auf die employees-Eigenschaft des EmployeeManager im Model Explorer das Kontextmenü geöffnet werden und unter Utils auf Create Association from Property geklickt werden. Daraufhin wird eine Assoziation aus der Eigenschaft generiert. Das gleiche gilt auch für das position-Attribut der Employee-Klasse.

Außerdem können die Kästen und Verbindungen im graphischen Model Editor nach Belieben verschoben werden. Einzelne Elemente, wie etwa Assoziationen, Eigenschaften oder Methoden, sowie ganze Klassen können im Übrigen ohne Weiteres mit Shift + Entf aus dem Diagramm entfernt werden. Dies ist insbesondere dann hilfreich, wenn das UML-Diagramm aus umfangreicheren Quellcodebeständen generiert wurde.

Abschließend kann das Modell als Bild oder als PDF exportiert werden. Dazu genügt ein Rechtsklick auf das Projekt im Model Explorer -> Export -> Export All Diagrams. Im sich öffnenden Dialogfenster können Ausgabeverzeichnis und -format ausgewählt werden. Ein mögliches Resultat ist in Abbildung 3 zu sehen.

UML Diagramm

Abbildung 3: UML Diagramm

Short URL for this post: https://wp.me/p4nxik-2Rx
This entry was posted in Eclipse Universe, MDSD and tagged , , , , , , . Bookmark the permalink.

Leave a Reply