Project

General

Profile

CdC » History » Version 13

Guillaume Babin, 01/28/2013 10:52 PM

1 1 Romain BOBO
h1. Cahier des charges
2
3 5 Guillaume Babin
h2. Objectif général
4 2 Romain BOBO
5 3 Romain BOBO
L'objectif est de concevoir un éditeur textuel et graphique pour le langage de programmation Lustre sous une approche basée sur l'ingénierie des modèles, en utilisant l'outil ObeoDesigner. Les deux vues du programme édité doivent être synchronisées.
6 5 Guillaume Babin
7 1 Romain BOBO
		
8 5 Guillaume Babin
h2. Fonctionnalités
9 1 Romain BOBO
10 5 Guillaume Babin
h3. Éditeur textuel
11
12
* A.1 : projet xText
13
* A.2 : coloration syntaxique adaptée au langage Lustre
14
* A.3 : auto indentation
15
* A.4 : auto complétion
16
* A.5 : gestion des imports de bibliothèques
17 1 Romain BOBO
			
18 10 Guillaume Babin
h3. Éditeur graphique 
19 1 Romain BOBO
20 10 Guillaume Babin
* B.1 : éditeur de type ``boîtes et flèches''
21
* B.2 : utilisation de ObeoDesigner
22
* B.3 : palette graphique pour les différents opérateurs
23
* B.4 : palette graphique pour les nœuds du fichier en cours d'édition
24 12 Guillaume Babin
* B.5 : un modèle Lustre doit être vu comme une librairie de nœuds
25
* B.6 : possibilité d'ouvrir les différents nœuds pour les visualiser
26
* B.7 : possibilité de modifier les spécifications (entrées/sorties) d'un nœud donné
27
* B.8 : possibilité d'afficher le code correspondant à un nœud donné
28
* B.9 : placement automatique basique des nœuds à l'ouverture d'un fichier Lustre (un placement automatique très élégant des nœuds n'est pas un objectif du projet)
29
* B.10 : la modification du placement des nœuds doit être sauvegardée; en particulier pour les bibliothèques chargées
30
* B.11: positionnement (si possible) des ports entrée/sortie (input à gauche, sortie à droite)
31 1 Romain BOBO
			
32 7 Guillaume Babin
h3. Éditeurs textuel et graphique
33
34
* C.1 : basés sur un meta-modèle Ecore du langage Lustre
35
* C.2 : chargement de fichiers Lustre (extension .lus)
36
* C.3 : enregistrement de fichiers Lustre
37
* C.4 : possibilité de partir d'une feuille blanche
38
* C.5 : toute modification du code dans l'éditeur textuel doit être répercutée dans l'éditeur graphique, et vice versa (synchronisation)
39 8 Guillaume Babin
* C.6 : le code Lustre doit être le plus propre possible (notamment, les informations relatives au placement graphique des nœuds ne doivent pas s'y trouver)
40 7 Guillaume Babin
41 6 Guillaume Babin
42 1 Romain BOBO
h3. De manière générale
43
44 6 Guillaume Babin
* D.1 : documentation de qualité permettant l'amélioration future par d'autres équipes (méthode de construction, grammaire)
45 11 Pierre-Loïc Garoche
* D.2 : code de qualité permettant une bonne maintenabilité
46 13 Guillaume Babin
* D.3 : conception permettant L'ajout futur d'extension au langage telles que les arguments const, les tableaux, les matrices et les informations de spécification
47 6 Guillaume Babin
* D.4 : licence EPL (Eclipse Public License)
48 1 Romain BOBO
* D.5 : le programme final sera reversé dans le marketplace Obeo http://marketplace.obeonetwork.com ou sur https://github.com/ObeoNetwork
49
50
h3. Éventuellement, les fonctionnalités suivantes pourront être envisagées
51 11 Pierre-Loïc Garoche
52 12 Guillaume Babin
* E.1 : éditeur graphique : la possibilité d'importer des nœuds depuis d'autres fichiers Lustre dans la palette graphique (chargement dynamique de bibliothèque)
53
* E.2 : gestion de la spécification (préconditions, invariants et postconditions) des nœuds stockée en commentaire dans le fichier Lustre. On pourra s'inspirer à cet effet du langage de spécification ACSL pour le C http://frama-c.com/acsl.html
54 1 Romain BOBO