UML editors: 2004 roundup

Simple test: I needed to generate UML from 5 classes and 5 interfaces, and then edit as UML, save as JPG’s for emailing to other people, and be able to continue editing as the project grows to 30 interfaces and 60 classes.

Brief summary: (EDIT) the “simple”/“lean” editors seem to do this very well (but lack lots of possibly-desirable advanced features). They also, of course, have much lower memory requirements, which can be very handy. The “full-fat” editors with all the fancy gizmos seem to fail dismally, unless you pay money.

So, I’m taking this use-case as a test for today’s UML editors. It’s been about a year since I tried most of them, so I reckon now’s a good time to try them out. I’m just going to go through each of them, use them as far as I can before they break apart, and post my results here.

I promise these will be short comments - most editors smack you round the head 5 times in the first 5 minutes, so you need real courage to get anywhere with them.

EDIT: I’m posting this here because it would be great to have people chime in with constructive comments and their own thoughts. Please don’t post something like “well, it works for me” because that helps NO-ONE. Also, please don’t post “I thought X was really good”. Please feel free to post your own blow-by-blow account of getting one of these UML modellers to do the basic tests!

Oh, and please: no non-free editors. If it’s got a free version that has some lethal limit to force you to buy, like “cannot save files” or “can only have 5 classes in the class diagram” then again, please, just don’t mention it.

Paradigm:

Now, this one I was excited about. I had a brief look some months back when someone recommended it, and it looked very promising. The licenses were even cheap (under $50) in case you decided later on to upgrade.

Install: went fine, although the free version is almost 100Mb download (ouch).

Run program: asked if I wanted to run the tutorial. I said yes. Tutorial completely ****ed. Nothing appears on screen. Eventually I worked out that the developers couldn’t count to “0”, and had set the x-position of the window to be the last column on screen (I could just see the edge of the window in the last column of pixels). Dragged it back onto screen. Discovered that any attempt to navigate through the tutorial step-by-step would reset the window to being 99.9% off-screen. Gave up on tutorial.

Reverse-engineer source: Found the menu entry and brought up dialog. Dialog is highly confusing and implies it will only work with supported IDE’s. Help button (thankfully) explains this is a wrong assumption. Unfortunately, the help doesn’t explain very well what most of the options do, nor the difference between source and classpath files - assume that latter have to be pre-compiled (?).

Navigate to my src directories, press OK, and nothing happens. Bring up the same menu again, only this time the dialog DOESN’T appear, and again nothign happens. After a couple of tries, realise that you are only “priviledged” by the presence of the dialog the first time you use the menu (! Someone @ paradigm knows nothing about UI design !). Find the dialog, go to the tab I was on originally, and discover that it has appended “/src/” to the end of the directories I selected. The directories it is using don’t exist. Manually fix directories and try again.

This time, the dialog won’t go away, complaining that I haven’t setup a working directory in a different, unrelated, tab that I’ve never seen before. So I type some random dir in.

This time, it finds the source classes. But, no matter how hard I try, it refuses to find the source interfaces.

This tool is useless; pretty, but useless - apparently it won’t include interfaces on your class diagram. Basic test: failed, dismally.

NEXT!

EDIT: just discovered that my copy of Paradigm is about a month old; I ought to re-test with the latest build (but there’s been no major release increment AFAICS so it’s unlikely you’ll see much difference).

Jose:

Gone. Nothing there:

http://www.newdawnsoftware.com/jose

Fujaba:

Wow. I wasn’t expecting this. 10 seconds after install was complete, I’d already imported all my classes - even from multiple different source directories, NOT packaged correctly, etc. (see below, though).

I get the feeling Fujaba may be returning to its roots (I used it for my uni dissertation years - and many versions - ago, and it worked much better then than it has for the past few years).

Moments later, I had a PDF, a PNG, and a JPEG version. The PDF was BUTT-UGLY (looks like it took an anti-aliased version and then monchromed it), but the image versions were lovely (fully anti-aliased).

Now, onto the problems. I was actually very grateful that Fujaba completely ignored the package statements in my source - I was actually loading classes directly out of our NFS-mounted SCM, and they are not located in “com/company/project/package/etc” but in 1- or 2- deep folders (the SCM autmoatically exports them in a hierarchy when you tell it to build the current version). For anyone who wanted the UML class-diagram “package” feature, prepare to be disappointed. I’m not sure where I sit on this - having done hundreds of UML diagrams, I find the package notation mostly useless for java projects except when you’re using it to represent the package, not to hold all the contents (e.g. you are showing how multiple packages interact, and don’t want to show all the classes). Paradigm took the opposite approach, and automatically created a package element, and WOULD NOT ALLOW ME to drag classes out of the package element (which made layout and editing a PITA). It’s worth remembering that UML (unlike many/most programming languages) is designed to be 99.9% optional - you are specifically advised to only use the language features you need to make your diagram work it’s best. So, it’s arguable that both tools are “correct” so long as both allow you to use them the other way around as well.

There was also a momentary “Huh?” when I reverse-engineered the UML: nothing on-screen changed. THis is because the root node of the object tree defaults to closed - double-clicking opened up the children and allowed me to find my newly generated UML. I don’t know how long this would confuse the average programmer; I suspect that people not used to MSVC etc might want to just ignore the tree-pane and hence have problems here :(.

EDIT: Followup…

As the best of those I tried, I went on to do the rest of the editing with Fujaba. A lot of the bugs that were there last year are still there, so that editing UML diagrams is a real chore until you’ve learnt what works and what doesn’t. Fortunately, it has a very easy to find “edit source directly” that lets you edit the source and the changes are auto-synchronized back into the diagram. This gives you a “plan B” in 90% of cases where an editing feature doesn’t work properly (like a particular one of the interfaces not appearing in the list of interfaces I could extend from/implement).

However, there are a few cases where the diagram decides “no, you’re wrong” and overwrites the modified source (accompanied by a bug in the diagram’s class-member privacy-editing :frowning: ).

Basically, it looks like Fujaba 4.1 has about 50% of the 4.0 bugs fixed, making it about 80% as reliable as 1.x (which I used to use) but it’s considerably easier to use, faster, and has good auto-layout (which it didn’t have at all before). But it’s far from perfect. I suspect that the “ideal” is to use F4.1 to do your reverse engineering, and something like paradigm for editing until one or the other fixes their major bugs!

This is a pity, because Paradigm looks like it’s gorgeous WHEN it works, and Fujaba has some cool features like being able to use JEdit as it’s editor, and being designed for use by newbie programmers - so it’s very simple (AIUI it’s actually a teaching aid, and has won several awards for ease-of-use / involvement in “teaching students to program” courses).

Fraid so, I discontinued Jose, wanted to focus on games. The source is still officially being worked by some guys at http://jose.dev.java.net. However, I haven’t seen any updates for a long time.

Apologies that I didn’t add a “not here any more” page.

Kev

EDIT: I do keep saying that I should go back and start a new code base with the extra ideas I have now :slight_smile:

Omondo:

Webpage is written by someone who could do with a visit from the “clear English” campaign: it’s grammatically correct, but dense text with little clue as to what exactly is being offered.

My big question here was: can I use this without Eclipse? (eclipse won’t install on my workstation due to some crummy bug in SWT).

Their FAQ didn’t include this very obvious element, and instead was just a list of names of versions of their products, and how to download them. Great. Filled with extreme confidence in their documenting ability, I decided to skip it - if they can’t even do basic documentation for their website (although it does look very pretty :)) I reckoned I was better off trying others like Argo first, and waiting to see if someone here knew about it’s Eclipse (in)dependency?

EDIT: But Omondo is another I’ve heard good things about, so I am keen to try it.

Useful reviews. Thanks for the info.

Maybe you should also have a go at ArgoUML: http://argouml.tigris.org/ . This is one was offically suggested by my lectures. Haven’t really used yet, so can’t comment. But it has a webstart ;p

ArgoUML:

Didn’t crash - not even ONCE! - in the simple test (this is something of a rarity for Argo, and usually worth partying about).

Importing was nice and easy. It was also very obvious the import had worked, with classes appearing as elements in the tree pane.

Unfortunately, once imported, it took me literally two minutes to actually SEE my classes (and, note, I’ve used Argo quite a lot before!). This is part of the criticism a lot of people have of Argo, that in trying to be “radically user-friendly” with some funky “improvements” to traditional UI’s, it ends up being totally non-intuitive.

Eventually I discovered that I had to open up the packages for the classes I wanted (note: this doesn’t work for ALL the packages, so if you just pick a random package to open you might not even realise this is possible) and then find an element amongst your classes called “[pname] classes” (where pname = name of your package). Clicking on this miraculously converts the main pane into your class-diagram.

To add to the confusion, the treepane has a very prominent element called “Class Diagram” that is not only empty but if you try to drag-n-drop your classes into it you get told “You’re not allowed to drag there”. Hmm.

Once I got to the class-diagram, Argo again showed it’s “funky” UI design by making it damn hard to un-collapse the classes. After a minute or so of clicking, and looking at all the menus, and trying random buttons, I eventually foudn you could right-click on a class, navigate some sub-menus, and find an option to “display the operations on this class”. This is in contrast to most other UML editors, where you just…double-click! to expand/collapse (nb: fujaba goes one further and has a little +/- button with the word “collapse” or "expand written next to it; not sure I like that, but at least it’s VERY obvious).

Seems that for Argo you have to do lots and lots and lots of right-clicking whislt you navigate your UML (note: when working with UML diagrams for medium-sized projects, you tend to expand/collapse a lot to keep screen real-estate).

There are still lots of obvious bugs in the basic manipulation of your diagram (resizing elements, moving elements, etc). These get very annoying quite quickly :(.

Export, on the other hand, worked brilliantly. I have to say that the output was not as pretty as the others (e.g. the text was rammed up against the lines of the elements which contained it - no padding or margins, poor centring of text) making a lot of text appear “squashed”, but it did effortlessly produce PS and GIF - and even made the GIF background transparent-by-default, which was a nice touch.

[quote]Useful reviews. Thanks for the info.

Maybe you should also have a go at ArgoUML: http://argouml.tigris.org/ . This is one was offically suggested by my lectures. Haven’t really used yet, so can’t comment. But it has a webstart ;p
[/quote]
Ha! I was in the middle of posting it ;).

And I should really have mentioned the webstart aspect. Argo currently does “the right thing” and does NOT force you to use webstart. I see webstartable UML editors as a two-edged sword, but there are obvious benefits (and, if you’re willing to use JWS launcher and/or put a hyperlink to the JNLP on your home page, there’s a LOT of productivity boost to never having to check the page for updates).

FYI for those who know how I sit with JWS games: apps are an entirely different situation. Most apps you never want an upgrade unless you the user choose it. This is mainly because apps are nearly always editors of documents, and you want your document-editing to remain constant from session to session. Games have no document, and are just a complete package. There’s lots of knock-on effects from this, if you think about it in detail (if anyone wants to discuss, start a thread in off-topic, I’ll remove it from this thread :)). I’m not arguing for or against (shrug; I’m undecided) but it’s a neat feature that Argo offers.

[quote]Useful reviews. Thanks for the info.
[/quote]
I agree.

Has anyone checked out Visual Paradigm for UML yet? http://www.visual-paradigm.com/download.php

Hhaha sorry! I should had been more patient. For some reason I thought you would forget about Argo :stuck_out_tongue: I tried the software as soon as I post here, and as you said, things are very non-intutive. It took me a while to find out what was happening too. They need some lectures on Human-Computer interaction, which is the module I’m studying for exam now, and some things are just common sense (like the expanding issue you mentioned)

Off-topic:
I watched last year a presentation from a Microsoft guy that came to our university and he talked about the challenge of keeping software up-to-date for the non-technical user (security issues as his main concern, of course :p), and he described how they’re approaching the problem. It seems to me that having apps using webstart (kind of turning the ‘internet’ as a huge hard-drive) seems to very promising in constantly updating products without the user even realising it. I don’t think there are many bad effects if you consider that everyone will be accessing the same webstart version of the application, and if you assume updates are backward-compatible and let you import/export stuff.

But maybe, you’ll want to give the user the option of sticking the previous version (or preferably just keeping the UI of the previous version while updating internal logic, and gradually changing/introducing new features to the UI so he doesn’t get shocked very time he starts his app).

I think Sun has always some really cool technology, and webstart could innovate how companies provide desktop applications. (There’re problems such as download time of huge applications, but it’s true that in company networks, terminal PCs share application via a common server, so why not extend it to the level of the internet?)

Am I talking nonsense?

Also kind of Off-Topic:
No you are not talking nonsense :slight_smile:
Personally, I like the idea of updating the internal logic (though if it has no effect on the UI, I don’t see how it would help except if it was some speed-enhancement upgrade). Also, I hate automatic updates in general if they modify the whole GUI/UI significantly, especially if it’s a game. I’ve never updated any one of my games, and luckily, they haven’t been silently modifying themselves…

Guys, seriously, start another thread.

It’s probably worth it - there could be a lot of interesting debate on this webstart issue. And I think it’s particularly interesting how well-suited games are for JWS compared to other apps.

Here it is:
http://www.java-gaming.org/cgi-bin/JGNetForums/YaBB.cgi?board=Offtopic;action=display;num=1081895929

Blah^3h, check the EssModel at http://essmodel.sourceforge.net/. It seems very cool.

Just a quick question: would you recommend using UML even in small personal projects? Or is it unnecessary (as I think)?

Thanks, will have a look next time I’m using UML (probably in a couple of weeks).

Absolutely! It really does reduce your development time, allowing you to think about what you’re about to do in a graphical way much more quickly than if you’re doing it as you go along whilst writing interfaces (and anyone who does it as they go whilst writing classes obviously has time to burn and hairs to lose :O).

The problem is…a bad UML editor will burn up all the “up-front” stress-reduction, so that it feels as though using UML is actually making the project harder, slower, and less enjoyable - although, even with a bad editor, you will save time in the long run.

I haven’t yet found an editor I could classify as “good” and also “free”. Fujaba is not “bad” as described above, and is great for getting your diagram quickly from source, and it does non-class-diagrams automatically too, which is cool (if you need them). It also has very clear and non-confusing GUI - but it still has too many bugs in the editing process to be satisfactory; you will not feel very stressed whilst using it, and you will actually feel you are saving time, but you will also keep thinking “I’m sure it could be easier than this…”.

Have you check the UML resources page at:

http://www.uml.org

Im using the community edition of visual-paradigm which has a plugin for Netbeans, Eclipse and many other known IDEs.

From all i have tested yet (every one you mentionned) omodo is the one i would pick. It’s powerfull, functional and thought out to work hand in hand with Eclipse, which makes his great strength and weakness together. It’s very complete but has some flaws once you go out of the path it should be used. However, it’s still the best.

But maybe some of the other uml tools have improved since my last visit, one year ago…

However, my conclusion was: mind + pen & paper is still the best!

That’s the one where they have no docs, and no statement explaining whether or not Eclipse is actually necessary, yes?

Perhaps (as a user) you could confirm for me whether it works without Eclipse (note: Eclipse won’t run on my workstations. It uses that stupid SWT which is sufficiently buggy that even the Eclipse installer just crashes on our Mandrake systems!)

I run eclipse 2.1 & 3M9 on my mandrake 9.2 without problem …

Omodo need eclipse cause it’s an eclipse plugin 8)