Fichiers - COBOL Énoncé COUREUR SEMAINE FAIT A FAIRE C1

Transcription

Fichiers - COBOL Énoncé COUREUR SEMAINE FAIT A FAIRE C1
Université de NANTES
Faculté des Sciences et des Techniques
IUP - MIAGE
Deuxième année
Fichiers - COBOL
(Resp. A. VAILLY)
TP n° 2 : Gestion d'une équipe de coureurs cyclistes
Le dossier est à rendre pour le 10 mai 2008 au plus tard. Il sera déposé SUR LA PLATEFORME MADOC uniquement, en format pdf exclusivement.
Les tests en salle machine auront lieu dans la semaine du 13 au 16 mars 2008. La présence
des équipes au complet est requise.
Énoncé
Objectif : mise en place d'un mini-logiciel de gestion d'une équipe de coureurs cyclistes, constitué d'un
programme principal et de sous-programmes.
1- Description de la structure de données :
On se situe dans le cadre du développement d'une application de gestion de programmes
d'entraînement de coureurs cyclistes. Chaque coureur dispose d'un programme adapté à sa morphologie, sa
forme du moment et ses objectifs, exprimé en termes de kilométrage à réaliser. Chaque coureur dispose
d'un entraîneur. Chaque entraîneur a au moins un coureur. Il peut en avoir plusieurs.
Le système d'information de cette application peut être décrit par le modèle entités associations
propriétés suivant :
ENTRAINEUR
Numéro entraîneur
Nom
Prénom
Diplôme
1, n
SEMAINE
S'OCCUPE DE
A FAIRE
0, n Numéro semaine
GrandTour
Km-à-faire
0, n
COUREUR
Numéro coureur
1, 1 Nom
Prénom
0, n
Adresse
Total-Km-faits
COBOL-Travaux pratiques
décembre 27, 2007
C1
©
0, n
FAIT
Km-faits
sujet tapé par Alain VAILLY
1
Université de NANTES
Faculté des Sciences et des Techniques
IUP - MIAGE
Deuxième année
Les coureurs enregistrés n'ont pas forcément de programme d'entraînement mémorisé. Il est
également possible d'avoir dans la base des coureurs qui n'ont encore parcouru aucun kilomètre. Par contre,
tous ceux qui en ont parcouru avaient un programme (la contrainte d'inclusion garantit que chaque coureur
ne s'entraîne que les semaines durant lesquelles il doit le faire).
La contrainte C1 permet de vérifier que les coureurs ne dépassent pas leur programme. Elle
exprime le fait que le nombre de kilomètres parcourus par un coureur pour chaque semaine est inférieur ou
égal au nombre de kilomètres à faire.
La propriété Total-Km-faits correspond à la somme des kilomètres faits par le coureur. Elle ne
devrait en théorie pas figurer dans ce schéma, car elle est calculable. Nous la maintenons par souci de
simplification de ce sujet.
Cette structure de données peut être matérialisée par cinq fichiers :
- fichier des coureurs (fcour), séquentiel indexé, de clé primaire le numéro de coureur (CODCOUR), de
clé secondaire le numéro d'entraîneur (ENTRAINEUR), ayant la structure suivante :
CODCOUR
NOM
PRENOM
ADRESSE
TOTAL-KM-FAITS
entier 3
chiffres
9 (3)
20 alpha.
num.
X (20)
20 alpha. num.
25 alpha.
num.
X (25)
entier 5 chiffres
X (20)
9 (5)
ENTRAINEU
R
entier 3
chiffres
9 (3)
- fichier des entraîneurs (fentr), séquentiel indexé, de clé primaire le numéro d'entraîneur (CODENTR),
ayant la structure suivante :
CODENTR
NOM
PRENOM
DIPLOME
entier 3
chiffres
9 (3)
20 alpha.
num.
X (20)
20 alpha. num.
25 alpha.
num.
X (25)
X (20)
- fichier des semaines d'entraînement (fsem), séquentiel indexé, de clé primaire le numéro de semaine
(CODSEM), de structure :
CODSEM
GRANDTOUR
entier 2 chiffres
99
10 alpha.
X (10)
la variable GRANDTOUR pouvant prendre les valeurs suivantes : FRANCE, GIRO, VUELTA, NULL,
selon que la semaine est une semaine de grand tour ou non.
- fichier des programmes à réaliser (fprog), séquentiel indexé, de clé primaire le couple (numéro
coureur, numéro semaine), avec deux clés secondaires, CODCOUR et CODSEM, de structure :
CODCOUR
CODSEM
KM-A-FAIRE
entier 3 chiffres
9 (3)
entier 2 chiffres
99
entier 4 chiffres
9 (4)
- fichier des programmes réalisés (freal), séquentiel indexé, ayant pour clé primaire le couple (numéro
coureur, numéro semaine), avec deux clés secondaires, CODCOUR et CODSEM. La structure de ce fichier
est la suivante :
COBOL-Travaux pratiques
décembre 27, 2007
CODCOUR
CODSEM
KM-FAITS
entier 3 chiffres
9 (3)
entier 2 chiffres
99
entier 4 chiffres
9 (4)
sujet tapé par Alain VAILLY
2
Université de NANTES
Faculté des Sciences et des Techniques
IUP - MIAGE
Deuxième année
2) Interface du logiciel :
Tous les écrans seront standardisés. Ils seront tous composés de trois parties, selon le modèle cijoint :
80 colonnes
4 à 6 lignes
<date jour>
<NOM APPLICATIF>
<nom fonction>
13 à 15 lignes
4 lignes
23 lignes
<message erreur ou autre>
<liste des invites des différents choix>
Choix : <saisie du choix>
Les différentes parties jouent des rôles différents :
- entête (partie supérieure) : 4 à 6 lignes
désignation de l'application, fonction en cours, date du jour et ligne de séparation
- corps (partie médiane) : 13 à 15 lignes
affichage de résultats, saisies autres que les invites...
- bas de page (partie inférieure) : 4 lignes
ligne 19 : ligne de séparation
ligne 20 : ligne pour les messages provenant d'erreurs de saisie, de manipulation...
ligne 21 : ligne d'invite indiquant les différents choix de poursuite
ligne 22 : ligne pour saisir le caractère représentant le choix.
L'écran de présentation du menu sera structuré différemment des autres : présentation des
différents choix et saisie du choix dans la partie médiane, partie inférieure ne contenant que le message
d'erreur de saisie.
3) Structuration du logiciel :
L'application comprend les fonctionnalités suivantes :
F0 : affichage des coureurs n'ayant pas de programme d'entraînement pendant les grands tours
F1 : mise à jour du fichier des coureurs (ajout, suppression, modification)
F2 : enregistrement des programmes en début de saison (association A FAIRE)
F3 : enregistrement des entraînements effectués (association FAIT)
F4 : mise à jour des entraîneurs (ajout, suppression, modification)
F5 : édition de l'état d'avancement des entraînements (par coureur, par semaine)
F6 : classement des coureurs
F7 : mise à zéro des programmes associés à une semaine donnée
COBOL-Travaux pratiques
décembre 27, 2007
sujet tapé par Alain VAILLY
3
Université de NANTES
Faculté des Sciences et des Techniques
IUP - MIAGE
Deuxième année
L'architecture fonctionnelle du logiciel à développer est une arborescence :
Affichage oisifs
0
MENU
M)enu Q)uitter
Affichage oisifs
Mise à jour coureurs
Programmes à faire
Programmes faits
Mise à jour entraîneurs
État avancement entraînements
Classement coureurs
RAZ programmes
Quitter
Mise à jour coureurs
1
M)enu Q)uitter
Programmes à faire
2
M)enu Q)uitter
Programmes faits
3
M)enu Q)uitter
Mise à jour entraîneurs
4
M)enu Q)uitter
État avancement
entraînements
M)enu
Q)uitter
5
0
1
2
3
4
5
6
7
Q
Classement coureurs
6
M)enu Q)uitter
RAZ programmes
7
M)enu Q)uitter
Chaque fin d'exécution d'une feuille de cet arbre doit permettre à l'utilisateur de choisir soit de
revenir au menu, soit de quitter l'application.
4) Saisies :
Les données saisies sont supposées pleines d'erreurs. Toutes les données saisies devront donc
être vérifiées. Les données erronées donneront lieu à affichage de messages d'erreurs appropriés (dans la
partie inférieure de l'écran), effacement des données erronées (afin de permettre une re-saisie) et, après la
nouvelle saisie, effacement du message d'erreur précédent. Le nombre d'essais sera limité à trois pour
chaque saisie.
Le choix de la partie du logiciel à exécuter (menu) fourni par l'utilisateur sera vérifié AVANT de
lancer l'exécution.
5) Travail à faire :
5.1) organisation : le travail est exécuté par des équipes de quatre (exceptionnellement cinq). Chaque équipe
désignera, dès le début, un chef de projet.
5.2) travail de l'équipe : tous les membres de l'équipe devront analyser et programmer le logiciel. Une
organisation avec un programme principal (pour l'affichage du menu) et des sous-programmes externes, un
par module, sera mise en place. Le programme principal devra être programmé en premier. Il fera
"normalement" appel aux divers sous-programmes externes, un par fonction, selon le principe développé
en TD (cf. TD n° 4, programme P4). Même si une fonction n'est pas encore prête, le sous-programme
externe correspondant devra donc être présent dès le début. Il comportera AU DEBUT un écran "par défaut"
qui affichera, en partie médiane, un message indiquant que la fonction n'est pas encore disponible. Le
"vrai" sous-programme une fois testé, ce sous-programme par défaut disparaîtra au profit du "vrai".
Chaque équipe devra analyser et programmer les fonctions ci-après :
F0 : affichage des coureurs n'ayant pas de programme à faire pendant les grands tours. L'utilisateur aura le
choix entre faire un affichage ciblé sur UN grand tour précis (saisi à l'écran) ou TOUS les grands tours. Si
COBOL-Travaux pratiques
décembre 27, 2007
sujet tapé par Alain VAILLY
4
Université de NANTES
Faculté des Sciences et des Techniques
IUP - MIAGE
Deuxième année
cette dernière option est choisie, un coureur sera considéré comme oisif s'il n'a aucun programme à faire
pendant toutes les semaines de tous les tours. Si l'option UN est choisie, le coureur devra, pour être
affiché, n'avoir aucun programme durant toutes les semaines du tour en question.
F1 : mise à jour des coureurs, comprenant l'enregistrement d'un coureur, la prise en compte des
modifications et la suppression d'un coureur.
Les modifications à enregistrer concernent toutes les propriétés SAUF le numéro de coureur (un
coureur change de numéro en perdant l'ancien —il s'agit donc d'une suppression de coureur— et gagnant le
nouveau —il s'agit donc ensuite d'enregistrer un nouveau coureur—) et le numéro d'entraîneur. Ces
modifications seront acceptées uniquement si le coureur existe. Les programmes à faire ou faits ne sont
pas concernés par cette opération.
L'enregistrement d'un coureur se fait en fournissant tous les attributs nécessaires, ainsi que le
numéro de son entraîneur. Si cet entraîneur n'existe pas, il sera créé (par appel au sous-programme de
création contenu dans la fonction F4). Le nouveau coureur n'a pas de programme d'entraînement à faire, ni
a fortiori de programme fait.
La suppression d'un coureur ne peut se faire que si ses programmes sont déjà supprimés. Si son
entraîneur ne s'occupait que de lui, il sera également supprimé.
F2 : enregistrement des programmes à faire. Cet enregistrement ne peut être accepté que si le coureur
existe.
F3 : enregistrement des programmes faits. Cet enregistrement ne peut être accepté que si le coureur existe
et si les contraintes (celle qui est nommée C1 sur le schéma et la contrainte d'inclusion) sont vérifiées. Le
nombre total de kilomètres parcourus par le coureur est mis à jour.
F4 : mise à jour des entraîneurs, comprenant l'enregistrement d'un entraîneur, la prise en compte des
modifications et la suppression d'un entraîneur.
L'enregistrement d'un entraîneur ne peut se faire que s'il s'occupe d'un coureur. Seront donc
saisies les informations suivantes : numéro d'entraîneur, nom, prénom, diplôme. Le (ou les) numéro(s) de
coureurs dont il s'occupe sera (seront) ensuite fourni(s). Si ces coureurs n'existent pas, ils seront créés (par
appel du sous-programme de création contenu dans F1).
Tous les attributs de l'entraîneur sont modifiables, à l'exception du numéro.
La suppression d'un entraîneur s'accompagnera de celle de ses coureurs. Elle ne pourra toutefois
se faire que si les programmes de ces derniers (qu'il s'agisse de ceux à faire ou de ceux faits) n'existent
plus.
F5 : édition de l'état d'avancement des programmes d'entraînements. Deux versions de cet état sont
demandées. Dans les deux cas, il s'agit de produire une liste décrivant tous les entraînements. La première
version les présente semaine par semaine, la seconde coureur par coureur.
Les fichiers sont supposés sans erreur.
Version 1 :
Semaine n°
Coureurs
Nom
Prénom
COBOL-Travaux pratiques
décembre 27, 2007
Entraînements
Adresse
prévus
réalisés
sujet tapé par Alain VAILLY
5
Université de NANTES
Faculté des Sciences et des Techniques
IUP - MIAGE
Deuxième année
TOUS les coureurs figureront dans cet état, pour chaque semaine. Si, une semaine donnée, un
coureur n'a pas d'entraînement à faire, la valeur 0 sera inscrite dans les cases prévus et réalisés.
Version 2 :
Nom
Prénom
Adresse
Coureur
Entraînements
Semaine
prévus
réalisés
TOUTES les semaines figureront sur le document. Si, pour une semaine donnée, le coureur n'a
pas d'entraînement prévu, la valeur 0 sera inscrite dans les cases prévus et réalisés.
F6 : classement des coureurs, selon le kilométrage réalisé. Les coureurs seront classés en ordre décroissant
des valeurs prises par l'attribut TOTAL-KM-FAITS.
F7 : remise à zéro des programmes d'une semaine donnée. L'utilisateur fournira le numéro de la semaine
concernée. Tous les programmes à faire cette semaine-là seront supprimés, tous les programmes
réellement faits également. L'utilisateur aura ensuite le choix de revenir au menu général ou bien de
fournir une autre semaine.
5.3) rôle du chef de projet : le chef de projet est chargé, plus spécifiquement, de l'intégration des sousprogrammes "dans" le logiciel. C'est lui qui crée le programme principal, teste son fonctionnement,
remplace les sous-programmes "par défaut" par les "vrais", dès que possible. Le chef de projet doit aussi
piloter l'équipe, en surveillant l'avancement du travail, en aidant, éventuellement, un co-équipier.
C'est, enfin, le chef de projet qui crée un répertoire GROSTP (avec les droits nécessaires pour
que chaque membre de l'équipe puisse y accéder), y place les jeux d'essais, y remet éventuellement ces jeux
d'essais s'ils sont altérés -en allant les chercher sur l'Intranet). L'intégration des sous-programmes dans ce
répertoire sera effectuée sous la responsabilité du chef de projet. Les tests de non-régression (ie. globaux)
seront réalisés par lui.
5.4) répartition des tâches au sein de l'équipe : soit une équipe quelconque, composée de cinq étudiants,
appelés A, B, C, D et E. A est le chef d'équipe. La répartition des tâches peut être la suivante :
A : (chef de projet) création du programme principal, intégration, tests de non-régression, analyse et
programmation F0
B : analyse et programmation F1, tests unitaires, import dans GROSTP
C : analyse et programmation F2, F3 et F7, tests unitaires, import dans GROSTP
D : analyse et programmation F4 et F6, tests unitaires, import dans GROSTP
E : analyse et programmation F5, tests unitaires, import dans GROSTP
D'autres organisations sont possibles. Elles sont toutefois déconseillées. Le "KIFEKOUA" sera
défini dès le début du TP et fourni aux enseignants.
NB : la fonction F1 est la plus "difficile" des huit. Il serait prudent de la confier à un bon. (B stands for
"bon").
COBOL-Travaux pratiques
décembre 27, 2007
sujet tapé par Alain VAILLY
6
Université de NANTES
Faculté des Sciences et des Techniques
IUP - MIAGE
Deuxième année
6) "documents" à rendre :
Chaque équipe rendra un seul dossier, en format pdf. Il devra comporter une partie analyse
algorithmique (une douzaine de pages au maximum) et une partie jeux d'essais (avec une description des
essais prévus par l'équipe, avec les résultats escomptés, rédigée sur un maximum de quatre pages).
Le listing de chaque programme (programme principal, sous-programmes externes), le "chemin"
Linux indiquant où sont situées les sources, ainsi que la ligne de compilation seront fournis en annexe du
dossier.
Ce dossier sera déposé sur la plate-forme MADOC, dans le répertoire créé à cet effet. La
personne qui déposera ce dossier sera le chef de projet, le dépôt se faisant sous son SEUL nom.
COBOL-Travaux pratiques
décembre 27, 2007
sujet tapé par Alain VAILLY
7