blob: fb19d54e7bd3b4e2bc9ef871f6ef65f0325095ad [file] [log] [blame]
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@
}
}
}
}