There are a whole buncha them:
The vendors claim their tools are all-singing CASE solutions, but in my experience they're really little better than drawing tools. ReverseEngineering, round-trip engineering and all that seems like something for people who can't deal with code - and if you can't deal with code, what the hell are you doing screwing around with it? Or is this just for the IllusionOfControl?
That said, some kind of diagrammatic standard for OOAD is vital. If you can't show management pictures of what you're doing, you're in big trouble. These tools let you do that pretty much - but with too much effort, with a very high price tag, and not in any way that actually helps you get the coding and maintenance done. Given my druthers I'd keep management in CRC-land, but you can't fight "progress".
--PeterMerel's bellyache for today.
Thing is, if you are trying to communicate with management, UML isn't a good tool anyway. You need "the color glossy photos, with the circles and arrows, and a paragraph on the back of each one, saying what each one is"[1]. For my taste, Visio (http://www.visio.com/) is the best UML tool available. Just draw with it, bag the rest. -- RonJeffries
Ron - you didn't add the next words from the lyric-- "...to be used as evidence against us..." -- DavidThomas
Visio? You've got to be kidding, that thing is too clunky. I don't really care about the purism either but I want a tool that can produce diagrams quickly, not one where I have to search stencils for what I want and spend hours tweaking the lines to get them to look right.
Amen, brother. I've spent the last few weeks trying to draw a few simple diagrams with Visio and it has been hell. Rose and the rest are bad, but Visio isn't even usable. Ron is right about UML being a bad way to communicate with management, but management doesn't often want a good way to communicate. That would require understanding on their part. Management just wants to know that a stack of UML documents exist somewhere in case TheRapture? comes and Jesus demands to see them.
Personally, I think the above comments are really missing the point of these tools. I'm an experienced developer with several of these (Rose and TogetherJ, primarily) and I have to say that by now, I've become so used to them that when I don't have access to at least SOME kind of UML tool, I feel like I'm "flying blind" with regards to large-scale system architecture. Rose is good at before-the-fact design, and TogetherJ is good at after-the-fact refactoring and where-the-heck-are-the-dependencies analysis. If you use either of these tools effectively, they can really have a major effect on how you design your software, and how effective your design is.
In any case, the point of these tools is NOT to communicate with management. The point is to look at the code from an eagle's eye view so that you can see larger patterns than the ones that manifest themselves within a single source file. This can result in the identification of needed large-scale refactorings that can have an ENORMOUS impact on the scalability, performance, and maintainability of a system. When you are working on a big project with multiple other developers, it can be quite difficult to detect that, say, some developer has suddenly started to create dependencies on subsystem A from subsystem B, despite the fact that this is a clear violation of the design of the system and will create many headaches later. Yet TogetherJ can find this kind of problem for you very quickly. (The automatic dependency analysis features of TogetherJ are the main reason why it's my preferred choice for UML tools.)
Basically, I consider a GOOD UML tool (of which I have found, after a fairly extensive analysis of 30 tools, numbers exactly two: Rose and TogetherJ, with MagicDraw and Enterprise Architect on the "up and coming" list) to be like a telescope, and a GOOD code editor (my favorite is IntelliJ IDEA) to be like a microscope. You need some way to achieve both views (the large scale and the small scale) to really have a large project under control. If you have a small project (as most people do), you may not need the large-scale view. But small projects often eventually grow into large ones, and if nobody is keeping watch on the large-scale issues, the result is often a huge mess, because individual developers don't have the big picture enough in mind to recognize when something major and far-reaching needs to be changed. It is often easier for each individual developer to repeatedly fix the symptoms of a problem, not realizing that the developer next to them is doing the same thing. If someone on the project has the wide-scope view, and actively maintains it, that person can recognize when the structure of the project as a whole needs to be changed to address the cause of the various problems, rather than the symptoms. UML tools help with this, by allowing the person using them to ignore the details such as exactly how a particular method is implemented, and focus instead on the interfaces in the system and how they relate to each other.
Also note that a "good" tool does not just draw diagrams. It understands the STRUCTURE of the program, so that it recognizes that, for instance, class A on one diagram represents the same class as class A on another diagram, such that adding a method to one diagram will make it appear on another. The better tools can also do things like "deep renaming" and other refactorings, saving coding effort.
The downside: The high-end tools like Rose and TogetherJ are EXPENSIVE. I am glad to see that lower-end tools like MagicDraw and Enterprise Architect are starting to approach them in terms of features.
Visual Thought (http://www.confluent.com) is an excellent tool for making UML, Jacobson, Booch, HP Fusion, Gane & Sarson, OMT and just about any other kind of software diagram you want to make.
-- WillSargent
FWIW, I just downloaded and played with this tool for a little while. It's pretty nice, but I think I still prefer Visio as (1) it has more controllable connectors (provides support for lines constrained to run vertical/horizontal) and (2) (the big one) the ability of users to program shape behavior and gain programmatic access to diagram content.
On the other hand, VisualThought does seem to be a little faster to do something quick and dirty
-- DaveCleal
VisualThought does offer the ability to change shape behavior - you can edit your palettes so shapes you create can just be dragged into palettes and saved.
Programmatic access is something VT doesn't do. -- WillSargent.
I just found Dia (http://www.lysator.liu.se/~alla/dia/). It's got an UML package, and it's extensible with XML. -- TerryLorber
Dia is GPL and is based on Gtk; there is also a compiled win version. You can't create or re-engineer code and try the export functions before you create anything big. It's very easy and fast to work with and perfect for first sketches because it's free and everyone can have it installed on their computer. RECOMMENDED
Together version 4 is now out, and is (i think) the only tool to offer simultaneous round tripping. Which is great for those who have horror stories of model and code getting out of sync.
Now, Dia is the only UML tool I've used extensively, so I'm not saying that the others are better, but Dia is clunky/annoying enough to use for UML that I'd rather not. (I guess it's similar to Visio, discussed above.) Dia is a drawing tool meant for any kind of diagram - and for that purpose, it's excellent, and the stand-alone program dia2code works very well - but it's super annoying to use since you have to be a real master point-and-clicker to draw lines successfully, etc. Someone recently recommended Umbrello for me, as another free UML tool, but I haven't tried that.
EnterpriseArchitect costs next to nothing (about $80 I think) and *seems* to blow Rose out of the water. I'm still evaluating it, but I'm pretty impressed.
Enterprise Architect is really *very* good (IMO). Nothing is perfect, of course, but I think you'll be hard-pressed to find a better tool especially at this price point. Notice that they also do forward- and reverse-engineering of C#. I have played with this, and can report that it works pretty well. The company is quite small, therefore when you email them you tend to get a prompt response, probably from one of the authors of the tool. I recommend this tool.
-- Roger Searjeant.
Has anyone ever tried using Microsoft Excel? Given that trying to get code out of diagrams is onerous and just to be able to draw quickly is the priority, Excel has good vector drawing tools and most people already have it as part of office on the desktop. Each sheet is infinite for practical purposes (unlike word or powerpoint where drawing objects jump around because they are constrained to the sheet size) and you can zoom in and out. Also you can hyperlink each object to say link from one level of detail in sheet1 one to another level in sheet2 (and rename each sheet as needed) for on-screen presentation. Even hyperlink within a sheet). Drawings can be formatted to print exactly as you want and objects can be grouped to easily create actors, package "folders", class "boxes" and arrows can have various endpoints. You can easily hide the gridlines from options and you would not know you were looking at Excel except for the menu and tabs at the bottom. Seems simplistic but if the task is just to draw diagrams without expecting it to generate code (network, ER as well as UML) we find just using Excel works. You can also partition it up and paste into word for final documentation if that is to be emailed to a customer as one document although most times they also have excel and can understand the design easily if it is sent as xls.
Nitpick: Excel doesn't simulate "infinite" very well at all. It has a hard limit of 256 columns, which people run into very, very frequently, and IIRC also a hard limit of something like 64k rows, which one would expect to get hit in heavy use.
Hi there the best UML CASE tool I've tried was from Visual Paradigm - http://www.visual-paradigm.com/sdevsUserGuide.php
It's a breeze to draw even Sequence diagrams. You can download a 30 days trial version.
-- Christian Johansen
To quickly draw small diagram I like to use UMlet - http://www.umlet.com/. Very simple but easy to use and lets you draw really quickly. Good to ilustrate a discussion if you don't like to use board or need to email/embed in a doc/share on the web.
-- Maciek
Its June 2011, found this article (I already know the blog), and I still not happy, with the current U.M.L. tools. I been doing modeling with Yourdon bubbles, flowcharts, E-R model, and switch later, to UML, like many of you.
Several bosses, different companies, allow me to use Open Office Draw for drawings (I export them into PDF), altought, sometimes have to do to not pay for a commercial software.
Been, trying several tools, both commercial, & open source, and there is always some basic features, that is not complete, or that is automatically generated when I don't want.
One thing is how efective is U.M.L., and another is how efective is the U.M.L. tool you are using. Some earlier comments on this article, confuse that.
-- umlcat