I nominated MaintainJ for the Eclipse Community Awards 2012 under the Best Modeling Product category. They ask a few questions on the product. I am posting my responses here with the relevant links.
MaintainJ automatically generates UML sequence and class diagrams for a single use case. The sequence diagrams show the exact runtime call and data flow for a use case. They also show the runtime SQL calls made regardless of the database frameworks used. Users can dynamically explore the sequence diagrams and filter out unwanted details. The class diagrams show the dependencies between the classes involved in the use case.
The diagrams can be exported into UML2 models that can be imported into other UML2 compliant tools like Rational Software Architect. MaintainJ drastically reduces the effort required to analyze, understand, document and enhance complex Java applications.
List 5 of the product’s features:
1. Generates runtime sequence and class diagrams for a single use case.
2. The sequence diagrams show the runtime context of a call (the call arguments, return value and state of the called object).
3. Shows the runtime SQL calls made during the use case regardless of the database frameworks used.
4. The sequence and class diagrams can be exported into UML2 models, which can be imported into other UML2 compliant tools like Rational Software Architect.
5. Supports runtime impact analysis – Users can exactly determine the use cases impacted by a change to a Java class, method or database table or field.
How does this product help users?
1. Using MaintainJ, Java developers can quickly analyze, understand, document and enhance large Java code bases. The MaintainJ demo video is recorded on a Java application that has 8000+ classes, runs on Tomcat and MySQL and uses Spring and Hibernate frameworks.
2. MaintainJ generates detailed runtime sequence and class diagrams for a single use case. The arguments and return value of the call are shown in the sequence diagram. The runtime SQL calls made during a use case, regardless of the database frameworks used, are shown. All these details help developers to quickly troubleshoot a problem or to analyze and enhance the application.
3. MaintainJ supports tracing applications deployed across multiple JVM’s. The call trace captured on different JVM’s can be merged to view the end-to-end call flow across JVM’s. For example, when an application calls a web service running in a different JVM, the call flow across the JVMs is shown in a single sequence diagram. The calls in each JVM are shown in a different color.
4. MaintainJ supports runtime impact analysis – Users can capture the runtime call trace for all the use cases of the application and use that information to exactly determine the use cases impacted by a change to a Java class, method or database table or field.
5. Users can filter out the unwanted details from the MaintainJ generated diagrams and then export the diagrams as UML2 model files. These models can be imported into other UML2 compliant tools like Rational Software Architect (RSA) where they can be edited for enhancing the application.
6. Any UML diagrams generated at runtime can be verbose and difficult to read. MaintainJ provides simple user interface to dynamically explore the sequence diagrams. Users can also search for a class, method or database table or field used in the use case.
7. MaintainJ offers various options to filter out unwanted details from the generated diagrams and to view them at the level of abstraction that the user wants. For example, a use case in a web application typically spans the web tier, business tier and data access tier. Users can apply predefined filters on the diagram to view just the business tier classes. In addition, MaintainJ shows the interactions between the application classes only (no framework or library classes are shown).
8. Users can easily troubleshoot multi-threaded applications using MaintainJ – The sequence diagram shows the runtime interactions between threads in different colors. This helps developers to quickly troubleshoot a multi-threaded application, which would be hard to do using a traditional debugger.
9. MaintainJ integrates seamlessly with JUnit – Users can generate a sequence diagram for every test case and check the sequence diagram for any troubleshooting later.
10. MaintainJ saves lot of effort for teams that maintain large Java applications – Different developers in a team repeatedly spend time to understand the same use cases because there are no tools to quickly document and share that knowledge. By facilitating documentation and sharing of the “Maintenance Experience” within the team using the generated UML diagrams, MaintainJ exponentially reduces the total maintenance effort.
What is unique about this product?
The following features are unique to MaintainJ. No other tool currently available in the market supports these features.1. Generating the runtime sequence diagrams for a use case which show the runtime call context (call arguments, return value and state of the called object)
2. Showing the actual runtime SQL statements made during the use case, regardless of the database frameworks used.
3. Tracing multiple applications running on different JVM’s and generating a sequence diagram that shows the end-to-end call flow across JVM’s.
4. Performing runtime impact analysis, using which the user can exactly determine the use cases impacted by a change to a Java class, method or database table or field.
5. Offering multiple ways to filter out redundant details from the generated diagrams and exporting the diagrams as UML2 models, which in turn can be imported into other UML2 compliant tools like Rational Software Architect.
Date of product’s introduction:
March 1st, 2007