|
|
Line 1: |
Line 1: |
− | {{MoDiscoTabs|KDM| {{MoDiscoTab|KDM|Documentation|0.7}}{{MoDiscoTab|KDM|Documentation|0.8}}{{MoDiscoTab|KDM|Documentation|0.9}}}}
| + | #REDIRECT&nbsp;[[MoDisco/Moved To Help Center]]<br> |
− | | + | |
− | == EMF Implementation ==
| + | |
− | This component provides an Ecore definition of KDM and an EMF implementation of the classes defined by this standard.
| + | |
− | | + | |
− | == KDM Source Discoverer ==
| + | |
− | | + | |
− | The goal of the KDM Source Discoverer plug-in is to allow practical extractions of KDM Source models from the file hierarchy of an application.
| + | |
− | | + | |
− | === Details ===
| + | |
− | | + | |
− | This plug-in aims at analyzing the file system hierarchy of an application and providing a model describing the information found, conforming to the KDM Source sub package:
| + | |
− | | + | |
− | [[Image:MoDisco-Kdm Source metamodel.png|frame|center|KDM Source Metamodel (from the KDM Specification v 1.1)]]
| + | |
− | | + | |
− | The Source package defines a set of meta-model elements whose purpose is to represent the physical artifacts of the
| + | |
− | existing system, such as source files, images, configuration files, resource descriptions, etc.
| + | |
− | | + | |
− | [[Image:MoDisco_KDMSourceDiscoverer_Overview.jpg|frame|center|Overview of the KDM Source Discoverer]]
| + | |
− | | + | |
− | For an input folder, the KDM source discoverer visits each folder and file. For each file, it creates the appropriate sub-class of InventoryItem using the [[Resources]] content type API. This plugin defines its own content types to properly classify file types.
| + | |
− | | + | |
− | === User manual ===
| + | |
− | | + | |
− | Right-click on a project in the Eclipse '''Package Explorer''' view and choose '''Discovery > Discoverers > Discover KDM Source...''' to create the KDM Source model of your application:
| + | |
− | | + | |
− | [[Image:MoDisco_KDM_Discoverer_menu.png|frame|center|Menu in Eclipse to create a KDM Source model from a Java project]]
| + | |
− | | + | |
− | A discovery parameters dialog opens to let you specify the parameters of the discovery:
| + | |
− | | + | |
− | [[Image:MoDisco_Launching_discovery_org.eclipse.modisco.kdm.source.discoverer.javaElement.png|frame|center|KDM discoverer parameters dialog]]
| + | |
− | | + | |
− | * Set '''SERIALIZE_TARGET''' to true if you want to save the model to a file
| + | |
− | * You can define '''TARGET_URI''' to the location of a file in your workspace. If it is not defined and SERIALIZE_TARGET is true, a model file will be created in the project.<br>'''Beware: the file will be overwritten if it already exists!'''
| + | |
− | | + | |
− | Once launched, a progress dialog will appear as soon as the operation begins:
| + | |
− | | + | |
− | [[Image:MoDisco_discoverer_org.eclipse.modisco.kdm.source.discoverer.javaElement_in_progress.png|frame|center|Progress dialog during model creation]]
| + | |
− | | + | |
− | At the end of the process, the newly created model file is added to the root of your project if you set SERIALIZE_TARGET to true, and the model is opened in the default model browser if you selected '''Open model in editor after discovery''':
| + | |
− | | + | |
− | [[Image:MoDisco_KDMSource_DiscoveredModel_inModelBrowser.png|frame|center|KDM Source model in the MoDisco model browser]]
| + | |
− | | + | |
− | The KDM XMI files (with a filename ending in "_kdm.xmi" by convention) can be opened in any model browser:
| + | |
− | | + | |
− | [[Image:MoDisco_KDMSource_OpenWith.png|frame|center|Opening a KDM Source model]]
| + | |
− | | + | |
− | === Discoverer API ===
| + | |
− | | + | |
− | Each MoDisco discoverer responds to a normalized interface and can be called programmatically (see org.eclipse.modisco.infra.discovery.core.IDiscoverer<T>).
| + | |
− | | + | |
− | First, add the following plug-in dependencies to your project ('''Require-Bundle''' in your Manifest.MF):
| + | |
− | * org.eclipse.gmt.modisco.omg.kdm
| + | |
− | * org.eclipse.modisco.kdm.source.discoverer
| + | |
− | * org.eclipse.modisco.infra.discovery.core
| + | |
− | | + | |
− | You can easily discover a KDM model from a project programmatically:
| + | |
− | <source lang="java">
| + | |
− | DiscoverSourceModelFromJavaElement discoverer = new DiscoverSourceModelFromJavaElement();
| + | |
− | discoverer.discoverElement(javaProject, monitor);
| + | |
− | Resource kdmModel = discoverer.getTargetModel();
| + | |
− | </source>
| + | |
− | | + | |
− | To have a monitor to pass to the <code>discoverElement</code> method, you can either call the discoverer in an Eclipse Job, or pass a new NullProgressMonitor if you don't need progress reporting.
| + | |
− | | + | |
− | == KDM to UML Converter ==
| + | |
− | | + | |
− | The goal of the [[MoDisco/Components/KDM|KDM]] to [[MDT/UML2|UML]] converter plug-in is to allow practical transformations of [[MoDisco/Components/KDM|KDM models]] to [[MDT/UML2|UML models]].
| + | |
− | | + | |
− | === Description ===
| + | |
− | | + | |
− | This tool aims at converting [[MoDisco/Components/KDM|KDM models]] into [[MDT/UML2|UML models]] in order to allow integrating KDM-compliant tools (i.e. discoverers) with UML-compliant tools (e.g. modelers, model transformation tools, code generators, etc), as shown in the next figure.
| + | |
− | | + | |
− | [[Image:MoDisco-KDM Kdm to Uml converter overview.jpg|frame|center|Overall approach of the KDM to UML converter]]
| + | |
− | | + | |
− | The converter is mainly implemented by an [[ATL|ATL model-to-model transformation]] taking as input a model conforming to the KDM meta model and producing as output a model conforming to the [http://www.uml.org/ UML meta model].
| + | |
− | | + | |
− | The mapping between [[MoDisco/Components/KDM|KDM]] and [[MDT/UML2|UML]] is described in the following table:
| + | |
− | | + | |
− | {| border="1" cellpadding="5" cellspacing="0" align="center" style="text-align:center"
| + | |
− | |+KDM to UML mapping
| + | |
− | |-
| + | |
− | ! KDM !! UML
| + | |
− | |-
| + | |
− | | LanguageUnit || Package
| + | |
− | |-
| + | |
− | | CodeModel || Model
| + | |
− | |-
| + | |
− | | CodeAssembly || Model
| + | |
− | |-
| + | |
− | | Package || Package
| + | |
− | |-
| + | |
− | | ClassUnit || Class
| + | |
− | |-
| + | |
− | | InterfaceUnit || Interface
| + | |
− | |-
| + | |
− | | MethodUnit || Operation
| + | |
− | |-
| + | |
− | | ParameterUnit || Parameter
| + | |
− | |-
| + | |
− | | Extends, Implements || Generalization
| + | |
− | |-
| + | |
− | | PrimitiveType || PrimitiveType
| + | |
− | |-
| + | |
− | | MemberUnit || Property, Association
| + | |
− | |}
| + | |
− | | + | |
− | <!--[[Image:MoDisco-KDM kdm uml mapping table.jpg|frame|center|KDM to UML mapping]]-->
| + | |
− | | + | |
− | This mapping can be changed or completed easily by updating the [[ATL|ATL rules]].
| + | |
− | | + | |
− | The converter can also generate a trace file of the transformation to UML and a transformation log.
| + | |
− | | + | |
− | === User manual ===
| + | |
− | | + | |
− | Right-click on a KDM model file (ending in "_kdm.xmi") and choose '''Discovery > Discoverers > Discover UML model from KDM model...''' to create the UML model from the KDM model:
| + | |
− | | + | |
− | [[Image:MoDisco_KDMToUML_menu.png|frame|center|Menu in Eclipse to create a UML model from a KDM model]]
| + | |
− | | + | |
− | A discovery parameters dialog opens to let you specify the parameters of the discovery:
| + | |
− | | + | |
− | [[Image:MoDisco_Launching_discovery_org.eclipse.modisco.kdm.uml2converter.discoverUmlModelFromKdmModel.png|frame|center|Discoverer parameters dialog]]
| + | |
− | | + | |
− | * Set '''SERIALIZE_TARGET''' to true if you want to save the model to a file
| + | |
− | * You can define '''TARGET_URI''' to the location of a file in your workspace. If it is not defined and SERIALIZE_TARGET is true, a model file will be created in the project.<br>'''Beware: the file will be overwritten if it already exists!'''
| + | |
− | * You can set a '''CUSTOM_TRANSFORMATION''', by providing the location of an ATL ".asm" file (compiled ATL transformation) that replaces the default transformation
| + | |
− | | + | |
− | Once launched, a progress dialog will appear as soon as the operation begins. Depending on the size of your application, the reverse engineering process might take some time to complete:
| + | |
− | | + | |
− | [[Image:MoDisco_discoverer_org.eclipse.modisco.kdm.uml2converter.discoverUmlModelFromKdmModel_in_progress.png|frame|center|Progress dialog during model creation]]
| + | |
− | | + | |
− | At the end of the process, the newly created model file is added to the root of your project if you set SERIALIZE_TARGET to true:
| + | |
− | | + | |
− | [[Image:MoDisco_KDMtoUML_File_inPackageExplorer.png|frame|center|UML model in the Package Explorer]]
| + | |
− | | + | |
− | And the model is opened in the default model browser if you selected '''Open model in editor after discovery''':
| + | |
− | | + | |
− | [[Image:MoDisco_KDMtoUML_model_inModelBrowser.png|frame|center|UML model in MoDisco model browser]]
| + | |
− | | + | |
− | This UML model can be displayed in any modeler (you can use [[MDT/Papyrus|Papyrus]] for example). For most modelers, you would usually create a UML class diagram and then drag and drop model elements to the diagram.
| + | |
− | | + | |
− | [[Image:MoDisco-KDM Uml target diagram.jpg|frame|center|UML diagram]]
| + | |
− | | + | |
− | === Current Limitations ===
| + | |
− | | + | |
− | The bidirectional UML Association elements are not identified by the rules: two complementary unidirectional UML Association elements are generated.
| + | |
− | | + | |
− | === Discoverer API ===
| + | |
− | | + | |
− | Each MoDisco discoverer responds to a normalized interface and can be called programmatically (see org.eclipse.modisco.infra.discovery.core.IDiscoverer<T>).
| + | |
− | | + | |
− | First, add the following plug-in dependencies to your project ('''Require-Bundle''' in your Manifest.MF):
| + | |
− | * org.eclipse.uml2.uml
| + | |
− | * org.eclipse.modisco.kdm.uml2converter
| + | |
− | * org.eclipse.modisco.infra.discovery.core
| + | |
− | | + | |
− | You can easily discover a UML model from the KDM model programmatically:
| + | |
− | <source lang="java">
| + | |
− | DiscoverUmlModelFromKdmModel discoverer = new DiscoverUmlModelFromKdmModel();
| + | |
− | discoverer.discoverElement(kdmModelFile, monitor);
| + | |
− | Resource umlModel = discoverer.getTargetModel();
| + | |
− | </source>
| + | |
− | | + | |
− | To have a monitor to pass to the <code>discoverElement</code> method, you can either call the discoverer in an Eclipse Job, or pass a new NullProgressMonitor if you don't need progress reporting.
| + | |
− | | + | |
− | As an example, you may checkout the code from project org.eclipse.modisco.kdm.uml2converter.tests.
| + | |
− | | + | |
− | == KDM Code discoverer ==
| + | |
− | | + | |
− | See the [[MoDisco/Components/Java/Documentation/0.9#Java_model_to_KDM_model_transformation|KDM Code discoverer from the Java component]].
| + | |
− | | + | |
− | == Installation ==
| + | |
− | The components can be [[MoDisco/Installation|installed]] from the MoDisco update site.
| + | |
− | | + | |
− | == Source Repository ==
| + | |
− | | + | |
− | All the source code is stored in the Eclipse public source repository:
| + | |
− | | + | |
− | * KDM metamodel : https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.gmt.modisco.omg.kdm
| + | |
− | * KDM Source discoverer : https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.kdm.source.discoverer/
| + | |
− | * KDM to UML discoverer : https://dev.eclipse.org/svnroot/modeling/org.eclipse.mdt.modisco/plugins/trunk/org.eclipse.modisco.kdm.uml2converter
| + | |
− | | + | |
− | {{MoDisco}}
| + | |
− | [[Category:MoDisco]]
| + | |