Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Papyrus/Papyrus Developer Guide/Model your development"

(Model Requirements)
(Replaced content with "this page must be destroyed.")
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
+
this page must be destroyed.
__TOC__
+
 
+
__TOC__
+
= How to use MDE to develop Papyrus =
+
==<span id="_-FfqwPXCEeWzTLgJvBjJCA">Table of Contents</span>==
+
==<span id="_-FgR0fXCEeWzTLgJvBjJCA">Requirements</span>==
+
<span id="_-Fhf8PXCEeWzTLgJvBjJCA">- REQ_001 (id=REQ_001):
+
The tool must help to model papyrus development</span><br>
+
<span id="_-FiHAfXCEeWzTLgJvBjJCA">- REQ_0011 (id=REQ_0011):
+
The tool must help to model requirements.
+
</span><br>
+
<span id="_-FiuEfXCEeWzTLgJvBjJCA">- REQ_0012 (id=REQ_0012):
+
The tool must help to make the design</span><br>
+
<span id="_-FjVIfXCEeWzTLgJvBjJCA">- REQ_0013 (id=REQ_0013):
+
The tool must help to model test</span><br>
+
<span id="_-Fj8MfXCEeWzTLgJvBjJCA">- REQ_0014 (id=REQ_0014):
+
The model of development must contain traceability</span><br>
+
<span id="_-FlKUPXCEeWzTLgJvBjJCA">- REQ_0015 (id=REQ_0015):
+
The tool must help to model use cases.
+
</span><br>
+
<span id="_-FlxYPXCEeWzTLgJvBjJCA">- REQ_002 (id=REQ_002):
+
From the model, it must be able to generate documentation</span><br>
+
<span id="_-FmYcPXCEeWzTLgJvBjJCA">- REQ_0021 (id=REQ_0021):
+
From the model, it must be able to generate HTML documentation</span><br>
+
<span id="_-Fm_gfXCEeWzTLgJvBjJCA">- REQ_0022 (id=REQ_0022):
+
From the model, it must be able to generate WKIMEDIA documentation</span><br>
+
==<span id="_-FnmkfXCEeWzTLgJvBjJCA">Use Cases</span>==
+
<br>
+
[[Image:UseCases.png|UseCases]]
+
<br>''UseCases''<br>
+
<br>
+
<span id="_-HVd0fXCEeWzTLgJvBjJCA">In order to model your development and generate your documentation.
+
You must install a version of SysML and the plugin org.eclipse.papyrus.uml.developer.mde that can been found in the git org.eclipse.papyrus\plugins\developer
+
</span><br>
+
===<span id="_-HWE4fXCEeWzTLgJvBjJCA">PapyrusMDE</span>===
+
====<span id="_-HWr8fXCEeWzTLgJvBjJCA">Model Requirements</span>====
+
<span id="_-HX6EPXCEeWzTLgJvBjJCA">  - traces to [[#_-FiHAfXCEeWzTLgJvBjJCA|REQ_0011]]</span><br>
+
<span id="_-HX6EvXCEeWzTLgJvBjJCA">The Designer has to create a use case inside the "requirements" model. </span>
+
The requirement may be functional or non functional.
+
Requirements has to be refined or decompose until it can be tested.
+
<br>
+
=====<span id="_-HYhIfXCEeWzTLgJvBjJCA">How to</span>=====
+
<span id="_-HZIMfXCEeWzTLgJvBjJCA">In order to create requirement, the Designer can use the module "Papyrus Requirement" that help to create requirements</span><br>
+
<br>
+
[[Image:createRequirements.png|Create a requirement]]
+
<br>''Create a requirement''<br>
+
<br>
+
 
+
====<span id="_-HaWUfXCEeWzTLgJvBjJCA">Model Use Cases</span>====
+
======<span id="_-HaWUfXCEeWzTLgJvBjJCA">Model Use Cases</span>======
+
<span id="_-HbkcPXCEeWzTLgJvBjJCA">  - traces to [[#_-FlKUPXCEeWzTLgJvBjJCA|REQ_0015]], [[#_-Fj8MfXCEeWzTLgJvBjJCA|REQ_0014]]</span><br>
+
<span id="_-HbkcvXCEeWzTLgJvBjJCA">The "Designer" has to develop Use cases  that are refinement of the functional requirements.
+
In each use case, a comment has to be added in order to explain the use case.
+
In each use case,  the designer has to add a set of comment stereotyped "userDoc" in order to write the how to.
+
Each Use case must have a link "satisfy" with the  refined requirement </span><br>
+
=====<span id="_-HcLgfXCEeWzTLgJvBjJCA">How to</span>=====
+
<span id="_-HcykfXCEeWzTLgJvBjJCA">In order to create a use case, the designer has to create a use case in the component inside the UseCase model.</span><br>
+
<br>
+
[[Image:usecaseCreation.png|Create a Use Case]]
+
<br>''Create a Use Case''<br>
+
<br>
+
<span id="_-HeAsfXCEeWzTLgJvBjJCA">In each Use case, the designer has to add a nested comment in order to explain the goal of the use case, (it can be also an activity diagram or sequence diagram)</span><br>
+
<br>
+
[[Image:createCommentOnUseCase.png|Create a comment]]
+
<br>''Create a comment''<br>
+
<br>
+
<span id="_-HfO0fXCEeWzTLgJvBjJCA">The designer has also to explain how  a user can execute this function. This is the "how to" section, the purpose is to explain step by step how the user can do in order to run the  functionality.
+
To do that, create a comment stereotyped "UserDoc" write you text inside or associate a screenshot of your execution by adding a hyperlink on this comment.</span><br>
+
<br>
+
[[Image:UserDoc.png|Add a comment for the user doc]]
+
<br>''Add a comment for the user doc''<br>
+
<br>
+
<br>
+
[[Image:AddHyperlinkToTheImage.png|Reference an image by using hyperlinks]]
+
<br>''Reference an image by using hyperlinks''<br>
+
<br>
+
====<span id="_-HhEAfXCEeWzTLgJvBjJCA">Model the design</span>====
+
======<span id="_-HhEAfXCEeWzTLgJvBjJCA">Model the design</span>======
+
<span id="_-HhrEfXCEeWzTLgJvBjJCA">  - traces to [[#_-FiuEfXCEeWzTLgJvBjJCA|REQ_0012]], [[#_-Fj8MfXCEeWzTLgJvBjJCA|REQ_0014]]</span><br>
+
<span id="_-HiSIfXCEeWzTLgJvBjJCA">The designer must model its development in order to be able to explain its architecture, the behavior, choices of its tool.
+
</span><br>
+
=====<span id="_-Hi5MfXCEeWzTLgJvBjJCA">How to</span>=====
+
<span id="_-HjgQfXCEeWzTLgJvBjJCA">To do that, the designer can design the model or make a retro-engineering of the code. To that papyrus provides in papyrus designer a generator and retro tool for the java  or C++code. </span><br>
+
====<span id="_-HkHUfXCEeWzTLgJvBjJCA">Model Tests</span>====
+
======<span id="_-HkHUfXCEeWzTLgJvBjJCA">Model Tests</span>======
+
<span id="_-HkuYPXCEeWzTLgJvBjJCA">  - traces to [[#_-FjVIfXCEeWzTLgJvBjJCA|REQ_0013]], [[#_-Fj8MfXCEeWzTLgJvBjJCA|REQ_0014]]</span><br>
+
<span id="_-HlVcfXCEeWzTLgJvBjJCA">The Designer must add a least one test case for each use case.
+
A test case is  a use case stereotyped "UseCaseTest".  The Use case must contain an activity that represents the  java class that represents the code of you test.</span><br>
+
=====<span id="_-Hl8gfXCEeWzTLgJvBjJCA">How to</span>=====
+
<span id="_-HmjkfXCEeWzTLgJvBjJCA">To do that, go to the "Test" model, create use case and stereotype it "Use case Test". This is the scenario to test a use case.
+
In the use case add a comment and explain the scenario.
+
In the code you must have a JUnit or a java class that corresponds tho this test. Copy qualified name of your test and add it as an activity.
+
Then add a verify link from the test the use case to the requirement. Use papyrus requirement in order to simplify creation of links.</span><br>
+
<br>
+
[[Image:UsecaseTestCreation.png|Use Case Test]]
+
<br>''Use Case Test''<br>
+
<br>
+
====<span id="_-HnxsPXCEeWzTLgJvBjJCA">Generate the documentation</span>====
+
======<span id="_-HnxsPXCEeWzTLgJvBjJCA">Generate the documentation</span>======
+
<span id="_-HoYwPXCEeWzTLgJvBjJCA">  - traces to [[#_-FlxYPXCEeWzTLgJvBjJCA|REQ_002]], [[#_-FmYcPXCEeWzTLgJvBjJCA|REQ_0021]], [[#_-Fm_gfXCEeWzTLgJvBjJCA|REQ_0022]]</span><br>
+
<span id="_-Ho_0fXCEeWzTLgJvBjJCA">From the model, it possible to generate the developer Document.
+
This generation is done in two steps: first the tool generate a document model and from the document model it generates a document.
+
The document model contains only package stereotyped "section" and comment stereotyped "content" or "imageRef".
+
 
+
Transformation to the document model:
+
Each package requirements, UseCases, Design and Test become a section.
+
Each requirement becomes a paragraph.
+
Each Use Case becomes a section with its comments a paragraph of the section.
+
The comment stereotyped user doc becomes a sub-section "How to".
+
Each diagram will be serialized and become an image inside the  container section.
+
Each image hyperlink associated to a comment becomes an image  after the paragraph.
+
 
+
The transformation from the model of document to the document is bijective.
+
</span><br>
+
=====<span id="_-Hpm4fXCEeWzTLgJvBjJCA">How to</span>=====
+
<span id="_-HqN8PXCEeWzTLgJvBjJCA">In order to generate the code: Ensure that the following profile are applied.</span><br>
+
<br>
+
[[Image:appliedProfiles.png|Applied Profiles]]
+
<br>''Applied Profiles''<br>
+
<br>
+
<span id="_-Hq1AfXCEeWzTLgJvBjJCA">Fill properties of stereotype "Project " for the root model.</span><br>
+
<br>
+
[[Image:fillModelMetaInfo.png|Project stereotype properties]]
+
<br>''Project stereotype properties''<br>
+
<br>
+
<span id="_-HsDIfXCEeWzTLgJvBjJCA">Ensure that the model are in directory doc, all images are in the directory doc/imgDOC </span><br>
+
<br>
+
[[Image:PluginStrucuture.png|PluginStructure.png]]
+
<br>''PluginStructure.png''<br>
+
<br>
+
<span id="_-HtRQfXCEeWzTLgJvBjJCA">Select the root model in the model explorer and click right to generate html or media wiki</span><br>
+
<br>
+
[[Image:generateHTML.png|HTML generation]]
+
<br>''HTML generation''<br>
+
<br>
+
<span id="_-HufYfXCEeWzTLgJvBjJCA">Open the html document, use a css file, called default css, and you can obtain the following document.
+
 
+
Note that this doc has been obtained by using the tool on itself. You can notice that a new model element with the stereotype Document is also generated. You can remove it. I let it in order to demonstrate that is possible to make all in model.  </span><br>
+
<br>
+
[[Image:generatedHTMLpage.png|Generated HTML page]]
+
<br>''Generated HTML page''<br>
+
<br>
+
==<span id="_-HvtgfXCEeWzTLgJvBjJCA">Design</span>==
+
===<span id="_-HwUkfXCEeWzTLgJvBjJCA">Package org.eclipse.papyrus.uml.developer.mde</span>===
+
====<span id="_-Hw7ofXCEeWzTLgJvBjJCA">Class Activator</span>====
+
======<span id="_-Hw7ofXCEeWzTLgJvBjJCA">Class Activator</span>======
+
<span id="_-HxisfXCEeWzTLgJvBjJCA">  - specializes [[#_-vApM_W_EeWzTLgJvBjJCA|AbstractUIPlugin]]</span><br>
+
<span id="_-HyJwfXCEeWzTLgJvBjJCA">The activator class controls the plug-in life cycle
+
</span><br>
+
====<span id="_-Hyw0fXCEeWzTLgJvBjJCA">Interface I_DeveloperIDMStereotype</span>====
+
======<span id="_-Hyw0fXCEeWzTLgJvBjJCA">Interface I_DeveloperIDMStereotype</span>======
+
<span id="_-HzX4fXCEeWzTLgJvBjJCA">constant included in the MDE process profile
+
 
+
</span><br>
+
====<span id="_-Hz-8fXCEeWzTLgJvBjJCA">Interface I_DocumentStereotype</span>====
+
======<span id="_-Hz-8fXCEeWzTLgJvBjJCA">Interface I_DocumentStereotype</span>======
+
<span id="_-H0mAfXCEeWzTLgJvBjJCA">list of constant contained in the document profile
+
 
+
</span><br>
+
====<span id="_-H1NEfXCEeWzTLgJvBjJCA">Package command</span>====
+
======<span id="_-H1NEfXCEeWzTLgJvBjJCA">Package command</span>======
+
<br>
+
[[Image:Command_ClassDiagram.png|Command ClassDiagram]]
+
<br>''Command ClassDiagram''<br>
+
<br>
+
=====<span id="_-MUEcfXCEeWzTLgJvBjJCA">Class CreateDocumentModelCommand</span>=====
+
<span id="_-MUrgfXCEeWzTLgJvBjJCA">  - specializes [[#_-2i0lfW_EeWzTLgJvBjJCA|RecordingCommand]]</span><br>
+
<span id="_-MVSkfXCEeWzTLgJvBjJCA"> this command transform a model to document model
+
 
+
</span><br>
+
====<span id="_-MV5ofXCEeWzTLgJvBjJCA">Package handler</span>====
+
======<span id="_-MV5ofXCEeWzTLgJvBjJCA">Package handler</span>======
+
<br>
+
[[Image:Handler_ClassDiagram.png|Handler ClassDiagram]]
+
<br>''Handler ClassDiagram''<br>
+
<br>
+
=====<span id="_-N0gUfXCEeWzTLgJvBjJCA">Class GetHTMLTextHandler</span>=====
+
<span id="_-N1HYfXCEeWzTLgJvBjJCA">  - specializes [[#_-N2VgfXCEeWzTLgJvBjJCA|IDMAbstractHandler]]</span><br>
+
<span id="_-N1ucfXCEeWzTLgJvBjJCA">This class is used to create and html developper doc file.
+
</span><br>
+
=====<span id="_-N2VgfXCEeWzTLgJvBjJCA">Class IDMAbstractHandler</span>=====
+
<span id="_-N28kfXCEeWzTLgJvBjJCA">  - specializes [[#_-44W4fW_EeWzTLgJvBjJCA|AbstractHandler]]</span><br>
+
<span id="_-N3jofXCEeWzTLgJvBjJCA">Abstract handler in order to connect to papyrus
+
</span><br>
+
=====<span id="_-N4KsfXCEeWzTLgJvBjJCA">Class GetWikiTextHandler</span>=====
+
<span id="_-N4xwfXCEeWzTLgJvBjJCA">  - specializes [[#_-N2VgfXCEeWzTLgJvBjJCA|IDMAbstractHandler]]</span><br>
+
<span id="_-N5Y0fXCEeWzTLgJvBjJCA"> This class is used to create and wiki developper doc file.
+
 
+
</span><br>
+
====<span id="_-N5_4fXCEeWzTLgJvBjJCA">Package transcription</span>====
+
======<span id="_-N5_4fXCEeWzTLgJvBjJCA">Package transcription</span>======
+
<br>
+
[[Image:Transcription_ClassDiagram.png|Transcription ClassDiagram]]
+
<br>''Transcription ClassDiagram''<br>
+
<br>
+
=====<span id="_-RgGcPXCEeWzTLgJvBjJCA">Class HTMLTranscription</span>=====
+
<span id="_-RgtgfXCEeWzTLgJvBjJCA">  - realizes [[#_-Rh7ofXCEeWzTLgJvBjJCA|ITranscription]]</span><br>
+
<span id="_-RhUkfXCEeWzTLgJvBjJCA">This class is a specialization to generate html files.
+
 
+
</span><br>
+
=====<span id="_-Rh7ofXCEeWzTLgJvBjJCA">Interface ITranscription</span>=====
+
<span id="_-RiisfXCEeWzTLgJvBjJCA">This class is used to generated very swiftly a document from the document model
+
 
+
</span><br>
+
=====<span id="_-RjJwfXCEeWzTLgJvBjJCA">Class TranscriptionEngine</span>=====
+
<span id="_-Rjw0fXCEeWzTLgJvBjJCA"> This class is an engine to traduce a document model into files
+
</span><br>
+
=====<span id="_-RkX4PXCEeWzTLgJvBjJCA">Class WikiTranscription</span>=====
+
<span id="_-Rk-8PXCEeWzTLgJvBjJCA">This class is a specialization to generate mediawiki files.
+
</span><br>
+

Latest revision as of 10:25, 1 July 2020

this page must be destroyed.

Back to the top