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 |

23 september 2009

Quote of the day

Gisteren stond er op de achterzijde van de Metro een paginagrote advertentie van Dell, met daarbij ook de onvermijdelijke reclame voor Windows en Office 2007.

De slogan van Windows vond ik wel frappant: Windows. Leven zonder muren. Dat gaf me de inspiratie voor volgende quote of the day:


Windows: leven zonder muren.
Maar vensters die niet open kunnen, werken verstikkend.


18:45 Gepost door There's more to life than what you see through windows in Open source | Permalink | Commentaren (0) | Tags: windows, quote of the day |  Facebook |

02 september 2008

Google Chrome: web browsing revisited

Vandaag werd het nieuws wereldkondig gemaakt dat Google een eigen web browser gaat lanceren: Google Chrome. Naar het schijnt was het nieuws iets te vroeg gelekt, toen iemand per vergissing het stripverhaaltje, dat de lancering van Chrome moet vergezellen, had doorgestuurd. Dat stripverhaaltje vind je op volgende URL:
http://www.google.com/googlebooks/chrome/

Toen ik het nieuws pas hoorde, dacht ik: Och nee, toch niet weer een nieuwe browser? We zitten al opgescheept met Internet Exploder, Firefox/IceWeasel (de volledig OPEN variant, gebaseerd op de Firefox source code, gebruikt in Debian Linux) wint aan terrein, Opera hinkt achterop, Safari vind je enkel op Mac en die is eigenlijk gebaseerd op Konqueror, die je enkel op Linux (onder KDE) vindt. Waarom weeeer een nieuwe browser? Maar dan ben ik eerst even het stripverhaaltje gaan bekijken. En eigenlijk hebben ze wel een punt. De browsers zoals wij ze kennen hebben allemaal een verleden. Ze stammen allemaal uit de tijd dat browsers enkel tekst en wat prentjes moesten visualiseren. En nu? Java applets, AJAX, Flash, alle mogelijke streaming audio en video... We chatten, zetten onze fotoalbums online, bekijken filmpjes, spelen spelletjes, sturen mails... Google biedt ons zelfs een volledige tekstverwerker en spreadsheet aan via de browser! Met andere woorden: we doen heel wat meer met onze browser dan wat die pakweg 12 jaar geleden moest doen. Natuurlijk, de browser van nu moet ook die dingen van 12 jaar geleden nog kunnen tonen. Maar da's geen probleem.

Google begon dus van nul. Zo vermijd je dat je een hoop legacy meesleept; code van 12 jaar geleden, zeg maar. Gevolg: je kan een veel zuiverdere architectuur uittekenen. En dat hebben ze ook gedaan. In plaats van multi-threaded te werken, werken ze multi-processing: Elke tab in de browser is een browser sessie op zich (apart proces). Als er een probleem is met het renderen van een bepaalde tab, gaat niet heel je browser down, maar enkel die ene tab. De rest kan blijven werken. Op die manier wordt het geheugen ook beter benut (minder fragmentatie), waardoor je browser niet stelselmatig gaat vertragen als er te veel tabs openstaan. Met aparte processen per tab kan dat dus niet... Sterker zelfs: als je in 1 tab van site A naar site B gaat en beide sites staan volledig los van mekaar, dan wordt het proces van site A gestopt op een nieuw te creêren voor site B.

Door van nul te beginnen, is de browser ook sneller: het start sneller op, laadt pagina's sneller en blijft sneller bollen (of, zoals hiervoor vermeld: gaat na een tijd niet vertragen). Ook werd veel effort gestoken in een degelijke Javascript virtual machine én degelijke garbage collection in deze VM. ook dat maakt de browser veel performanter.

Visueel dan. De browser is heel sober. De tab bar is het vertrekpunt. De tabs staan dus bovenaan, niet de address bar. Door het gebruik van aparte processen per tab kunnen tabs ook effectief uit het browser window worden gesleept en als een apart window verder leven. Geïntegreerd zoeken is ook een belangrijk punt geworden met de Omnibox, een intelligente address bar, zeg maar.

Veiligheid wordt gegarandeerd door een strikt sandbox principe. Elk browser (tab) proces speelt in zijn eigen zandbak. Er mag geen data worden weggeschreven. Sensitive data kan niet worden gelezen. Op die manier kan er geen malware worden geïnstalleerd. Moest er toch al malware over de lijn gaan, dan wordt die weggesmeten van zodra het browser proces worden gestopt.

En het beste van al? Het is open source! Google heeft zelf de mosterd gehaald bij verschillende open source projecten zoals Firefox en Apple's WebKit. Ik ben benieuwd hoe snel de ideeën en principes van Chrome zullen worden overgenomen door andere browsers...

16:38 Gepost door There's more to life than what you see through windows in Open source | Permalink | Commentaren (0) | Tags: firefox, webkit, browser, google, open source, internet |  Facebook |

21 april 2008

Windows Vista source code gelekt!

Van een collega kreeg ik een mailtje met het onthutsende nieuws dat de broncode van windows vista is gelekt op het internet. Van open source gesproken...

vista-source-code

09:51 Gepost door There's more to life than what you see through windows in Open source | Permalink | Commentaren (2) |  Facebook |