5

UML Round-Trip Engineering tools with seamless synchronization?

The Rational suite purports to do it. But it's so pricey and clunky at drawing (worse than the Rose days) that it's not in the reach of most departments.

What’s amazing is that the free Bouml seems to do a fantastic job. It’s just feels too clunky to use. It has a great deal of functionality, is free (!), very fast, and reverse-engineers complex C++ very well. It also has some nice diagram support, including a very nice sequence diagram. Although the interface is unpolished (and constantly opens dialogs on the rightmost monitor), it does have the beginnings of a very capable product. It's a shame that the interface is so bare-bones and requires the expenditure of a lot of effort. Maybe it's because the author puts most of his time into the actual functionality. Does anyone have experience using Bouml throughout the product lifecycle?

That leaves the pricey MagicDraw, the very-capable yet reasonably-priced Enterprise Architect, and the slick-looking Visual Paradigm. Of these, only Visual Paradigm had an issue reverse-engineering my project's C++ headers.

MagicDraw has a strange, old feel. It does a good job at reverse-engineering on its own, although it remains to be seen whether round-trip engineering of complex C++ projects is seamless. They want over $1800 for the multi-language version, so it's priced similarly to Rational tools.

Enterprise Architect, although far less expensive than most, seems like it may be the most feature complete. It parses and generates C++ flawlessly. Even the comments and formatting are left intact. There are great training materials. But it doesn't handle Objective-C, so less useful for iOS and Mac OS X mixed code projects. The automatic Sequence Diagram generation sounds awesome, but sounds like it only works on Windows .NET projects.

Visual Architect (>$800 for multi-language 2-way) is bar far the best-looking software modeling tool I've come across. Although it may have some round-trip issues remaining, it is a pleasure to use for building the models by hand. It's even nicer than Rose was in some ways. It has an intuitive way of bringing up the tools you need right at the cursor. Yet as I mentioned, it currently falls short of the goal to keep the model in sync with the source. And it often doesn't even give notification that the import didn't fully work, or that duplicate classes have been created (with the same names). It also makes entry of message parameters difficult, using dialogs, whereas others allow the parameters to be changed right on the diagram. (The free Bouml excels at this, as does MagicDraw and others.)

Has anyone found a multi-language (Java, C++, C#, ObjC++, Python, Ruby, SQL) round-trip engineering tool that will hold up to real world projects, where customizations are handled (like custom parameters on messages), yet are not wiped out by the next source code import?

And where all the formatting and comments are completely preserved on generation. Close is not really good enough. If the tools mess up the source code formatting, no developer is going to want the tool run on his source.

Rubski
  • 394
  • 3
  • 7

3 Answers3

3

Peter Coad's Together-J used to have diagrams and an editor together in one IDE (hence the name). Change a diagram and the code changes; same for the other way as well.

The UML tool and editor were both a bit slow. I think machines of the day were underpowered and didn't show it off to best advantage.

I believe Peter Coad sold it to Borland. Looks like Borland is out of the IDE business. You can still get it here.

I think IntelliJ is the best Java IDE there is. You can generate some nice UML diagrams using it.

The real question is: Why is UML so important? I'd rather have code. I usually do enough UML to get the idea across, write the code with unit tests, and then reverse engineer it for documentation. You can't debug or unit test UML diagrams. Better to have working code.

duffymo
  • 305,152
  • 44
  • 369
  • 561
  • Yes, Together-J was quite excellent, but as you say, too slow for machines of the day. And the split-screen diagram/code over/under was a great gimmick, but one quickly realized that you'd rather use your screen real-estate for code. :-> So why is UML important? It turns out that its like viewing a picture, rather than reading a description of the scene. It distills the information in the code to the essentials for a particular purpose. A purpose that is meant to convey vital information to other architects, the implementers. Useful only if kept up-to date). Thus, the "seamless" requirement. – Rubski Jul 27 '10 at 01:44
  • I understand the idea behind UML. I disagree with the value. I find it's good for sketching ideas. A full-blown, exhaustive representation of a complex system quickly becomes just as hard to understand from the picture as it is from a glance at the code. – duffymo Jul 27 '10 at 09:17
  • I see your point. So to clarify, my question relates not to auto-generation of UML diagrams for a system, but whether a tools exists that will keep the few diagrams generated by the architect. These are presumably those that do in fact add to the understanding of the system, to document the crucial interactions in a hand-crafted way, leaving out extraneous classes, operations, parameters, and interactions. So what would be synchronized are just the few interactions that were modeled, and of course, their names, types, etc. Thanks again for your input. – Rubski Jul 31 '10 at 08:44
  • 1
    +1 for the last paragraph: UML is useful for "getting the idea across". – Sjoerd Aug 02 '10 at 11:11
2

Bouml ... constantly opens dialogs on the rightmost monitor

in a multiple monitor configuration the best is to indicate to Bouml which monitor must be used by default, else for Bouml you have just a very large monitor including all your monitors. Of course to indicate a default monitor doesn't means you can't use the other one(s), and it is possible to move the dialogs/main window where you want. The definition of the default monitor to use is done through the environment dialog.

0

Enterprise Architect seems to do a good job at this. As you point out, it's reasonably-priced. And it will also generate diagrams and documentation, as well as import/export source code.

user408209
  • 119
  • 2
  • 3