Java Reverse Engineering

Werbung
Innovator 2007
Java Reverse
Engineering
HowTo
Ralph Schönleber
www.mid.de
HowTo Java Reverse Engineering
Mit Innovator Java Reverse Engineering durchführen
Voraussetzungen....................................................................................... 2
Java Reverse Engineering ........................................................................ 2
Verzeichnis mit Java-Quelldateien auswählen....................................... 2
Erstellen von Komponenten aus Dateien............................................... 3
Klassen aus Komponenten erstellen...................................................... 6
Klassen für ein ganzes Paket erzeugen ............................................. 6
Klassen für einzelne Komponenten erzeugen .................................... 7
Assoziationen, Generalisierungen, Dependencies und Getter/Setter
zuordnen................................................................................................. 8
Weitere Engineering-Aktionen................................................................ 9
Engineering-Aktionen im Register Paket ............................................ 9
Engineering-Aktionen im Register Komponente ................................. 9
Engineering-Aktionen im Register Klasse........................................... 9
Erstellen eines Übersichtsdiagramms für Klassen............................... 10
Erstellen eines Paketdiagramms.......................................................... 11
Inhaltsverzeichnis
Voraussetzungen
Ein UML-Modell mit der Modellvorlage "UML Profile for Java" ist Voraussetzung für das Java Reverse Engineering mit Innovator Object classiX.
Falls dies nicht existiert, legen Sie ein neues UML-Modell an.
So gehen Sie vor
Um ein neues UML-Modell mit dem Profil "UML Profile for Java" anzulegen:
» Selektieren Sie im Administrationsprogramm das Repository (z.B. demo81de).
» Melden Sie sich als Administrator an.
» Wählen Sie Administration>Neues Modell>UML-1.4-Modell....
Die gleichnamige Dialogbox erscheint.
» Geben Sie im Register Einstellungen dem Modell einen Namen.
»
Wählen Sie in der Liste Modellvorlage den Eintrag UML Profile
for Java.
»
»
Wählen Sie in der Liste Benutzer-/Gruppen-Konfiguration den
Eintrag MID Demoteam for UML Profiles.
Schließen Sie die Dialogbox mit [OK].
Öffnen Sie das Modell und melden Sie sich als Modelladministrator in
dem Projekt an (z.B. Administrator, Passwort wie oben ggf. vergeben).
Java Reverse Engineering
Verzeichnis mit JavaQuelldateien auswählen
Im Modellbaum wird hinter dem Namen des Pakets Java implementation system das Verzeichnis angezeigt, in dem die Java-Quelldateien liegen. Wenn Sie dieses Verzeichnis ändern wollen, dann müssen Sie die
Paketeigenschaften ändern. Sie müssen Schreibrechte auf diesem Verzeichnis besitzen.
So gehen Sie vor
Um ein Verzeichnis mit Java-Quelldateien auszuwählen:
» Selektieren Sie das Paket Java implementation system.
»
Wählen Sie Bearbeiten>Sperren und anschließend Element>
Eigenschaften...
»
Die gleichnamige Dialogbox erscheint.
Vergewissern Sie sich, dass im Register Elementeigenschaften die
Eigenschaft Adresse auf ja gesetzt ist.
2
HowTo Java Reverse Engineering
Die Eigenschaft Adresse wird benötigt, um Elemente aus dem Repository als Dateien auf das Dateisystem zu exportieren bzw. von diesem
zu importieren.
Wenn Sie den Verzeichnispfad ändern wollen:
» Wechseln Sie in das Register Adresse und geben Sie im Eingabefeld
Adresse den neuen Pfad der Java-Quelldateien ein.
»
Schließen Sie die Dialogbox mit [OK].
Beim Java Reverse Engineering können nur *.java-Dateien importiert werErstellen von
Komponenten aus Dateien den. Java-Archive (*.jar) und class-Files (*.class) können nicht übernommen
werden.
Die Java-Quelldateien werden in Innovator Object classiX importiert, indem
für jede Java-Datei eine entsprechende Komponente angelegt wird.
So gehen Sie vor
Um Java-Quelldateien in Innovator Object classiX zu importieren:
» Selektieren Sie das Paket Java implementation system.
»
Wählen Sie den Befehl Engineering>Komponente>Aus Dateien
erzeugen....
»
Klicken Sie auf die Schaltfläche [Auswählen...].
3
HowTo Java Reverse Engineering
4
HowTo Java Reverse Engineering
»
Schränken Sie in der nun geöffneten Dialogbox Wähle Dateien die
Selektion auf bestimmte Dateien ein, indem Sie die gewünschten Muster im gleichnamigen Eingabefeld angeben.
Beispielsweise wird die Auswahl durch das Muster *.java auf alle Dateien mit der Endung java begrenzt.
»
Sie nehmen die gewünschten Dateien mit [Hinzufügen] bzw. [Rekursiv Hinzufügen] in die Auswahlliste auf. Mit [Hinzufügen]
werden alle selektierten Dateien in die Auswahlliste aufgenommen. Mit
[Rekursiv Hinzufügen] werden die selektierten Dateien sowie die in
den selektierten Unterverzeichnissen enthaltenen Dateien in die Auswahlliste aufgenommen.
Klicken Sie auf die Schaltfläche [Rekursiv hinzufügen].
»
Klicken Sie auf [OK].
In der Dialogbox Komponente/Aus Dateien erzeugen werden die
ausgewählten Dateien angezeigt.
» Mit [OK] bestätigen Sie die Auswahl.
Der Stereotyp der zu erstellenden Komponente wird in Abhängigkeit von
der Endung der Dateien bestimmt. Beim Java Reverse Engineering werden
für *.java-Dateien Komponenten mit dem Stereotyp «Java file» erstellt.
5
HowTo Java Reverse Engineering
Für jede selektierte Java-Quelldatei erstellt Innovator im Paket Java
implementation system eine entsprechende Komponente.
Der Inhalt der Dateien wird durch Innovator Object classiX eingecheckt, d.h.
die ursprünglichen Dateien werden unverändert an die Komponenten in
Innovator Object classiX angehängt und können von den anderen Benutzern in diesem Zustand wieder ausgecheckt werden.
Das Ein- und Auschecken von Dateien darf nicht mit der eigentlichen Generierung von Source-Code verwechselt werden. Letztere erzeugt vollständig
neue Dateien aus den Modellinformationen, während beim Ein- und Auschecken nur Dateien angehängt bzw. abgerufen werden.
(Alternativ können Sie auch aus einem Komponentendiagramm heraus den
Befehl
Engineering>Komponente>Aus Dateien erzeugen aufrufen.
Als Ergebnis enthält das Komponentendiagramm die entsprechenden Komponenten.)
Klassen aus
Komponenten erstellen
Klassen für ein ganzes Paket erzeugen
So gehen Sie vor
Um Klassen für ein ganzes Paket zu erzeugen:
» Wechseln Sie in den Modellbrowser
» Selektieren Sie das Paket Java implementation system bzw. ein
oder mehrere Subpakete und wählen Sie Engineering>Forward/Reverse.
Die gleichnamige Dialogbox erscheint.
6
HowTo Java Reverse Engineering
»
Klicken Sie auf die Schaltfläche [Aktionen...].
»
»
Wechseln Sie in das Register Komponente.
Selektieren Sie in der linken Gruppe die gewünschten Komponenten, zu
denen Klassen erstellt werden sollen.
Aktivieren Sie das Alternativfeld Reverse Engineering in der Gruppe
Aktionen, da die verfügbaren Aktionen abhängig von der Einstellung
Forward- oder Reverse-Engineering sind.
»
»
Wählen Sie die Aktion Object model from file (reverse engineering) aus, um Klassen aus den selektierten Komponenten zu ge-
»
nerieren.
Bestätigen Sie die Auswahl mit einem Klick auf die Schaltfläche [Anwenden].
»
Schließen Sie nicht das Fenster Engineering>Forward/Reverse.
Im Paket Java design system erstellt Innovator Object classiX für
die ausgewählten Komponenten entsprechende Java-Klassen.
Klassen für einzelne Komponenten erzeugen
Sie können Klassen auch für einzelne Komponenten statt für das ganze
Paket erzeugen.
So gehen Sie vor
Um Klassen für einzelne Komponenten zu erzeugen:
» Wechseln Sie in den Modellbrowser.
» Selektieren Sie eine oder mehrere Komponenten, und wählen Sie Engineering>
Forward/Reverse.
»
Die Dialogbox Engineering/Forward/Reverse erscheint.
Das weitere Vorgehen erfolgt analog wie oben beschrieben.
Schließen Sie nicht das Fenster Engineering/Forward/Reverse.
7
HowTo Java Reverse Engineering
Assoziationen,
Generalisierungen,
Dependencies und
Getter/Setter zuordnen
Die Dialogbox Engineering/Forward/Reverse ist noch geöffnet.
So gehen Sie vor
Um Assoziationen, Generalisierungen, Dependencies und Getter/Setter
zuzuordnen:
» Wechseln Sie ins Register Klasse.
» Selektieren Sie in der linken Gruppe die gewünschten Klassen.
» Aktivieren Sie das Alternativfeld Reverse-Engineering.
»
Wählen Sie mittels Multiselektion ([Strg]+Linke Maustaste)
folgende Aktionen aus:
„
Java Association from attribute
Erstellt Assoziationen aus den Typen der Attribute.
„
Java Dependencies from referenced classes
Aus den Import-Anweisungen in den einzelnen Klassen (im Klassendiagramm Engineering>Klassenreferenzen auflösen...)
werden importierte Klassen ermittelt und Dependency-Beziehungen
erstellt (nur wenn einzelne Klassen importiert werden).
„
Java Generaliziation from inheritance declaration
„
Java Assign Get and Set methods to attributes
Erstellt Vererbungsbeziehungen aus den Vererbungsdeklarationen.
»
Zuordnen von Get- und Set-Methoden zu den jeweiligen Attributen.
Bestätigen Sie die Selektion mit der Schaltfläche [Anwenden].
Für die selektierten Klassen erstellt Innovator Object classiX Assoziationen, Abhängigkeiten für importierte Klassen und Generalisierungen.
Innovator untersucht die Methoden der Klassen und versieht die
Zugriffsmethoden mit dem Stereotyp «get method» bzw. «set method».
8
HowTo Java Reverse Engineering
Weitere EngineeringAktionen
Neben den bisher vorgestellten Elementen (Komponenten, Klassen, Assoziationen etc.) können auch Klassen- und Komponentendiagramme generiert werden. Die folgenden Befehle sind unter Engineering>Forward/Reverse und dort unter Aktionen... in den Registern
Paket, Klasse und Komponente zu finden.
Engineering-Aktionen im Register Paket
„
Dependencies from contained elements
Die Aktion erstellt Abhängigkeitsbeziehungen zwischen Paketen auf
Basis der darin enthaltenen Elemente. Die Abhängigkeiten können in
einem Paketdiagramm sichtbar gemacht werden.
„
Java Class hierarchy diagram
Die Aktion erzeugt ein Klassendiagramm (Stereotyp ist «class hierarchy
diagram»), das alle Klassen des Pakets enthält. Hierbei werden nur
Vererbungsbeziehungen dargestellt. (Um auch Assoziationen anzuzeigen, muss man manuell ein Klassendiagramm erstellen.)
„
Java Public class hierarchy diagram
Die Aktion erzeugt ein Klassendiagramm (Stereotyp ist «public class
hierarchy diagram»), das nur die Klassen des Pakets enthält, welche
die Sichtbarkeit public besitzen. Hierbei werden nur Vererbungsbeziehungen dargestellt.
„
Java Component overview diagram of package
Die Aktion erzeugt für ein Paket ein Komponentendiagramm, welches
alle Komponenten des
Pakets enthält.
Engineering-Aktionen im Register Komponente
„
Object model from file (reverse engineering)
Mit dieser Aktion werden Java-Quelldateien importiert, die zuvor mit der
Aktion Forward Engineering / object model to file (code
generation) exportiert und verändert wurden. Dabei werden die
Komponenten und die zugeordneten Klassen im Modell verändert.
„
Object model from file (Round Trip engineering)
Mit dieser Aktion werden Java-Quelldateien importiert, die zuvor mit der
Aktion Forward Engineering / object model to file (code
generation) exportiert und verändert wurden. Dabei werden die
Komponenten und die zugeordneten Klassen im Modell verändert sowie
die Quelldateien angepasst und exportiert.
„
Remove Innovator comments from file (//ino..)
Diese Aktion löscht die Scanmarken (//ino...), die während des
Round-Trip-Engineerings in die Java-Quelldateien geschrieben wurden.
„
Java Class diagram from component
Die Aktion erstellt für jede Komponente ein Klassendiagramm.
„
Java Component diagram from component
Die Aktion erstellt für jede Komponente ein Komponentendiagramm.
Engineering-Aktionen im Register Klasse
„
Generate UML declaration
Die Aktion erstellt UML-Deklarationen aus den Java-Deklarationen.
Diese sind erforderlich, um z.B. Methoden im Sequenzdiagramm als
Aufrufe zu verwenden.
„
Java Class diagram from class
Diese Aktion erstellt für jede Klasse ein Klassendiagramm.
9
HowTo Java Reverse Engineering
Klassendiagramm für eine Klasse
Erstellen eines
Übersichtsdiagramms für
Klassen
Java-Hierarchiediagramm für ein Paket
Beim Reverse Engineering werden Diagramme entweder nur für einzelne
Klassen oder für alle Klassen eines Paketes erstellt. Wenn Sie Diagramme
für mehrere bestimmte Klassen eines oder mehrerer Pakete erstellen wollen, können Sie ein Klassendiagramm erstellen und die Klassen ihrer Wahl
hinzufügen.
So gehen Sie vor
Um ein Übersichtsdiagramm für Klassen zu erstellen:
» Selektieren Sie im Modellbrowser das Paket Java design system.
»
Wählen Sie das Menükommando Element>Neues Diagramm>Klassendiagramm>Java class diagram.
»
»
Öffnen Sie das neu erstellte Java-Klassendiagramm.
Wählen Sie Einfügen>Klasse>Vorhandene hinzufügen....
»
Wählen Sie in der Gruppe Einträge im Namensraum das Paket, aus
welchem Sie Klassen hinzufügen wollen.
Selektieren Sie in der Gruppe Einträge alle gewünschten Klassen,
die Sie in diesem Diagramm darstellen wollen.
Wiederholen Sie die letzten drei Schritte, bis Sie alle Klassen ausgewählt haben, die Sie in diesem Diagramm darstellen wollen.
»
»
10
HowTo Java Reverse Engineering
»
Erstellen eines
Paketdiagramms
Klicken Sie auf die Schaltfläche [OK].
Die ausgewählten Klassen werden in das Diagramm mit ihren Beziehungen hinzugefügt.
Beim Reverse Engineering können Sie Abhängigkeiten zwischen den Paketen erzeugen (vgl. die Aktion Dependencies from contained elements
im Abschnitt "Aktionen im Register Paket").
Sie können ein Paketdiagramm erstellen, um diese Paketabhängigkeiten
darzustellen.
So gehen Sie vor
Um ein Paketdiagramm zu erstellen:
» Selektieren Sie im Modellbrowser das Paket Java design system.
»
»
»
»
»
»
Wählen Sie Element>Neues Diagramm>Paketdiagramm>Neu.
Öffnen Sie das neu erstellte Paketdiagramm.
Wählen Sie Einfügen>Paket>Vorhandene hinzufügen... und
selektieren Sie ein Paket.
Klicken Sie auf die Schaltfläche [Hinzufügen].
Das ausgewählte Paket wird in der Gruppe Ausgewählt angezeigt.
Wiederholen Sie die letzten beiden Schritte, bis Sie alle Pakete ausgewählt haben, die Sie in diesem Diagramm darstellen wollen.
Klicken Sie auf die Schaltfläche [OK].
Die ausgewählten Pakete werden dem Diagramm mit ihren Abhängigkeiten hinzugefügt.
Innovator_2007_HowTo_Java_Reverse_Engineering_070719.doc
Paketdiagramm
Copyright © 2007 MID GmbH
Bei Fragen wenden Sie sich bitte an unsere Hotline
Telefon: +49 (0)911 / 9 68 36 -22, E-Mail: [email protected].
Dieses Dokument finden Sie neben anderen auch im exklusiven LoginDownload-Bereich für INNOVATOR-Wartungskunden unter
http://www.mid.de/support/.
Ihre MID
MID GmbH, Eibacher Hauptstr. 141, D-90451 Nürnberg
Telefon: +49 (0)911 / 9 68 36 -0, Fax: +49 (0)911 / 9 68 36 -10
E-Mail: [email protected], Internet: http://www.mid.de
11
Herunterladen