AgileJ StructureViews

From Wikipedia, the free encyclopedia
Jump to: navigation, search
AgileJ StructureViews
Agilej StructureViews logo.jpg
AgileJ Screenshot.png
AgileJ StructureViews
Developer(s) AgileJ Ltd.
Initial release 8 August 2006; 8 years ago (2006-08-08)
Written in Java
Operating system Microsoft Windows, Linux and Mac OS X
Type Eclipse plug-in
License Commercial

AgileJ StructureViews® is a commercial Java software visualizer developed by AgileJ Ltd which creates UML class diagrams by reverse engineering Java source code.[1][2] The product is packaged as two signed Eclipse features and is intended for use by Java software programmers. It was first released under the name AgileJ StructureViews in 2006, after attracting venture capital investment.[3] It places emphasis upon its script-driven filtering and batch-driven generation of reverse engineered class diagrams. The most recent release of this CASE tool, version 1.8.0 was made available on 20 November 2014.[4][5]

Purpose of the product[edit]

There are principally three situations where object oriented source code structure visualization through reverse engineering is beneficial to the software developer. In the first, the purpose is to gain familiarity with the structure of any existing code base, which could mean that of any third-party or open source project, or could mean the existing source code of a project which the user intends to take part in the ongoing development of. In this first case the reverse engineering is a one-off event. In the second, the purpose is the ongoing monitoring of the quality of the object oriented design for code review purposes. Many software design patterns and anti-patterns are easier to identify in class diagrams than through reading the source code as text. In the third situation, class diagrams are used as a communication tool. This is where the architect of an object oriented design wishes to explain the nature of the design to other software developers so as to encourage adoption, extension or re-use.


AgileJ refers to filtering as the process of discriminating between Java elements (classes, fields and methods). The majority of the product user-guide is devoted to the subject of filtering and the product ships with a selection of standard filters. As well as filtering on the basis of language-level characteristics like keyword modifiers, annotations and scope, there are filters which relate to idiomatic terms understood by Java programmers such as POJOs, beans, marker interfaces or serializable classes. Furthermore the filtering extends to common Java frameworks such as Spring and Hibernate. The filtering mechanism built into the product plays various roles across its functions, such as filtering out unwanted detail from class diagrams and selecting which classes to include in automatically generated class diagram.


AgileJ StructureViews has a batch generator which performs automatic class diagram discovery. The generator makes a collection of class diagrams available for inspection by the programmer, saving the programmer from having to create class diagrams manually. This generator examines all of the Java source code open in the Eclipse workbench looking for what AgileJ call 'seed' classes. The classes which qualify as seed are controlled by the filtering mechanism. Once the seed classes have been identified, the batch generator uses four mechanisms for populating candidate class diagrams. By package: the presence of a seed triggers the creation of a class diagram containing all classes in the seed's package. By composition: the seed and all of its immediate field types are added to the class diagram. By inheritance: the seed and all of its immediate supertypes and subtypes are added to the class diagram. By dependency: the seed and all of its incoming and outgoing dependency classes are added to the class diagram. For each of the four class diagram population mechanisms further filtering is applied to control which classes are added. The results of running a batch can be viewed in Eclipse or uploaded to a web container.


External links[edit]