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 "Intent/Use Cases"

Line 1: Line 1:
 
<br>
 
<br>
  
THIS PAGE IS A WORK IN PROGRESS
+
''THIS PAGE IS A WORK IN PROGRESS''
 
+
 
+
  
 
This section is focused on describing Intent's main use cases, some features to support these use case might not be completely implemented yet but are at the top of the priority list.
 
This section is focused on describing Intent's main use cases, some features to support these use case might not be completely implemented yet but are at the top of the priority list.
Line 9: Line 7:
 
== Retro-documentation of Existing Code  ==
 
== Retro-documentation of Existing Code  ==
  
The Intent project considers code or documentation have the same value and no one should necessarily be the first on the other, its focus is on making sure these are synchronized and helping the developper to keep them synchronized, one of the consequences of this statement is that it's a perfect tool to get started in documenting legacy code.
+
The Intent project considers that code and documentation have the same value, and that no one should necessarily be the first on the other. Its focus is on making sure these are synchronized and helping the developper to keep them synchronized. One of the consequences of this statement is that it's a perfect tool to get started in documenting legacy code.
 
+
  
  
Line 20: Line 17:
  
 
Alice has the ability '''in the documentation ''' to declare model fragments describing her application :
 
Alice has the ability '''in the documentation ''' to declare model fragments describing her application :
 
  
 
<pre>@M
 
<pre>@M
Line 28: Line 24:
 
@M
 
@M
  
This plugin contains all the core services of greatapp [..] .
+
This @plugin@ contains all the core services of *greatapp* [..] .
  
 
</pre>
 
</pre>
  
  
Alice describe, in a documentation section dedicated to the general architecture of her great app, &nbsp;the list of every PluginProject describing using natural langage.
+
Alice describes, in a documentation section dedicated to the general architecture of her great app, &nbsp;the list of every PluginProject described using natural langage.
  
In another chapter dedicated to the technical architecture she use the ability to complement her definition of the plugins describing the Java execution environment:
+
In another chapter dedicated to the technical architecture, she uses the ability to complement her definition of the plugins and describes the Java execution environment:
  
 
<br>
 
<br>
Line 43: Line 39:
 
}
 
}
 
M@</pre>
 
M@</pre>
&nbsp;
 
  
 +
When Alice hits the save button, her document is being compared with her workspace content; if any de-synchronization is detected, markers are added at the corresponding position in the document.
  
 +
The PluginProject model definition enforces the fact that every PluginProject has to describe its API (exported packages and extension points) in the documentation.&nbsp;During the synchronization, an error will be added on every PluginProject which is - in the workspace - providing an API which is not referenced in the documentation.
  
When Alice hit the save button, her document is being compared with her workspace content, if any de-synchronization is detected, markers are added at the corresponding position in the document.
 
  
The PluginProject model definition enforce the fact that every PluginProject has to describe the its API (exported packages and extension points) in the documentation.&nbsp;During the synchronization an error will be added on every PluginProject which is - in the workspace - providing an API which is not referenced in the documentation.
+
Alice might either fix those errors manually, adding the corresponding model fragments, or hit the quickfix intializing those:
 
+
 
+
 
+
Alice might either fix those errors manually adding the corresponding model fragments or hit the quickfix intializing those:
+
 
<pre>@M
 
<pre>@M
 
corePlugin {
 
corePlugin {
Line 74: Line 66:
  
 
</pre>
 
</pre>
<br>
 
 
In a nutshell using the validation errors and quickfixes Alice is going to retro-document the whole project, furthermore once this is done, any rebuild of the documentation will check the development artifacts (Manifest.MF, plugin.xml and others) and will report inconsistencies.
 
 
  
 +
In a nutshell, using the validation errors and quickfixes Alice is going to retro-document the whole project. Furthermore, once this is done, any rebuild of the documentation will check the development artifacts (Manifest.MF, plugin.xml and others) and will report inconsistencies.
  
 
This example is using EclipsePlugin as - in fact - an example, the ability to synchronize model fragments to "'''real world artifacts'''" &nbsp;is a completely extensible part of Intent powered by EMF models.
 
This example is using EclipsePlugin as - in fact - an example, the ability to synchronize model fragments to "'''real world artifacts'''" &nbsp;is a completely extensible part of Intent powered by EMF models.
 
 
 
 
 
 
  
 
== Document-driven design  ==
 
== Document-driven design  ==

Revision as of 08:55, 3 February 2011


THIS PAGE IS A WORK IN PROGRESS

This section is focused on describing Intent's main use cases, some features to support these use case might not be completely implemented yet but are at the top of the priority list.

Retro-documentation of Existing Code

The Intent project considers that code and documentation have the same value, and that no one should necessarily be the first on the other. Its focus is on making sure these are synchronized and helping the developper to keep them synchronized. One of the consequences of this statement is that it's a perfect tool to get started in documenting legacy code.


Let's take an sample scenario for this usage :

Alice want to document its existing Eclipse project, she starts a new empty documentation project.

Alice starts to organize the documentation through sections an introduction, a general design chapter and another dedicated to testing...

Alice has the ability in the documentation to declare model fragments describing her application :

@M
   new PluginProject coreplugin {
     id = "com.alicecompany.greatapp.core"
  }
@M

This @plugin@ contains all the core services of *greatapp* [..] .


Alice describes, in a documentation section dedicated to the general architecture of her great app,  the list of every PluginProject described using natural langage.

In another chapter dedicated to the technical architecture, she uses the ability to complement her definition of the plugins and describes the Java execution environment:


@M
coreplugin {
  executionEnvironement = "J2SE-1.5"
}
M@

When Alice hits the save button, her document is being compared with her workspace content; if any de-synchronization is detected, markers are added at the corresponding position in the document.

The PluginProject model definition enforces the fact that every PluginProject has to describe its API (exported packages and extension points) in the documentation. During the synchronization, an error will be added on every PluginProject which is - in the workspace - providing an API which is not referenced in the documentation.


Alice might either fix those errors manually, adding the corresponding model fragments, or hit the quickfix intializing those:

@M
corePlugin {
   extension-points += new ExtensionPoint { 
         id="thing-provider"
   }
}
M@

bq. TODO ALICE : describe the extension point

@M
corePlugin {
   extension-points += new ExtensionPoint {
         id="compilation-participant"
   }
@M

bq. TODO ALICE : describe the extension point

In a nutshell, using the validation errors and quickfixes Alice is going to retro-document the whole project. Furthermore, once this is done, any rebuild of the documentation will check the development artifacts (Manifest.MF, plugin.xml and others) and will report inconsistencies.

This example is using EclipsePlugin as - in fact - an example, the ability to synchronize model fragments to "real world artifacts"  is a completely extensible part of Intent powered by EMF models.

Document-driven design

Screenshots

Searching through documentation using outline :

450x221px[450x221

Getting synchronization issues between documentation and models concretely used by developers  :

400x203px[400x203


Screenshots

Searching through documentation using outline :

450x221px[450x221

Getting synchronization issues between documentation and models concretely used by developers  :

400x203px[400x203

Back to the top