Projet de Génie Logiciel et Système : Un modèle de scénarios

Transcription

Projet de Génie Logiciel et Système : Un modèle de scénarios
Projet de Génie Logiciel et Système :
Un modèle de scénarios
Mathieu MONTIN
2015-2016
Résumé
Ce document décrit le travail demandé aux étudiants du département IMA de l’ENSEEIHT inscrits pour la session 1 de l’année universitaire 2015-2016 de l’UE GLS. Il s’agit d’un travail individuel qui
devra être réalisé en autonomie ; à ce titre, des vérifications concernant
l’authenticité du travail pourront être effectuées.
Dans ce projet sont testées les facultés des étudiants à construire
une infrastructure basée modèle autour d’une problématique concrète.
Cette approche s’effectuera en deux axes : une partie modélisation
sur papier et une partie implémentation en utilisant les outils développés dans le cadre du projet Eclipse Modelling Framework (EMF)
pris en main au cours du module.
Deux rapports seront rendus au cours du projet : un dossier préliminaire qui sera suivi d’un retour des enseignants et un rapport de
projet qui devra contenir les difficultés d’implémentations par rapport
à ce dossier ainsi que toute autre information jugée pertinente.
Les travaux relatifs à la partie développement devront fonctionner
sous Linux sur les machines des salles de travaux pratiques, qui sont
pourvues des outils nécessaires à la bonne réalisation de ce travail, et
qui serviront de lieu de test à la fin du projet.
Les dates de rendus sont données à la fin de ce sujet. Il est impératif
de rendre les travaux dans les délais ; Tout retard sera sanctionné.
Les étudiants sont encouragés à travailler de manière régulière, et ce
dès la remise du présent sujet.
1
Table des matières
1 Présentation du sujet
3
2 Analyse Préliminaire
2.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Mieux comprendre le besoin . . . . . . . . . . . . . . . . . . .
2.3 Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . .
4
4
4
4
3 Partie implémentation
3.1 Introduction . . . . . . . . .
3.2 Le méta-modèle de domaine
3.3 Les autres besoins . . . . . .
3.4 Le consultant technique . .
5
5
5
6
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Barème
7
5 Informations pratiques
5.1 Dates importantes . . . . . . . . . . . . . . . . . . . . . . . .
5.2 Modalités de rendu . . . . . . . . . . . . . . . . . . . . . . . .
8
8
8
2
1
Présentation du sujet
Préambule Une maison de retraite décide de mettre en place un processus
permettant aux résidents atteints de la maladie d’Alzheimer d’améliorer leur
quotidien. L’idée est de leur offrir un moyen simple et intuitif de consigner
les activités passées et de planifier celles des jours à venir à l’aide d’un outil
automatisé. N’ayant pas le personnel qualifié pour accomplir ce genre de
tâche, la maison de retraite s’est tournée vers une jeune pousse (start-up)
toulousaine prometteuse dont vous faites partie.
Exemple Pour préciser son besoin, le client vous donne un exemple de
scénario (en figure 1) qu’il vous présente comme une version simplifiée de son
dimanche habituel. Il avoue avoir fait le croquis assez rapidement, dans le
métro qui l’a conduit jusqu’à vos locaux.
Explications Il commence par se
lever puis effectue deux actions dans
un ordre arbitraire : se doucher et
prendre son petit déjeuner avant de se
laver les dents. Ensuite, il réalise les
plannings de certains de ses pensionnaires avant d’aller faire les courses si
besoin, ou simplement de se détendre.
Arrivé à midi, il prend son repas et
passe l’après midi à faire du sport ou
de la musique, en fonction de ses envies. Il n’a malheureusement pas le
temps de faire les deux. Il prend son
dîner juste après, et finit sa journée
par le visionnage d’un film à la télévision avant d’aller se coucher.
Important Le client vous explique
qu’il veut avoir la possibilité de détailler certaines de ses activités. Par
exemple, l’activité "détente" aurait
pu être décrite comme un choix
entre plusieurs activités, une succession d’activités ou encore diverses activités en parallèle.
Figure 1 – Le croquis du client
3
2
2.1
Analyse Préliminaire
Motivation
Avant de s’engager dans un contrat avec vous, le gérant de la maison de
retraite vous demande de lui présenter un dossier préliminaire contenant un
aperçu des travaux que vous serez en mesure de réaliser. Si le dossier est
concluant, il vous chargera du développement de son projet.
2.2
Mieux comprendre le besoin
D’autres exemples Pour amorcer votre dossier préliminaire, vous décidez
de créer de nouveaux exemples sur lesquels baser vos travaux. Afin de faciliter
la communication avec le client, vous décidez de formater ces exemples de la
même manière que lui. Vous expliquez aussi en quelques mots ce que décrivent
vos nouveaux scénarios d’exemples.
Contraintes informelles De votre compréhension des besoins du client,
vous rédigez en langage naturel des contraintes informelles sur le domaine
étudié (les scénarios). Vous faites figurer ces contraintes dans votre dossier
afin que le client puisse les valider avec vous. Celles-ci doivent uniquement
porter sur les aspects modèle, c’est-à-dire sur votre compréhension des scénarios avec lesquels le client désire travailler.
2.3
Pour aller plus loin
Rendu graphique Le client vous a demandé un moyen élégant d’afficher
les scénarios afin que ses locataires puissent les visualiser convenablement.
Vous décidez de faire figurer dans votre dossier un aperçu de ce que pourra
être la représentation graphique. Cette vue graphique n’est pas définitive
et doit être indépendante de tout outil. Il s’agit ici simplement de montrer
au client le genre d’affichage dont il pourra disposer. En outre, l’exemple
donné par le client est certes présenté de manière graphique, mais votre
représentation graphique proposée n’a pas l’obligation d’y ressembler.
Export HTML Le client veut proposer aux résidents la possibilité de
visualiser dans un navigateur internet une version documentaire textuelle
de leurs scénarios. Vous devez lui proposer donc un export HTML qui lui
permette de réaliser cette fonction. Vous fournissez dans votre dossier une vue
simple qui permet l’affichage documenté des différentes activités composant
un scénario. Elle doit correspondre à ce qu’un navigateur pourra afficher.
4
Syntaxe concrète Vous décidez de ne pas en rester là et de proposer
au client d’autres fonctionnalités auxquelles il n’a pas forcément pensé et
que vous espérez lui être utiles. Dans votre dossier, vous ajoutez donc une
représentation textuelle de la journée du client. Vous lui expliquez qu’il sera
ainsi possible d’éditer de manière textuelle des scénarios afin de simplifier le
travail des résidents.
Requêtes Pour terminer votre dossier préliminaire, vous proposez au client
de réaliser des requêtes sur ses modèles, comme par exemple compter le
nombre d’activités élémentaires effectuées dans la journée. Vous lui proposez
aussi plusieurs autres requêtes de votre choix.
3
3.1
Partie implémentation
Introduction
Quelques jours après avoir remis le dossier préliminaire au client, il décide
de vous confier l’implémentation de son projet (après vous avoir fait part
d’éventuelles modifications à prendre en compte). Satisfait, il désire que vous
commenciez dès à présent pour que la première version puisse être disponible
au plus vite. Après avoir longuement discuté avec votre équipe, vous prenez la
décision d’utiliser les outils fournis par le framework EMF (Eclipse Modelling
Framework) pour réaliser le projet. Il apparaît qu’ils comportent toutes les
caractéristiques nécessaires à la satisfaction des besoins du client.
3.2
Le méta-modèle de domaine
Le méta-modèle Le point d’entrée à l’utilisation des technologies EMF
est la conception d’un méta-modèle. Vous le réalisez en Ecore via l’éditeur
graphique adapté. Celui-ci sera le point d’entrée aux différentes implantations
liées aux besoins du client.
Contraintes additionnelles Le méta-modèle livré au client ne vous convient pas entièrement. Il apparaît que l’expressivité du langage que vous avez
utilisé n’est pas suffisante pour mettre en avant toutes les caractéristiques du
domaine. Vous avez besoin d’autres contraintes, pour garantir par exemple
l’unicité des noms des activités au sein d’un même groupement ou encore
pour limiter l’usage de certains noms que vous jugez non pertinents. Ces
contraintes, ainsi que celles listées dans le dossier préliminaire, sont formalisées en utilisant OCL et plus précisément, OCLinEcore.
5
3.3
Les autres besoins
A partir de votre méta-modèle à présent achevé, vous faites un récapitulatif des technologies dont vous aurez besoin pour poursuivre votre travail :
— La vue graphique (afficheur uniquement) sera réalisée avec Sirius.
— L’export HTML sera mis en place en Acceleo.
— Vous utiliserez Xtext pour définir une syntaxe concrète textuelle.
— Les requêtes se feront en utilisant l’API d’EMF disponible depuis Java.
Le but étant bien sûr de rester le plus proche possible de votre spécification.
3.4
Le consultant technique
Fermeture OCL Vous entrez, au cours de vos travaux, en contact avec
un consultant technique spécialiste des technologies que vous utilisez. Il vous
donne l’indication suivante : "Il existe une opération OCL appelée ’closure’
qui permet de calculer de manière récursive un ensemble d’éléments à partir
d’un objet. Vous trouverez ici les détails liés à cette opération qui pourra
vous être utile dans votre travail : ’http ://modeling-languages.com/closureoperation-added-to-ocl/’. De votre modélisation dépendra l’utilisation (ou
non) de cette primitive dans vos règles OCL."
Container Sirius Selon votre modélisation, le consultant vous explique
qu’il vous faudra peut être utiliser des "containers" pour mener à bien cette
tâche. Les "containers" sont des éléments graphiques intermédiaires permettant à la fois de représenter un objet, mais aussi de contenir d’autres réprésentations. S’il y a des boucles dans la hiérarchie des containers (’A’ qui
contient un élément de type ’A’, qui donc lui-même peut contenir un élément
de type ’A’, etc), il est possible d’importer des mappings existants afin de gérer l’infinité (théorique) des imbrications. Cela se fait dans l’onglet "import"
des propriétés des éléments graphiques. Pour de plus amples informations, le
consultant vous invite à visiter la page suivante :
https ://www.eclipse.org/sirius/doc/specifier/diagrams/Diagrams.html
dans la section ’mapping imports’
Return Xtext Le consultant technique vous informe qu’il est possible de
créer une syntaxe textuelle concrète qui viendra se lier avec le méta-modèle
déjà existant. Pour cela, il faut que chaque règle déclare renvoyer un objet
du méta-modèle. La syntaxe, dans la grammaire, est la suivante : "[nom de
règle] returns [Classe du MM]". Ainsi, vous aurez accès, dans le corps de la
règle, aux affectations d’attributs présents dans la classe précisée en entête.
6
4
Barème
Nous vous proposons ici un barème détaillé pour l’ensemble du projet.
Une petite description accompagne chaque item afin de mieux vous aider
dans votre travail. Attention néanmoins, elle ne correspond pas forcément à
la totalité des aspects qui seront pris en compte.
Nom
Analyse préliminaire
Autres exemples
Contraintes
Rendu graphique
Export HTML
Syntaxe concrète
Requêtes additionnelles
Qualité générale
Implémentation
Méta-modèle
Contraintes OCL
Sirius
Acceleo
Xtext
API EMF
Exemples
Rapport
Soutenance
Description
Exemples pertinents et présentés lisiblement (avec les
explications nécessaires à leur compréhension)
Il contient un ensemble cohérent de contraintes se basant sur l’exemple du client
Un rendu graphique cohérent est présenté
Une vue pouvant résulter de l’affichage d’un fichier
HTML par un navigateur est présentée
Une syntaxe concrète est spécifiée à travers un exemple,
elle contient des mots-clefs et est indentée
Des requêtes additionnelles pertinentes sont proposées
Qualité générale du rapport (forme, orthographe, etc.)
Le méta-modèle Ecore des scénarios
Des contraintes OCL pertinentes sont présentées, qui
doivent, conjointement au méta-modèle, inclure les
contraintes informelles du dossier préliminaire
Une vue graphique développée en Sirius. Elle permet
l’affichage des différents exemples proposés
Un exportateur HTML est fourni, codé en Acceleo.
Une syntaxe concrète, définie dans une grammaire Xtext
permet l’édition de modèle sous forme textuelle.
L’API java EMF est utilisée pour réaliser les requêtes
présentées dans le dossier préliminaire
Pour chaque partie, des exemples pertinents permettront de valider le travail réalisé.
Le rapport est un compte-rendu du travail réalisé. Il
doit être auto-suffisant et contenir les explications nécessaires à la compréhension du travail réalisé.
Les travaux sont présentés à l’oral devant machine de
manière fluide et structurée (donc préparée). L’étudiant
sait répondre aux questions sur ses travaux.
Total
Barème
20 points
3 points
3 points
3 points
3 points
3 points
3 points
2 points
40 points
5 points
5 points
7 points
6 points
7 points
5 points
5 points
20 points
20 points
100 points
7
5
5.1
Informations pratiques
Dates importantes
Date
Mardi 3 novembre 2015
Jeudi 12 novembre 2015 à 14h
Semaine du 16 novembre 2015
Semaine du 7 décembre 2015
Semaine du 11 janvier 2016
Vendredi 15 janvier 2016
Dimanche 17 janvier 2016
Semaine du 18 janvier 2016
5.2
Événement
Remise du Sujet
Rendu dossier préliminaire
Retour des enseignants sur le dossier préliminaire
Premier TP avancement projet
Dernier TP avancement projet
Rendu du rapport
Rendu des travaux d’implémentation
Oral projet
Modalités de rendu
Le dossier préliminaire devra être rendu sur papier. Il devra être remis au
délégué du groupe de TP qui se chargera de récupérer l’ensemble des copies
de son groupe et de les amener à Muriel DE GUIBERT (1er étage bat. F).
Les travaux d’implémentation ainsi que le rapport devront être rendus
via SVN à l’adresse suivante :
http://cregut.svn.enseeiht.fr/2015/2IMA/GLS/$USER
où $USER est votre identifiant ENSEEIHT.
Attention, lorsqu’une date précise de rendu est spécifiée, celle-ci ne doit
pas être dépassée. Tout élément rendu en retard ne sera pas considéré. Nous
prendrons comme référence, pour le SVN, le dernier commit précédant 23h59
du jour de rendu. Vous pouvez faire autant de "commit" que vous voulez,
n’hésitez donc pas à en faire bien avant la date limite !
Les fichiers rendus sur le SVN devront suivre la nomenclature suivante
(une pénalité sera appliquée sur la note dans le cas contraire) :
Ressource
Méta-modèle ecore
Méta-modèle exporté en image
Contraintes OCL
Afficheur Sirius
Exportateur html
Grammaire Xtext
Requêtes java
Exemples édités en xmi
Exemples édités en xtext
Exemples affichés graphiquement
Rapport
Nom
scenario.ecore
scenario.<png/jpg/jpeg>
scenario.OCLInEcore
scenario.design
toHtml.mtl
scenario.xtext
<nomRequete>.java
<nomExemple>.xmi
<nomExemple>.scenario
<nomExemple>.<png/jpg/jpeg>
rapport.pdf
8