In my job, I go through a Software Design phase for every task I'm given. That includes drawing a class diagram and a sequence diagram in more-or-less standard UML.
Now, I've drawn my diagrams in a variety of tools in the past, ranging from the highly specialized to the wildly simplistic (like PowerPoint). I've come to understand the shortcomings of UML modeling tools in general. And as a good geek, I'm going to write them down.
Rather than being negative, I'm going to write down what I want from a modeling tool. Then I can use that wishlist as criteria for evaluating the available tools, until I find a good one. If any such thing exists.
The following are absolutely required for any UML modeling tool:
- Supports Class and Sequence Diagrams
More would be nice, but these are the two I really require.
- Configurable Display
I should be allowed to choose whether parameters are included in the messages on sequence diagrams. I should also be able to choose not to display some operations of a class in a class diagram, since they're probably not all important to my design.
- Group Selection and Movement
This is particularly important on sequence diagrams, where I move groups of messages up or down to make room for steps I forgot. Doing so shouldn't mess up my alignment, my lifelines, or any other portion of the diagram.
- Infinite Undo
Seriously. We all make mistakes. Every operation should be subject to Control-Z.
- Supports Synchronous, Asynchronous, and Reflexive Messages
Again, seriously. Why are there tools that don't support reflexive (call myself) messages?
- Dynamic Document Size
I'm creating software design here, not a pretty drawing. I don't care how big it gets; it's as big as it needs to be. Don't restrict me to some printing size or other. And on a related note...
- Scrolling
When these diagrams get complicated, I may need to draw a line all the way from one end to the other. Don't make me zoom out so far I can't tell what I'm doing. Just keep scrolling when I drag a line off the visible area. And keep a marker or tooltip so I can tell which line I'm connecting to.
- Shared Data Model
When I change a class on the class diagram, the method should become available on the sequence diagram. If I add a new method on the sequence diagram, it should show up on the class diagram. All these drawings are descriptions of a single system; they should all be connected.
- Supports Large Projects
I'm dealing with thousands of classes, sometimes. My tools should be able to deal with them, too. Without crashing or even slowing down.
These things would be nice to have, but they are not required:
- Import Existing Code
I can make everything myself, but importing the aforementioned thousands of classes would be nice. I don't necessarily need a class diagram, but the tool should know who's derived from who. Bonus points for automatically drawing the relationship when I put related classes on the diagram.
- Code Generation
I can write my own code. Really. I do it all the time. As long as we've got all this UML, though, why don't you kick things off for me and save me some typing?
- Design Patterns
This would be useful for experts and learners alike. Save me a little time and effort, give me a button that produces a Factory pattern from a few simple inputs.
- Alignment and Spacing
Okay, I'm not just making pretty pictures. I want to be able to align the classes with their tops together, or align two asynchronous message interactions. I want all those classes that implement one interface to look like I've drawn a single dotted line with lots of branches. I want my classes spread out evenly. Is this too much to ask?
- Standard Format Import and Export
I may switch tools someday. I don't want to be locked into a single format. Give me a way to save for other editors, and a way to import old projects.
Anybody else want to add something? Leave it in the comments, and I'll consider it. Got a tool that does all that, and brings me a warm lunch? I'd love to review it. Just leave a comment, and I'll get to it as soon as time allows. $DEITY knows I've got enough to model.
The Results So Far
- BOUML - Unsatisfactory, but it's still the best thing I can find. Unfortunately, the project lead has taken down all downloads due to a copyright battle Wikipedia. I am now actively looking for another editor... again.
- Umbrello - Unsatisfactory, mostly because of its failure when rearranging sequence diagram actions, but also because it has trouble importing classes. At least it's got a data model, though.
- Open ModelSphere - Poor, because it's so limited and can't import my codebase.
- Dia - Poor, because it's just a drawing program, not a modeling program. But at least it draws diagrams pretty well.
- Gaphor - Fail, because its lack of a model leaves it just a drawing program, and even then its missing some of the tools you need.
- ArgoUML - Fail, because it's a pain to work with and it has NO UNDO.
Some Other UML Modeling Programs
- UMLGraph - Although it's kept up-to-date, it can't do sequence diagrams.
- Papyrus for UML - An Eclipse plugin that looks intriguing, but apparently hasn't been updated since 2008.
- Violet - Even though it's from 2007, I installed it because it offered Eclipse integration, with drag-and-drop class import. Unfortunately, it didn't automatically detect inheritance, it couldn't customize the class appearance, and it crashed Eclipse while trying to update a line. Sigh.
- XUG - Looks like it's specifically designed for reverse engineering, may not support editing. Since it's based on UMLGraph, it probably can't do sequence diagrams. Oh, and it's from 2005.
- UMLet - An even older UML modeling program with no class import.
- LightUML - a 2006 Eclipse plug-in.
- NClass - No class import from Java.
- Poseidon for UML - Spend $200 to import from Java? Thanks, but no.
Star UML - more bugs than you can shake a stick at, doesn't import existing code very well. Still probably the best open source option that I have encountered.
Argo UML - last time I used this (4 years ago), it seemed to be lacking some basic diagramming features but it might be worth a second look since it is another open source freebie. It seems to continue to be actively developed.
Rational Rose - the most bloated UML tool of all the UML tools. Does just about everything, but has a steep learning curve and very expensive.
Enterprise Architect - this is the hands down winner in my book. After playing with it for just a short time, the work flow becomes second nature. It works as you would expect a UML tool to work without all the bloat and bugs of some of the others. Also handles massive imports of existing projects. It successfully imported the huge SAF java application that I use at work, without failing. If I could only convince management that it is worth the $200 license cost.
I've recently reviewed a couple and still got a couple more in my "todo" list.
I'll follow your reviews with great interests!
For those interested, here's a direct link to my UML modeling tools review list.
And I would have to say that, to date, it's still the best tools to do UML diagrams. It doesn't have the extra cool features of the real UML modeling tool, but it looks like it's the only one that got the diagram part correctly...!
I decided a few weeks ago that rather than continue trying to finish "v1" in its rag tag by-the-seat-of-the-pants fashion; I was going to stop and really start to employ the design patterns and practices I've been studying and jump-start v2 while still making additions to the original.
So, I spent about a week looking at freebie CASE tools. I'm very picky about what I install on my computers (for performance reasons) and after lots of reading I downloaded and installed StarUML, ArgoUML, & Umbrello.
I'm trying to figure out which one I should get myself engrossed in. This project is going to be considerably large (I don't know how large, large is in software terms, but I know that last I knew I have roughly 2000 files that compose or support the project). So, I don't want to make massively detailed diagrams that I would then have to re-create if for some reason I decide that I need to use a different one. I like ArgoUML's critics except when it advises me about things that can't change, I also like the comments that it adds to the stub code. I like StarUML's interface, it seems pretty cool to me. I haven't been able to export my dummy project and then import it in Umbrello or ArgoUML. I haven't really messed with Umbrello for that reason, but it does appear to have potential.
In general I'm looking for something that's usable, can generate AS3 & PHP so that I have identical packages, interfaces, & classes that power the different user venues (full DXHTML, Mobile XHTML, and Adobe Flex). Umbrello lists Actionscript & PHP5 in its language list, so does ArgoUML, & StarUML has export templates for both. I stopped working in ArgoUML because their help tutorial has "to be written..." as the content in the main sections describing how to develop an application using the program...
I got "Head First Object-Oriented Analysis & Design" yesterday and I'm 185 pages into it now. My thought is to "Abstract the process from the program" so that I can effectively do what I need to regardless of interface (aside from mirroring classes in AS3 & PHP [JSON would be useful too!])
Sorry I ramble... I really just wanted to post so that I could subscribe and follow any updates
I also find that, once you've got a good design, the CUT phase goes by quickly, no matter what language you use. While you might find a CASE tool that generated good code from detailed diagrams, you'd probably want to look over the code anyway. And trying to generate code in three different languages? That's a tall order.
Good luck in your learning and your task. If you find something that does what you want, let me know so I can use it, too...
It turns out that, English isn't their best language, so some of their wording threw me off (especially not knowing that English wasn't native to them).
The 30 day trial is your typical "30-day bells-and-whistles" deal, that then switches over to the the less enabled free version. You can activate the free key/free version immediately or use the 30 day enterprise trial first, that's what I'm currently doing.
I have done a reasonable amount of playing with it & watched most of their online video tutorials (they have lots, maybe 75+).
So far, I love it. I'm not sure what I'll loose after the 30 days, but I'm also pretty sure that I probably haven't even used any of that functionality (yet).
It's awesome, I definitely want this program. It has built in textual analysis that will allow you to 'click-and-convert' text to model elements, synchronize various things, and lots of other things like animation, entire sub-diagrams accessible within nodes in other diagrams (of any other type), & more, & more.
I just looked at the page to find some things & apparently since I downloaded it a few days ago they're released "Visual Paradigm for UML 7" (I got v6.4) and "Visual Paradigm Suite 4.0" (I got v3.4).
There is so much stuff built in. If it wasn't for the fact that everything that I build -- is more-or-less for fun & for free. I would love to buy this so that I can play with everything. (Like I said I taught myself, because I didn't have anything else to do, am curious, like logic, & like puzzles [useful puzzles! jigsaws, etc. not worth devoting time to])
If you haven't looked into it, check it out. Maybe there's just something about it that appeals to the way that I think (combined with the fact that I'm teaching myself the UML etc. at the same time). Just thought I'd share.
Here's the link to their demos for all who are interested:
http://www.visual-paradigm.com/product/vpuml/demos/
Namaste!
Chaos7703
Good show!
So what's your latest opinion?
I've never done state machines before, so I don't know if BOUML will suit your needs. Go give it a look, though; it's the least annoying of all the editors I've tried.
It installed quickly, produced diagrams quickly, and output Java and C# code, from my Apple Mac!
That is far more that I was able to achieve when I used Parallels to create a Windows 7 environment, and installed Microsoft Visual Studio 2010 Enterprise Edition with UML Modelling Tools. It was hellish, and failed at many of the requirements of that Judebert laid out.
In VS2010, I was able to produce working code from a State-Machine diagram, but regular class objects fail to output. The compiler chokes itself, trying to access libraries that are already in use, or yet to be created.
I am still evaluating the best way to declare objects in VP - I've identified candidate classess, using textual analysis, but I am yet to generate them, everywhere, as required.
For example, I can immediately see a number of machine-states in my text document. I am unsure how to make these immediately available to a state diagram. I'd also like to use them in a sequence diagram, without replicating objects.
But, for all of my Agile, MDA, OOD, UML needs, VP seems to be hitting the spot!
I think it is managed by French developers and it does UML among others.
I like to make sequence diagrams with the online tool:
http://www.websequencediagrams.com/
because the source code is writeen in plain text and then is rendered apart. No need to fight with graphical undo or block movement because text editors are just good.
cheers