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