14 november 2011

Open source UML modeling tools

Open source modeling tools - tot dusver

Er zijn de laatste jaren wel wat open source UML modeling tools verschenen. Sommige daarvan zijn cross platform (ArgoUML - in Java geschreven), sommige zijn platform specific (StarUML voor Windows, Umbrello voor Linux). Er zijn er ook die heel sterk gericht zijn op het maken van tekeningen, maar die features als XMI-import en -export ontbreken. Alle hebben ze 1 ding gemeen: ze lopen achter. Ofwel qua tool-features, ofwel qua UML versie. StarUML en ArgoUML, beide tools die wel wat te bieden hebben, zijn blijven hangen bij UML 1.4... ArgoUML is wel bezig met het inbouwen van UML2 support, maar dat is nog verre van af. En de huidige StarUML is nog geschreven in Delphi, maar er zouden initiatieven genomen zijn om de applicatie te herschrijven in Java. Alleen is het sinds die aankondiging heel stil geworden... Dan zijn er ook nog de "community editions" van commerciële modeling tools (zoals Visual Paradigm), maar die bieden gewoonlijk veel te weinig functionaliteit om bruikbaar te zijn. Code generatie en XMI-export en -import zijn uitgeschakeld, waardoor dit "veredelde tekentools" zijn geworden.

Enter Modelio

En toen was er de commerciële/open source tool! Een model dat wel vaker wordt toegepast met commerciële software (kijk b.v. naar OpenOffice vs. StarOffice) is dat de basisfunctionaliteit van de tool als open source software beschikbaar is en dat er daarnaast ook een commerciële variant is, met meer mogelijkheden, support en een prijskaartje. Zo is er ondertussen een modeling tool verschenen die dit model toepast: Modelio. Modelio is een modeling tool gebaseerd op het Eclipse platform, is met andere woorden geschreven in Java, gebruik makend van de rijke feature set van Eclipse RCP. In tegenstelling tot andere Eclipse gebaseerde (modeling) tools (Rational Modeler, Omondo) is Modelio niet alleen beschikbaar voor Windows, maar ook voor Linux. Een Mac-versie is vooralsnog niet beschikbaar...

Sommige open source modeling tools zien er nogal goedkoop, of zelfs lelijk uit. StarUML heeft hierop altijd al een uitzondering gevormd. Dit is een enorm complete tool die er bovendien nog goed uitziet ook. Ook Modelio is erin geslaagd om dit vooroordeel te doorbreken (daar heeft Eclipse wellicht veel mee te maken). Daarmee is de recentste versie (versie 2.0) een sterke verbetering tegenover zijn voorganger. De vorige versie was ook al op Eclipse gebaseerd, maar bevatte nog veel niet-Eclipse code, wat de user interface onevenwichtig en vaak zelfs lelijk maakte.

De versie met het prijskaartje is verkrijgbaar in verschillende edities, voor developers (Java, C++ of database), system architect of business architect. Daarnaast kan deze bundel worden aangevuld met plugins, al dan niet betalend. De open source versie echter is simpelweg een UML/BPMN modeling tool. Maar ook deze kan worden aangevuld met een aantal interessante plugins. In het rijtje van de open source plugins vind je onder andere volgende leuke dingen:

  • roundtrip engineering voor Java
  • XSD design
  • SoaML
  • WSDL design
  • SysML
  • TOGAF 9

UML 2 support

Over de tool-ervaring ga ik kort zijn. Die is meer dan gemiddeld. Vergeleken met tools die ik ken, moet ArgoUML zeker onderdoen. StarUML is ongeveer gelijkwaardig. En Visual Paradigm heeft hier en daar enkele leuke handigheidjes qua aligneren van modeling elementen, maar globaal gezien vind ik Modelio aangenamer. Vergeleken met de versie van Together ControlCenter die ik 10 jaar geleden leerde kennen, is Modelio ook een stevige concurrent. Ik weet alleen niet hoe Together er nu uitziet. Het tekenen van UML modellen is ligt dus duidelijk in dezelfde lijn als andere goede tools. Zelfs sequence diagrammen tekenen gaat heel vlot (heb ik ooit anders gezien...). Wat UML 2 betreft, worden trouwens enkel de meest gebruikte modellen ondersteund. Timing diagram wordt niet ondersteund, interaction overview diagram ook niet. Composite structure diagram is pas beschikbaar na installatie van de SoaML module.

Roundtrip engineering

Ik ga mij even beperken tot de Java plugin. Want die is al uitgebreid genoeg om bij te blijven stilstaan. Om die te gebruiken, moet je die eerst downloaden en onder de "mda store" plaatsen. Vervolgens moet je die - voor ieder project waar je die wil gebruiken - installeren en ten slotte ook activeren. Dat lijkt misschien omslachtig, maar dat is het eigenlijk niet. Zo kan je bij de creatie van een project al aangeven welke modules je wil gebruiken. Daarmee is die module voor dat project al direct geïnstalleerd en geactiveerd.

De roundtrip functionaliteiten zijn gefocusd op de classes en de class diagrams waarop deze classes voorkomen. Alle packages en classes die je creëert, kan je - als je dat expliciet aangeeft - exporteren naar Java code. Wat je daarvoor moet doen, is aangeven dat deze class een Java element is. Dan verschijnt er een Java logo in de rechter bovenhoek van de class. Als je dan een package selecteert en dan via "Java Designer" (context menu) kiest voor Generate, worden de Java classes gegenereerd op de plaats die in de configuratie is aangegeven. Default is dat onder de project folder, maar je kan voor elke project ook een aparte locatie kiezen (b.v. een aparte directory, die door version control wordt beheerd). Dit zijn stub-classes: de classes met de attribuut-definities en methods en constructors zonder body.

Alle wijzigingen die je daarna aan de source code uitvoert, kunnen probleemloos worden gereflecteerd in het model, maar niet automatisch (zoals dat bij Together ControlCenter wel het geval was). Selecteer de package die je wil refreshen en kies "update model from source if necessary" van de Java Designer context menu en magic happens...

Dat is voor eigen modellen en code. Maar stel dat je een library van een vendor moet gebruiken voor integratie... Dan wil je wel naar de classes in die library kunnen refereneren. Selecteer Reverse/Reverse Java Binaries van de Java Designer context menu. Vervolgens wordt een dialog getoond met heel de package hierarchie van de library en alle onderliggende classes. hier kan je de packages en classes selecteren die je zelf wil. Na "finish" worden de packages gecreëerd en de classes met hun attributen en method en constructor signatures en kan je met deze classes aan de slag in je modellen.

XMI

Modelio - ook de open source versie - ondersteunt XMI-export en import. In tegenstelling tot andere open source tools is Modelio niet blijven steken bij XMI 1.2. Modelio laat toe om XMI 2.1 te exporteren die compatibel is met UML 2.1.1, 2.2 of 2.3 of EMF (Eclipse).

Conclusie

Wie ondanks agile development toch nog af en toe ene modelletje maakt maar niet in de buidel wil tasten voor een tool zoals Enterprise Architect of Visual Paradigm, moet zeker eens naar Modelio kijken. De open source versie is beslist de moeite waard. Voor wie anderzijds het "modelleren" beperkt tot het schrijven van user stories, maar op het einde van de rit toch graag een fraai class diagram genereert a.h.v. de code, is Modelio ook het overwegen waard. En dat is misschien de stap om via model storming en roundtrip engineering je volgende project aan te vatten...

Links

De commerciële versie is te vinden op http://www.modeliosoft.com
De open source versie is te vinden op http://www.modelio.org
Plugins - zowel commerciële als open source - zijn te vinden op http://www.modeliosoft.com/modelio-store.html

23:13 Gepost door There's more to life than what you see through windows in Linux, Open source | Permalink | Commentaren (0) |  Facebook |

De commentaren zijn gesloten.