---
title: "Het analyseren van een bestaande applicatie met Altova UModel – Deel 1"
date: "2009-04-16"
tags: 
  - "c"
  - "java"
  - "software-modeling"
  - "uml"
  - "uml-tool"
  - "umodel"
  - "visual-basic"
description: Ontdek hoe Altova UModel helpt bij het analyseren van bestaande applicaties door middel van reverse engineering, en hoe het uw begrip van Java-, C#- en Visual Basic-projecten verbetert.
---
Status: #blog

Tags:  #c #java #software-modeling #uml #uml-tool #umodel #visual-basic

Categories: [Altova](/blog/nl/category/altova.md) 
# Het analyseren van een bestaande applicatie met Altova UModel – Deel 1

Uiteindelijk komt het bijna elke professionele ontwikkelaar voor dat hij of zij wordt gevraagd om fouten op te sporen of nieuwe functionaliteiten toe te voegen aan een bestaande applicatie, waarvan de ontwikkelaar zelf niet heeft meegewerkt aan de creatie. In dergelijke situaties kunnen onjuiste of onvolledige documentatie en het gebrek aan toegang tot het oorspronkelijke ontwikkelingsteam aanzienlijke obstakels vormen. Gelukkig kan [Altova UModel](https://www.altova.com/nl/products/umodel/uml_tool.html) bestaande software [analyseren](https://www.altova.com/nl/features_reverse_engineer.html) om een visueel model te creëren, waardoor de analyse wordt versneld en het begrip van een oudere applicatie wordt verbeterd. Dit is het eerste artikel in een reeks waarin we UModel, het product van Altova, zullen toepassen [Een UML-tool voor softwaremodellering](https://www.altova.com/nl/products/umodel/uml_tool.html) en ontwikkeling, om een simulatie van een geldautomaat (ATM) te analyseren, die in Java is geschreven. De applicatie is gebaseerd op verschillende voorbeelden van geldautomaten (ATM's) uit populaire Java-tutorials. Omdat het om een eenvoudig systeem gaat en de werking van een geldautomaat bekend is, zullen we ons meer richten op technieken die u kunt toepassen in uw eigen Java-, C#- en Visual Basic-projecten, in plaats van op de voorbeeldcode. Hieronder een weergave van de legacy-applicatie die draait in een commandoregelvenster: 

[![Het analyseren van een bestaande applicatie met Altova UModel](https://lh5.ggpht.com/_REdrfeVqYdU/Sed_-l0DTLI/AAAAAAAAABU/6-raolJrxpk/image1_thumb1.gif?imgmax=800 "Analyzing a Legacy Application with Altova UModel")](http://lh6.ggpht.com/_REdrfeVqYdU/Sed_-BNWN-I/AAAAAAAAABM/UsJK-uUZDsQ/s1600-h/image13.gif) 

De oorspronkelijke ontwikkelaar heeft handig voorbeeldgegevens voor een account verstrekt, zodat we kunnen inloggen. Vervolgens toont de applicatie een vertrouwde menun voor geldautomatisbetalingen:

[![Het analyseren van een bestaande applicatie met Altova UModel](https://lh3.ggpht.com/_REdrfeVqYdU/Sed__4VIvHI/AAAAAAAAABc/eRfNTNU1BMc/image2_thumb1.gif?imgmax=800 "Analyzing a Legacy Application with Altova UModel")](http://lh5.ggpht.com/_REdrfeVqYdU/Sed__H7tHTI/AAAAAAAAABY/VDOrnnEzqxw/s1600-h/image23.gif) 

Als we de map bekijken waarin de applicatie zich bevindt, zien we Java-bronbestanden en gecompileerde .class-bestanden, maar geen projectbestanden. 

[![Het analyseren van een bestaande applicatie met Altova UModel](https://lh5.ggpht.com/_REdrfeVqYdU/SeeABYGobaI/AAAAAAAAABk/y7Q_dj7x3D8/image3_thumb1.gif?imgmax=800 "Analyzing a Legacy Application with Altova UModel")](http://lh5.ggpht.com/_REdrfeVqYdU/SeeABA_BmhI/AAAAAAAAABg/d1XUgpJ6tCw/s1600-h/image33.gif) 

Dat is geen probleem. Via het menu "UModel Project" kunnen we een project, een bronmap, of zelfs de binaire bestanden van een gecompileerde applicatie importeren. De broncode voor zeer grote projecten is waarschijnlijk georganiseerd in meerdere mappen, dus zelfs als u een projectbestand heeft, kunt u er soms beter één map tegelijk bekijken. 

[![Altova UModel: Projectmenu](https://lh3.ggpht.com/_REdrfeVqYdU/SeeACSlKy2I/AAAAAAAAABs/DMIjj76IUrg/image4_thumb1.gif?imgmax=800 "Altova UModel Project Menu")](http://lh4.ggpht.com/_REdrfeVqYdU/SeeABvDWNpI/AAAAAAAAABo/0HNmMYw5ozY/s1600-h/image43.gif) 

Voordat we beginnen, willen we ervoor zorgen dat de instellingen van UModel zo zijn ingesteld dat alle klasse-relaties die in de broncode zijn gedefinieerd, automatisch worden weergegeven 

[![Dialoogvenster voor de Altova UModel-instellingen](https://lh4.ggpht.com/_REdrfeVqYdU/SeeADbAPBmI/AAAAAAAAAB0/apw9S8S36qI/image5_thumb1.gif?imgmax=800 "Altova UModel Options dialog")](http://lh5.ggpht.com/_REdrfeVqYdU/SeeAC7sCJNI/AAAAAAAAABw/KJ5dD50EuvM/s1600-h/image53.gif)

Wanneer we de map importeren, willen we ook alle JavaDoc-commentaren in de broncode opnemen als documentatie voor ons UModel-project 

[![Opties voor de importmap van Altova UModel](https://lh3.ggpht.com/_REdrfeVqYdU/SeeAEb_SWQI/AAAAAAAAAB8/vyX0IzsXN1I/image6_thumb1.gif?imgmax=800 "Altova UModel Import Directory options")](http://lh3.ggpht.com/_REdrfeVqYdU/SeeAD4UkwmI/AAAAAAAAAB4/a09DTRdK1E8/s1600-h/image63.gif) 

Voor onze eerste blik op de bestaande applicatie willen we een overzichtelijk beeld krijgen, dus we zullen niet alle optionele onderdelen openen: 

[![Opties voor het genereren van UML-diagrammen met Altova UModel](https://lh5.ggpht.com/_REdrfeVqYdU/SeeAFCr9PXI/AAAAAAAAACE/hsT9EUQnh3k/image7_thumb1.gif?imgmax=800 "Altova UModel diagram generation options")](http://lh5.ggpht.com/_REdrfeVqYdU/SeeAErNf2wI/AAAAAAAAACA/c06PpbBlukA/s1600-h/image73.gif) 

UModel importeert het project in slechts enkele seconden, en het berichtvenster meldt geen fouten. De diagramstructuur bevat twee diagrammen: 

[![Altova UModel project voor het analyseren van bestaande software](https://lh4.ggpht.com/_REdrfeVqYdU/SeeAGb4TU1I/AAAAAAAAACM/SNpifEp7W-E/image8_thumb1.gif?imgmax=800 "Altova UModel reverse engineering project")](http://lh3.ggpht.com/_REdrfeVqYdU/SeeAFm7VssI/AAAAAAAAACI/ARGlHfiFTYs/s1600-h/image83.gif) 

We kunnen op het tabblad "Modelstructuur" klikken en de bronmap uitklappen om de pictogrammen te bekijken die alle Java-klassen weergeven die UModel heeft geïmporteerd 

[![afbeelding9](https://lh3.ggpht.com/_REdrfeVqYdU/SeeAHUrKyHI/AAAAAAAAACU/hsRmFA_xVKE/image9_thumb1.gif?imgmax=800 "image9")](http://lh4.ggpht.com/_REdrfeVqYdU/SeeAG7BR_9I/AAAAAAAAACQ/eT803iLh0Ds/s1600-h/image93.gif) 

We kunnen terugkeren naar de Diagrammenboom om de inhoud van het bronbestand "[UML-class diagram](https://www.altova.com/nl/features_class_diagram.html)" te openen. Nadat we alle lijnstijlen op "orthogonaal" hebben ingesteld en een paar lijnen en klassen hebben verplaatst om overlapping te voorkomen, zien we dat het diagram duidelijk de applicatieklassen en hun relaties weergeeft: 

[![Altova UModel: UML-klasdiagram](https://lh3.ggpht.com/_REdrfeVqYdU/SeeAITR6w2I/AAAAAAAAACc/-Sq6tshlEaM/image10_thumb1.gif?imgmax=800 "Altova UModel UML class diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SeeAH5qIHRI/AAAAAAAAACY/S9YSO7cumAE/s1600-h/image103.gif)

Let op dat de naam van de klasse "Transaction" cursief is weergegeven, wat aangeeft dat het een abstracte klasse (of superklasse) is, en dat de subklassen "BalanceInquiry", "Withdrawal" en "Deposit" de eigenschappen van deze klasse overnemen. Als u op de klasse "Transaction" klikt om deze te selecteren, wordt de overerving geïllustreerd in het hulpmiddelvenster "UModel Hierarchy", en eventuele JavaDoc-commentaren die in de broncode direct voor de klassedefinitie voorkomen, worden weergegeven in het venster "Documentatie": 

[![Altova UModel: Venster voor hiërarchie](https://lh6.ggpht.com/_REdrfeVqYdU/SeeAJMlCtgI/AAAAAAAAACk/B8XZcGNgqpQ/image11_thumb1.gif?imgmax=800 "Altova UModel Hierarchy window")](http://lh4.ggpht.com/_REdrfeVqYdU/SeeAI67t_2I/AAAAAAAAACg/EqzSgKSnA_A/s1600-h/image113.gif)

Als we alleen een teksteditor zouden gebruiken om de bestaande applicatie te onderzoeken, zouden we elk afzonderlijk broncodebestand moeten bekijken om de hiërarchie die hierboven wordt weergegeven te begrijpen. Dat komt omdat de klasse "Transaction" zijn subklassen niet intern herkent. Wanneer we een subklasse vinden, herkent deze ook niet zijn "broers" (andere subklassen). En we kunnen niet zeker zijn dat een andere, onlogisch benoemde klasse geen subklasse van "Transaction" is, totdat we ze allemaal hebben bekeken. U kunt ook elke klasse afzonderlijk selecteren om de bijbehorende documentatie in het documentatievenster te bekijken. Of, als u een overzichtelijker diagram wilt, kunt u de labels van de relaties uit het diagram verwijderen: 

[![Het contextmenu dat verschijnt wanneer u met de rechtermuisknop klikt in Altova UModel](https://lh4.ggpht.com/_REdrfeVqYdU/SeeAKdOPRqI/AAAAAAAAACs/SbZaC71r3hg/image12_thumb1.gif?imgmax=800 "Altova UModel right-click context menu")](http://lh3.ggpht.com/_REdrfeVqYdU/SeeAJn5hYqI/AAAAAAAAACo/H2HMeR0EK9E/s1600-h/image123.gif) 

Nu is de asterisk, die de definitie weergeeft van de "nul tot en met vele" multipliciteit van accounts in de bankdatabase, veel duidelijker. 

[![Altova UModel: UML-klasdiagram](https://lh4.ggpht.com/_REdrfeVqYdU/SeeALRzP2vI/AAAAAAAAAC0/Fdldw_Liu1g/image13_thumb1.gif?imgmax=800 "Altova UModel UML class diagram")](http://lh3.ggpht.com/_REdrfeVqYdU/SeeAK19kSnI/AAAAAAAAACw/YIEMn1DPyFY/s1600-h/image133.gif)

Een ander lid van ons ontwikkelingsteam heeft een gedeeltelijk klassendiagram gevonden, dat zogenaamd het bestaande project weergeeft, en dit doorgegeven. We kunnen direct zien dat het er niet uitziet als het diagram dat UModel heeft gegenereerd: 

[![UML-classdiagram voor een bestaand applicatiesysteem](https://lh6.ggpht.com/_REdrfeVqYdU/SeeAMbyxn_I/AAAAAAAAAC8/NBbye5jSIM4/image14_thumb1.gif?imgmax=800 "UML class diagram for legacy application")](http://lh6.ggpht.com/_REdrfeVqYdU/SeeAL5gvXsI/AAAAAAAAAC4/T1wD-oHmFCQ/s1600-h/image143.gif) 

De documentatie voor onze oude applicatie komt niet overeen met de code – een vervelende, maar helaas veelvoorkomende situatie! Er zijn verschillende verschillen tussen de oude diagrammen en de diagrammen die we hebben gegenereerd:

> · The associations between ATM and the physical components are shown as composition associations

> · The association between ATM and the BankDatabase is described by a text annotation

> · The association between ATM and Transaction also has a text annotation, and it does not even exist in the UModel diagram

> · Multiplicity is defined at each end of each association, but none were created by UModel

Laten we elk punt afzonderlijk bekijken:

> · The representation of composition in the Java language is identical to ordinary association, so UModel could not deduce the composition characteristic. Of course the ATM “is composed of” a keypad, screen, cash dispenser, and deposit slot, so we can update the diagram to show composition.

> · We can add a text annotation to any UModel association arrow. Simply click the arrow and start typing.

> · If UModel did not create an association arrow between the ATM class and the Transaction, one must not be defined in the source code. We will postpone further investigation of this anomaly for now. · Multiplicity as shown in the legacy diagram would also require specific definition in the source code. We’ll leave this for investigation later too. Maybe that old diagram was left in the back of the file cabinet for a reason!

We voegen de annotatie toe en vervolgens updaten we de aggregatie-eigenschap van elke ATM-relatie in het eigenschappenvenster van UModel. Laten we ook de werkbalk "UModel Layout" gebruiken om de rechthoeken die alle klassen voorstellen, dezelfde grootte te geven. Ons klassendiagram ziet er nu als volgt uit:


[![Aangepast UML-class diagram voor het project van een geldautomaat](https://lh4.ggpht.com/_REdrfeVqYdU/SeeANZJrhlI/AAAAAAAAADM/C7K2WWMrqwQ/image15a_thumb1.gif?imgmax=800 "Modified UMLclass diagram for ATM project")](http://lh5.ggpht.com/_REdrfeVqYdU/SeeAM25eGkI/AAAAAAAAADI/1hEHobCyq7o/s1600-h/image15a3.gif) 

Het voltooide klassendiagram is slechts het begin van onze analyse. In de volgende delen zullen we dieper in de applicatiecode duiken, automatisch meer [UML-diagrammen](https://www.altova.com/nl/uml/) genereren en zelf nieuwe diagrammen maken naarmate onze kennis van de bestaande code toeneemt. 

Als u direct aan de slag wilt en uw eigen bestaande Java-, C#- of Visual Basic-applicatie wilt analyseren en aanpassen, [klik hier om een gratis, volledig functionele proefversie van 30 dagen te downloaden](https://www.altova.com/nl/download/umodel/uml_tool_enterprise.html) van [Altova UModel](https://www.altova.com/nl/products/umodel/uml_tool.html).
