"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:
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.
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".
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.
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.
See Download and install instructions.