The objective of the process B is to build a structural component model and a corresponding annotated Java code. These two elements are inputs of the process A (see the detailed process in Process A). The model is also an instance of the metamodel (see the detailed description in meta_model) that will control its consistency.
A general view of the process B is given in the figure below; from plain Java code and user interaction, process B should produce an annotated Java code and a corresponding component model (both results must be consistent). Some restrictions apply to the first program release:
The process B is in fact iterative because its source is variable (in the sense that it may include many informations from different nature) and target different goals. For instance one goal is to abstract structural elements of a component model from a plain Java code and user informations. Another is to read and interpret existing annotations. Another is to check the compatibility between one component model and an annoted Java code… On each iteration, the process accepts a Java program (with or without annotation) and a component model (possibly empty). It computes some information, sometimes using external tools and human interaction. This information modifies the a Java program and the component model.
The idea is to combine primitive transformations and develop a customised (or human driven) process B. Here are some of these primitive transformations:
Important remarks:
Consequently, process B is rather a tool box or a sequence of subprocess applications.
Since the input model is empty, the human must provide many informations and can be helped by the cluster tool.
\end{enumerate}
A first implementation using CMM (meta_model CCMM section - item 2).
The code and documentation are available on the Econet SVN repository (ProcessB directory).