Master 1 Informatique
Projet de développement (2 × 5
crédits)
Encadrement : Olivier Ridoux
Le projet de développement de
1ère
année de Master
d'Informatique a pour objectif de mettre les étudiants en situation de
concevoir, développer et présenter un projet informatique, le plus souvent
logiciel. La mise en situation comprend la gestion de la durée
(2 semestres) et du nombre (équipes de 10 à
15 ètudiants).
Les sujets sont proposés par des enseignants et parfois des clients
extérieurs à l'IFSIC.
Les étudiants commencent par une phase d'analyse-expérimentation qui se
conclut par un dossier de développement et parfois des maquettes. Le
dossier de développement comprend un cahier des charges précis, une analyse
fonctionnelle détaillée et un plan de développement. Le second semestre
est consacré au développement selon une démarche adoptée par les étudiants
avec l'encadreur. Le développement peut ne pas suivre le dossier de
développement, mais les écarts devront être constatés et analysés.
L'encadreur n'est pas le chef de projet, mais plutôt le client. Le chef de
projet est un des étudiants. D'autres étudiants assument d'autres
responsabilités selon les besoins : ex. documentation, administration
système, administration des données, tests. L'étudiant-chef de projet est
l'interlocuteur principal de l'encadreur-client. Les étudiants s'organiser
eux-mêmes, éventuellement en demandant conseil à l'encadreur. Par exemple,
certains adoptent un règlement intérieur.
L'évaluation est individuelle autant que faire se peut. L'évaluation tient
compte des résultats, des moyens mis en oeuvre pour les obtenir et de la
qualité de la communication sur ces résultats. Elle se fait d'abord
globalement, puis individuellement en tenant compte des écarts
d'investissement de chacun.
Je propose régulièrement des sujets de projet. Souvent, je les propose
plusieurs années de suites. Les étudiants sont alors invités à travailler
sur la base des travaux de leurs prédécesseurs. Un critère de qualité est
alors de conduire le projet plus loin que l'année d'avant.
En 2005-2006, j'ai proposé un projet sur l'animation d'algorithme, qui est
reconduit en 2006-2007. Auparavant, j'avais proposé des projets sur la
synthèse d'emplois du temps, les systèmes de
fichiers logiques, l'analyse de la langue naturelle, etc.
Le projet AnimAlgo
La compréhension des algorithmes est un problème qui se pose à l'étudiant
en informatique (comprendre), mais aussi à l'enseignant d'algorithmes
(faire comprendre), et encore au concepteur d'algorithme (explorer, valider
et aussi comprendre). Ce problème est complexe car il demande de mettre en
relation un objet fini et statique, le texte de l'algorithme, et un objet
infini et tout autant statique, la fonction réalisée par l'algorithme. Une
démarche courante est de mettre en relation l'objet statique algorithme et
l'objet dynamique qui est la trace de son exécution, puis de déduire des
traces les invariants du programme. C'est une démarche
inductive proche du test, car elle demande de généraliser un nombre fini
d'observations en une loi générale. L'objectif du projet AnimAlgo est de
faciliter cette démarche. Il s'agit donc d'une aide à l'algorithmique
expérimentale par l'usage d'un système qui automatise le plus possible ce
qui peut l'être. Nous verrons que cette démarche ne s'oppose pas à une
démarche déductive, dans le style des logiques de programmes.
Plus précisément, l'objectif général de ce projet est de concevoir et
développer un système interactif d'animation d'algorithmes, qui permette à
un utilisateur de
saisir un algorithme, ou en sélectionner
un dans une base de donnée, et
éventuellement le modifier,
décrire la façon de l'animer (quelles
variables afficher ? comment ? ...),
décrire des entrées (constantes,
sélections aléatoires, ...),
l'animer (marche avant, arrière,
pas-à-pas, défilement plus ou moins rapide, ...),
stocker l'algorithme ou son animation
dans une base de donnée,
utiliser une animation toute prête, ou en
modifier une.
Le projet proposé en 2006-2007 fait suite à un projet de 2005-2006 qui
avait le même objectif. Cependant, dans sa première version le projet
AnimAlgo avait son objectif bridé de façon à pouvoir traiter toutes les
facettes du projet, mais au prix de fortes limitations dans l'expressivité
du langage de description d'algorithmes et dans la gestion des
utilisateurs. Grâce à ces limitations le projet 2005-2006 a pu faire avec
succès la démonstration des différents services rendus et de leur
intégration.
L'objectif particulier du projet 2006-2007 est donc de dépasser ces
limitations en s'appuyant le plus possible sur l'existant. Plus
précisément, le projet 2006-2007
devra permettre tout ou partie de
les définitions d'algorithmes récursifs,
les définitions d'algorithmes
multi-processus,
des animations qui rendent compte du
temps passé dans les différentes parties de l'algorithme
(chronogramme, ...),
un stockage qui rende compte des
différentes exécutions d'un même algorithme (courbes de complexité, ...),
l'identification et l'authentification
des utilisateurs dans des rôles distincts (administrateur, étudiant,
enseignant, ...),
l'insertion d'assertions dans les
algorithmes, et leur vérification lors de l'animation. C'est ici que la
démarche
inductive de l'animation rejoint la démarche déductive de logique de
programme.
Le système devra pouvoir être déployé sur un serveur de l'IFSIC et être
utilisable par le plus grand nombre.
Le projet AnimAlgo comporte des facettes d'application Web (serveur,
applet, base de données, ...), des facettes d'interface graphique
(interface utilisateur, animation, ...), des aspects langages (compilation
et interpétation d'un langage d'algorithmes), et des aspects systèmes
(synchronisation des différents composents, gestion des ressources
partagées, ...).
Le projet fonctionnera selon un cycle de vie itératif, qui enchaînera
répétitivement des phases d'analyse et de spécification, de développement
et de validation.