Analysieren einer bestehenden Applikation mit UModelDiese technische Kurznachricht wurde anhand einer Reihe von Postings im Altova Blog zusammengestellt. Hier finden Sie den Link zu Teil 1 der Reihe: "Analyzing a Legacy Application". Wenn Sie die gesamte Reihe lesen möchten, finden Sie am Schluss des Artikels "Analyzing a Legacy Application with Altova UModel" eine Liste von Links zu den vorhergehenden vier Teilen. EinleitungFrüher oder später steht beinahe jeder professionelle Entwickler vor der Aufgabe, Software-Fehler in einer bestehenden Applikation, die er nicht selbst erstellt hat, beheben oder neue Funktionen hinzufügen zu müssen. Wenn die Software in einer derartigen Situation ungenau oder mangelhaft dokumentiert ist und es keine Möglichkeit gibt, das ursprüngliche Entwicklerteam fragen zu können, kann sich diese Aufgabe sehr schwierig gestalten. Zum Glück bietet Altova UModel Funktionen zum Reverse Engineering bestehender Software, wodurch ein visuelles Modell der Software erstellt werden kann, anhand dessen die Software schneller analysiert und verstanden werden kann, wodurch das Auffinden bestehender Bugs und das Hinzufügen neuer Funktionalitäten schneller vonstatten geht. In diesem Artikel wird beschrieben, wie man mit Hilfe von UModel, dem Altova UML-Tool zur Software-Modellierung und -Entwicklung, eine in Java geschriebene Bankomat-Simulation analysiert. Die Applikation basiert auf einer Reihe von Bankomat-Beispielen aus beliebten Java Tutorials. Da es sich um eine kleines Beispiel handelt und die Bedienung eines Bankomaten als bekannt vorausgesetzt wird, können wir uns in dem Beispiel mehr auf die Methoden konzentrieren, die Sie auf Ihre eigenen Java-, C# und Visual Basic-Projekte anwenden können, als auf den Beispielcode. Im Ordner, der die Applikation enthält, sehen wir Java-Quelldateien und kompilierte Klassendateien, aber keine Projektdateien. Natürlich können Sie die bestehende Applikation ausführen, um sich mit Ihren Operationen vertraut zu machen. Wir sehen jedoch bereits anhand der Liste der Klassendateien, dass die Applikation die Funktionalitäten eines Bankomaten beinhaltet, wobei einige Klassen den physischen Komponenten eines Bankomaten, also dem Bildschirm (Screen), der Tastatur (Keypad), dem Einzahlungs- (DepositSlot) und dem Geldausgabeschlitz (CashDispenser) entsprechen, während andere Klassen die Aktionen des Benutzers repräsentieren: Kontostandsabfrage (BalanceInquiry), Einzahlung (Deposit) und Abhebung (Withdrawal). Ein realer Bankomat würde mit einer oder mehreren Banken kommunizieren, um die Kontodaten zu überprüfen und enthält höchstwahrscheinlich keine "BankDatabase"-Klasse.
Über das UModel Menü "Projekt" können Sie ein Projekt, ein Quellverzeichnis oder sogar Binärdateien einer kompilierten Applikation importieren. Der Quellcode für sehr große Projekte befindet sich wahrscheinlich in mehreren Ordnern. Wenn Sie also eine Projektdatei haben, empfiehlt es sich eventuell einen Ordner nach dem anderen zu analysieren. Definieren der ImportoptionenUModel speichert normalerweise alle Änderungen, die Sie an Ihren lokalen Benutzereinstellungen vornehmen, und stellt diese Einstellungen jedes Mal, wenn Sie eine neue Sitzng starten, wieder her. In den folgenden Screenshots sehen Sie die Benutzeroptionen, die beim Importieren von bestehendem Quellcode am relevantesten sind. Mit diesen Optionen können Sie folgende Einstellungen festlegen:
Stellen Sie, bevor Sie beginnen, sicher, dass die Option zum automatischen Zeichnen von im Quellcode definierten Klassenassoziationen aktiv ist:
Beim Importieren des Ordners sollten auch alle JavaDocs-Kommentare im Quellcode als Dokumentation für das UModel-Projekt inkludiert werden:
Um sich einen Überblick über die Applikation zu verschaffen, analysieren Sie am besten zuerst die obersten Ebenen, ohne alle Klassenattribute und Operationsbereiche zu öffnen.
UModel importiert das Projekt in nur wenigen Sekunden. Die Diagrammstruktur enthält zwei Diagramme:
UML-Klassendiagramme der bestehenden ApplikationUm den Quellordner zu erweitern und Symbole für alle in UModel importierten Java-Klasse anzuzeigen, klicken Sie auf das Register "Modell-Struktur":
Gehen Sie zur Diagrammstruktur zurück, um den Inhalt des UML-Klassendiagramms zu öffnen. UModel wendet eine automatische Layout-Funktion auf die Elemente des Klassendiagramms an, sie können jedoch die Position und den Stil jedes Elements nach Belieben ändern, um die Klassen Ihrer Applikation und deren Beziehungen deutlich sichtbar zu machen.
Beachten Sie, dass der Name der Transaction-Klasse kursiv gedruckt ist, womit angezeigt wird, dass es sich hierbei um eine abstrakte Klasse handelt und die Subklassen BalanceInquiry, Withdrawal und Deposit ihre Eigenschaften erben. Wenn Sie auf die Transaction-Klasse klicken, um sie auszuwählen, wird die Vererbung in der UModel-Eingabehilfe "Hierarchie" angezeigt und alle JavaDoc-Kommentare, die im Quellcode direkt vor der Klassendefinition stehen, werden im Fenster "Dokumentation" angezeigt.
Genaues Ausarbeiten des UML-KlassendiagrammsSie können auch jede Klasse einzeln auswählen, um die Dokumentation dazu im Fenster "Dokumentation" anzuzeigen. Um das Diagramm übersichtlicher zu gestalten, können Sie auch die Assoziationsbeschriftungen aus dem Diagramm löschen, ohne diese vollständig aus Ihrem UML-Modell zu entfernen:
Nun sieht man das Sternchen, das für die Definition der "zero to many" Multiplizität der Konten (Accounts) in "BankDatabase" steht, viel besser.
Abschließende Verbesserungen am UML-KlassendiagrammDie Zusammensetzung (composition) wird in Java genau wie eine normale Assoziation dargestellt, daher konnte UModel die Eigenschaften der Zusammensetzung zwischen dem Bankomaten (ATM) und seinen physischen Komponenten nicht ableiten. Natürlich besteht der Bankomat aus einer Tastatur, einem Bildschirm, einem Schlitz für die Geldausgabe und einem für die Quittung, daher können Sie die Zusammensetzung anzeigen, indem Sie die Aggregationseigenschaften der einzelnen ATM-Assoziationen im UModel-Fenster "Eigenschaften" aktualisieren. Sie können die einzelnen UModel-Assoziationspfeile auch mit einem Text beschriften. Klicken Sie dazu einfach auf den Pfeil und tippen Sie den Text ein, um z.B. zwischen den Klassen "ATM" und "bankDatabase" eine Anmerkung hinzuzufügen. Über die UModel Layout-Symbolleiste können Sie die Rechtecke, die die Klassen darstellen, gleich groß machen. Das fertig aufbereitete Klassendiagramm sieht dann folgendermaßen aus:
Nun können Sie Ihre Analyse anhand des UML-Klassendiagrammes fortsetzen und Ihren Kollegen mitteilen. Sie können das Ergebnis ausdrucken, als Bilddatei speichern oder in die Projektdokumentation, die Sie automatisch generieren lassen können, inkudieren. Erzeugen Sie mit Hilfe von UModel® 2012 ein Reverse Engineering Ihrer eigenen bereits bestehenden Java-, C#- oder Visual Basic-Applikationen.
|
| ||||||||||||||||||||||||||||||
| Altova | Rechtsabteilung | Presse | Partner | Karriere | Übersicht | Kontakt | Altova Blog | Mobile | Full Site | |||
|
