Our product is for Java programmers exclusively. You might want to think of it as a visual code-browsing extension to the Eclipse IDE. It’s designed to help you get your head around an existing codebase, such as a legacy project or an open source project, or for keeping track of the emerging architecture of an agile project. It has its uses throughout the project lifecycle.
So it’s a code visualizer or - if you prefer the formal term - a reverse engineering tool. There is no forward engineering in AgileJ, we have no desire to interfere with how you write or generate your code and we won’t alter your source code in any way. We will, however, show you its structure from a new, pictorial perspective so that you understand it better. Use AgileJ to get up to speed quicker when you join a project, and to stay up to speed as more code gets added. Class diagrams are still one of the best ways to visualize object oriented structure so that you can see where your refactoring efforts can best be directed.
We never forget that the end goal is for you to build a deep understanding of the code you have open in your workspace, so that you can be a more effective software developer. Class diagrams should be just a means to that end. Like using a satnav, class diagrams are something you want to glance at, then when you’ve got your bearings, get back to coding. If it takes effort to create a class diagram then the benefit is lost. So to maintain your code-writing momentum AgileJ performs auto-layout on demand, and auto-line-routing continuously. And to maximize the value in browsing class diagrams, we include a host of functions to navigate along lines and to iterate through classes and members, navigate to the source code, all while keeping Eclipse synchronized with what you are viewing so that supporting info like Javadoc is displayed.
Next, we introduce the idea we call growing class diagrams. Sometimes you’re interested in exploring the role of specific classes and so you want to hand pick what to add. Sometimes you want the tool to find the related classes for you. Just right click and select Add to choose from field types, dependencies, inheritance, or method calls.
We’re big on filtering. So instead of the usual reverse-engineered UML diagram, cramming too much detail onto one cluttered picture, we carefully control the amount of detail on display. By filtering we don’t mean simplistic filters like public, protected and private. Instead we mean the larger concepts Java programmers recognise like GoF patterns, APIs, JUnit tests and persistence as well as conventions like getters and setters. With every release we extend the set of built-in filters.
The way you apply filters is unique to AgileJ and is about as slick as we can make it. Each class diagram has what’s called a filter script. You just type, for example: show abstract classes in green - and the picture updates immediately. The idea is that you can tweak the filter script repeatedly as you want to examine different aspects of a class diagram. The filter script editor has its own little DSL which you will master in about five minutes. The filter scipt has code completion and error tooltips so you can’t go wrong.
And, starting from this ability to take one class and form a class diagram by finding related classes, we have added the ability to generate an entire library of class diagrams autonomously. You just run a wizard, pick some filters to control the results and off it goes.
Finally, a lot of projects maintain web-based documentation. AgileJ fits in with this too. The output of a batch can also packaged up as a war file. Then the whole team or a wider audience can browse class diagrams interactively.