- 1 KDM.Source extension : a metamodel for weaving Code models and KDM Inventory models
- 2 How to create a composition metamodel between Code models and KDM Inventory models
- 3 How to develop a discoverer for the composition metamodel
KDM.Source extension : a metamodel for weaving Code models and KDM Inventory models
The component proposes a small framework for building weaving information between code models (Java, C++, ...) and physical resources (disk files and directories).
KDM inventory model also proposes SourceRegion/SourceRef concepts for weaving other kdm models (kdm code models, ...) with physical representation. Some references exist from other KDM subpackages to the SourceRef concept.
MoDisco proposes to compose KDM inventory models with non-KDM models. For technical reasons (generic reuse), a new metamodel extending KDM Source has been created.
A subpart of KDM Source model is extended for linking the SourceRegion concept with non-KDM elements, via the ASTNodeSourceRegion metaclass.
Moreover a recurrent pattern, in such a model composition, is to link KDM SourceFile with a code model element. Such a link is represented with CodeUnit2File metaclass.
How to create a composition metamodel between Code models and KDM Inventory models
Given a particular code metamodel (Such as the Java one), MoDisco proposes to extend KDMSourceExtension to define a metamodel composition between inventory models and code models.
The ASTNodeSourceRegion should be subclassed, and a reference to one concrete code metaclass should "specialize" the ASTNodeSourceRegion->node:EObject reference (one simple way is to set the new reference as derivated from the generic one).
The CodeUnit2File will be in most cases subclassed.
A reference example of such a composition metamodel is the Java Application example.