Umbrello is een open source UML modeller op basis van de KDE-technologie en biedt alle functionaliteiten die je van een UML modeller verwacht.

UML is de afkorting van Unified Modeling Language, een wereldwijde standaard modelleertaal voor het maken van analyses en ontwerpen van informatiesystemen. UML is geen methode, maar een taal, en net als elke andere taal is het bedoeld om te communiceren. Het is een soort notatiesysteem waarmee diagrammen en schema’s worden gemaakt. Men duidt die in de UML-wereld aan als statische en dynamische diagrammen, ook wel structuur- en gedragsdiagrammen genoemd. UML gebruik je voor object oriented modelling en past daarom het beste bij object oriented ontwikkelomgevingen.

UML-diagrammen kunnen ontstaan tijdens de ontwerpfase van een systeem. Zij helpen de ontwerper bij het denkproces en dragen bij aan een systematische werkwijze. De diagrammen laten de structuur duidelijk zien en helpen miscommunicatie te voorkomen. Door met behulp van de diagrammen het ontwerp grafisch weer te geven, is dit ook voor niet-technische mensen makkelijker te begrijpen. Tijdens het ontwerp ondersteunen de diagrammen de communicatie tussen de opdrachtgever, toekomstige gebruikers en de ontwerper. Nadat het ontwerp gereed is, vormen de UML-diagrammen een goede basis voor de communicatie tussen de ontwerper en de bouwer. Vaak kunnen UML-applicaties de diagrammen omzetten in broncode voor veel verschillende programmeeromgevingen, zoals C, C++, PHP, Python, Perl, Ruby, Javascript en Java.

 

UML-modeller

De UML-modeller slaat de informatie niet als afbeelding op, maar als XMI-bestand (XML Metadata Interchange). Doordat UML een wereldwijde standaard is, zijn -in theorie- deze XMI-bestanden tussen de verschillende modellers uitwisselbaar. UML-modellers zijn allemaal gebouwd rondom dezelfde UML gestandaardiseerde diagram-types met gestandaardiseerde symbolen en daardoor werken deze modellers allemaal op een vergelijkbare manier. Sommige modellers kunnen ook bestaande source code importeren, dat wil zeggen dat zij de objecten in de source code kunnen vertalen naar UML-modellen.

UML-modellers zijn bedacht om binnen een samenwerkingsverband te worden gebruikt, bestaande uit bijvoorbeeld de opdrachtgever, ontwerper, architect en programmeur. Ook wanneer je al deze rollen zelf vervult, dus in je eentje bedenkt wat je wilt gaan maken en dat vervolgens in je favoriete programmeeromgeving gaat bouwen, dan is het gebruik van een UML-modeller nuttig. Het helpt je vooraf na te denken over de verschillende te realiseren functionaliteiten. Ook zie je onderlinge verbanden en structuren. Hierdoor ga je beter voorbereid van start en werk je efficiënter.

 

KDE technologie

De meeste open source UML-modellers zijn gemaakt in Java. Dit biedt het voordeel van platform onafhankelijkheid, maar maakt het soms ook wat lastiger te installeren. Umbrello wijkt hiervan af. Het is niet geschreven in Java, maar is gebaseerd op de KDE-technologie. KDE is op de meeste Linux distributies beschikbaar en ook op FreeBSD, OpenBSD, macOS en Windows. Umbrello installeer je dus meestal eenvoudig met de package-manager, wat wel zo prettig is. Hierdoor lopen de updates ook met het normale update-proces.

Het werken met Umbrello heb je snel onder de knie. Een uitgebreid handboek is in vele talen beschikbaar, waaronder ook in het Nederlands. Je maakt een nieuw project met aan met “New”. Vervolgens maak je een nieuw diagram aan, waarbij je uit verschillende types kunt kiezen, zoals een class diagram, sequence diagram, use case diagram, communication diagram, activity diagram, etc. Dit zijn allemaal genormeerde diagrammen uit de UML-familie.

 

Use case diagram

Een use case diagram kan bijvoorbeeld tijdens een interview met de opdrachtgever worden samengesteld. Het use case diagram toont de interactie tussen de verschillende partijen (“actors”) met het toekomstige systeem en legt daarmee vast wat het systeem moet gaan doen. Hiermee krijg je in beeld welke gebruikersfuncties het systeem moet gaan bieden. Actors staan buiten het systeem. Dit kunnen mensen zijn of andere systemen. Het gaat daarbij niet om de persoon, maar om de rol. De actors hebben in het UML use case diagram de vorm van een lucifer-poppetje, de use cases de vorm van liggende ellipsen. Met lijnen verbinden we actors met use cases. Een actor interacteert met het systeem om een use case te realiseren, hieruit volgt dat elke use case minimaal met een actor verbonden moet zijn. 

Het UML activity diagram is te zien als het object-georiënteerde equivalent van flow charts. Een activity diagram is een activiteitendiagram met een begin- en een eindpunt. Daartussen spelen zich acties af die verlopen volgens een bepaalde flow. In principe maak je voor elke use case uit het use case diagram een apart activity diagram. 

Het activity diagram kan van links naar rechts getekend worden, waarbij het startpunt het meeste linkse element is en het eindpunt het meest rechtse. Van boven naar onder kan ook, waarbij het startpunt het bovenste element en het eindpunt het onderste element is. Veel voorkomende elementen in een activiteitendiagram zijn een beginpunt (cirkel), een eindpunt (cirkel met een stip er in), een activiteit (vierkant blok), een beslispunt (rechtopstaande ruit), een vork (donkere lijn met verschillend aantal ingaande en uitgaande lijnen), een tijdsbepaalde gebeurtenis (twee driehoeken die elkaar bij de punten raken, in de vorm van een zandloper), het verzenden van een signaal (vierkant met een uitstekende driehoek), een geaccepteerd signaal (een vierkant met een uitgesneden driehoek) en een uitzonderingssituatie (bliksemschicht).

Helaas hebben wij in Umbrello geen manier gevonden om swimlanes aan te maken in het activity diagram. Wanneer je een activity diagram met swimlanes aanmaakt, dan maak je voor elke actor een eigen kolom. Je plaatst de activiteiten niet alleen in de verwerkingsvolgorde onder elkaar, maar ook in de kolom van de actor die de betreffende activiteit uitvoert. Umbrello mist hiervoor functionaliteit. Je kunt natuurlijk wel de elementen zodanig verslepen dat een logische kolom indeling ontstaat, maar een echte swimlane indeling met de bijbehorende kopjes ontbreekt.

 

Class diagram

Het class diagram gebruik je om classes met hun onderlinge afhankelijkheden en dergelijke te ontwerpen. Een class diagram bevat één of meer classes. Classes bevatten elementen. Dit zijn attributen en methoden. Een attribuut is bijvoorbeeld een variabele, een methode een functie. Een class weet dingen (attributen) en een class doet dingen (methoden). De zichtbaarheid van een attribuut of een methode kan op verschillende manieren gespecificeerd zijn, zoals bijvoorbeeld “private”. Dat wil zeggen: alleen binnen de class bekend (officieel: binnen de name-space). “Public” betekent dat deze ook buiten de class bekend is. In het schema geef je dit aan met minteken of een plusteken voor de naam van het attribuut of van de methode. Verder hebben elementen één of meer types, bijvoorbeeld “integer”, “long double” of “char”. Attributen kunnen ook een initiële waarde hebben.

Een class teken je als een rechthoek, met daarin drie boven elkaar liggende vakken. Het bovenste vak bevat de naam van de class. In het tweede vak plaats je de attributen, voorafgegaan door het symbool van hun zichtbaarheid (bijvoorbeeld een plus- of een minteken). In het onderste vak komen de methoden.

In Umbrello maak je eerst de class aan, hierna klik je met de rechtermuisknop op de class, dit geeft een menu. Hiermee maak je binnen de class nieuwe attributen en methoden aan. De zichtbaarheid kies je door middel van een radio-button. Umbrello zorgt dan voor het goede symbool in de tekening van de class.

Classes hebben onderlinge relaties. Er bestaan verschillende soorten relaties, zoals “Association”, “Compostion” of “Generalisation”. Voor elke soort relatie bestaat een symbool. Zo geef je bijvoorbeeld een association aan met een lijn, of met een pijl met een punt afhankelijk van het soort association. Een compostion is een pijl waarvan de punt een gevulde ruit is en een generalisation is een pijl waarvan de punt een open driehoek is. Dit zijn allemaal gestandaardiseerde UML-symbolen. Umbrello kent de verschillende soorten en de bijbehorende symbolen. Wanneer je met de muis over de symbolen gaat, komt een pop-up-je die de soort relatie beschrijft. Bij het symbool van realisation staat bijvoorbeeld “implements”. 

Je kunt een aantal classes onderbrengen in een package. Dit kun je als een logische eenheid of als een building block zien. In het diagram geef je dit aan met een vierkant om de betreffende classes. Dit zijn slechts enkele voorbeelden. Wanneer je hiermee aan de slag wilt, dan is het verstandig om je eerst in het gebruik van UML te verdiepen.

 

Code generatie

Umbrello kan het class-diagram omzetten in code. Je kiest hiervoor eerst de gewenste taal of talen, bijvoorbeeld Perl, Python of PHP. Via een wizzard stel je in hoe je de code gegeneerd wilt hebben, waarbij je zelfs de manier van indenten kunt opgeven. Je geeft aan in welke directory de gegenereerde code wilt hebben. Hierna is het een kwestie van de code laten generen en je krijgt een aantal bestanden met daarin een skelet voor de classes, de declaraties van de attributen, etc. Per class krijg je een apart bestand. Deze bestanden zijn meteen voorzien van commentaarregels voor de documentatie van de code.

Umbrello kan ook code importeren. Je kiest ook nu weer de taal, geeft aan welke directory de code bevat en kiest of Umbrello ook in de subdirectory’s moet afdelen. Umbrello leest de code in en importeert de classes. Vervolgens kun je één of meer classes naar je class diagram slepen, om ze daar af te beelden en verder te gebruiken. Het is met Umbrello niet mogelijk om vanuit code volledige diagrammen te genereren.

Wat opvallend is, is dat een undo-functie in Umbrello ontbreekt. Wanneer je een element in je diagram hebt opgenomen, en dat gelijk weer ongedaan wilt maken, is er geen andere oplossing dan het pijltje te selecteren, hiermee het element in kwestie aan te wijzen en via het rechtermuisknop-menu te verwijderen. Soms kun je ook het properties-menu van het element gebruiken. Zo kun je bijvoorbeeld een attribuut van class verwijderen.

 

Conclusie

Umbrello is een geschikte applicatie om met UML te leren werken. Het vereist geen Java, is gemakkelijk te installeren en het werken met Umbrello heb je snel onder de knie. De werking in alle schermen is gelijk. Wanneer je een bepaald diagram type kiest, zoals een use case diagram of een activity diagram, dan wordt de balk met icoontjes gevuld met de bij het type diagram behorende symbolen. Met je muis kies je een icoontje en klikt dan in het diagram. Je krijgt dan een klein pop-up dialoogvenstertje waar je de naam van het betreffende element invult. Zolang je geen ander icoontje kiest in de bovenbalk, dan herhaalt zich dit elke keer wanneer je met de muis in het diagramvenster klikt. Wanneer je elementen wilt verplaatsen, groter of kleiner wilt maken, etc. dan kies je het icoontje met de zwarte pijl. Nu kun je een element selecteren en bijvoorbeeld verschuiven. Klik je met de rechtermuisknop op een element, dan wordt een menu getoond met verschillende opties. Dubbelklik je op een element, dan wordt een dialoogvenster met de eigenschappen van het betreffende element getoond. Het spreekt allemaal voor zich, het werkt intuïtief. Probeer het zelf maar eens!