mirror of
https://github.com/LucasVbr/interpreteur-lir.git
synced 2026-05-13 17:21:52 +00:00
741 lines
40 KiB
TeX
741 lines
40 KiB
TeX
\documentclass[12pt,a4paper,titlepage,openany, oneside]{report}
|
||
\usepackage[utf8]{inputenc}
|
||
\usepackage[T1]{fontenc}
|
||
\usepackage[french]{babel}
|
||
\usepackage[top=1.5cm, bottom=4cm]{geometry}
|
||
\usepackage{fancyhdr, graphicx, array, hyperref}
|
||
\usepackage{glossaries}
|
||
%\usepackage[onehalfspacing]{setspace}
|
||
%\usepackage{pdfpages}
|
||
|
||
\pagestyle{fancy}
|
||
|
||
\title{\textsc{\textbf{Plan projet\\Interpréteur du langage LIR}}}
|
||
\date{}
|
||
\author{Nicolas \textsc{Caminade} \and Sylvan \textsc{Courtiol} \and
|
||
Pierre \textsc{Debas} \and Heïa \textsc{Dexter} \and Lucàs
|
||
\textsc{Vabre} }
|
||
\begin{document}
|
||
\lhead{\leftmark}
|
||
\rhead{
|
||
\includegraphics[width=2cm]{img/logoiut}
|
||
}
|
||
|
||
\cfoot{\thepage}
|
||
\headheight = 2cm
|
||
\headsep = 0.5cm
|
||
|
||
\begin{titlepage}
|
||
\fontfamily{pag}\selectfont
|
||
|
||
\begin{center}\normalsize
|
||
\MakeUppercase{IUT de Rodez \hfill Département informatique
|
||
\hfill INFO1 2020-2021}
|
||
\end{center}
|
||
\vspace*{0.1cm}
|
||
\hrule
|
||
\vspace*{0.2cm}
|
||
\begin{flushright}
|
||
\includegraphics[width=4cm]{img/logoiut}
|
||
\end{flushright}
|
||
\vspace*{2cm}
|
||
\begin{flushright}\Huge
|
||
\textsc{\textbf{Plan projet\\Interpréteur du langage LIR}}
|
||
\end{flushright}
|
||
\hrule
|
||
\begin{flushleft}
|
||
\MakeUppercase{Projet proposé par Frédérique Barrios}
|
||
\end{flushleft}
|
||
\vspace*{2cm}
|
||
\begin{center}\Large
|
||
Nicolas \textsc{Caminade}, Sylvan \textsc{Courtiol},\\
|
||
Pierre \textsc{Debas}, Heïa \textsc{Dexter}, \\
|
||
Lucàs \textsc{Vabre}
|
||
\end{center}
|
||
\vfill
|
||
\begin{center}\normalsize
|
||
\MakeUppercase{Projet tuteuré --- Semestre 2}
|
||
\end{center}
|
||
\end{titlepage}
|
||
|
||
\renewcommand\rmdefault{pag}
|
||
\fontfamily{pag}\selectfont
|
||
\renewcommand{\sfdefault}{pag}
|
||
|
||
% Sommaire
|
||
\renewcommand{\contentsname}{Sommaire}
|
||
\tableofcontents
|
||
|
||
\part{Plan projet}
|
||
|
||
\chapter*{Introduction}
|
||
\addcontentsline{toc}{chapter}{Introduction}
|
||
\Large
|
||
Dans le cadre des projets tuteuré du semestre 2 de première année de
|
||
DUT informatique de l’année 2020-2021, le sujet de l’Interpréteur LIR
|
||
a été proposé par F. Barrios, un des enseignants de l’IUT de Rodez.
|
||
\\Ce document a pour but de rassembler les informations fondamentales
|
||
relatives à la gestion du projet. Ce plan projet est un document de
|
||
référence du projet qui sera complété tout au long de son avancement.
|
||
|
||
\normalsize
|
||
\chapter{Présentation du projet}
|
||
\section{Définition générale du besoin : l'Interpréteur LIR}
|
||
L’Interpréteur LIR est un interpréteur d’un langage de programmation
|
||
simple, il sera nommé LIR pour Langage IUT de Rodez.
|
||
Un interpréteur est un automate enchaînant les tâches suivantes :
|
||
analyse lexico-syntaxique d’une ligne de commande puis interprétation.
|
||
\\Une ligne entrée par un utilisateur sera donc : soit une commande à
|
||
exécuter immédiatement, soit une ligne de programme à mémoriser pour
|
||
une exécution ultérieure. Une ligne de programme se distinguera d'une
|
||
ligne de commande par le fait qu'elle sera toujours précédée d'un
|
||
"numéro d'ordre" appelé aussi "étiquette".
|
||
|
||
\section{Cahier des charges}
|
||
Le document en annexe fourni par la maîtrise d’ouvrage (MOA) définit
|
||
l’interpréteur attendu avec les éléments du Langage IUT de Rodez, la
|
||
syntaxe des instructions de programmation et des commandes générales
|
||
attendues dans le logiciel final. Le document précise également le
|
||
comportement attendu de l’interpréteur lors de son utilisation suivi
|
||
d’un exemple d’une session sous cet interpréteur LIR.
|
||
|
||
\section{Définitions et acronymes}
|
||
\paragraph{Analyse syntaxique :}
|
||
La vérification de la conformité aux contraintes syntaxiques
|
||
définies par une grammaire.
|
||
|
||
\paragraph{Analyse lexicale :}
|
||
L’identification des éléments du vocabulaire d’un langage dans
|
||
une description textuelle (scanning) et la recherche des unités
|
||
lexicales (lexèmes).
|
||
|
||
\paragraph{Grammaire :}
|
||
Contraintes syntaxiques définissant les constructions correctes
|
||
(autorisées) d’un langage.
|
||
|
||
\paragraph{Interpréteur :}
|
||
Programme capable d’analyser les instructions d’un langage
|
||
(évolué) et de les exécuter directement.
|
||
|
||
\paragraph{Langage :}
|
||
Outil de description et d’expression.
|
||
|
||
\paragraph{Langage IUT de Rodez (LIR)}
|
||
|
||
\paragraph{Sémantique :}
|
||
Étude du sens des unités linguistiques et de leurs combinaisons.
|
||
\\Aspect de la logique qui traite de l'interprétation et de la
|
||
signification des systèmes formels, par opposition à la syntaxe, entendue
|
||
comme l'étude des relations formelles entre formules de tels systèmes
|
||
(d’après le dictionnaire Larousse).
|
||
|
||
\paragraph{Syntaxe :}
|
||
Partie de la grammaire qui décrit les règles par lesquelles les unités
|
||
linguistiques se combinent en phrases. En logique, étude des relations
|
||
formelles entre expressions d'un langage (d’après le dictionnaire
|
||
Larousse).
|
||
\\Aussi, la syntaxe est spécifiée par des grammaires et des notations
|
||
formelles.
|
||
|
||
\paragraph{Vocabulaire :}
|
||
Symboles de base utilisés dans un langage.
|
||
|
||
\section{Charte de projet}
|
||
\subsection{Objectifs du projet}
|
||
Réaliser un interpréteur capable d'exécuter un script ou une série
|
||
d'instructions dans le langage LIR avec les outils et connaissances
|
||
et mis à disposition par l’IUT de Rodez.
|
||
|
||
\subsection{Périmètre du projet}
|
||
Ce projet est doit être mené jusqu'à obtention d’un interpréteur
|
||
capable d’exécuter toutes les commandes précisées dans le cahier des
|
||
charges fourni.
|
||
|
||
\subsection{Demandes hors périmètre}
|
||
Il n’y a pas de demandes hors périmètre.
|
||
|
||
\subsection{Principaux livrables identifiés}
|
||
\paragraph{Livrables :} plan projet, dossier de projet, CD (de
|
||
préférence un dossier compressé plutôt qu’un CD) contenant les codes
|
||
exécutables les fichiers de données, les codes sources et la version
|
||
numérique du dossier et le manuel utilisateur.
|
||
|
||
\paragraph{Définition du cadre}
|
||
\subparagraph{Coût :} À définir par le chef de projet (P. Debas).
|
||
\subparagraph{Délais :} Deux dates butoirs identifiées.
|
||
\begin{itemize}
|
||
\item Remise du projet le vendredi 28 mai 2021.
|
||
\item Soutenance du projet la semaine du 7 juin 2021.
|
||
\end{itemize}
|
||
|
||
\subparagraph{Qualité :}
|
||
Projet codé en Java dans les respects des conventions et bonnes
|
||
pratiques.
|
||
|
||
\subsection{Les acteurs du projet}
|
||
|
||
\begin{center}
|
||
\begin{tabular}{rl}
|
||
L'équipe MOE : & N. CAMINADE, S. COURTIOL, \\
|
||
& P. DEBAS, H. DEXTER, \\
|
||
& L. VABRE \\
|
||
La MOA : & F. Barrios \\
|
||
Le contrôle qualité : & F. Barrios et J. Accot \\
|
||
\end{tabular}
|
||
\end{center}
|
||
|
||
\subsection{Autres moyens et ressources}
|
||
Pas de moyens ou ressources supplémentaires.
|
||
|
||
\subsection{Conditions d’acceptation}
|
||
Pas d’exigence ou de contraintes supplémentaires.
|
||
|
||
\subsection{Principaux risques identifiés et politique de gestion des risques}
|
||
Si possible tous les membres du groupe auront les mêmes droits sur
|
||
les fichiers communs. En conséquence chaque membre du groupe ne doit
|
||
pas donner des droits sur ces fichiers à une personne extérieure au
|
||
projet (autre que MOA). Cf. Gestion de la configuration (produit par
|
||
S. Courtiol).
|
||
\\Des sauvegardes du dépôt GitHub (contenant toutes les données du
|
||
projets) seront effectuées régulièrement (fréquence à définir) par le
|
||
gestionnaire de configuration. Toutes données qui ne sont pas dans le
|
||
dépôt sont à la responsabilité de chacun. Cf. Gestion de la
|
||
configuration (produit par S. Courtiol).
|
||
|
||
\section{Étude générale du besoin}
|
||
\paragraph{Diagramme de cas d'utilisation général de l'Interpréteur LIR}
|
||
comprenant un acteur (le programmeur) et deux cas d'utilisation
|
||
identifiés comme suit :
|
||
\\
|
||
|
||
\includegraphics[width=\linewidth]{img/DiagrammeCasUtilisation.png}
|
||
|
||
\subsection{Les acteurs}
|
||
\paragraph{Programmeur :} % TODO à détailler
|
||
Personne utilisant l'interpréteur.
|
||
|
||
\subsection{Résumés de cas d'utilisation}
|
||
\subsubsection{\Large --- Exécuter une commande}
|
||
|
||
\input{./fichiers/etudeGeneraleBesoin/resumeCasUtilisation/resumeExecuterUneCommande.tex}
|
||
|
||
\subsubsection{\Large --- Éditer une ligne de code}
|
||
|
||
\input{./fichiers/etudeGeneraleBesoin/resumeCasUtilisation/resumeEditerUnProgramme.tex}
|
||
|
||
\subsection{Récits d'utilisation (user stories)}
|
||
Les récits d'utilisation %TODO déf
|
||
\\Des récits d'utilisation ont été rédigés pour chaque commande et instruction.
|
||
|
||
|
||
\chapter{Organisation du projet}
|
||
\section{Présentation du cycle de vie itératif} % TODO relecture
|
||
Pour développer l’Interpréteur LIR, le modèle de cycle de vie itératif a été
|
||
choisi. Ce modèle de développement de logiciel consiste en une succession de
|
||
cycles de spécification, de conception, de réalisation et de tests, le but
|
||
est d’enrichir et de « remodeler » des prototypes du logiciel successifs. Par
|
||
conséquent, une version du logiciel sera un « dernier prototype ».
|
||
\\La gestion du risque va entraîner la mise en place d’un noyau architectural
|
||
avec des fonctions indispensables du logiciel dès les deux premières
|
||
itérations. Les itérations suivantes apporteront des corrections et de
|
||
nouvelles fonctions au logiciel.
|
||
\\Les versions successives des prototypes permettent de matérialiser
|
||
l’avancement et d’éviter « l’effet tunnel » sur le projet. Ces prototypes
|
||
(versions 0.x) entretiennent la motivation des différents acteurs du projet :
|
||
l’équipe MOE, la MOA.
|
||
\\Le principe fondamental à chaque début d’itération est de ne spécifier en
|
||
détail que les fonctionnalités nécessaires pour cette itération. Ainsi la
|
||
prise en compte d’évolutions du besoin reste possible jusqu'à la dernière
|
||
itération. De même le « refactoring » de la conception (largement facilité
|
||
par les outils) a lieu à chaque étape pour intégrer des évolutions et des
|
||
ajouts. Le but étant bien sûr de fabriquer le logiciel adapté au besoin en
|
||
laissant la possibilité de « mûrir » au cours du temps.
|
||
\\Ce type de cycle implique une taille homogène de l’équipe et une
|
||
polyvalence des équipiers.
|
||
|
||
\section{Répartition des rôles}
|
||
Rôles des membres de l’équipe impliqués dans le projet jusqu'au mois de mai
|
||
2021 :
|
||
\begin{center}
|
||
\begin{tabular}{rl}
|
||
Chef de projet MOE & Pierre Debas \\
|
||
Secrétaire de projet & Heïa Dexter \\
|
||
Gestionnaire de configuration & Sylvan Courtiol \\
|
||
Développeur & Nicolas Caminade \\
|
||
Développeur & Lucàs Vabre \\
|
||
\end{tabular}
|
||
\end{center}
|
||
|
||
\section{Plan communication}
|
||
\subsection{Localisation géographique des intervenants}
|
||
L'équipe MOE, la MOA et les contrôleurs qualités sont basés sur Rodez (12).
|
||
\\La MOA, les contrôleurs qualités, H. Dexter sont basés sur Rodez (12), S.
|
||
Courtiol sur Luc-La-Primaube à côté de Rodez (12), P. Debas est basé à la
|
||
fois sur Rodez et à Albi (81), L. Vabre sur Gages (12) et N. Caminade sur
|
||
Rodez et Moncaut (47).
|
||
|
||
\subsection{Moyens de communication utilisés}
|
||
Les communications formelles sont effectuées via les mails de l’IUT
|
||
(généralement par le chef de projet) avec les autres membres du projet en CC.
|
||
\\Serveur Discord spécifique au projet pour communication écrite ou vocale de
|
||
la MOE.
|
||
\\Cf. le document Configuration interpréteur du langage LIR produit par le
|
||
gestionnaire de configuration (S. Courtiol).
|
||
|
||
\subsection{Réunions projets MOE}
|
||
Les réunions projet MOE seront hebdomadaires voire bi-hebdomadaires et dans
|
||
le contexte de la crise sanitaire elles se dérouleront en distanciel via
|
||
Discord (vocal, visio-conférence). Seront prévue des réunions courtes de 20
|
||
minutes et des réunions longues de 1h30.
|
||
\\Ces réunions auront pour objectif de faire le point sur l’avancement du
|
||
projet, le respect des objectifs fixé sur la période et de fixer les
|
||
prochains objectifs à remplir d’ici la prochaine réunions. Aussi ces réunions
|
||
seront l’occasion de faire part de difficultés éventuelles rencontrées par
|
||
les membres de l’équipe au cours de la semaine et de communiquer les
|
||
informations sur les prochaines rencontres avec la MOA.
|
||
\\Les comptes-rendus seront rédigés par la secrétaire de projet (H. Dexter)
|
||
et diffusés sur le serveur Discord de l’équipe sous format texte.
|
||
|
||
\subsection{Comités de Pilotage}
|
||
Les comités de pilotage rassembleront la MOA et toute l’équipe de MOE. Les
|
||
COPIL seront dirigé par le chef de projet éventuellement assisté par le
|
||
secrétaire.
|
||
\\La fréquence des COPIL est au mieux hebdomadaire et d’une durée d’une
|
||
demi-heure à trois quarts d’heure selon l’avancement du projet.
|
||
Les comptes-rendus des COPIL seront rédigés par l’actuelle secrétaire de
|
||
projet (H. Dexter) et diffusés le lendemain à la MOE du projet.
|
||
|
||
|
||
\section{Assurance qualité}
|
||
\subsection{Normes et standards de travail à observer (formalisme de modélisation, méthodes de contrôle, méthodes de développement, cycle de vie, conventions de code…)}
|
||
Pour mener à bien ce projet l'équipe MOE travaille
|
||
en utilisant le langage UML comme formalisme de modélisation, la méthode de
|
||
développement dirigé par les tests i.e. la méthode TDD (Test Driven
|
||
Development) en respectant les Java Code Convention pour un modèle de cycle
|
||
de vie itératif.
|
||
|
||
%\subsection{Manuel qualité et démarche qualité à observer (suivant la politique qualité de l’organisation), suivi et contrôle qualité (organisation, fréquence, participants).}
|
||
% TODO: À commencer
|
||
|
||
|
||
\section{Ressources matérielles et logicielles}
|
||
La partie qui suit est un résumé du document de gestion de la configuration joint
|
||
au dossier technique. Merci de vous y référer pour plus de détails.
|
||
|
||
La conception en langage UML sera effectuée sous Modelio. La rédaction des
|
||
différents documents du dossier sera faite en utilisant \LaTeX. Nous utiliserons
|
||
Eclipse configuré avec un \emph{workspace} similaire à celui utilisé lors de nos
|
||
cours de programmation. Les dépôts en ligne et le contrôle de l'historique des
|
||
versions seront assurées par Git, plus précisément via GitHub. L'avancement sera
|
||
contrôlé sur un tableau Trello. Enfin, la communication sera assurée via un
|
||
serveur Discord dédié ou Google Meet pour les visio-conférences.
|
||
|
||
\chapter{Pilotage du projet}
|
||
\section{Cycle de vie itératif}
|
||
Pour développer l’Interpréteur LIR, le modèle de cycle de vie itératif a été
|
||
choisi. Ce modèle de développement de logiciel, rappelons-le, consiste en une
|
||
succession de cycles de spécification, de conception, de réalisation et de
|
||
tests, le but est d’enrichir et de « remodeler » des prototypes du logiciel
|
||
successifs. Par conséquent, une version du logiciel sera un « dernier
|
||
prototype ».
|
||
\\Si le choix de modèle de cycle de vie s'est porté sur le modèle itératif,
|
||
c'est parce qu'il s'agit d'un modèle "réaliste" et possible à mettre en place
|
||
dans le cadre des projets tuteurés :
|
||
|
||
\begin{itemize}
|
||
\item Une limitation de "l'effet tunnel" pour une meilleure dynamique et motivation des équipes (MOA et MOE).
|
||
\item Une meilleure acceptation des changements grâce aux prototypes.
|
||
\item Une meilleure gestion des risques.
|
||
\item Est adapté pour une équipe de cinq personnes polyvalentes.
|
||
\item Le principe d'itérations où seules les fonctionnalités nécessaires sont spécifiées en détail en début d'itération ce qui permet une évolution du besoin.
|
||
\end{itemize}
|
||
|
||
\section{Estimation initiale}
|
||
En se focalisant sur un développement de type Organic d'une taille attendue
|
||
de 2000 lignes de code (2KLOC), le projet nécessite de base un effort de 4,97
|
||
mois.homme répartis sur une durée de 4.60 mois. Cette estimation se base sur
|
||
une équipe d'un seul développeur.
|
||
|
||
\'{E}tant donné que notre équipe se constitue de 5 personnes, il nous suffit
|
||
d'adapter cette estimation en divisant l'effort par le nombre de membres. Nous
|
||
obtenons ainsi un effort de 0, 99 mois de 20 jours. Notre contexte de travail
|
||
étant toutefois différent de celui d'une entreprise (pas d'horaires fixes,
|
||
travail les jours fériés,...), il nous a paru plus judicieux de convertir
|
||
notre estimation vers un format plus réaliste.
|
||
|
||
En considérant une durée de deux heures par journée de travail par personne,
|
||
nous arrivons à un total de 10 heures quotidiennes, soit un total de
|
||
200 heures hebdomadaires. Nous conservons la durée de 20 jours par mois pour
|
||
pallier les indisponibilités de chacun. La durée totale du projet est donc
|
||
estimée à 0,99 mois ou 200 heures de travail total, soit 40 heures.homme.
|
||
|
||
\section{Planification prévisionnelle initiale}
|
||
Le développement de l'interpréteur LIR suivant un cycle de vie itératif,
|
||
nous agréé avec la MOA de trois itérations, avec à l'issue de chacune la
|
||
livraison d'un prototype fonctionnel ou, dans le cas de la dernière itération,
|
||
du programme complet.
|
||
|
||
Pour la première itération, nous avons convenu de livrer un prototype
|
||
incluant les mécanismes de base du fonctionnement des commandes et instructions.
|
||
Cette première mouture de l'interpréteur Doit être en mesure d'analyser son
|
||
entrée standard, d'affecter des variables de type chaîne à son contexte
|
||
d'exécution et de reconnaître les expressions sur les chaînes de caractères.
|
||
Le contexte pourra être réinitialisé.
|
||
Enfin, ce prototype devra afficher les variables déclarées, afficher le
|
||
résultat d'une expression de type chaîne, et être en mesure
|
||
mettre fin à la session.
|
||
|
||
Lors de la seconde itération, notre prototype devra, en plus des fonctionnalités
|
||
sus-mentionnées, incorporer l'affectation de variables de type entier
|
||
et l'arithmétique entière sur les expressions. L'interpréteur, à ce stade du
|
||
développement, devra être en mesure de reconnaître des étiquettes de ligne de
|
||
code et garder en mémoire centrale un programme pour pouvoir ensuite l'afficher ou
|
||
l'exécuter. Il doit également être en mesure de supprimer des lignes de code dans
|
||
le programme global. Il sera également possible à l'utilisateur de saisir puis
|
||
d'affecter la valeur d'une variable via l'entrée standard ou d'effectuer des sauts
|
||
non-conditionnels dans un programme.
|
||
|
||
Enfin, le programme final de la troisième itération pourra lire et écrire des
|
||
programmes vers et depuis des fichiers. Il sera possible au programmeur d'effectuer
|
||
des sauts conditionnels. Seront livrés avec ce prototype final ce plan de projet
|
||
complété, ainsi que le manuel d'utilisateur de l'interpréteur LIR. Le prototype
|
||
final devra pouvoir être lancé à partir d'un fichier exécutable.
|
||
|
||
\section{Durée et ordonnancement des principales tâches et itérations}
|
||
Afin d'avoir un interpréteur LIR fonctionnel, nous avons identifié un jeu de
|
||
tâches critiques devant être remplies à chaque itération. Ainsi, pour la
|
||
présentation du premier prototype, devront être implémentés et testés les
|
||
littéraux, les identificateurs, les variables, le contexte d'exécution, les
|
||
commandes et instructions, et l'analyseur lexicale.
|
||
|
||
Lors de la deuxième itération, devront être traités en priorité la gestion des
|
||
étiquettes et l'implémentation de programmes à stocker en mémoire. Enfin,
|
||
l'analyseur devra prendre en compte cette nouvelle fonctionnalité et référencer
|
||
le programme global de la session.
|
||
|
||
Pour finir, la troisième itération consistera à rajouter la possibilité au
|
||
programmeur d'effectuer des sauts conditionnels. Pour ce faire, les conditions
|
||
devront être traitées sous la forme d'une expression booléenne simple. Cela
|
||
implique donc la création d'un littéral de type booléen, non accessible directement
|
||
au programmeur dans cette version de l'interpréteur (le programmeur ne pourra donc
|
||
pas créer de variable de type Booléen). La troisième itération se terminera par
|
||
la revue du code et des jeux de tests, l'édition du manuel utilisateur, ainsi que
|
||
la complétion du dossier technique.
|
||
|
||
\section{Identification des premiers jalons}
|
||
Chacun des prototypes de l'interpréteur LIR devant être livré à l'issue de chaque
|
||
itération, nous pouvons donc en déduire les premiers jalons ci-dessous. La date de
|
||
soutenance du projet, quand à elle, nous sera précisée à une date ultérieure à
|
||
la rédaction de ce plan. Nous ne pouvons donc en donner qu'une estimation.
|
||
|
||
\begin{itemize}
|
||
\item Premier entretien MOA / MOE et lancement du projet :
|
||
jeudi 8 avril
|
||
\item Livraison du premier prototype : lundi 10 mai
|
||
\item Livraison du deuxième prototype : mercredi 19 mai
|
||
\item Livraison du prototype final : Vendredi 28 mai
|
||
\item Soutenance du projet : entre le 9 et je 11 juin
|
||
\end{itemize}
|
||
|
||
\section{Calendrier prévisionnel}
|
||
\`{A} partir des dates citées plus haut, nous pouvons donc en déduire le
|
||
calendrier prévisionnel suivant. Les comités de pilotage ont été convenus avec
|
||
la maîtrise d'ouvrage afin de conserver un suivi le plus régulier possible sur
|
||
l'avancement du développement.
|
||
\begin{itemize}
|
||
\item Première itération : du 3 au 10 mai
|
||
\item Deuxième itération : du 11 au 19 mai
|
||
\item Comité de pilotage : mardi 18 mai
|
||
\item Troisième itération : du 20 au 28 mai
|
||
\item Comité de pilotage : mercredi 26 mai
|
||
\item Remise du dossier technique : mardi 8 juin
|
||
\end{itemize}
|
||
|
||
\section{Organisation des réunions projets et comités de pilotage}
|
||
Comme mentionné, les comités de pilotage se tiennent entre deux livraisons
|
||
afin de faire le point sur l'avancement de l'itération. Compte tenu des restrictions
|
||
sanitaires imposées au cours de la crise due à la Covid-19, nous devrons adapter
|
||
ces réunions aux modalités de présence imposées par l'IUT de Rodez. Selon la
|
||
semaine, certains membres de l'équipe devront y assister en visio-conférence.
|
||
|
||
Les réunions de projet, quand à elles, se tiennent à chaque fois qu'un ensemble de
|
||
tâches est complété pour mettre en commun le travail effectué et faire le point sur
|
||
les difficultés techniques rencontrées et la répartition des ressources sur les
|
||
tâches restantes (nous privilégions en effet le travail en binôme et faisons en
|
||
sorte que chaque membre de l'équipe ait l'occasion de travailler au moins une fois
|
||
avec tous les autres).
|
||
|
||
\section{Suivi du projet pour la première itération}
|
||
|
||
\subsection{Planification et ordonnancement des tâches}
|
||
Au tâches déjà spécifiées dans la section \hyperref{Durée et ordonnancement des principales tâches et itérations}, nous souhaiterions ajouter quelques
|
||
fonctionnalités de base de l'interpréteur LIR. La planification de cette itération
|
||
comprend donc l'implémentation et le test des commandes \verb|defs|, \verb|debut|
|
||
et \verb|fin|, ainsi que des instructions \verb|affiche| et \verb|var|.
|
||
|
||
Ce premier prototype fonctionnera uniquement avec des données de type chaîne
|
||
de caractère. Cela implique donc l'ajout d'identificateurs, de constantes
|
||
littérales et d'expressions correspondants.
|
||
|
||
\includegraphics[scale=0.75]{fichiers/planification/iteration1/iteration1Planif.png}
|
||
|
||
Le diagramme de planification de l'itération 1 suggère un total de 27 heures de
|
||
travail, soit l'équivalent de 10 jours.homme. En raison du nombre limité de
|
||
ressources de travail, toutes les tâches, notamment les instructions et commandes,
|
||
ne pourront être réalisées en concomitance. Certaines devront donc se voir
|
||
repousser le temps qu'un binôme se libère.
|
||
|
||
|
||
|
||
\subsection{Suivi d’avancement et mesure des écarts par rapport au prévisionnel}
|
||
|
||
\includegraphics[scale=0.75]{fichiers/planification/iteration1/iteration1Avancement.png}
|
||
|
||
\`{A} l'issue de cette première itération, nous constatons un volume de travail
|
||
total de 35 heures, soit 8 heures ou 4 jours.homme de plus que ce qui était
|
||
estimé. Cet écart s'explique d'une part dans une estimation trop optimiste de la
|
||
durée des tests unitaires d'une part et un manque d'habitude à travailler en
|
||
binôme d'autre part. Cette itération portant sur des aspect structurels importants
|
||
de l'interpréteur, il nous sera plus aisé à l'avenir de rajouter les commandes
|
||
et instructions.
|
||
|
||
% \subsection{Synthèse par "tableau de bord"}
|
||
|
||
\subsection{Résultats des tests et recette de prototype de la période}
|
||
|
||
% \subsection{Résultats des revues/suivis/contrôles qualité de la période}
|
||
|
||
\subsection{Identification des principaux écarts et problèmes constatés, solutions possibles}
|
||
\`{A} l'issue de cette première période, nous avons pu livrer un prototype
|
||
fonctionnel et ce malgré des difficultés liées à la conception. En revanche,
|
||
l'instruction \verb|affiche|, initialement prévue pour cette itération, n'a
|
||
pas été implémentée, faute de temps et de ressources disponibles, et a donc été
|
||
reportée à l'itération suivante. Cette instruction n'étant pas critique pour
|
||
le fonctionnement de l'application, nous pouvons donc considérer la gravité
|
||
de ce retard comme minime.
|
||
|
||
\subsection{Propositions de modification de la planification prévisionnelle pour tenir compte des corrections à apporter}
|
||
Afin de tenir compte de ce léger retard, nous rajouterons l'implémentation de
|
||
l'instruction \verb|affiche| aux tâches à réaliser pour la prochaine itération.
|
||
En plus des programmes, et l'adaptation de l'analyseur à interagir avec, nous en
|
||
profiterons pour implémenter un maximum de fonctionnalités, ce qui nous permettra
|
||
de rattraper le léger retard pris sur la planification originelle.
|
||
|
||
Nous laisserons toutefois l'instruction \verb|si..vaen| et les expressions
|
||
conditionnelles qu'elle utilise de côté. En effet, ces dernières nécessiteront
|
||
probablement un \emph{refactoring} de la classe Expression et de ses dérivées.
|
||
|
||
\includegraphics[scale=0.75]{fichiers/planification/iteration2/iteration2Planif.png}
|
||
|
||
En suivant la planification ci-dessus, la deuxième itération devrait donc occuper
|
||
un total de 26 heures de travail, soit une durée similaire à la précédente.
|
||
L'objectif du prochain prototype sera de rajouter la majorité des fonctionnalités
|
||
de l'interpréteur LIR, dont notamment l'arithmétique entière et toute la partie
|
||
d'édition et d'exécution de programmes.
|
||
|
||
\subsection{Comptes-rendus des réunions projets de la période}
|
||
Voir
|
||
\begin{itemize}
|
||
\item Compte rendu de la réunion MOE du 15 avril
|
||
\item Compte rendu de la réunion MOE du 19 avril
|
||
\item Compte rendu de la réunion MOE du 22 avril
|
||
\item Compte rendu de la réunion MOE du 26 avril
|
||
\end{itemize}
|
||
|
||
\subsection{Compte-rendu du comité de pilotage de la période}
|
||
Voir
|
||
\begin{itemize}
|
||
\item Compte rendu de la réunion MOA du 4 mai
|
||
\item Compte rendu de la réunion MOA du 10 mai
|
||
\end{itemize}
|
||
|
||
\subsection{Planification prévisionnelle révisée pour les périodes suivantes (en fonction des décisions prises)}
|
||
Exception faite de l'ajout de \verb|affiche|, la planification de la
|
||
deuxième itération ne dévie pas de l'ordonnancement initial. Elle a donc
|
||
été entérinée à l'unanimité.
|
||
|
||
\section{Suivi du projet pour la seconde itération}
|
||
|
||
\subsection{Suivi d’avancement et mesure des écarts par rapport au prévisionnel revu lors de la période précédente}
|
||
|
||
\includegraphics[scale=0.75]{fichiers/planification/iteration2/iteration2Avancement.png}
|
||
|
||
Au total, la seconde itération aura englobé un temps de travail total de 30,5 heures,
|
||
soit 4,5 heures ou 2,25 jours.homme de retard par rapport à la planification initiale. Ce
|
||
retard s'explique dans des difficultés à gérer les dépendances avec la classe Programme
|
||
et à écrire des tests concluants. Les instructions \verb|lance| et \verb|liste| sont
|
||
celles nous ayant posé le plus de problèmes.
|
||
|
||
Nous pouvons également remarquer, à travers ce graphe, l'étalement dans le temps
|
||
des tâches comparé à la planification précédente. Cela est dû à un inconvénient du
|
||
travail en binôme. En effet, le nombre de membres de notre équipe étant fini, il nous
|
||
a fallu par moments attendre que certains se libèrent d'une tâche pour entamer la
|
||
suivante.
|
||
|
||
En entreprise, cet inconvénient est en général mitigé par la quotité horaire
|
||
fixe et convenue dans le contrat de travail. Dans le cadre d'un travail étudiant, nous
|
||
avons aussi dû jouer avec les disponibilités de chacun, en plus des contraintes
|
||
imposées par le travail à deux. En dépit de ces facteurs, nous n'avons aucun écart
|
||
majeur à déplorer dans notre ordonnancement.
|
||
|
||
%\subsection{Synthèse par "tableau de bord"}
|
||
|
||
\subsection{Résultats des tests et recette de prototype de la période}
|
||
|
||
%\subsection{Résultats des revues/suivis/contrôles qualité de la période}
|
||
|
||
\subsection{Identification des principaux écarts et problèmes constatés, solutions possibles}
|
||
\`{A} ce stade du projet, aucun gros écart n'est constaté. Nous avons cependant
|
||
été confrontés à des difficultés à mener nos tests correctement, ce qui a fait
|
||
augmenter la durée de certaines tâches (non critiques).
|
||
|
||
\subsection{Propositions de modification de la planification prévisionnelle pour tenir compte des corrections à apporter}
|
||
La seconde itération n'ayant pas pris de retard, aucune modification ne sera
|
||
apportée à la planification de la troisième. Le dernier prototype inclura donc
|
||
toutes les fonctionnalités manquantes à ce stade, à savoir la lecture et l'écriture
|
||
de fichiers textes pour la sauvegarde de programmes, ainsi que les expressions
|
||
et sauts conditionnels. Nous profiterons du temps restant pour effectuer une
|
||
revue générale du code et des jeux de tests, rédiger le manuel d'utilisation et
|
||
achever ce plan projet.
|
||
|
||
\subsection{Comptes-rendus des réunions projets de la période}
|
||
Voir Compte rendu de la réunion MOE du 11 mai
|
||
\subsection{Compte-rendu du comité de pilotage de la période}
|
||
Voir
|
||
\begin{itemize}
|
||
\item Compte rendu de la réunion MOA du 10 mai
|
||
\item Compte rendu de la réunion MOA du 18 mai
|
||
\item Compte rendu de la réunion MOA du 19 mai
|
||
\end{itemize}
|
||
|
||
|
||
\subsection{Planification prévisionnelle révisée pour les périodes suivantes (en fonction des décisions prises)}
|
||
|
||
\includegraphics[scale=0.75]{fichiers/planification/iteration3/iteration3Planif.png}
|
||
|
||
Au vu des estimations effectuées, la troisième itération devrait couvrir un temps
|
||
de travail de 33,5 heures, soit 16,75 jours.homme. Cette itération comportant de
|
||
nombreuses tâches critiques (le 28 mai marquant le dernier jalon de la phase de
|
||
développement et la livraison du prototype final), nous avons délibérément pris des estimations potentiellement larges
|
||
afin de nous assurer suffisamment de temps pour mener ces tâches à bien.
|
||
|
||
\section{Suivi du projet pour la troisième itération}
|
||
|
||
\subsection{Suivi d’avancement et mesure des écarts par rapport au prévisionnel revu lors de la période précédente}
|
||
|
||
\includegraphics[scale=0.75]{fichiers/planification/iteration3/iteration3Avancement.png}
|
||
|
||
Cette troisième itération offre un total d'heures de travail porté à 45 contre les
|
||
33,5 prévues. Cela équivaut donc à un retard de 11,5 heures, soit l'équivalent de
|
||
5,75 jours.homme. Ce retard s'explique par deux problèmes d'envergure auxquels
|
||
nous avons été confrontés. Ces deux problèmes ont eu un impact direct sur le
|
||
cheminement critique de l'ordonnancement et a par conséquent entraîné un retard qu'il a fallu compenser dans la revue de code. Nous reviendrons plus en détail sur ces
|
||
problèmes un peu plus bas.
|
||
|
||
%\subsection{Synthèse par "tableau de bord"}
|
||
|
||
\subsection{Résultats des tests et recette de prototype de la période}
|
||
|
||
%\subsection{Résultats des revues/suivis/contrôles qualité de la période}
|
||
|
||
\subsection{Identification des principaux écarts et problèmes constatés, solutions possibles}
|
||
|
||
Le premier des deux problèmes mentionnés plus haut concerne l'écriture des
|
||
algorithmes de reconnaissance des expressions booléennes. Ce problème aurait pu
|
||
être évité via l'usage d'expressions rationnelles (\emph{regex}). Malheureusement,
|
||
cette notion est arrivée tard dans notre apprentissage de la théorie des langages et
|
||
nous n'avons pas eu l'opportunité de pouvoir l'implémenter à temps.
|
||
|
||
Le deuxième problème, plus grave, a concerné le fonctionnement de la commande charge.
|
||
Il nous est apparu en effet que la plupart du code de cette commande réutilisait celui
|
||
de la classe Analyseur. Il nous est alors apparu une faiblesse dans notre conception,
|
||
étant donné que si ce code est réutilisé à cet endroit, cela signifie qu'une
|
||
factorisation a été mal faite. Une solution serait de repenser l'analyseur comme un
|
||
objet chargé d'analyser une seule ligne de code et de le dissocier de la
|
||
\verb|mainLoop()| de l'interpréteur.
|
||
|
||
Malheureusement, cette conclusion ne nous est
|
||
arrivée que tardivement et il a fallu que nous prissions une décision. Nous avons
|
||
donc opté pour la solution la moins coûteuse en durée afin de ne pas accumuler de
|
||
retard et de pouvoir terminer le projet dans les temps. Dans une hypothétique phase
|
||
de maintenance du logiciel, nous pensons qu'implémenter la solution évoquée ci-dessus
|
||
serait une des premières tâches à accomplir dans le but de proposer un logiciel
|
||
fonctionnel et plus facilement maintenable.
|
||
|
||
|
||
\subsection{Comptes-rendus des réunions projets de la période}
|
||
|
||
\subsection{Compte-rendu du comité de pilotage de la période}
|
||
Voir
|
||
\begin{itemize}
|
||
\item Compte rendu de la réunion MOA du 18 mai
|
||
\item Compte rendu de la réunion MOA du 19 mai
|
||
\end{itemize}
|
||
|
||
\subsection{Idées d'améliorations}
|
||
L'interpréteur LIR que nous livrons à l'issue de ce projet respecte les
|
||
spécifications du cahier des charges. Au cours de sa conception et de son implémentation, nous nous
|
||
sommes efforcés, avec plus ou moins de succès, à conserver un code le plus
|
||
simple et réutilisable possible, en accord avec l'état de nos connaissances et
|
||
de notre expérience du développement logiciel à cette période de notre formation.
|
||
|
||
Afin de rapprocher davantage notre travail de que l'on pourrait attendre d'une
|
||
équipe professionnelle, nous avons réfléchi à un bagage de connaissances et de
|
||
savoirs faire dont nous aurions souhaité disposer dès les premiers instants de la
|
||
conception. Ce dernier nous permettra à l'avenir de surmonter plus facilement
|
||
les difficultés auxquelles nous avons été confrontés.
|
||
|
||
D'abord, l'utilisation du \emph{pattern matching} et des expressions
|
||
rationnelles citées plus haut nous aurait grandement simplifié la conception et
|
||
surtout le codage de notre analyseur. Nous ne nous priverons d'ailleurs pas de
|
||
nous en servir lors de projets ultérieurs.
|
||
|
||
De plus, l'étude des \emph{design patterns}, des structures de données et de leur
|
||
usage nous simplifiera grandement la tâche de la conception à l'avenir. Avec le
|
||
recul que nous a procuré cette expérience, nous constatons que nous aurions
|
||
pu être bien plus efficaces lors des phases de conception avec ces outils.
|
||
|
||
Ensuite, les tests que nous avons réalisés l'ont été avec l'exécuteur universel
|
||
développé au cours des TDs de programmation du deuxième semestre. Si cet outil
|
||
ne nous a à aucun moment fait défaut, nous lui aurions certainement préféré JUnit3.
|
||
Sachant que les tests occupent au moins la moitié de la phase de développement d'un
|
||
logiciel, nous aurions certainement gagné en efficacité avec cet outil.
|
||
|
||
Pour finir et pour aller plus loin, à présent que l'interpréteur fonctionne, il
|
||
pourrait être intéressant, comme projet d'été par exemple, de développer un
|
||
IDE dédié à notre interpréteurLIR. Cette application proposerait une interface
|
||
fenêtrée, l'autocomplétion, l'utilisation des commandes à travers des
|
||
menus déroulants ou encore l'affichage du contexte en temps réel.
|
||
|
||
|
||
\chapter{Bilan}
|
||
\large
|
||
Outre le développement en équipe d'une solution logicielle en programmation
|
||
orientée objet, ce projet tuteuré de fin d'année nous a donné un aperçu de ce que
|
||
pouvait être un travail en équipe sous la supervision d'une maîtrise d'ouvrage.
|
||
|
||
Nous avons ainsi pu nous familiariser avec les postes de chef de projet, de
|
||
gestionnaire de configuration et de secrétaire de projet. Au cours des échanges
|
||
avec notre enseignant tuteur, nous avons été amenés à comprendre les enjeux
|
||
de la planification et de l'ordonnancement des tâches, mais aussi l'importance de
|
||
la communication écrite de d'assurer la traçabilité de l'information. Enfin,
|
||
l'utilisation d'un outil commun nous a appris l'importance de conserver un
|
||
paramétrage et une configuration équivalente d'un poste à l'autre et de conserver
|
||
un historique des versions de notre code.
|
||
|
||
Dans le monde de l'entreprise, pouvoir assurer un tel niveau de rigueur et de
|
||
transparence vis-à-vis de ses client est primordial dans l'élaboration d'une
|
||
relation de confiance. Cela permet de plus d'attester de sa bonne foi et de
|
||
prouver que rien n'a été laissé au hasard dans l'éventualité où le projet
|
||
n'aboutirait pas selon les critères dictés par la charte de projet.
|
||
|
||
\normalsize
|
||
\part{Annexes}
|
||
|
||
\appendix
|
||
%\includepdf[pages=-]{fichiers/BarriosInterpreteurLIR2021}
|
||
\chapter{Sujet Interpréteur LIR}
|
||
|
||
\input{./fichiers/gestionConfiguration/gestionConfiguration.tex}
|
||
|
||
\end{document} |