PBr

Component Modeling

The motivation for component (meta)modeling research is the impossibility (or maybe just the difficulties?) to reason about component properties due to the lack of component specifications. This is typical, but not limited to, Java-based frameworks where the requires part of component interface is mostly not declared, and component models are clumsy in general.

The work thus aims at the creation of methods for extraction of component interface specification from its implementation, either the source code, binary form, or their combination. Particular emphasis is on black-box component distributions where source is not available, and on Java-based frameworks. Second goal is a suitable visual representation of the interface specification, one that would allow various views on the same interface based on separation of concerns. A link to UML2 meta-model and notation is to be included in this goal.

In terms of practical results, the project should produce tools that allow the extraction of corresponding interface component specification by either analysing the component/module source code or using the introspection mechanism on the compiled artefacts (at present implemented for the Enterprise JavaBeans, the plan is to extend it for OSGi components and C-language modules).

Results

The ENT meta-model of component interface is the main theoretical result of the research. It enables to capture both syntactical and “perceived” properties of component interface. The component interface is structured into a set of traits which gather individual interface elements of the same meta-type. Traits also carry classification of the “perceived” properties, which enables us to create various views (at the moment called categories) on the whole interface following a separation-of-concerns paradigm.

We have implemented the meta-model in a tool which, given a .jar with Enterprise JavaBeans in their deployment form inside, is able to reconstruct their ENT-based representation and export that in XML format or via a Java API for further analyses.

Related projects

CoSi – an effort to create a simple component model to play with the ENT-based features and substitutability. BlackBoxComponents – why they should be black boxes and how to evaluate whether they are