Reverse Engineering (Code zu Modell)
In diesem Tutorialabschnitt wird gezeigt, wie Sie vorhandenen Programmcode aus einem Verzeichnis in ein neues UModel-Projekt importieren (Reverse Engineering). Außerdem werden Sie im Modell eine neue Klasse hinzufügen, es für die Codegenerierung vorbereiten und die Änderungen anschließend mittels Forward Engineering im Java-Code wieder zusammenführen. Zwar wird in diesem Tutorial der Import von Java-Code beschrieben, doch ist das Verfahren für den Import von C# oder VB.NET-Code ähnlich.
Anmerkung: | Der in diesem Tutorial verwendete Java-Beispielcode steht in einem ZIP-Archiv unter dem folgenden Pfad zur Verfügung: C:\Benutzer\<Benutzername>\Dokumente\Altova\UModel2025\UModelExamples\OrgChart.zip. Entpacken Sie das Archiv bitte in dasselbe Verzeichnis, bevor Sie mit dem Tutorial beginnen. |
Importieren von bestehendem Code aus einem Verzeichnis
1. | Klicken Sie im Menü Datei auf Neu. |
2. | Klicken Sie im Menü Projekt auf Quellverzeichnis importieren. |
3. | Wählen Sie die Quellcodesprache aus (in diesem Beispiel Java). |
4. | Klicken Sie auf die Durchsuchen-Schaltfläche und wählen Sie das zuvor entpackte Verzeichnis OrgChart und klicken Sie auf Weiter. Beachten Sie, dass das Kontrollkästchen Diagrammgenerierung aktivieren aktiviert ist, damit UModel Klassen- und Paketdiagramme anhand des Quellcodes generiert. |
5. | Wählen Sie die Option Diagramm pro Paket generieren, damit UModel für jedes Paket ein neues Diagramm generiert. Sie können die Diagrammstile später gegebenenfalls ändern. |
6. | Klicken Sie zum Fortfahren auf Weiter. In diesem Dialogfeld können Sie die Einstellungen für die Generierung von Paketabhängigkeiten definieren. |
7. | Klicken Sie auf "Fertig stellen". Wenn Sie dazu aufgefordert werden, speichern Sie das neue Modell in einem Verzeichnis auf Ihrem Rechner. Die Daten werden während der Eingabe geparst und es wird ein neues Paket namens "OrgChart" erstellt. |
8. | Erweitern Sie das neue Paket und dessen Unterpakete bis Sie zum Paket OrgChart (com | OrgChart) gelangen. Doppelklicken Sie auf das Diagrammsymbol "Inhalt von OrgChart": |
Das Diagramm "Inhalt von OrgChart" wird nun im Hauptfenster angezeigt.
Hinzufügen einer neuen Klasse zum OrgChart-Diagramm:
Sie haben in dieser Phase des Tutorials aus bereits vorhandenem Java-Code mit Reverse Engineering ein Modell erstellt, das auch eine Reihe von automatisch generierten Diagrammen enthält. Wir werden nun einen Schritt weitergehen und das Modell um eine neue Klasse erweitern.
1. | Klicken Sie mit der rechten Maustaste in das Diagramm "Inhalt von OrgChart" und wählen Sie im Kontextmenü den Befehl Neu | Klasse. |
2. | Klicken Sie auf die Überschrift der neuen Klasse und geben Sie als Name der neuen Klasse CompanyType ein. |
3. | Fügen Sie mittels der Taste F8 in diesem Beispiel die folgenden Operationen zur Klasse hinzu: CompanyType(), getCompanyType():String, setCompanyType():String. |
Anmerkung: | Da der Klassenname CompanyType ist, wird der Operation CompanyType() automatisch das Stereotyp <<constructor>> zugewiesen. |
Verfügbarmachen der neuen Klasse für die Codegenerierung:
Da das Modell nun durch eine neue Klasse erweitert wurde, möchten Sie den zugrunde liegenden Code wahrscheinlich entsprechend aktualisieren, um Modell und Code zu synchronisieren. Wenn Sie jedoch jetzt F11 drücken, um die Projektsyntax in dieser Phase des Projekts zu überprüfen, wird im Fenster "Meldungen" eine Warnung angezeigt: 'CompanyType' hat keine Komponentenrealisierung zu einer Komponente - die Komponentenrealisierung zur Komponente 'OrgChart' wird generiert. Der Grund hierfür ist, dass für die neue Klasse eine Realisierung zu einer Komponente benötigt wird, bevor anhand dieser Klasse Code generiert werden kann (siehe Erklärung in Forward Engineering (Modell zu Code). In einigen Fälle (wie in diesem Beispiel) kann UModel die erforderliche Realisierung automatisch generieren. Sie können die Realisierungsabhängigkeit allerdings auch folgendermaßen manuell definieren:
1. | Während die Klasse "CompanyType" aktiv ist, klicken Sie im Fenster "Eigenschaften" in das Feld "Codedateiname" und geben Sie als Dateinamen "CompanyType.java" ein. |
Mit dieser Methode wird eine Beziehung vom Typ "Komponentenrealisierung" zwischen einer Klasse und einer Komponente erstellt. Eine alternative Methode wäre, die Beziehung in einem Komponentendiagramm zu ziehen, siehe Komponentendiagramme. Erweitern Sie das Element Beziehungen unterhalb der Komponente Orgchart um die neu erstellte Beziehung zu sehen.
Merge von Programmcode aus einem Paket
Sie können in UModel Code auf Paket-, Komponentenebene oder für das gesamte Projekt generieren, siehe auch Synchronisieren von Modell und Quellcode. In diesem Beispiel generieren wir Code auf Komponentenebene. Gehen Sie dazu folgendermaßen vor:
1. | Gehen Sie im Fenster "Modell-Struktur" unter "Component View" zur Komponente OrgChart. |
2. | Rechtsklicken Sie auf die Komponente "OrgChart", wählen Sie im Kontextmenü Code Engineering | Merge Programmcode von UModel-Komponente. |
Im Meldungsfenster wird die Syntaxüberprüfung angezeigt, die durchgeführt wird, und der Status des Synchronisierungsvorgangs.
Nach Abschluss des Vorgangs ist die neue Klasse CompanyType.java zum Ordner ...\OrgChart\com\OrgChart\ hinzugefügt.
Alle Methoden-Body-Bereiche und Änderungen am Code werden entweder auskommentiert oder gelöscht, je nachdem, welche Option im Dialogfeld "Synchronisierungseinstellungen" in der Gruppe "Code beim Löschen" ausgewählt wurde. |
Sie haben nun ein komplettes Round-Trip Engineering mit UModel durchgeführt.