Home. 
.

transparent

transparent

transparent

Verbessern einer bestehenden Applikation mit UModel

Diese technische Kurznachricht baut auf der vorhergehenden Kurznachricht mit dem Titel Analysieren einer bestehenden Applikation mit Altova UModel auf. Beide Artikel wurden anhand einer Reihe von Postings, die ursprünglich im Altova Blog erschienen sind, adaptiert. 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

In der vorhergehenden technischen Kurznachricht mit dem Titel "Analysieren einer bestehenden Applikation mit Altova UModel" haben wir Klassen aus dem Quellcode einer bestehenden Applikation importiert und das erzeugte Klassendiagramm angepasst, um einen Überblick über die objektorientierte Architektur der Applikation zu erhalten. Damit ist die Aufgabe des Entwicklers selten erledigt. Meist ist dies der erste Schritt, um einen Software-Fehler zu beheben oder neue Funktionalitäten zur bestehenden Applikation hinzuzufügen. In dieser Kurznachricht wollen wir die Applikation anhand des UML-Modells genauer analysieren, den Code anschließend ändern, um eine neue Funktion hinzuzufügen, und den Round Trip schließlich durch Aktualisieren des Modells anhand des überarbeiteten Codes abschließen.

Zwar wurde die bestehende Applikation in Java geschrieben, doch lässt sich die beschriebene Vorgehensweise auch auf C#- oder Visual Basic Quellcode anwenden.

Planen einer neuen Funktion für die bestehende Applikation

Bei der Applikation in unserem Beispiel handelt es sich um das Projekt einer Bankomatsimulation. Der vorhandene Code unterstützt derzeit die folgenden Funktionen:

  • Benutzer-Login und Passwortüberprüfung
  • Ein Transaktionsmenü mit den üblichen Bankomatfunktionalitäten:
  •  – Anzeige des Kontostands
  •  – Bargeldabhebung
  •  – Einzahlung
  •  – Abmelden

Aus unserer vorherigen Analyse konnte man ersehen, dass die simulierten Transaktionen in Klassen mit den Namen BalanceInquiry, Withdrawal und Deposit implementiert sind. Diese Klassen sind wiederum Unterklasse der Klasse "Transaction".

In der Bankomatsimulationsapplikation wird derzeit keine Abhebegebühr verrechnet. Sie haben nun die Aufgabe, diese Funktion hinzuzufügen. Immer, wenn eine Abhebung ausgewählt wird, muss der Benutzer zunächst über die Höhe der Abhebegebühr informiert werden. Anschließend muss die Applikation den Benutzer auffordern, die Gebühr zu akzeptieren und ihm die Möglichkeit geben, seine Abhebung zu stornieren. Falls der Benutzer mit der Abhebung fortfährt, muss der Betrag der Abhebung plus die Gebühr vom Kontostand abgezogen werden. Wenn die Abhebung außerdem $100 oder mehr beträgt, beträgt die Gebühr $4. Bei weniger als $100 ist die Gebühr $2.

Erstellung eines Diagramms der neuen Funktion

Eine Möglichkeit, die neue Funktion visuell darzustellen, ist zunächst die Erstellung eines UML-Use Case-Diagramms zur Erfassung der Anforderungen. Das UML-Modell, das im vorherigen Artikel durch Reverse Engineering des Quellcodes erstellt wurde, enthält keine Use Case-Diagramme, daher sollten Sie eventuell sogar einen Schritt zurückgehen und ein Use Case-Übersichtsdiagramm erstellen, in dem alle Interaktionen des Benutzers mit der Bankomatsimulation dokumentiert sind.

Ihr erstes Use Case-Diagramm, in dem alle Interaktionen des Benutzers mit dem Bankomaten dargestellt sind, könnte folgendermaßen aussehen:

Overview use case diagram

Sie können ein zusätzliches Use Case-Diagramm erstellen, in dem die Abhebetransaktion detailgenauer gezeigt wird. Durch das genauere Ausarbeiten der Transaktion in einem separaten Diagramm erhalten Sie einen besseren Überblick, weil das Layout einfach und übersichtlich bleibt. Außerdem haben Sie dadurch im Design-Hauptfenster genügend Platz, um verschiedene Optionen auszuprobieren.

Detailed use case diagram for Withdrawal

Der Pfeil im "Withdraw Cash"-Use Case-Diagramm kennzeichnet einen Hyperlink. Sie können in UModel zu jedem Element in Ihren Diagrammen einen oder mehrere Hyperlinks hinzufügen. Ein Hyperlink kann eine URL, eine externe Datei, ein anderes Diagramm oder jedes beliebige UML-Element in Ihrem Modell referenzieren. Über das Dialogfeld "Hyperlink" können Sie sogar Hilfstext für Ihre Hyperlinks definieren.

Nun können Sie die neue Anforderung zu Ihrem Use Case-Diagramm "ATMWithdrawal" hinzufügen:

Enhanced use case diagram for Withdrawal

Über das UModel-Hilfsfenster "Stile" können Sie die Farbe der Use Case-Ellipse "Approve fee" ändern, um dies als eine geplante und noch nicht implementierte Funktion zu kennzeichnen. Einige Entwickler werden jetzt einwenden, dass die an die "Approve fee" Ellipse angehängte Anmerkung überflüssig ist, da ja schon die include-Notation impliziert, dass es sich bei "Approve fee" um eine erforderliche Komponente von "Withdraw Cash" handelt. Viele Leute kennen jedoch den Unterschied zwischen "include" und "extend" nicht genau, daher sollte man in diesem Fall am besten gleich klar stellen, was gemeint ist.

Beachten Sie außerdem, dass das Vergleichen der Abhebesumme mit dem Kontostand und die Belastung des Bankkontos mit der Gebühr nicht angezeigt werden. Diese Aktivitäten werden nicht vom Benutzer durchgeführt, daher werden sie nicht in das Use Case-Diagramm inkludiert.

Analysieren einer objektorientierten Klasse

Logischerweise ist die Gebührenfunktion eine Zusatzfunktion der bestehenden Klasse "Withdrawal". Sie können für die Klasse "Withdrawal" ein neues UML-Klassendiagramm anzeigen. Wählen Sie die Klasse dazu in der Modell-Struktur aus und wählen Sie im Kontextmenü den Befehl zum Erstellen eines neuen Diagramms.

Altova UModel Model Tree helper window

UML class diagram for Withdrawal class

Wenn Sie ein Hierarchiediagramm erstellen, werden alle Eigenschaften der Klasse "Withdrawal" einschließlich der vererbten Eigenschaften aus der Klasse "Transaction" angezeigt.

Mit Hilfe eines UML-Sequenzdiagramms können Sie den Ausführungsfluss einer Abhebung verfolgen. UModel kann anhand der Operationen von mit Reverse Engineering erstellten Klassen automatisch Sequenzdiagramme generieren. Um das gewünschte Diagramm zu erstellen, können Sie in Ihrem Klassendiagramm die Operation "execute" auswählen und im UModel-Kontextmenü den Befehl "Sequenzdiagramm generieren" auswählen.

Altova UModel Generate Sequence Diagram dialog

Das UModel-Dialogfeld "Sequenzdiagramm generieren" bietet eine Reihe von Optionen, die Ihnen beim Implementieren der neuen Funktion helfen. Aktivieren Sie die Option "Diagramm automatisch aktualisieren", um das Diagramm, nachdem Sie den Code geändert haben, einfach aktualisieren zu können. Wenn Sie den Code auf einer separaten Ebene anzeigen lassen und die Code-Ebene vorübergehend ausblenden, können Sie sich auf die Logikblöcke von "Withdrawal" konzentrieren. Da Sie sich erstmals mit der Operation "execute" beschäftigen, sollte das Diagramm noch nicht in kleinere Diagramme aufgeteilt werden. Wenn Sie später feststellen, dass das Sequenzdiagramm komplex und unübersichtlich ist, können Sie immer noch eine weitere Kopie desselben Diagramms generieren und dabei die Option zum Aufteilen des Diagramms aktivieren.

Sequenzdiagramm anhand einer Klassenoperation

Wenn Sie das Sequenzdiagramm öffnen, erkennen Sie an der Größe der Bildlaufleiste, dass Sie im aktuellen Fenster nur einen kleinen Teil der Operation sehen.

UML sequence diagram for Withdrawal

Sie könnten die Ansicht auf Fenstergröße verkleinern, doch wäre der Text dann sicher unleserlich. Nutzen Sie stattdessen die Vorteile der flexiblen UModel Benutzeroberfläche und vergrößern Sie das Eingabehilfefenster "Übersicht":

Altova UModel Overview helper window

Wenn Sie durch Verschieben des roten Quadrats durch das Sequenzdiagramm navigieren, sehen Sie darin auf einen Blick schattierte Bereiche, mit denen geschachtelte Codeblöcke innerhalb des Codes angezeigt werden. Auf diese Weise finden Sie schnell das Menü mit den Abhebebeträgen, die dem Benutzer angeboten werden.

UML sequence diagram showing withdrawal amounts

Sie sehen auch, wo die Auswahl des Benutzers zurückgegeben wird. Dies wäre der logische Punkt, an dem die Abhebegebühr berechnet werden sollte, damit der Benutzer den Vorgang bestätigen kann.

UML sequence diagram for withdrawal amount selection

Wenn Sie nun zum Withdrawal-Klassendiagramm zurückkehren, können Sie die Eigenschaft "fee" hinzufügen und ihren Standardwert definieren. Klicken Sie dazu einfach mit der rechten Maustaste auf den Bereich "Eigenschaften" der Klasse "Withdrawal" und wählen Sie im Kontextmenü den Befehl "Neu / Eigenschaft".

UML class diagram with new property

Sie können den Code mit den Änderungen im Modell synchronisieren, damit die Java-Klassendatei "Withdrawal'" nun ebenfalls die neue Eigenschaft "fee" enthält. Um den fee-Code an diesem Punkt implementieren zu können, müssen Sie den Quellcode direkt in einem Texteditor öffnen. Eine Art, um den Code für die Benutzergebühr zu implementieren, wäre, eine neue Methode zur Klassendatei hinzuzufügen.

New Java method in a text editor

Wenn Sie den Code fertig bearbeitet haben, können Sie das UML-Modell damit synchronisieren, damit die neue Funktion in der aktualisierten Applikation auch im Modell dargestellt wird. Anhand des Modells können Sie Projektdokumentation generieren oder das Modell anderen Mitgliedern Ihres Teams weitergeben.

Wenn Sie in Visual Studio oder Eclipse arbeiten, können Sie sogar eine automatische Synchronisierung aktivieren, damit das Modell, jedes Mal, wenn Sie den Quellcode bearbeiten, auf aktuellen Stand gebracht wird.

Altova UModel Project menu

Nach dem Round-Trip Engineering sehen Sie im aktualisierten Klassendiagramm sowohl die neue ursprünglich im Modell erstellte Eigenschaft "fee" als auch die direkt im Quellcode hinzugefügte Eigenschaft "finalOkay".

Updated UML class diagram for ATM Withdrawal transaction

Im aktualisierten Sequenzdiagramm sehen Sie Ihren neuen Aufruf der Methode "getFinalOkay" und den Logikblock für das Akzeptieren durch den Benutzer.

Updated UML sequence diagram showing logic block for new method

Wenn Sie sich dazu entscheiden, eine weitere Kopie des Sequenzdiagramms bei ausgewählter Option zum Aufteilen in kleinere Diagramme zu generieren, wird Ihre neue Methode "getFinalOkay" in einem Unterdiagramm dargestellt, dass mittels Hyperlink mit dem Hauptdiagramm verbunden ist. Dies kann sich als gute Strategie erweisen, um Funktionalitäten, die in diesem Durchgang hinzugefügt wurden, zu isolieren und klar hervorzuheben.

UML sequence diagram for new method, linked as a sub-diagram

Fazit

Wenn Sie ein UML-Neuling sind oder noch wenig Erfahrung mit UML haben, so hoffen wir, dass wir Ihnen in diesen technischen Kurznachrichten Anregungen für Ihre eigenen Entwicklungsprojekte gegeben haben. Unser Ziel war es, Ihnen den Wert visueller Software-Modellierung zu vermitteln, ohne uns mit den einzelnen Elementen in der UML-Syntax näher zu befassen. Zusätzlich zum umfangreichen integrierten Hilfesystem bieten Ihnen die UModel Fenster "Eigenschaften", die Tooltipps, und die Syntaxmenüs eine Hilfestellung bei der Erstellung von Diagrammen und Modellen, mit denen Sie eventuell nicht vertraut sind, da sie direkt anhand von Java-, C#- oder Visual Basic- Quellcode generiert wurden.

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