Séance 6 — TP : Suite de la programmation du logiciel
(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 :
(optionnel) Révision du concept des exceptions
- révision du concept d'« exception ».
Exception simple
Dans Eclipse, ouvrez la classe classe ArrayErrors du paquetage eu.telecomsudparis.csc4102.cours.seance6.exception.tp dans le projet GitLabEns csc4102-exemples que vous avez cloné. Exécutez la classe ArrayErrors : dans le menu contextuel de la classe, Run As > Application.
Vérifiez que vous comprenez clairement la relation entre l'affichage et l'exécution :
Voici une explication de l'exécution :
- Le programme ArrayErrors contient deux tentatives d'accès à l'entrée d'indice -1 d'un tableau d'entiers. Ces deux tentatives lèvent une exception de type ArrayIndexOutOfBoundsException. La première tentative est placée dans un bloc try-catch, ce qui permet de traiter l'exception correspondante. La seconde tentative n'est pas placée dans un bloc try-catch et provoque l'arrêt de l'exécution du programme.
Exemple plus complet
Testez l'exemple de traitement d'exception suivant pris dans le même paquetage :
- la définition de l'exception HorsBornes ;
- la classe UneLevee : le constructeur de cette classe lève une exception de type HorsBornes lorque le paramètre qui lui est passé n'est pas entre 0 et 3 ;
- la classe UneInterception contient une méthode main qui construit plusieurs objets de type UneLevee. L'exception est traitée une fois grâce à un bloc try-catch.
Exécutez la classe UneInterception. Comprenez les affichages :
Vérifiez que vous comprenez bien l'utilisation des trois parties : 1) déclaration de levée d'exception avec throws, 2) levée d'exception avec throw new et 3) surveillance et traitement d'exception respectivement dans les blocs try et catch.
Continuation du développement du noyau fonctionnel de l'application
Programmation des cas d'erreur
Utilisez la gestion des exceptions pour ajouter la détection des cas d'erreur avec leur traitement. D'après la stratégie « programmation défensive » présentée dans les diapositives du cours de la séance 4 (à partir de la diapositive « 3.2 Précondition, postcondition, et algorithme d’une opération ») ainsi que dans les diapositives du cours de la séance 6 (diapositive « 2.1 Pratiquement, dans ce module »), il s'agit de :
- tester en début de méthode la validité des préconditions,
- vérifier l'invariant en fin de méthode si l'état de l'objet a été modifié.
Méthode invariant()
Lors de la conception détaillée, vous avez calculé l'invariant
de la classe
Programmation et exécution des tests
- programmation des tests unitaires,
- programmation des tests de validation.
Exécution des tests dans Eclipse
Exécutez les tests déjà écrits en JUnit : dans le menu contextuel du paquetage ...tests.unitaires ou ...tests.validation, Run As > JUnit Test. La partie gauche montre la fenêtre JUnit avec le résultat de l'exécution des méthodes de test. Une barre verte indique que tous les tests passent et une barre rouge qu'au moins un test est en erreur. Plus précisément, une méthode de test est en vert lorsqu'elle passe (vrai négatif et vrai positif), avec une croix rouge lorsqu'elle ne passe pas parce que l'exécution de la méthode de test lève une exception qui ne doit pas être levée (faux positif), et avec une croix bleue lorsqu'elle ne passe pas parce que l'exécution de la méthode de test ne lève pas une exception qui est attendue (faux négatif).
Tests unitaires
Lors de la préparation des tests unitaires, vous avez
construit des tables de décision pour les opérations
Tests de validation
Lors de la préparation des tests de validation, vous avez
construit des tables de décision
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 le suivi ;
- page Partage du groupe de TP 2 pour le suivi ;
- page Partage du groupe de TP 3 pour le suivi ;
- page Partage du groupe de TP 4 pour le suivi ;
- page Partage du groupe de TP 5 pour le suivi ;
- page Partage du groupe de TP 6 pour le suivi.
C'est aussi le moment de parcourir la grille d'auto-évaluation de la séance.