AgileJ StructureViews

From Wikipedia, the free encyclopedia
Jump to: navigation, search

AgileJ StructureViews® is a commercial Java software visualizer developed by AgileJ Ltd which creates UML class diagrams by reverse engineering Java source code. 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, having previously been named Modelistic. 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.7.16 was made available on 4 August 2013.

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. Check out pre-generated class diagrams for eclipse, elastic search, JBoss App server and many more. 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. Read and learn more about Java reverse engineering in our website.

Filtering[edit]

AgileJ refers to filtering as the process of discriminating between Java elements (classes, fields and methods). Check out a simple GWT class diagram filtering example. 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 hibernates. The filtering mechanism built into the product plays various roles across its functions.

Commonly, the usefulness of reverse engineered class diagrams is limited due to the volume of information which they display. Drawing every class member and every association typically results in too much information for the human reader to make sense of.

Batching[edit]

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.

External links[edit]