AgileJ StructureViews is dedicated to supporting agile software development through reverse engineered UML class diagrams with extensive content filtering.

Supporting Agile Methods

We understand and practice agile methods and have built AgileJ StructureViews around the needs of the agile development community and working in harmony with the principles of the agile manifesto. This is why you find no forwards engineering functions and we guarantee to make no alterations to your source code nor demand any changes to your development practices to fit around use of this tool. In short, we simply offer an additional view of the object oriented structure of your code in its current state, honoring your source code as the master copy and keeping additional presentation information to a bare minimum.

Dedicated to Java Reverse Engineered Class Diagrams in Eclipse

In order to provide uncompromising object oriented structure visualization for Java developers most of the typical UML tool functions are excluded. For example, the UML diagram types which serve documentation-only purposes are excluded since customer requirements capture may be an ongoing task with the requirements manifesting as runnable code. Furthermore, forwards engineering is excluded; the complexities of round-trip engineering where source code is manually edited can easily cost more time than it saves as the model and the source code battle for control.

Support for multiple programming languages is also omitted. While there are shared constructs between the most common object oriented programming languages there are also subtle language-specific constructs which warrant pictorial representation too. Since Eclipse does represent Java's synchronized modifier with a clock symbol then we too include the clock symbol on our class diagrams.

Automated Class Diagram Generation

Working code is your and our top priority. Time spent preening UML diagrams has earned tools of this ilk a bad name due to the distraction which creating and maintaining documentation can become. However, class diagrams remain a valuable resource for gaining a high level understanding of the design underlying a Java codebase. AgileJ StructureViews generates the most insightful class diagrams all from one wizard which takes about two minutes to complete. From there on our batch processing engine discovers and assesses candidate class diagrams through package, dependency and inheritance relationships, followed by our custom auto layout which performs an optimizing layout on each diagram.

Highly Scalable

The barriers to scalability of class diagram production we have found are the size of the Java codebase, the available physical memory and the efficiency of the algorithms performing diagram discovery and diagram layout. AgileJ StructureViews has been stress tested against exceptionally large codebases such as JBoss. Please click here for output.

The Industry Leader in Class Diagram Content Filtering

Text book examples of UML class diagrams depict small groups of classes with a few members each. Real-world examples of reverse engineered class diagrams can contain classes with tens of members, and be populated with trees of tens of such classes. The problem in nearly every instance is that the resulting diagram is overwhelmingly complex. Since we hold to keeping down the manual effort in diagram production, our solution is to make AgileJ StructureViews highly configurable, shipping with a large collection of read-to-use filters, but with the option to add your own project specific filtering rules.

Tightly Integrated into Eclipse

The Eclipse Integrated Development Environment is the hub within which Java development happens and it makes sense for a code visualizer to blend in as seamlessly as possible. We integrate not only by following Eclipse's nomenclature, but by deriving all of our diagram information from the same source which drives all other views of the code so that its up-to-dateness can be relied upon. There is no separate project concept in AgileJ StructureViews; each class diagram is a simple stand alone file which can be held under version control along with the other project artifacts and shared within the team.

A Visual Guide to Design Quality

All Java projects have a design regardless whether tools were used to create the design or the programmers wrote their code to directly to reflect a design held in their heads. While agile methods have encouraged the expression of design directly through the production of working code there remains value in reverse engineered diagrams as a means of visually reflecting the merits of sound object oriented design which in turn lead to more maintainable code, more effective testing and improved flexibility to changes in requirements.

Help Getting up to Speed with an Existing Codebase

In an ideal software development world Java programmers would instantly find their way around the existing code as they join a new project or take on maintenance of a legacy project. The reality is that nearly all existing codebases were developed by programmers of mixed abilities with conflicting ideas of good design, left little or no documentation explaining the design, are unavailable for further consultation. Therefore, depending on inherent complexity and the experience of the software developer it can take days or weeks of effort reading source code to gain enough familiarity to start meaningfully contributing to the project. The problem is the effort picking through a monolithic codebase to separate out the concerns. AgileJ StructureViews assists with this task by revealing a high vantage point view showing the relationships vital for making sense of a large codebase.

Clearer Communication of APIs

APIs are the boundaries partitioning software into coarse grained components allowing separations of concerns and are a hallmark of strong design. Without clear APIs every developer needs to understand every software component from the inside. Configuring class diagrams to show API elements allows firstly, the team developing the component to more clearly judge the quality of the API they expose and secondly, other teams (possibly their customers) to gain a more rapid understanding of the API.

A Different Approach to UML Tooling

UML tools have fallen out of favor due to their focus on supporting up-front design and consequently inhibiting adaptive and iterative approaches. However, the need remains to visualize the design underlying the code in its current state. Therefore AgileJ StructureViews class diagrams, while conforming to UML as much as possible for the sake of common understanding, place a higher priority on:

  • Speed of production of class diagrams with a minimum of manual effort
  • Expression of all relevant Java constructs found in class member signatures
  • Conformance to the Eclipse nomenclature
  • Presenting only a meaningful subset of all the Java information at any one time

In short, AgileJ StructureViews seeks to reflect rather than dictate the design.

A Visual Guide to Project Progress

Monitoring the progress of a Java project can be challenging for the project technical lead; it is difficult to review every commit of new source code to check for conformance to programming standards. AgileJ StructureViews can help by allowing the lead developer to quickly monitor the design through the visual overview of filtered class diagrams which reveal missed opportunities for reuse, the introduction of new dependencies which may go on to hamper re-use, areas which are getting too complex and may benefit from the allocation of time for refactoring and sub-optimal uses of inheritance.

Building Understanding through Growing Diagrams

Exploring the existing codebase is time consuming but necessary for each new team member. AgileJ StructureViews supports what we term 'growing diagrams'. This is where a Java class of interest is added to a new class diagram and its relatives are added, where the relatives may be referents, dependents or inheritance relatives. Class diagrams built this way, like any other, may be stored for future reference but it is often the process of growing these diagrams which builds the greatest insight.

Compositional Design Patterns

Design patterns allow names to be given to commonly occurring design construct for ease of communication. Not all categories of design pattern can be reflected in class diagrams but some can, in particular compositional design patterns. AgileJ StructureViews is configured to highlight the presence of compositional design patterns where they occur.

Legacy Java Projects

Where active development of a Java project was scaled down several years ago due to it having satisfied the needs of the customer and naturally entered its phase of live running, enhancements and modifications may materialize mandating further development. In this scenario where the Java source code is the only reliable artifact then browsing auto-generated class diagrams is the most effective means of judging the effort which will be required to implement the required enhancements and modifications. Without class diagrams to help build an assessment of the complexity of the legacy code the developer can easily be trapped trying to work on an unmaintainable system, or may choose to scrap a large, undocumented project which is otherwise workable when viewed through appropriately filtered class diagrams.