T1.programmation : Projet T1.programmation : Projet
Groupe ESIEE, Denis BUREAU, janvier 2002.

1  Les objectifs

Réaliser en trinôme une application complète mettant en oeuvre l'allocation dynamique de tableaux, des fichiers de texte, et la compilation séparée, d'après un cahier des charges, en gardant toutes les bonnes habitudes acquises au cours des TD et TP. Les fichiers de texte et la compilation séparée seront vus dans la dernière partie de l'unité.

La procédure indiquée dans ce document est à respecter scrupuleusement, et tout retard donnera lieu a des points de pénalité, y compris lorsqu'il s'agit de prendre un RV pour une soutenance ou de fournir la composition des trinômes.

Il sera donc probablement utile de lire plusieurs fois le présent document, et surtout de s'y reporter régulièrement tout au long du projet.

D'autre part, il est nécessaire de consulter ses messages e-mail tous les jours pendant toute la durée du projet (jusqu'à la publication des notes de projet !). Tout dysfonctionnement doit être immédiatement signalé au SMIG, et si celui-ci n'arrivait pas à résoudre le problème, à Denis BUREAU.

Il est demandé de fournir deux documents :

1.1  Le pré-rapport

Les explications doivent être concises, mais le pré-rapport devra au moins comporter :

  1. le groupe, les noms/prénoms des étudiants, et le choix du projet ;
  2. une table des matières (éventuellement faite à la main) ;
  3. les déclarations des constantes principales en pseudo-langage, et leur utilité ;
  4. les déclarations de types en pseudo-langage, et leur utilisation ;
  5. un schéma (éventuellement fait à la main) représentant la structure de données complète ;
  6. le programme principal en pseudo-langage (consiste essentiellement à appeler correctement les sous-programmes) ;
  7. le prototype de chaque sous-programme en pseudo-langage, avec la signification de chaque paramètre ;
  8. le rôle (en français) de chaque sous-programme, plus d'éventuelles remarques sur des particularités de réalisation ou des conditions d'utilisation du sous-programme.
Ce pré-rapport doit rester dans une forme très simple, sans couverture, sans couleurs ; un paquet de feuilles agrafées en haut à gauche convient très bien. Des textes tapés sur ordinateur (par exemple dans un fichier .TXT) sont toutefois plus lisibles qu'écrits à la main.
Il doit être rendu impérativement avant le vendredi 8 mars 2002 à 13h en 5251 (dans le carton correspondant à votre groupe.

1.2  Le rapport final

Les explications doivent être concises, mais le rapport devra au moins comporter :

  1. le groupe, les noms/prénoms des étudiants, le choix du projet, et la répartition effective des tâches ;
  2. une table des matières ;
  3. les fonctionnalités réalisées en plus ou en moins par rapport au cahier des charges (y compris les optionnelles) ;
  4. un petit mode d'emploi destiné à une personne ne sachant rien à propos de ce programme ;
  5. des jeux de tests montrant les données et les fichiers utilisés, ainsi que les affichages et les fichiers produits (le cas normal et les cas particuliers) ; si les tests ont été correctement effectués, le programme ne plantera pas le jour de la soutenance ...
    Cette partie est longue et nécessite d'avoir pratiquement terminé le programme une semaine avant la date limite.
  6. l'organisation des sous-programmes dans les différents fichiers séparés ;
  7. les listings commentés, en évitant les procédures "à cheval" sur deux pages ; les commentaires ne sont pas une simple paraphrase du code, mais un moyen d'aider à la compréhension du code C++ ; ces commentaires font partie du fichier .CPP et ne sont pas ajoutés en Word par la suite ;
  8. une conclusion résumant les limites ou contraintes du programme, ainsi que les extensions que vous auriez souhaité réaliser si vous en aviez eu le temps.
Ce rapport n'a nullement besoin d'être un chef-d'oeuvre artistique, mais doit être propre, structuré, et ne pas comporter une faute d'orthographe à chaque ligne. Il peut faire référence au pré-rapport.

2  Déroulement du projet

Les trinômes seront constitués forcément à l'intérieur de chaque groupe. Chaque groupe comprendra au maximum 2 binômes, suivant le nombre d'étudiants dans chaque groupe. Les binômes seront, si possible, exclusivement constitués de redoublants T1 ou I1. Si un binôme ou un trinôme est entièrement constitué de redoublants T1 ou I1, il peut proposer un autre sujet, dont le cahier des charges écrit doit être validé préalablement par Denis BUREAU.

Ces éventuels sujets, ainsi que le choix du sujet et la composition des trinômes devront être définitivement fixés au plus tard vendredi 15 février à 13h. Un mail devra être envoyé à d.bureau avant cette date pour préciser tout cela.

A titre indicatif, chaque groupe est censé utiliser le créneau suivant pour se mettre d'accord sur la composition des trinômes et le choix du sujet, si ce n'est pas déjà réglé avant :

Chaque délégué de groupe doit s'assurer qu'il ne subsiste plus de problème de constitution de trinômes, et sinon, venir en avertir Denis BUREAU.

Chaque groupe sera particulièrement suivi par un enseignant parmi : Denis BUREAU ou Albert CORNEC. Les créneaux horaires pendant lesquels ces enseignants s'engagent à être disponibles pour répondre à vos questions concernant ce projet vous seront communiqués ultérieurement. Il est également possible d'aller les voir à d'autres moments, sans garantie de leur disponibilité. Les échanges par mail sont également conseillés.

DANS TOUS LES CAS, il vaut mieux venir demander à Denis BUREAU ce qu'il faut faire, plutôt que de prendre une mauvaise décision. Le jour de la soutenance, il sera trop tard, et en particulier, vous ne pourrez pas dire "je croyais qu'il fallait faire ..."; pour en être sûr, une seule solution : venir demander.

Le programme .EXE, les sources .CPP (et .H), ainsi que les fichiers de tests nécessaires (mais pas les .BAK, .OBJ, DEBUG, ...) devront se trouver dans le répertoire TPINFO\PROJET d'un des membres du trinôme. Après avoir vérifié que le projet se trouve dans le bon répertoire, envoyer un mail à d.bureau pour préciser que le projet est terminé, sur quel compte il se trouve, et le nom des étudiants.

Le mail est à envoyer avant le vendredi 29 mars 2002 à 13h. Les rapports sont à rendre au secrétariat du département informatique (5251) avant cette même date.

Les soutenances pourront commencer dès le vendredi 29 mars et devront toutes être terminées le mercredi 10 avril au soir. TOUS les rendez-vous pour ces soutenances doivent être pris AVANT le vendredi 29 mars à 13h auprès de l'enseignant affecté à votre groupe.
Il n'est pas nécessaire d'avoir terminé le projet pour prendre ce rendez-vous; par contre, il est nécessaire que les 3 membres du trinôme soient présents avec leurs agendas, pour tenir compte à la fois des emplois du temps et des contraintes personnelles, notamment le soir.
Rappel : Des points de pénalités seront appliqués pour tout dépassement de date, quelle qu'elle soit.

Pour pouvoir terminer dans les délais, il est nécessaire de répartir les tâches au sein du trinôme. Il faut commencer par réfléchir ensemble, puis décider de découper le programme en un certain nombre de sous-programmes. Ensuite, il faut se mettre d'accord sur les données que va manipuler ce programme et écrire les prototypes de tous les sous-programmes.

C'est seulement à partir de ce moment que les trois étudiants travaillent séparément, c'est-à-dire décrivent chaque sous-programme en pseudo-langage, puis le traduisent en C++, puis le testent, et écrivent la partie de rapport correspondante.

Enfin, il faut garder un temps suffisant (au moins une semaine) pour regrouper les trois parties, tester l'ensemble, et finaliser le rapport. Prévoir également que des problèmes informatiques peuvent survenir dans la dernière semaine, et conserver toujours la version précédente lorsque des modifications sont apportées.

La répartition des tâches doit être équilibrée, et il n'est pas question qu'un membre du trinôme ne s'occupe que du rapport, ou que des fonctions d'affichage dans le programme par exemple. Lors des soutenances, même si les questions seront plus particulièrement dirigées sur la partie qu'un étudiant a développé, il doit être capable d'expliquer comment fonctionne les autres parties.

Il est possible d'échanger des idées entre les trinômes ; par contre, l'échange de morceaux de programmes entre trinômes n'est pas autorisé.
Cela signifie en particulier que lorsque l'on se fait aider, on doit comprendre l'explication puis essayer de l'intégrer à son programme; en aucun cas, on ne doit intégrer à son projet un fichier qui n'a pas été créé par un membre du trinôme.

Aucune contrainte présente dans ce document ne peut être levée à votre seule initiative. Par contre, si vous avez de bons arguments, vous pouvez venir négocier suffisamment à l'avance pour pouvoir respecter toutes les échéances. Le jour de la soutenance, il sera trop tard.

3  Partie commune aux deux projets

Le programme principal acceptera des commandes et déclenchera les sous-programmes en conséquence, en passant en paramètre tout ce qui est nécessaire (pas de variables globales).
Les données seront sauvegardées dans un fichier de texte. Pendant une session d'utilisation du programme, toutes les données seront chargées en mémoire dans des structures et des tableaux de taille adaptée à chaque session.
Le programme doit pouvoir stocker autant de données que l'on veut ; donc l'utilisation de tableaux statiques est à écarter. Le programme ne doit pas utiliser inutilement de la mémoire ; donc les chaînes de caractères doivent être juste de la longueur nécessaire. Pour ne pas perdre trop de temps, lorsqu'il sera nécessaire d'agrandir un tableau, on lui ajoutera à chaque fois un nombre de cases fixé en constante mais supérieur à 1 (rappel: pas de constantes numériques non nommées).
Toute zone de mémoire allouée dynamiquement doit être libérée lorsqu'elle est devenue inutile.
Enfin, les différentes parties du programme doivent être réparties dans différents fichiers compilés séparément (ce qui ne veut pas dire "un seul sous-programme par fichier").

3.1  Bonus

Un binôme ou un trinôme peut obtenir un bonus supplémentaire s'il ajoute à l'ensemble des fonctionnalités de son programme certaines possibilités significatives, décrites en détail dans le rapport et le mode d'emploi.

Attention ! Un programme qui ne fonctionne pas parfaitement ne peut espérer aucun bonus même s'il a des fonctionnalités supplémentaires. Cette possibilité n'est donc à étudier qu'à la fin, lorsque le programme est terminé et en prenant soin d'en conserver une version complète avant modification.

Il est également possible pour des redoublants, après accord préalable de Denis BUREAU, d'utiliser des listes chaînées. Par contre, cela devra être effectué à bon escient et correctement, tout en étant bien expliqué dans le rapport. Il n'y aura pas d'indulgence particulière en ce domaine, et il vaut mieux un programme bien fait avec des tableaux qu'un programme mal fait avec des listes. Par contre, si le programme est bien fait avec des listes, cela donnera lieu à un bonus supplémentaire.

4  Résumé des différentes étapes  nouveau !

  1. Avant le vendredi 15 février 2002 à 13h : communiquer la constitution du trinôme et indiquer le choix du projet (ou avoir fait valider le cahier des charges de l'éventuel projet personnel pour les redoublants).
  2. Avant le vendredi 8 mars 2002 à 13h : rendre le pré-rapport en 5251.
  3. Avant le jeudi 28 mars 2002 à 17h : prendre rendez-vous avec l'enseignant affecté à votre groupe pour la soutenance commune.
  4. Avant le mardi 2 avril 2002 à 13h : envoyer le mail à d.bureau pour signaler que le projet est terminé et sur quel compte il se trouve.
  5. Avant le mardi 2 avril 2002 à 13h : rendre le rapport final en 5251.
  6. Avant le mercredi 10 avril au soir : avoir passé sa soutenance.

Ce sujet est également consultable sur la page web de l'unité
(accessible à partir de http://www.esiee.fr/~bureaud/fi/fihome.html).

5  Projet A : Gestion de répertoire

Le but de cette application est de gérer un répertoire d'adresses.

Cahier des charges détaillé

5.1  Les données

Toute personne est décrite par trois types d'informations qui donneront lieu à trois types différents en C++ :
  1. L'identification, composée de deux chaînes nom et prénom, et de la civilité qui n'a que 3 valeurs possibles : Mme, Melle, M.
  2. L'adresse, composée de deux chaînes voie (toute l'adresse sauf la ville et le code postal) et ville, et le code postal sous forme d'entier naturel.
  3. La communication, composée d'un tableau de 7 chaînes (il doit être facile de changer ce nombre) représentant chacune un moyen de communication (téléphone domicile, téléphone travail, téléphone portable, fax, email personnel, email professionnel, site web), et un entier naturel représentant l'indice du moyen de communication principal qui apparaîtra dans la liste non détaillée (NULL sera utilisé pour signifier qu'un moyen de communication n'est pas disponible pour cette personne).

5.2  Les commandes

Elles doivent pouvoir être tapées en minuscule ou en majuscule.

5.3  Affichage abrégé

(pour la commande L), c'est-à-dire une personne par ligne :

chaque ligne comporte donc toujours exactement 79 caractères. Exemple :
100 M.    DU BOIS DE LA MORI... Jean-Philippe          06.01.45.23.67          P

5.4  Fonctionnalités supplémentaires

Ces fonctionnalités sont optionnelles pour les binômes mais obligatoires pour les trinômes.

6  Projet B : Gestion des notes

Le but de cette application est de gérer l'ensemble des notes d'un étudiant.

Cahier des charges détaillé

6.1  Les données

L'ensemble des notes d'un étudiant est d'abord réparti en un certain nombre de modules stockés dans un tableau de taille variable.
Chaque module est composé d'un nom (de type chaîne), du nombre d'UV, d'un tableau d'UV, d'une note moyenne, et d'un coefficient.
Chaque UV est composée d'un nom, du nombre de partiels, d'un tableau de partiels, d'une note moyenne, d'un coefficient, et d'une "lettre" (A, B, C, D, E, FX, F).
Chaque partiel est composé d'un nom, d'une note, et d'un coefficient.
Toutes les notes et tous les coefficients seront stockés sous forme d'entiers naturels, et seront donc multipliés par 100 pour pouvoir tenir compte de notes ou de coefficients exprimés avec deux chiffres après la virgule. Exemple : une note de 10,94 sera stockée 1094 et un coefficient de 1,75 sera stocké 175.

6.2  Les commandes

Elles doivent pouvoir être tapées en minuscule ou en majuscule.

6.3  Affichage abrégé

(pour la commande LM), c'est-à-dire un module par ligne :

chaque ligne comporte donc toujours exactement 72 caractères. Exemple :
21 Electronique et Circ...: 4 UV, Moyenne=10.38 pour 2.00 coefficients

6.4  Fonctionnalités supplémentaires

Ces fonctionnalités sont optionnelles pour les binômes mais obligatoires pour les trinômes.
* a la même signification que pour les commandes A*, D*, ou E*.


File translated from TEX by TTH, version 2.75.
On 7 Feb 2002, 09:53.