A few years back, I overheard some developers talking about UML.
Dev1: Do you use UML to design?
Dev2: No, I use JML.
The J in that case stood for Jacob, his own name. This got me thinking last night when I was doing some design work. What do other people use? Do others have their own notations? I really like having thorough UML docs done because I find it makes my coding go much faster. I don’t have to sit and think about what attributes/methods each class need and how they’re going to interact. I believe the design work should be done separately from the code work.
But to do those up-front UML designs, it needs to be easy. I’ve tried out a lot of UML editors, and in most cases they’ve been the free ones. I can’t afford to buy Rational Rose or TogetherSoft for my own personal software designs or open-source work. So I’ve tried out numerous free UML editors but still haven’t found one to my liking. Last night I fired up PoseidonCE again and I remembered what I didn’t like about this/ArgoUML (from which Poseidon is derived). In class diagrams, it’s just too hard to add/edit attributes & methods. I don’t want to have to click from field to field to field. I want simple keystrokes, fill in 2 fields (name & type) for an attribute - default to private. If you’re going to make it that hard, at least put in the ability to autogen accessors for me so I don’t have to type out every one. Keep it simple. Adding an attribute should be as simple as typing a hot-key and typing “private String foo”. Repeat. Not mousing everywhere and filling in fields everywhere.
When I want to do really simple UML diagrams, I fire up UMLet. This thing is great! It’s so simple sometimes it’s a fault, but it’s really great. 1.0 was just one small jar file, just run it and you’re on your way. I see it’s up to version 1.8 now and seems to have added a couple more features. Simple text is translated into design notation. UML tools should be more like this. I will admit, UMLet is a little rough around the edges, but it’s stable and a step in the right direction.
But what about when you don’t have a computer nearby? Riding the subway, sitting in a coffeshop? I like to do some of my work away from the computer (sometimes I get distracted into working on other stuff) or I just can’t be at my desk at home. What about pen & paper? I’ve looked at CRC cards. Possibly even just drawing a UML class diagram out by hand…but then you start messing around with drawing boxes & you run out of space and have to redraw it all…
I’d like to develop a shorthand method for designing on paper.
Does anyone else do something similar or already have their own system worked out? Let me know in the comments below. Are you frustrated with overly complex UML software? Got any great free ones you’d recommend. Let me know.