Component-Watch

"Component-Watch" is a tool discovering, showing and assessing the structure of (big) java programs from their classes.

The tool is based around the 4 following activities:

  • Discovering and defining the components of the program.

    Once you've defined the set of jar composing the application (from a directory or from the local maven repository), you have to map those classes to components. Classes are mapped to components with regular expressions, so a jar file does not necessary define a component. However, as it is often the case, a helper allows you to automatically define components from jars.

  • Expressing the program structure.

    Once the base components are defined you can define higher-level components (grouping sub-components) to express your program structure. For example, in a three-tier web application, you can define components of type 'tier' grouping all the base components belonging to each tier. Then, you can express rules about the program structure in term of forbidden relations between components. Each component can, in addition, define some internal (or private) content that should not be acessed from other components. As rule examples, still in a three-tier application, the "Web tier" cannot directly access the "Data storage tier" or the "Business tier" cannot reference the "Web tier".

  • Creating diagrams.

    You can define diagrams showing a selection of the components. The tool automatically creates the diagram objects and their relationships but the fine-tuned diagram layout is manual. Once the diagrams are setup, they are automatically actualised at each new analysis, so you are sure that the relations displayed in them are always accurate.

  • Watching components.

    After all definitions are done, you can continuously analyse the evolving code of an application in development. Component-Watch will automatically spot all the code changes that do not fit the described components (unknown new component, forbidden reference, loops, class not fitting package conventions ...)

During all those activities, you can launch the tool analysis to watch the problem report list and benefit of the tool rich user interface to explore the project artifacts (jars, classes, components) and their relationships.

The project definition is saved as easily-readable XML. So, if you prefer, you can define your project directly in XML and synchronise the tool with it.

This tool was already sucessfully used to analyse big 200+ jars (15000+ classes) Maven application.

Download

See Download and install instructions.

Documentation index

  • Goals: explain the main goals of Component-Watch and compare it to other code analysis tools.
  • 10 minutes example: an example demonstrating how, in 10 minutes, setup from scratch a full-scope Component-Watch project to analyse a simple program.
  • Fine-tuned example: The suite of the preceding example going more in details.

Sourceforge project

This project is hosted by Sourceforge.
The Sourceforge project main page:

http://sourceforge.net/projects/componentwatch

provides access to the projects technical infrastructure (mailing lists, bug tracking, news, releases, SVN repository ...)