I am browsing the code of a large open source application and would like to learn how it is designed and how it works. Is there a tool that can reverse engineer the C and C++ code into sequence diagrams?
May be this could be a bit far fetched but what about a tool which can give me the list of functions called (in various modules and in right order) when say the application is processing an input? Or help me quickly analyze a given application (esp one with a large code base)?
Looking forward to the answers as I am thinking this must be a well covered topic.
There are some but they are expensive. Rational Rose was the most well known before it got bought by IBM.
The nature of the C++ language makes it really hard to do static analysis. That is why there are so few tools that can do it. Since the surge in non-C++ development using languages that support reflection/introspection, this type of tooling has really left C++ behind. That isn't to say that are none, just they are harder to find and usually part of an expensive 4GL-like package. Rational Rose was mainly a tool that let you diagram a system and it would help track the components and eventually produce source code in a variety of languages. It could also reverse engineer source code into diagrams to a degree.
The Rational Rose product was pretty much superceded by Rational Requisite Pro, with a large portion of the functionality (focussed on Java) being folded into IBM's WebSphere Application Development platform, now referred to as RAD I believe.
The Rational tools were well known for being so comprehensive that they were really targeted for large development shops working with an equally large staff, usually starting at 50+ developers, for a single project.
Due to the complexity of the C++ language (from a tooling perspective), and the popularity of languages like Java and C#, vendors have really de-emphasized C++.
I'm not as knowledgeable about Visual Studio, which still supports C++, but I would be willing to guess that C++ UML support is only in the expensive professional editions like Pro or Ultimate.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With