
h1. Intent User Guide


h2. Introduction


h3. Pre-requisites

The reader should have a minimal knowledge about MDA concepts, the eclipse platform, and the java language.

h2. Overview

The main purpose of Intent is to allow developers to easily write a documentation up-to-date with any development artifact (models, code, environment...). The documentation, integrated with other Eclipse tools, then becomes truly useful and is no longer a burden that developer have to carry to please their customers or their project manager.
Based on Donald Knuth's Literate Programming concepts and allowing collaborative work around design tasks, Intent will be presented at Eclipse Con 2011.
__Let us change our traditional attitude to the construction of programs: Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do.__
*Donald Knuth*, Literate Programming (1984)

h3. Installation

To come.

h3. Features


h4. A documentation language

A language mixing the wiki syntax from WikiText with a syntax dedicated to the definition of model fragments. This can be seen as a literate modeling (like in literate programming) documentation language, having the ability to :
* organize the design of the system as a document, keeping in mind the targeted audience and not the constraints coming from the development artifacts ;
* split the definition of formal elements among several sections or chapters, according to the need they allow to answer to.


h4. An authoring tooling

A complete IDE providing wizards, editors with syntax highlighting and code completion for the documentation language. Validation of the formal elements description will be fully integrated to this IDE.

h4. A synchronization framework

The synchronization framework is responsible for interfacing the formalism with development artifacts :
* it compiles the document into complete models upon which constraints and predicates can be checked ;
* it synchronizes these models with the real development artifacts providing the user two possibilities : updating the documentation or updating the artifact itself ;
* it has the ability to be extended to provide better integration with other Eclipse projects, enabling for instance consistency check between PDE artifacts and the documentation.


h4. Output generators

Plugins dedicated to the document export into popular format will be developed.