Home. 
.

transparent

transparent

transparent

Analysieren einer bestehenden Applikation mit UModel

Diese 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.

Einleitung

Frü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.

Analyzing a legacy application

Ü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 Importoptionen

UModel 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:

  • die Darstellung von Assoziationen zwischen Klassen in Diagrammen
  • den Import bestehender JavaDocs in den Quellcode
  • das automatische Ausblenden von Klassenattributen und Operationsbereichen

Stellen Sie, bevor Sie beginnen, sicher, dass die Option zum automatischen Zeichnen von im Quellcode definierten Klassenassoziationen aktiv ist:

Automatically display associations

Beim Importieren des Ordners sollten auch alle JavaDocs-Kommentare im Quellcode als Dokumentation für das UModel-Projekt inkludiert werden:

Import documentation setting

Um sich einen Überblick über die Applikation zu verschaffen, analysieren Sie am besten zuerst die obersten Ebenen, ohne alle Klassenattribute und Operationsbereiche zu öffnen.

Class diagram comparments settings

UModel importiert das Projekt in nur wenigen Sekunden. Die Diagrammstruktur enthält zwei Diagramme:

UModel diagram tree showing diagrams of the legacy application

UML-Klassendiagramme der bestehenden Applikation

Um den Quellordner zu erweitern und Symbole für alle in UModel importierten Java-Klasse anzuzeigen, klicken Sie auf das Register "Modell-Struktur":

UModel model tree showing UML elements of the legacy application

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.

UML class diagram for legacy application

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.

UModel Hierarchy and Documentation windows for the Transaction class of the legacy application

Genaues Ausarbeiten des UML-Klassendiagramms

Sie 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:

Refining the imported class diagram

Nun sieht man das Sternchen, das für die Definition der "zero to many" Multiplizität der Konten (Accounts) in "BankDatabase" steht, viel besser.

Refining the imported class diagram

Abschließende Verbesserungen am UML-Klassendiagramm

Die 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:

The completed class diagram for the legacy application

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.

Download Klicken Sie hier um eine kostenlose 30-Tage Testversion von Altova UModel® 2012 mit dem vollen Funktionsumfang herunterzuladen!



transparent
Print
Mail
Like It
.

Lesen Sie den Altova Blog
Read the Altova Blog!

.

Im Altova Blog lesen Sie über die neuesten Altova-Produktankündigungen, neue Produktfunktionen, technische Tipps und Informationen über die Branche. Registrieren Sie sich jetzt!

.
.


Downloaden Sie eine kostenlose Testversion des MissionKit mit vollem Funktionsumfang!

.
Industriestandard UML
.

UML logo

.

Altova UModel entspricht der neuesten UML-Spezifikation 2.3, die von der OMG in der ersten Februarwoche 2007 herausgegeben wurde. UModel unterstützt UML 2.3 Diagrammelemente und XMI-Features.

.
Akronymophobie
.

Substantiv. Zustand, der durch eine unübersehbare Anzahl an technischen Abkürzungen, Akronymen und Schlagwörtern verursacht wird. Lässt sich mit dem Altova-Glossar gut behandeln.

.
.

transparent

transparent