Java Component Extractor plugin
This
plugin is intented to extract component information from Java source
code. It is based on Java 1.5 but could be easily compiled with Java
1.6. The plugin is based on JDT parser and Eclipse 3.4.
More details about this plugin can be found in WCRE 2009 tool
demo and in this document, lastly contact
Jean-Claude.Royer at mines-nantes.fr for more details
or questions.
The .jar with javadoc is
available and also the sources.
This page contains a small documentation, a video can be also downloaded.
The plugin extracts: component and data types, component structures,
communications, subtyping, required and provided services. The
distinction between component and data type is based on the property of
communication integrity, firstly introduced by Luckham et al. and then
integrated in the ArchJava language. When launching the component
extractor you need to choose one project which is in your running workspace.
Then you are able to select the packages you have to process. Finally
the plugin allows you to enforce the choice of component and data
types. The plugin processes the chosen packages and computes some data
types but you can force it to do another hypothesis. This is useful to
get some feeling about what could happen in a component-oriented
restructuring process.
The resulting information is provided in some textual views when
running the extractor. They are:
Running analysis: This view
appears if you replied yes to the "debug mode" question, its provides
mored detailed information about the processing.
Final table: The table of
information about all type of interest, each entry has the following
lines:
<binary name of the type> ==> is a Component type % if
it is a component or a data type
BINDING: %the type bound to this name
CLASS? %true or false if an interface
SUPERCLASS % superclass name
SUBCLASSES % list of subclasses
SUBINTERFACES % list of subinterfaces
THESTRUCTURE: % list of typed instance variables
VIEWED= %true or false, it is an internal flag for the processing
CYCLE= % true or false indicates if the structure has cycle or not
PARENT: % list of parent type names for the composition
Note ROOT tag indicates that the type defines a main method.
At the end the following information is reported:
A list of the composite cycles, a list of the shared types, a list of
the direct field access, a list of suspect downcast and the extraction
of local variables in the main methods.
Boundary analysis: Analyse the
communications and show the infractions to boundary, that is
communication with components not in the structure
Some information and some metrics:
It provides the following information for each component type:
TYPE: % component type
name (binary java name)
STRUCTURE: % list of subcomponent type
names
PROVIDED: % list of provided services
REQUIRED: % list of required services
ENDTYPE
At the end of this view there are some numeric information:
Total type number: -- Component types number: -- Data types
number: --
Number of classes: -- Number of interfaces: --
Number of all provided services: -- Number of non Java interface
provided services: -- Number of provided constants: -- Number of
required services: --
Number required between component types: --
Number of subtypes: -- Number of composition: -- Number of
channels: --
Additionally two interactive and graphic views are possible. These
views can be dynamically configured to show component and/or data
types, communications and/or structuration and/or subtyping links. Two
graph views are provided: the basic one uses a dynamic layout and the
other a radial layout. You should get a view like this
with the radial viewer.