Java News from Tuesday, October 5, 2004

Linus Tolke has posted ArgoUML 0.17.1, an open source UML modeling tool written in Java. I've been meaning to add a really simply class diagram to the XOM documentation for some time. What I was trying to do was nothing fancy, just nine classes in a hierarchy three levels deep, and I only want to show the class names, not even any attributes or operations. ArgoUML is open source (BSD license) so I decided to fire it up and see how it ran. Big mistake. This product is clearly not ready for prime time. I wouldn't consider it even alpha quality. The user interface is flaky, and the documentation is poorly organized and poorly written. Clicking on tool icons would sometimes activate them and sometimes wouldn't. At least once I had to quit the entire application and relaunch it before it would let me create a new class box. Critical operations are only accessible from the context menu, which much more often than not refused to appear. It's about exactly what you'd expect from a product with a version number of 0.17.1. The whole product was almost non-functional and absolutely unusable. Maybe one day this will be a worthy product, but that day is not today, it's almost certainly not this year, and it probably won't be this decade.

Having gotten that off my chest (I have a real distaste for products that waste my time, open source or otherwise), can anyone recommend a free UML tool that actually works? I suppose I could fire up my old copy of Visio (5.0, I think), but that requires booting up the Dell laptop with the dead battery, and drawing on the tiny screen with a trackpad. Bleah. Or I could use StencilIt!, a great pre-UML product that never went anywhere post-1.0. But it really feels like there should be something for less than $5000 that can draw UML class diagrams. I've long suspected UML's main purpose in life was to sell consulting, books, and tools; and that nobody was actually using it. If nobody has noticed how unfinished and incomplete ArgoUML actually is up till now, to the point of awarding it a Jolt Productivity Award, I'm now convinced that's true.

Update: lots of people have written in with a host of suggestions. I doubt I can try everything recommended, but I'm going to start at the beginning and try each one until I get my diagram drawn. It's a really simple diagram. Surely one of these an do the job.

First out the gate is UMLet, which nearly didn't make the cut because it requires Java 1.5, but an apparently an older beta might do the trick. I immediately note: no documentation, ships with an old and buggy version of Xerces, and no runnable file, just a bunch of JARs. Amazingly despite this it runs. The user interface is obviously designed by someone who's never bothered to look at what's in the edit menu of every major application on the planet. OK let's see if it works.

The editing interface is weird but plausible. The panel layout is poor. It doesn't allow nearly enough space for the stereotypes (is that the right word?). The instructions are right up front—good; but it should be using drag and drop rather than simple double clicking. However, I rapidly dug myself into a hole I couldn't reverse from (Why are the stereotypes editable in the first place?) and had to quit and relaunch. OK, now I've got the first three classes set up. Oops! I lost my SimpleClass stereotype again. Hmm, looks like I dragged it behind the panel. By what insanity is this possible? Anyway, got it back now. OK. I've set up all eight classes (two abstract and seven concrete), time to connect them. Oh, wait a minute. UMLet doesn't automatically resize the class boxes for long names, so first I should resize a few. OK, that's done. Now let's make sure everything is in the right place. There seems to be an invisible grid the boxes are snapping to. That's good. The lack of alignment tools had worried me. OK, let's try connecting them now. That went OK. Here's the finished result:

Don't see anything? Me neither. Apparently it exported a corrupt JPEG. Final grade for UMLet: F.

What to try next? A couple of people mentioned Jude. This one's fee beer. Oh wait. No it isn't. They want my personal info so they can spam me before they'll let me download a copy. Nope. Next!

JP Bonn suggests the payware Enterprise Architect. It can reverse engineer code to diagrams (which I would love to be able to do, though I don't need to do it today). Cost is between $125 and 225. There's a free trial. Sounds good, but wait! It only runs on Windows (or Linux using CrossOver Office). Nope, that's not my platform right now. They lose the sale, plus sales to anybody who might have listened to my recommendation if I had liked the product. Next!

Gentleware's Poseidon CE is a product I've mentioned here before. It's a free-beer lite version of a payware product. No reverse engineering in the community edition, but as I said, I don't need that today. I'm just trying to draw one damn picture! They have WebStart version. This should make evaluating it a little easier, but Mozilla can't seem to figure out how to do that. OK. Looks like Safari can. The application is loading now. Hmm, 4.2M of 18.9M complete. My fingers are twiddling. Thank Zeus I have a high speed connection. (Oops. Wrong god. I hope Poseidon doesn't get angry with me.)

OK. It finally loaded, and they didn't self-sign their certificate like most companies do. Plus 1. They want me to register for a license key, but I seem to be able to cancel out of that (another good sign). They've got a startup tip, and it can be turned off in an obvious way if I don't like it. Two more good signs. At least one person at this company is on the ball, which is more than I can say for all the other products I've tested today.

Looking at the interface, it doesn't seem too complex. The tool tips remind me which box is a class and which is a package. I'm able to turn off the attributes and operations using the context menu, as I'd expect. They even put the menu bar at the top of the screen where God intended it to be. Excellent.There are a few mistakes in the user interface. It gets some of the menu shortcut keys wrong, and puts the Exit menu item in the wrong place on the Mac, but overall it's the best effort yet (which ain't saying much).

OK, first hiccup. I don't see how to make the class abstract. I may have to (Horrors!) read the documentation. OK. Found it. The checkbox was hidden because the window was too small for all the widgets, even though my monitor is quite large. Expanding it to fill the screen revealed the necessary checkbox. Why this didn't start with a maximized screen I don't know. Time to save. They don't use a native file dialog. Why not, I don't know. OK, now I tried to create a new class by copying and pasting an old one, so I wouldn't have to hide attributes and operations and resize the new box, and instead I seem to have changed the name of the class to "cstring element". Where the hell did that come from? Looks like a bug. Poseidon does seem to resize the class boxes as necessary to accommodate long class names. However, when I turn off the attributes and operations it does not shrink the boxes. I have to do that manually. Plus 1. Minus 1.

Now I have all nine classes laid out. It's highlighting the bounding box of the entire diagram as I move classes around. That's a nice touch. I just need to connect the classes. This is harder than it should be. Poseidon keeps creating new classes and interfaces rather than connecting to my existing classes. At least Undo works. OK. I think I've figured out how to do this. Now if I could just get the generalization arrows to connect to the right points on each class box. Trying to move them just seems to create another class. Anyway, this is almost right. Let's export it to PNG:

Oh my God. Look at that! They've decided to put advertising for their product in my diagram. What's worse, they never told me they were going to do that. This isn't a community edition. It's a crippled demo. They almost had me until that point. I don't mind companies choosing to provide a limited demo of their products, I hate companies that lie and aren't up front about what they're offering. What a colossal waste of time. Next!

The next suggestion in my Inbox is Borland Together Designer Community Edition. Let's see if this is a real product or another piece of false advertising. The download is 60 megabytes. There better be something there. You know what: they require cookies and registration, so I'm not going to bother.

Borland used to be a company that really understood developers, but they've had troubles for the last ten years or so, a combination of both Microsoft aggression and internal incompetence, though one can argue about what percentage of their travails to attribute to each cause. This time though, I'm attributing their problem to internal incompetence. They had an opportunity to have their product reviewed on a web site read by 20,000 Java developers a day; but they'd rather get my e-mail address to send me more spam. Next!

Next up is MagicDraw. This one is payware, but they have a demo, which they actually call a demo instead of lying about it like some other companies. However, they want me to register before I can download it. Nope, no go. They lose the review and the potential sale. Next!

OmniGraffle looks interesting, and the Pro version can import and export Visio files, which would be a big help with a lot of legacy figures I have laying around from various books written in my Windows days. And they'll give me a trial license key right away. No registration or waiting required! They don't even ask for my name or e-mail address. How civilized of them. If the product actually works, they may have made a sale. They do need to fix the MIME types on their web server, though. Mozilla tried to display the disk image file rather than downloading it.

It seems I may not have to buy it. As I was copying the Omnigraffle Pro demo into my applications folder, I noticed there's a already a copy of Omnigraffle there. I can only surmise that it came with the Mac. (There was a lot of bundled software I ignored.) Yep, it seems to be licensed to "Macintosh Software Bundle".

This is basically a drawing program, not a UML program, but it does have a UML stencil, and unlike all the UML programs I've tried today, the tools work in an intuitive fashion. For instance, I can change the name of class box by typing right inside the box, instead of hunting around for some dialog hidden a menu item or two deep. The boxes line up and distribute with reach other automatically, and show me how they're doing it as I move them using little blue lines that vanish as soon as I've moved the boxes into place. I'm not quite sure how they're doing this, but it's damn smooth. Tool tips show me where things I'm moving are, but don't get in my way like the handles in some of the other products I've tried. The arrows lock to the center of the boxes automatically. (I never could figure out how to get Poseidon to do that.) OK. I spoke too soon. I had one arrow that Omnigraffle really, really wanted to lock to the side of the box, but it took me 10 seconds to delete it and put in a new arrow. I never did get Poseidon's arrows pointed exactly where I wanted them. Basic things like copy and paste work exactly like I expect them to work. Maybe my expectations have been lowered by all the crap I've dealt with today, but I am very impressed.

On the other hand, some things I have to do by hand. For instance, there's no way to mark a class abstract that I can see. I just have to italicize the class name. And it won't do things like reverse engineer source code or export to XMI, but it is giving me a pretty nice picture with much less frustration than the other tools I've tried today.

Here's the finished diagram. This is pretty much what I wanted. I'm not so happy with the arrows. I think they'd look better with small black heads. And after about 15 seconds of hunting around through several palettes in Omnigraffle, I found the option to do that. However, I don't think that's what the UML standard expects so I've left this as is. The pictures also a bit wide. It will probably slide under or over the navbar if your browser window is fairly narrow. I'll need to fix that. Omnigraffle can't make up for my own lack of artistic talent.

XOM class hierarchy as drawn in OmniGraffle

But isn't that nice? Look at those gorgeous drop shadows. And so much easier than the other options! I like this product. I think I've finally found a worthy replacement for StencilIt!; and the next time I need to open my old Visio files, I'll upgrade to the Professional edition instead of booting up my Windows laptop. You see I'm not congenitally pissed off. I actually can like a product if it's worth liking.

Why am I not surprised the first product to actually work is the only one designed explicitly for the Mac? Fact is, Mac users are just pickier about user interfaces and software in general. We will not put up with bugs and poor design any Windows or Linux user would not even notice. This has led to brutal selection in the Macintosh developer community. Macintosh software companies either learned how to develop quality software or went out of business.

I am finding it hard to believe the sheer number of mistakes I encountered across all these products (except for OmniGraffle, which was near perfect aside from a small web server configuration issue). It's not like I was trying to find mistakes, or delving deep into the obscure corners of each application. I just couldn't help stumbling across major flaws. A few of the tools I looked at were open source, hobbyist products done as time permits; and I understand those may have issues. But quality control seems seriously lacking across the board. I'm thinking very seriously about starting a service in which I will privately review software for companies. This would not be a fancy and expensive user interaction study like the Nielsen-Norman Group might do (valuable though that might be), but just a detailed list of all the flaws I find in a day or two of putting the product through its paces. I'm just getting this idea now; but seriously, if you think your company needs a service like this, send me an e-mail. Let's talk. I have no idea if I can actually sell this service or not, but there's obviously a desperate need for it.