| Document { |
| Chapter Structural element of a @Intent@ document { |
| In this chapter, we will present the main structural elements of a |
| @label "Intent" "Methodology inspired from Literate Programming" |
| document. |
| |
| First, let's take a look on the global structure of such documents. |
| |
| Section Global structure of a Intent document : overview { |
| The general purpose of the Intent methodology is to allow |
| "M.D.A (Model Driven Architecture)":http://en.wikipedia.org/wiki/Model-driven_architecture |
| architects to structure their models specifications exactly like they would structure a design |
| description report. |
| |
| We based the Intent methodology on the |
| <a href="http://www-cs-faculty.stanford.edu/~uno/lp.html"> Literate Programming </a> concept, defined |
| by Donald E. Knuth. The main idea is to combine a textual language for model description (like EMFAtic |
| or EFactory) with a documentation language (like Latex or HTML). |
| |
| Following this paradigm, we have structured a |
| @lazylabel "Intent" document exactly as we would have structure a |
| design description report : |
| |
| * Intent document |
| ** chapter |
| *** section |
| **** Description Unit |
| **** SubSection |
| ***** Description Unit |
| ***** Modeling Unit |
| ***** Subsubsection |
| ****** ... |
| |
| |
| We see here that an Intent document is composed of a set of chapters. |
| Each chapter mixes Description Units (that use the documentation langage to explain the current chapter |
| topic and concerns) and a Sections (that present a more specific point of the current chapter). |
| Each section can contain Modeling Units (that define a model or a part of that model with the model |
| description langage), Description Units (that present the defined model or more general decisions), or |
| Sections that explain specific points or define model parts related to this section concern. |
| |
| For example, in the current section entitled "Global structure of a |
| @see "Intent" document", we have |
| explained the base of an Intent document structure. This structure will be modelised in the IntentDocument package, |
| defined in the following Modeling Unit : |
| @M IntentDocumentOverview |
| Resource IntentDocumentX { |
| URI = "platform:/resource/intentTest/modelised/IntentDocumentPackageXResource.ecore"; |
| contentType = "ECore"; |
| content += IntentDocumentPackageX; |
| } |
| new EPackage IntentDocumentPackageX { |
| nsURI = "http://www.eclipse.org/intent/intentdocumentX"; |
| nsPrefix = "intentdocumentX"; |
| } |
| M@ |
| |
| We will take a closer look on the Modeling Units syntax later. Let's just say that in this modeling unit we |
| defined an EPackage called IntentDocumentPackage with the given URI and Prefix. We also declared a Resource |
| containing this package. As we see later, a Resource allowing the developer to manage the storage |
| of the defined models. |
| |
| Section Global structure of a Intent document : specification { |
| In this section, we will design precisely the global structured defined above. |
| |
| First of all, we define the generic entity IntentStructuredElement, |
| that represents a IntentDocument, a chapter and a section. |
| @M IntentStructuredElementDefinition |
| IntentDocumentPackageX { |
| eClassifiers += new EClass IntentStructuredElementX { |
| eStructuralFeatures += new EAttribute formattedTitle { |
| eType = EString; |
| }; |
| }; |
| } |
| M@ |
| |
| Any IntentDocument is a IntentStructuredElementX that contains chapter(s) : |
| @M documentDefinition |
| IntentDocumentPackageX { |
| eClassifiers += new EClass IntentDocumentX { |
| eStructuralFeatures += new EReference chapters { |
| eType = IntentChapterX; |
| upperBound = "-1"; |
| containment = "true"; |
| }; |
| }; |
| } |
| M@ |
| |
| An Intent's chapter is a IntentStructuredElement... |
| @M chapterDefinition |
| IntentDocumentPackageX { |
| eClassifiers += new EClass IntentChapterX { |
| eStructuralFeatures += new EReference subSections { |
| eType = RXMSection; |
| upperBound = "-1"; |
| containment = YES; |
| }; |
| }; |
| } |
| M@ |
| } |
| } |
| |
| Section Specification of an Intent section { |
| h2. Some styled subsection |
| |
| Now that we _have_ *seen* the @general@ structure of an Intent documentation in the |
| @see "GlobalstructureofanIntentDocumentoverview" "previous Section" |
| , let's see how Sections are defined. |
| @M sectionDefinition |
| IntentDocumentPackageX { |
| eClassifiers += new EClass IntentSectionX { |
| eStructuralFeatures += new EAttribute units { |
| eType = IntentSectionX; |
| upperBound = "-1"; |
| containment = "true"; |
| }; |
| }; |
| } |
| M@ |
| } |
| } |
| Chapter The Sample Package { |
| In this chapter, we will present the _@Sample Package@_ specifications. |
| |
| Section Overview { |
| @M samplePackageOverview |
| Resource IntentDocumentX { |
| URI = "platform:/resource/intentTest/modelised/samplePackage.ecore"; |
| contentType = "ECore"; |
| content += SamplePackage; |
| } |
| new EPackage SamplePackage { |
| nsURI = "http://www.eclipse.org/intent/samplepackage"; |
| nsPrefix = "samplePackage"; |
| } |
| M@ |
| |
| Section The sample Class specification { |
| @M |
| SamplePackage { |
| eClassifiers += new EClass SampleClass { |
| eStructuralFeatures += new EReference sampleRef { |
| eType = SampleClass; |
| upperBound = "-1"; |
| }; |
| }; |
| } |
| M@ |
| |
| For personnal reasons, we add a sampleAttribute to this sampleClass. |
| @M |
| SampleClass { |
| eStructuralFeatures += new EAttribute sampleAttribute { |
| eType = EInt; |
| upperBound = "-1"; |
| }; |
| } |
| M@ |
| |
| |
| } |
| } |
| |
| |
| } |
| } |