Project

General

Profile

CdC » History » Version 18

Guillaume Babin, 02/06/2013 02:06 PM

1 16 Guillaume Babin
h1. Dossier de Spécification Logicielle
2 1 Romain BOBO
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 5 Guillaume Babin
12 15 Guillaume Babin
* LE-TXT-001 : projet xText
13 14 Romain BOBO
L'éditeur textuel doit être techniquement un projet xText
14 15 Guillaume Babin
* LE-TXT-002 : coloration syntaxique
15 14 Romain BOBO
Il devra offrir une coloration syntaxique automatique adaptée au langage de programmation Lustre
16 15 Guillaume Babin
* LE-TXT-003 : auto indentation
17 14 Romain BOBO
Le code doit être indenté automatiquement lors de la saisie, et il doit être également possible de réindenter tout le code de la page grâce à un bouton/raccourci
18 15 Guillaume Babin
* LE-TXT-004 : auto complétion
19 14 Romain BOBO
L'éditeur doit pouvoir offrir une fonction d'auto complétion, similaire à celle que l'on peut connaître lorsque l'on développe en Java sous Eclipse
20 15 Guillaume Babin
* LE-TXT-005 : gestion des imports de bibliothèques
21 17 Guillaume Babin
L'éditeur doit également gérer les imports de bibliothèques effectués au début de chaque fichier, afin de mettre à jour la fonction d'auto complétion. Les imports sont transitifs : les imports des imports doivent être importés.
22 10 Guillaume Babin
			
23 1 Romain BOBO
h3. Éditeur graphique 
24 1 Romain BOBO
25 15 Guillaume Babin
* LE-GRPH-001 : éditeur de type "boîtes et flèches"
26 14 Romain BOBO
L'éditeur graphique doit être un éditeur de type "boîtes et flèches", c'est à dire qu'il ne sera composé que de boîtes (noeuds, opérateurs élémentaires), et de flèches (entrées/sorties d'un noeud donné)
27 15 Guillaume Babin
* LE-GRPH-002 : utilisation de ObeoDesigner
28 14 Romain BOBO
L'éditeur graphique doit être développé grâce à ObeoDesigner, en adoptant une logique basée sur l'Ingéniérie des Modèles
29 15 Guillaume Babin
* LE-GRPH-003 : palette graphique pour les différents opérateurs
30 14 Romain BOBO
Il doit exister une palette graphique proposant l'utilisation de différents opérateurs élémentaires du langage Lustre (+, -, *, /, when, ...)
31 15 Guillaume Babin
* LE-GRPH-004 : palette graphique pour les nœuds du fichier en cours d'édition
32 14 Romain BOBO
La palette graphique doit également pouvoir fournir les différents noeuds qui sont déjà développés, ou qui sont actuellement développés dans l'éditeur
33 15 Guillaume Babin
* LE-GRPH-005 : un modèle Lustre doit être vu comme une librairie de nœuds
34 14 Romain BOBO
Le programme Lustre est une liste de noeuds, il peut (doit) donc être représenté comme une librairie de noeuds
35 15 Guillaume Babin
* LE-GRPH-006 : possibilité d'ouvrir les différents nœuds pour les visualiser
36 14 Romain BOBO
L'éditeur graphique doit permettre de visualiser en détail chaque noeud, et ce récursivement
37 15 Guillaume Babin
* LE-GRPH-007 : possibilité de modifier les spécifications (entrées/sorties) d'un nœud donné
38 14 Romain BOBO
Il doit être possible de modifier la signature d'un noeud, supprimer/ajouter des entrées/sorties
39 15 Guillaume Babin
* LE-GRPH-008 : possibilité d'afficher le code correspondant à un nœud donné
40 14 Romain BOBO
Il doit être possible de visualiser le code Lustre correspondant au noeud sélectionné
41 15 Guillaume Babin
* LE-GRPH-009 : 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)
42 14 Romain BOBO
Lors de la génération de la vue graphique du programme, les noeuds doivent être placés automatiquement pour gagner en visibilité. Un placement parfait n'est pas nécessaire
43 15 Guillaume Babin
* LE-GRPH-010 : la modification du placement des nœuds doit être sauvegardée; en particulier pour les bibliothèques chargées
44 1 Romain BOBO
Les noeuds peuvent être déplacés par l'utilisateur. Le positionnement doit être conservé afin que l'utilisateur n'ait pas à refaire ce travail à chaque ouverture de l'éditeur graphique, surtout lorsque le nombre de noeuds devient important
45 15 Guillaume Babin
* LE-GRPH-011: positionnement (si possible) des ports entrée/sortie (input à gauche, sortie à droite)
46 1 Romain BOBO
Les ports des noeuds doivent être organisés, c'est à dire les entrées à gauche, et les sorties à droite
47 1 Romain BOBO
			
48 1 Romain BOBO
h3. Éditeurs textuel et graphique
49 7 Guillaume Babin
50 15 Guillaume Babin
* LE-COM-001 : meta-modèle Ecore
51 14 Romain BOBO
Les deux éditeurs sont basés sur le méta-modèle Ecore du langage Lustre. Le programme est défini par son modèle, défini par le méta-modèle Ecore précédent
52 15 Guillaume Babin
* LE-COM-002 : chargement de fichiers Lustre (extension .lus)
53 14 Romain BOBO
Les éditeurs doivent fonctionner avec des programmes Lustre (extension .lus) classiques à l'ouverture
54 15 Guillaume Babin
* LE-COM-003 : enregistrement de fichiers Lustre
55 14 Romain BOBO
Les éditeurs doivent enregistrer le programme comme un fichier Lustre (extension .lus) classique
56 15 Guillaume Babin
* LE-COM-004 : possibilité de partir d'une feuille blanche
57 14 Romain BOBO
Il doit être possible de créer un programme Lustre à partir de 0
58 15 Guillaume Babin
* LE-COM-005 : éditeurs textuel et graphique synchronisés
59 14 Romain BOBO
Les éditeurs graphique et textuel doivent être synchronisés, c'est à dire qu'une modification dans l'éditeur graphique doit être répercutée dans l'éditeur textuel, et inversement
60 15 Guillaume Babin
* LE-COM-006 : le code Lustre doit être propre
61 14 Romain BOBO
Le code Lustre doit être le plus propre possible, c'est à dire qu'il ne doit pas y figurer les informations propres au placement des noeuds dans l'éditeur graphique
62 1 Romain BOBO
63 1 Romain BOBO
64 1 Romain BOBO
h3. De manière générale
65 1 Romain BOBO
66 15 Guillaume Babin
* LE-GEN-001 : conception modulaire
67 15 Guillaume Babin
La conception du projet doit permettre l'ajout futur d'extension au langage telles que les arguments const, les tableaux, les matrices et les informations de spécification
68 15 Guillaume Babin
* LE-GEN-002 : documentation
69 14 Romain BOBO
Le projet doit être documenté, afin de permettre l'amélioration future par d'autres équipes (méthode de construction, grammaire)
70 15 Guillaume Babin
* LE-GEN-003 : code de qualité
71 14 Romain BOBO
Le code doit être suffisamment clair pour permettre une bonne maintenabilité
72 15 Guillaume Babin
* LE-GEN-004 : licence EPL (Eclipse Public License)
73 14 Romain BOBO
Le projet doit à la fin être sous licence EPL, il doit donc être proprement conçu
74 15 Guillaume Babin
* LE-GEN-005 : le programme final sera reversé dans le marketplace Obeo http://marketplace.obeonetwork.com ou sur https://github.com/ObeoNetwork
75 1 Romain BOBO
76 1 Romain BOBO
h3. Éventuellement, les fonctionnalités suivantes pourront être envisagées
77 11 Pierre-Loïc Garoche
78 18 Guillaume Babin
* LE-GRPH-012 : éditeur graphique : palette graphique dynamique
79 14 Romain BOBO
Il peut y avoir la possibilité d'importer des nœuds depuis d'autres fichiers Lustre dans la palette graphique (chargement dynamique de bibliothèque)
80 18 Guillaume Babin
* LE-COM-007 : gestion de la spécification
81 14 Romain BOBO
Il peut être possible de gérer 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