Séance 3 — TP : Conception préliminaire
- bien que les questions (ainsi que la présentation) figurent dans un certain ordre, revenez sur tous les diagrammes pour les compléter ou les corriger. Il s'agit de l'élaboration d'une solution, qui passe nécessairement par une compréhension du problème tant d'un point de vue statique que d'un point de vue dynamique ;
- n'hésitez pas à compléter vos diagrammes de tout commentaire facilitant la compréhension ou permettant d'attirer l'attention sur des points qui resteraient obscurs et à approfondir ;
- gardez à l'esprit que vous insérez les images des diagrammes dans le fichier readme.md. Par exemple, ne faites pas des diagrammes qui deviennent trop difficiles à lire.
(Re-)Positionnement dans le dépôt Git de GitLab
Voici la procédure que nous proposons (dans tous les cas « par défaut »). « En cas de panique », veuillez vous reporter à celle qui suit celle-ci.
-
Procédure
« repositionnement »
-
on repart d'un dépôt mis à jour et on continue dans la
branche develop
-
cd ~/CSC4102
cd csc4102-projet
git fetch # prendre connaissance des nouveautés
git branch # quelle est la branche courante ?
si pas déjà dans la branche develop alors « git checkout develop » # se positionner dans la branche
git pull origin develop # accepter les modifications de la branche
si conflit et besoin d'une fusion, « git mergetool --tool=meld » puis « git commit »
-
cd ~/CSC4102
-
on repart d'un dépôt mis à jour et on continue dans la
branche develop
« En cas de panique », veuillez suivre la procédure qui suit :
-
Procédure « nouveau
clonage »
-
on clone à nouveau le dépôt et on continue dans la
branche develop :
-
cd ~/CSC4102
mv csc4102-projet csc4102-projet_old # garder une copie au cas où du contenu n'ait pas été poussé
git clone URL_DE_VOTRE_PROJET
cd csc4102-projet
git checkout develop # positionnement dans la branche develop
-
cd ~/CSC4102
-
on clone à nouveau le dépôt et on continue dans la
branche develop :
Aspects statiques
- trouver les classes dites « métier »,
- dessiner le diagramme de classes de la conception préliminaire.
Pour cette étape, aidez-vous de la méthodologie présentée dans la diapositive « 2.8 Éléments de méthodologie » du cours.
Liste des classes et diagramme de classes
Une nouvelle lecture du cahier des charges (uniquement la section 2 et l'annexe~A) doit vous permettre de créer une liste de classes et de noter de manière informelle leurs attributs ainsi que leurs associations. Parcourez aussi les diagrammes de cas d'utilisation avec les préconditions et postconditions que vous avez construits lors de la séance 2, car les concepts métier y figurant sont sans doute des classes métier.
Un critère de validité d'un attribut est qu'il doit être simple (type/valeur) : par exemple, date, nombre et texte. Dans le cas contraire, soit en faire une classe soit simplifier la conception en laissant la question pour plus tard (ou pour une question à poser dans le fichier de suivi Suivi/readme.md). Par ailleurs, pour ceux qui voudraient mettre des références en attribut, les classes doivent être reliées avec des associations et non avec des attributs (dans le diagramme de classes, on ne montre pas les attributs qui réalisent les associations) : ce point sera détaillé dans la séance 4 lors de la conception détaillée, qui redira de ne pas mettre ces attributs dans un diagramme de classes.
Concernant les opérations, ce n'est pas encore le moment de les trouver (toute opération devra êre testée, et par conséquent, ajouter des opérations inutiles peu coûter cher en développement). C'est principalement la partie dynamique qui donnera les opérations. En résumé, il n'est pas nécessaire de surcharger le diagramme de classes avec des opérations et les opérations existent uniquement lorsque l'on en a besoin (pas a priori).
Complétez le diagramme de classes fourni dans une première version du modèle. Ce diagramme est sujet à raffinements dans les prochaines séances.
Aspects dynamiques
-
dessiner au moins 2 des 3 diagrammes de séquence
(
·· ··) pour les cas d'utilisation ·· ··
Diagrammes de séquence
Le diagramme de classes décrit l'intérieur du système avec les classes et les relations entre les classes. Nous sommes prêts pour décrire la réalisation des cas d'utilisation avec ces classes et ces relations. Tout cas d'utilisation peut donner lieu à la construction d'un diagramme de séquence (ou plusieurs si le cas d'utilisation est trop complexe pour « tenir » dans un seul diagramme [on utilise alors des fragments « ref »]).
Pour cette étape, aidez-vous de la méthodologie présentée dans la diapositive « 4.6 Éléments de méthodologie » du cours.
Pour au moins deux des cas d'utilisation, dont
Mise à disposition du travail effectué dans le dépôt Git de GitLab
Systématiquement, avant de terminer une séance de travail, que ce soit en salle TP ou chez vous, mettez à jour votre dépôt local (au cas où vous ayez travaillé en parallèle), validez et poussez votre travail :
-
git fetch # charger les modifications non
encore connues localement
git pull origin develop # mettre à jour votre branche develop
et si conflit et besoin d'une fusion, git mergetool --tool=meld -
git status # connaître l'état de votre
arborescence
selon les besoins, pour préparer la zone de transit pour la validation du prochain instantané, git add, git mv, git checkout --, etc.
git commit -m "je dis ce que contient le nouvel instantané" # valider les modifications de la zone de transit
git push origin develop# pousser pour mettre à disposition - connectez-vous à GitLab et vérifiez que votre travail a été poussé.
À LA FIN DU TP DE LA SÉANCE
Avant de quitter le TP, veuillez s'il vous plaît remplir dans la page Partage de votre groupe le tableau d'avancement de votre binôme-projet :
- page Partage du groupe de TP 1 pour l'avancement ;
- page Partage du groupe de TP 2 pour l'avancement ;
- page Partage du groupe de TP 3 pour l'avancement ;
- page Partage du groupe de TP 4 pour l'avancement ;
- page Partage du groupe de TP 5 pour l'avancement ;
- page Partage du groupe de TP 6 pour l'avancement.
C'est aussi le moment de parcourir la grille d'auto-évaluation de la séance.