Skip to main content
Jump to: navigation, search

Difference between revisions of "MoDisco/Components/KDMSourceExtension/Documentation/0.9"

(Instrumenting the leaf code discoverers for retrieving visited source regions)
 
(53 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{MoDiscoKDMSourceExtensionTabs}}
+
#REDIRECT [[MoDisco/Moved To Help Center]]
 
+
== 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).
+
 
+
This framework reuses the [http://wiki.eclipse.org/MoDisco/Components/KDM KDM] "Source" subpackage, which proposes a model for physical resources, known as "Inventory Model" (see figure [[http://wiki.eclipse.org/MoDisco/Components/KDM/Documentation/0.9#Details here]])
+
 
+
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.
+
 
+
[[Image:Kdmsourceregion.JPG|frame|center|KDM Source Metamodel (from the KDM Specification v 1.1)]]
+
 
+
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.
+
 
+
[[Image:Kdmsourceextension.JPG|frame|center|MoDisco KDM Source extension Metamodel]]
+
 
+
== 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).
+
 
+
In most cases the ''CodeUnit2File'' will be subclassed.
+
 
+
A reference example of such a composition metamodel is the [http://wiki.eclipse.org/MoDisco/Components/Java/Composition/Architecture#Java_Composition_Metamodel Java Application example].
+
 
+
== How to develop a discoverer for the composition metamodel ==
+
 
+
A discoverer will instantiate elements for the ''composition metamodel'' described before.
+
Such a discoverer will have to manipulate the both kdm.source and code models.
+
 
+
A kdm.source model can be discovered using the [[http://wiki.eclipse.org/MoDisco/Components/KDM/Documentation/0.9#KDM_Source_Discoverer KDM Source discoverer]]. Note that such a discoverer only provides a representation of files/directories. It does not instantiate ''SourceRegions'' subclasses.
+
 
+
A discoverer for the related code model is a prerequisite. The [[http://wiki.eclipse.org/MoDisco/Components/Java/Documentation/0.9#Java_Discoverer Java Discoverer]] is an example. Such a discoverer is not supposed to instantiate ''SourceRegions'' subclasses. To avoid ambiguity, we will talk about it as a "leaf code discoverer".
+
 
+
=== Instrumenting the leaf code discoverers for retrieving visited source regions ===
+
 
+
In most cases, code discoverers have access to physical localization for each portion of code that is modeled.
+
 
+
There are two ways for a composite discoverer to catch such an information when invoking the leaf discoverer :
+
*  subclass some leaf discoverer implementation classes.
+
*  add a listener to the leaf discoverer to listen for source regions visit events.
+
 
+
The second way implies that the leaf discoverer extends the ''org.eclipse.modisco.kdm.source.extension.discovery.AbstractRegionDiscoverer'' class to support the registering of ''org.eclipse.modisco.kdm.source.extension.discovery.SourceRegionVisitListener''.
+
 
+
''AbstractRegionDiscoverer.notifyRegionSourceVisit'' must be called when appropriate from inside the leaf discoverer.
+
 
+
The [[http://wiki.eclipse.org/MoDisco/Components/Java/Documentation/0.8#Java_Discoverer Java discoverer]] implementation class illustrates such a pattern application.
+
 
+
The following figure illustrates the architecture for leaf and composite discoverers related to a CSharp metamodel.
+
 
+
[[Image:Csharpkdmdiscovery.JPG|frame|center|Applicative Architecture for CSharp leaf and composite discoverers example]]
+
 
+
=== Instantiate source region nodes ===
+
 
+
=== Resources Distribution and memory usage ===
+

Latest revision as of 11:43, 2 April 2012

  1. REDIRECT MoDisco/Moved To Help Center

Back to the top