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.

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.

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).

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 ).

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).

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.

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.

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

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.

Hhaha sorry! I should had been more patient. For some reason I thought you would forget about Argo 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)

Quote

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.

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?)

Also kind of Off-Topic:No you are not talking nonsense 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...

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

Quote

Just a quick question: would you recommend using UML even in small personal projects?

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...".

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...

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

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!)

So which one's the best now? :-)I still work with Paradigm Community Version for my Java (hobby) projects.However at work I'd like to use the same UML editor for C++, if possible.Is there an UML editor which supports both languages: Java and C++? OK, Together does (its J and C version), but something more cheaper or free maybe?

To be more precise: of course UML is not dependant on C++ or Java syntax, but many UML editors also allow to import projects and then it is.

Anybody with Poseidon experience? (According to its feature matrix some versions can handle C++ code?)

I believe that to get anything other than Java in Posidon you need to buy it, rather than use the comunity edition.

Don't know how it compares to other editors though, I quite like the CE version but don't use it as much as I should at home. Personally I prefer it o Rose which is the only other main experience I have had with work.

It's *windows-only* and hasn't been updated in more than a year (and was written in Pascal, which suggests it's not very likely to get picked up by other programmers...)

You cannot possibly restrict yourself to a windows-only editor for something as fundamental as UML - this prevents anyone you ever do development work with from using any OS other than windows . Since it doesn't appear to support the industry-standard UML file-format (although very few of the free ones do ) you're in a bit of a proprietary hell.

Anyway, hacked-off with Fujaba 4.1 for a larger project (some idiot removed the "zoom" feature that was in version 1! and now it's useless for large UML projects ) I went back to see if Paradigm actually *works* now.

Part 1:---------

First of all, their website is still a car-crash: designed by someone who likes to give surfers stress-headaches, who comes from the "the more information you can put on the same page, all in different places, with lots of unformatted text, all referring to unrelated things ... the better!" school of thought. (Paradigm - please fire your webmaster; do it NOW!).

They've also got this irritating "send us your email address so we can spam you hahahahaha" thing I remember from last time - although I thought it was optional last time I tried it. Doesn't seem to be optional any more...

In an attempt to show the world just what a moron he is, their webmaster has also made the website reload the page every time you click anywhere. That might sound like normal, but I mean that if you ctrl-click to open a link in a new window then the ORIGINAL page also reloads. Arrgh. Dumb-ass web-morons thinking the sun shines out of their arses and that they have some god-given right to override the decisions that the surfer makes when using their web-browser </rant>.

On to the program. Well, not quite. First we need to use their documentation, because they now offer:

- windows-only - linux-only - OS-X-only - java - "no-install" (?)

versions. WTF is the no-install version? Well, don't ask me. I clicked on the "what's this?" link and it popped up two paragrpahs of BS that said nothing. The third para was a "click here to learn more" and redirected to a new page showing you how to click on a download link to download the no-install version (wow, man!), and had a link to tell you what it was all about. That link...redirects to section A of an alphabetic glossary. Great; paradigm: score for documentation? 0 out of 10.

So I picked the Java version. For reference, this is version 3.2, build 5th July 2004. Part 2 I'll post when it's downloaded. All 61.1Mb of it (ugh; makes me think of Rational Rose all over again...)

I believe that to get anything other than Java in Posidon you need to buy it, rather than use the comunity edition.

Don't know how it compares to other editors though

Whilst I'm waiting for Paradigm to download, I can quickly comment on this. Poseidon (free version) is useless. According to their docs:

Quote

[mentions that there are some missing features in the free version]...These features are nice to have in order to increase your productivity, but are not necessary to build UML models.

BS! Look at what's missing:

Quote

Perhaps most importantly, the Community Edition does not support reverse or round-trip engineering, and it cannot load plug-ins. The Community Edition also does not support printing, copy and paste to the Windows clipboard (to copy diagrams to Word or Powerpoint for example)

So, in fact, you can create UML diagrams manually (which is the exception rather than the rule) but you can't do anything except look at them on screen, take a screenshot, copy/paste into your paint program, crop, then save, and finally import into some other document.

OK, so if you're happy jumping through that hoop all the time then you can at least USE the diagrams. Hmm. Perhaps we should make a webpage telling people how to do this and then the vendor would at least get sensible about the copy/paste issue?

As far as I am concerned, a UML editor is NOT a UML editor if it cannot/will not convert from code to UML (and it's only a half-arsed editor if it won't go the other way as well, i.e. "round-trip")

A UML editor that is not "round trip" is nothing more than Visio or some other structured drawing program.... it is almost useless for developers.

I am still willing to bet there is no good UML editor/plugin/ide thingy at ANY price.

It's too bad, UML might actually be useful if there were tools to support it. As it stands UML is a tremendous waste of time. You will have your program written and debugged before you make a decent UML diagram with any of the existing tools.

A UML editor that is not "round trip" is nothing more than Visio or some other structured drawing program.... it is almost useless for developers.

The only reason for me allowing some leeway there is that it's slightly easier to find one way importers than round-trippers, and right now (as you mention below) it's so hard to get anything that even simply works that my standards have been dropping .

Quote

I am still willing to bet there is no good UML editor/plugin/ide thingy at ANY price.

FUJABA is tolerable for diagrams up to 15 or so classes + interfaces. FUJABA does the round-trip engineering, but there are one or two bugs in that some less common java code gets wiped (like "public static final" vars inside interface definitions) and it forces it's own automatic layout algorithm on your code (which is good, but not perfect).

Seeing as FUJABA version 1 used to do similar things but had about 20-30 options IIRC for things like controlling the layout algorithm, and deciding what it would ignore, I have high hopes that the next version (4.2) might reach the point of being "good" for small diagrams. If they bring back the zoom feature from version 1, then it would also be OK for medium and large diagrams!

Quote

As it stands UML is a tremendous waste of time.

Not quite...UML is still valuable, it's just that these days you'll probably have to wait until you've done some coding before auto-generating the UML and then doing your design work on the UML before *manually* adding the code to implement that design.

If your design is not detailed, you can certainly use most tools (like FUJABA) to generate java code; Fujaba's always compiles, it's just it has annoying bugs like mentioend above .

Quote

You will have your program written and debugged before you make a decent UML diagram with any of the existing tools.

[/quote]

LOL yes. These days I find it quicker to prototype 20 interfaces and reverse engineer them into UML than to use any of the crappy UML editor interfacs to build the diagram manually .

As it stands UML is a tremendous waste of time. You will have your program written and debugged before you make a decent UML diagram with any of the existing tools.

Yes, unfortunately. It's my experience too.However, I did and do work with some project managers (who have been developers many years ago) which insist on "nice" UML class diagrams just before we are allowed to do any coding.OK, of course there needs to be architectural plans before the code development starts. However with UML class diagrams we tend to need soooo long - and this time lacks later when it comes to code/development.

However with UML class diagrams we tend to need soooo long - and this time lacks later when it comes to code/development.

c.f. my earlier comment about how it feels like it's taking a lot more time that it does (with bad tools), and you are always in fact saving time.

Having thought about this a bit more, I can see that perhaps if you're not really comfortable with UML then it would take a lot longer - but that's just like not being comfortable with OOP: it's a skill that you need to learn and practice, and until you do you will go slowly, but once you have learnt it well you should be able to use OOP *faster* than a C programmer working purely procedurally, even on small projects.

I find that designing with a UML diagram isn't practical. The diagrams are simply not as malleable as the code. The rigid UML diagrams are difficult to adapt to the discoveries that happen when you actually start coding and realize that things will need to change to take new information into account. It's one reason that I believe in an iterative (extreme?) design model. Complete up-front design is great when it works, and can be disastrous if new information discovered during the coding phase can't fit the plan.

And there is ALWAYS something that you don't find out until you start the implementation.

I love UML diagrams for understanding and visualizing existing code and assisting with the refactoring process.

java-gaming.org is not responsible for the content posted by its members, including references to external websites,
and other references that may or may not have a relation with our primarily
gaming and game production oriented community.
inquiries and complaints can be sent via email to the info‑account of the
company managing the website of java‑gaming.org