This is a very old post, but because it keeps coming up in Google search results, I am replying now so that it can be useful for any future visitors.
MaintainJ is by far the best tool when it comes to generating the sequence diagrams for Java applications. The quickest way understand the tool's capabilities is to view the
demo video. The demo is recorded on a large application with 8000+ classes.
Sample screenshots
Here are the main features of the tool:
1. It generates the runtime sequence and class diagrams for a single use case.
2. The sequence diagrams are easy to explore with simple user interface. You would not be looking at a 5000 call sequence diagram. Instead, you will initially be presented with a few calls, which you will expand depending on what interests you.
3. The sequence diagrams show the call context - the values of the arguments, return values and state of the called object
4. The sequence diagrams also show the actual runtime SQL calls made during the use case. This feature works regardless of the database framework used. The SQL statements are populated with the runtime parameters passed.
5. You can generate the end-to-end sequence diagram of a request that flows through multiple JVMs. So, if you have a web application calling a web service on another machine, you can generate an end-to-end sequence diagram.
6. You can export the diagrams into UML2 format and import them into RSA (Rational Software Architect) though you would be losing the above benefits like call context, SQL statements and the dynamic sequence diagram. The main idea is to enhance the model in RSA and probably to generate the source code.
7. MaintainJ provides many ways to filter out unwanted details from the diagrams. You can generate the sequence diagrams to include just your application classes and then apply some predefined filters on the diagrams to view just the business tier classes or just the web tier classes.
8. It also allows searching for a class or method or SQL statement across trace files. What this means is, you can easily find all the use cases that depend on a class or method or a database table or field.
9. It works on all kinds of Java applications. It provides out-of-the-box wizards for the most typical runtime configurations, but with a few changes to the application classpath and JVM arguments, it will work for any Java application.
10. It integrates seamlessly with JUnit. So, you can generate a sequence diagram for every test case and check the sequence diagram for any quick troubleshooting later.
I am the author MaintainJ. So, I could be biased in my statement that it is by far the best tool currently available in the market. I will be very interested to know if any other tool matches these capabilities. It is a commercial tool, but if you like to tool but cannot pay at the moment, write to me at
support@maintainj.com and something can be worked out.
Choudary Kothapalli.
MaintainJ Inc.