views:

98

answers:

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 in-tact. There are great training materials. Can anyone comment on its Eclipse integration? What about the automatic Sequence Diagram generation from the built-in debugger?

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.

+3  A: 

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
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.
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
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.
+1 for the last paragraph: UML is useful for "getting the idea across".
Sjoerd
+1  A: 

Hi,

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 ( http://bouml.free.fr/doc/index_starting.html )

Best regards and happy modeling

Bruno Pagès (author of Bouml)

Bruno Pagès
A: 

If the code is java then you should consider EclipseUML Omondo. This is just amazing !! The live code and model synchronization is not the real problem because the code merge once the code is different from the model is the only reliable solution. This code merge is only available with EclipseUML and no other tool can provide such a feature.

My dilemma was that I needed to generate code but once the code was generated I also needed to add deployment code, to change requirements because my customer was changing is mind every week etc... and the structure of my code was also changed. With other tool I used to create a model then to generate code and generate a documentation. The modeling was finished after the first stage generation. With EclipseUML and the merge option I can use UML during all my project life and generate pieces of code when needed. This is why for me the merge option is really important.

Thanks for the tip -- are you using the "inexpensive" $4,000.00 version or the $10,000.00 version?
A: 

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.

A: 

See Reverse Java for a dynamic reverse engineering application which generates UML Sequence diagram and view of Participating Class diagram from any Java Application at runtime All you have to do is just run your application and sit back. Reverse Java runs in background tracing all the activities happening inside your application and creates UML diagram for you.

You also have options for, excluding packages,editing the Sequence diagram and exporting the diagrams as PDF or Image.

And its not expensive !

Rajesh Jadhav