---
title: "Teil 4 – Analyse einer bestehenden Anwendung mit Altova UModel"
date: "2009-05-07"
tags: 
  - "altova"
  - "c"
  - "java"
  - "missionkit"
  - "software-modeling"
  - "uml"
  - "uml-tool"
  - "umodel"
  - "visual-basic"
description: Erfahren Sie, wie Sie eine bestehende Geldautomaten-Anwendung verbessern können, indem Sie Gebühren für Bargeldabhebungen implementieren, und nutzen Sie dabei Altova UModel, einschließlich der Erstellung von UML-Klassendiagrammen und Sequenzdiagrammen.
---
Status: #blog

Tags:  #altova #c #java #missionkit #software-modeling #uml #uml-tool #umodel #visual-basic

Categories: [Altova](/blog/de/category/altova.md) 
# Teil 4 – Analyse einer bestehenden Anwendung mit Altova UModel

In [Teil 1](https://www.altova.com/blog/2009/04/analyzing-legacy-application-with.html) dieser Reihe haben wir Quellcode in [Altova UModel](https://www.altova.com/de/products/umodel/uml_tool.html) importiert, um ein UML-Projekt zu erstellen, und wir haben ein [Klassendiagramm](https://www.altova.com/de/features_class_diagram.html) unserer bestehenden ATM-Anwendung untersucht. 

In [Teil 2](https://www.altova.com/blog/2009/04/part-2-analyzing-legacy-application.html) wir haben eine Reihe von... erstellt [UML-Anwendungsfall-Diagramme](https://www.altova.com/de/features_use_case.html) um die Interaktionen der Benutzer mit dem System zu beschreiben, und wir planten eine Erweiterung der Anwendung, um eine Gebühr für Abhebungen einzuführen. 

In [Teil 3](https://www.altova.com/blog/2009/05/part-3-analyzing-legacy-application.html) haben wir ein [UML-Zustandsautomaten-Diagramm](https://www.altova.com/de/features_state_machine_diagram.html) erstellt, um den Betrieb unseres Systems weiter zu analysieren und zu dokumentieren. In dieser Folge werden wir zu unserer geplanten Erweiterung zurückkehren. Wir sind beauftragt, eine Gebühr für Bargeldabhebungen von 2 Dollar für Abhebungen unter 100 Dollar und 4 Dollar für Abhebungen von 100 Dollar oder mehr einzuführen. In Teil 2 haben wir ein Anwendungsfall-Diagramm erstellt, um zu zeigen, wie Benutzer mit der neuen Funktion interagieren werden: 

[![UML-Anwendungsfall-Diagramm](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSvo2m2-I/AAAAAAAAAGU/7htMTzPadB0/image1_thumb%5B1%5D.gif?imgmax=800 "UML use case diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSvOZJfaI/AAAAAAAAAGQ/SmDT2J9YN80/s1600-h/image1%5B3%5D.gif) 

Aus unserer ursprünglichen Analyse der objektorientierten Klassen in Teil 1 wissen wir, dass unser System eine Klasse namens "Auszahlung" enthält, die der logische Ort ist, um unsere neue Funktion zu implementieren. Wir können ein neues Klassendiagramm für die Klasse "Auszahlung" anzeigen, indem wir sie im Modellbaum auswählen und dann im Kontextmenü, das beim Rechtsklick erscheint, die Option zum Erstellen eines neuen Diagramms wählen.

[![Hilfenfenster für den Modellbaum in UModel](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSwAsoM5I/AAAAAAAAAGc/_wjHFGYNizA/image2_thumb%5B1%5D.gif?imgmax=800 "UModel Model Tree helper window")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSv_Y20sI/AAAAAAAAAGY/ukYEuXjPBFo/s1600-h/image2%5B3%5D.gif)

[![UML-Klassendiagramm](https://lh5.ggpht.com/_REdrfeVqYdU/SgMSwSCA44I/AAAAAAAAAGk/xZ_KNAFntzw/image3_thumb%5B2%5D.gif?imgmax=800 "UML class diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSwRwsa6I/AAAAAAAAAGg/8dHhPHcxS-c/s1600-h/image3%5B6%5D.gif)

Wir haben uns entschieden, ein Hierarchiediagramm zu erstellen, damit alle Eigenschaften der Klasse "Auszahlung" sichtbar sind, einschließlich der geerbten Eigenschaften von der Klasse "Transaktion". Bevor wir die Gebührenfunktion implementieren, gibt es eine verwandte Frage, die wir untersuchen müssen. Wir wollten sicherstellen, dass der aktuelle Code eine Prüfung enthält, um zu überprüfen, ob der vom Benutzer angeforderte Auszahlungsbetrag den aktuellen Kontostand nicht überschreitet. Ein [UML-Sequenzdiagramm](https://www.altova.com/de/features_sequence_diagram.html) ermöglicht es uns, den Ablauf einer Auszahlung nachzuvollziehen. UModel kann automatisch Sequenzdiagramme aus den Operationen von rückentwickelten Klassen generieren. Wir können die Operation "ausführen" in unserem Klassendiagramm auswählen und im Kontextmenü von UModel die Option "Sequenzdiagramm generieren" wählen, um das benötigte Diagramm zu erstellen. 

[![Dialog zur Generierung von Sequenzdiagrammen in Altova UModel](https://lh6.ggpht.com/_REdrfeVqYdU/SgMSw2ezLGI/AAAAAAAAAGs/QqBzd8FYxHk/image4_thumb%5B1%5D.gif?imgmax=800 "Altova UModel Sequence Diagram Generation dialog")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSwvRDbYI/AAAAAAAAAGo/99KMNTYLeus/s1600-h/image4%5B3%5D.gif) 

Der Dialog zur Generierung von Sequenzdiagrammen in UModel bietet verschiedene Optionen, die bei der Implementierung der neuen Funktion hilfreich sind. Wir haben die Option "Automatische Aktualisierung" ausgewählt, da wir das Diagramm später aktualisieren möchten, nachdem wir den Code geändert haben. Die Anzeige des Codes in einer separaten Ebene kann uns dabei helfen, uns auf die Logik der Datenabfrage zu konzentrieren. 

[![UML-Sequenzdiagramm](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSxnOimQI/AAAAAAAAAG0/ISFoBjX-hXU/image4a_thumb%5B1%5D.gif?imgmax=800 "UML sequence diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMSxnSx5xI/AAAAAAAAAGw/zQeOikuRG4s/s1600-h/image4a%5B3%5D.gif) 

Die Größe der Scrollbalken deutet darauf hin, dass wir im aktuellen Fenster nur einen kleinen Ausschnitt des Sequenzdiagramms sehen. Wir könnten die Ansicht verkleinern, um sie an das Fenster anzupassen, aber der Text wäre wahrscheinlich unleserlich. Stattdessen nutzen wir die flexible Benutzeroberfläche von UModel, um das Diagramm-Fenster und die Eigenschaften-Fenster automatisch auszublenden. Dadurch können wir das Hilfefenster für die Übersicht vergrößern:

[![UModel: Übersichtsdarstellung (Navigationsbereich)](https://lh3.ggpht.com/_REdrfeVqYdU/SgMSyLoDmAI/AAAAAAAAAG8/VSrcxmlUzyo/image5_thumb%5B1%5D.gif?imgmax=800 "UModel Overview navigation window")](http://lh6.ggpht.com/_REdrfeVqYdU/SgMSx7BnhCI/AAAAAAAAAG4/lJ2kDb9YGZs/s1600-h/image5%5B3%5D.gif) 

Wir können das Sequenzdiagramm erkunden, indem wir das rote Quadrat im Übersichtsfenster verschieben. Dadurch können wir schnell den Vergleich zwischen dem abgehobenen Betrag und dem Kontostand finden.

[![UML-Sequenzdiagramm](https://lh3.ggpht.com/_REdrfeVqYdU/SgMSyhedGhI/AAAAAAAAAHE/SvFKj234kxs/image6_thumb%5B1%5D.gif?imgmax=800 "UML sequence diagram")](http://lh5.ggpht.com/_REdrfeVqYdU/SgMSyYWsvVI/AAAAAAAAAHA/JuO3ZaULHZg/s1600-h/image6%5B3%5D.gif)

Wir können auch die Fehlermeldungen sehen, die angezeigt werden, wenn das Geldautomat nicht genügend Bargeld enthält oder wenn der Kontostand zu niedrig ist.

[![UML-Sequenzdiagramm](https://lh6.ggpht.com/_REdrfeVqYdU/SgMSzJ4GmrI/AAAAAAAAAHM/SgmUgFNzAjc/image7_thumb%5B1%5D.gif?imgmax=800 "UML sequence diagram")](http://lh6.ggpht.com/_REdrfeVqYdU/SgMSy6XzdcI/AAAAAAAAAHI/i7EjoSM3VS8/s1600-h/image7%5B3%5D.gif)

Wenn wir uns wieder das Klassendiagramm für die Abmeldung betrachten, können wir die Eigenschaft "Gebühr" hinzufügen und ihren Standardwert festlegen: 

[![UML-Klassendiagramm](https://lh3.ggpht.com/_REdrfeVqYdU/SgMSzYpOX5I/AAAAAAAAAHU/vpZ-rn2obmA/image8_thumb%5B1%5D.gif?imgmax=800 "UML class diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMSzMMLe_I/AAAAAAAAAHQ/J0Cxo0Wv_fg/s1600-h/image8%5B3%5D.gif) 

Wir werden zunächst eine erste Implementierung der Gebührenlogik durchführen, ohne dabei die Möglichkeit zur Stornierung durch den Benutzer zu berücksichtigen. Durch die Aktualisierung des Quellcodes aus unserem Modell wird die Eigenschaft "Gebühr" der Klasse "Withdrawal" hinzugefügt. Anschließend werden wir unseren bevorzugten Quellcode-Editor öffnen, um die Gebührenlogik direkt in der Datei "Withdrawal.java" zu implementieren. Das Testen unserer neu kompilierten Anwendung zeigt Folgendes: 

[![Geldautomaten-Simulation](https://lh4.ggpht.com/_REdrfeVqYdU/SgMSz9cBOHI/AAAAAAAAAHc/z6TwcwHMWvg/image9_thumb%5B1%5D.gif?imgmax=800 "ATM Simulation")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMSzvjZUzI/AAAAAAAAAHY/1PFnBGhRMHw/s1600-h/image9%5B3%5D.gif) 

Der Anfangsbestand betrug 147 Dollar. Nach einer Auszahlung von 100 Dollar beträgt der neue Bestand 43 Dollar. Die Gebühr wird in einer neuen Meldung angezeigt, und der Endbestand ist korrekt. Allerdings ist das Sequenzdiagramm in unserem UML-Modell ungenau, da es die Gebührenfunktion nicht berücksichtigt. Wir können das Sequenzdiagramm korrigieren, indem wir das UML-Projekt anhand des überarbeiteten Quellcodes aktualisieren. Das Fenster "UModel-Nachrichten" zeigt an, dass Änderungen in der Datei "Withdrawal.java" dazu geführt haben, dass das Sequenzdiagramm neu generiert wurde. Außerdem können wir das Diagramm einfach durchsuchen, um unseren neuen Test für den Auszahlungsbetrag zu finden und zu prüfen, ob die Gebühr auf 4 Dollar erhöht werden muss. 

[![image10a](https://lh4.ggpht.com/_REdrfeVqYdU/SgMS0bn_5EI/AAAAAAAAAHk/BkVoVAWz-tM/image10a_thumb%5B1%5D.gif?imgmax=800 "image10a")](http://lh3.ggpht.com/_REdrfeVqYdU/SgMS0MZLn5I/AAAAAAAAAHg/qbpqaDucnEU/s1600-h/image10a%5B3%5D.gif) 

Da unser modifiziertes Sequenzdiagramm die aktualisierte Funktionsweise des Geldautomaten grafisch darstellt, können wir sicher sein, dass der gestresste Fahrer, den wir im dritten Teil dieser Reihe getroffen haben, genügend Bargeld hat, um sich ein Eis zu kaufen! In unserer nächsten Folge werden wir eine weitere Funktion von UModel nutzen, um eine umfassende Projektdokumentation für unsere bisherige Arbeit zu erstellen – ein weiterer Vorteil, wenn wir unser UML-Modell und den Anwendungscode synchron halten. 

Wenn Sie Altova UModel mit Ihrer bestehenden Java-, C#- oder Visual Basic-Anwendung testen möchten, [klicken Sie hier, um eine kostenlose, voll funktionsfähige 30-Tage-Testversion herunterzuladen](https://www.altova.com/de/download/umodel/uml_tool_enterprise.html).
