Wednesday, May 19, 2010

UML Reverse Engineering Tools for C++ on Linux

I am looking for a UML tool for Ubuntu. It should be able to import C++ code.

I heard good reviews about Umbrello on the net. I installed Umbrello on my Ubuntu laptop. However at the time of writing, it is too slow/hangs with a high CPU usage. Due to lack of time, I won't be able to reopen a closed bug in this regard.

I have previously used ArgoUML, which I tried again. But its C++ import feature is not fully implemented.

UMLGraph takes a specification of classes to generate UML diagrams. In this aspect, UMLGraph is like Graphviz, but Graphviz is a more general diagramming tool. UMLGraph is good for java syntax.

StarUML (Wine) had issues with functioning mainly because it was running on wine.

BOUML provides C++ import and code generation. It allows users to place various components into the diagram manually. Then, for example in a class diagram, I can select the classes I want and view them. Thanks to the creator Bruno Pagès for his comments. 


Bruno Pagès said...


you had strange remarks about BOUML, it offers both C++ reverse and roundtrip

best regards

Kumar said...

Thanks for your comments. I tried BOUML again and this time I could reverse C++ (which could later be used to edit/generate C++). But I could not find a way to generate class diagrams from the existing C++ code.

I will update my blog entry once these issues are resolved.

Bruno Pagès said...


Sorry, I didn't see your answer.

Please, why do you say this time I could reverse C++ ? the C++ reverse (and Java reverse) is present still the first release (February, 26th 2005) of Bouml.

Bouml is not extra lucid, so he is not able by itself to know how many class diagrams or other kinds of diagram must be made, where they have to placed in the browser tree, nor to know whose elements must be shown in each diagram and how ;-)

A class diagram for instance is not just a list of classes visible in it just because they exist. A diagram must have a semantic, and only a human may access to this semantic.

Of course a modeler have to help a user to do the desired diagrams, and offer settings to choose how to show (or hide) the elements and their details. This is the case of Bouml.

Best regards and happy modeling

Bruno Pagès