Skip to content

Instantly share code, notes, and snippets.

@fxg42
Created October 1, 2012 20:24
Show Gist options
  • Save fxg42/3814194 to your computer and use it in GitHub Desktop.
Save fxg42/3814194 to your computer and use it in GitHub Desktop.
MGL7361

MGL7361

Plan de cours

Plan de cours

Calendrier et lectures

  1. 1er octobre: Présentation. ch. 1 [Fow96]
  2. 8 octobre: Congé. ch. 2 et 3 [Fow96]
  3. 15 octobre: ch. 4 [Fow96]
  4. 22 octobre: ch. 5 [Fow96]
  5. 29 octobre: Remise TP1. ch. 6 [Fow96]
  6. 5 novembre: ch. 7 [Fow96]
  7. 12 novembre: ch. 8 [Fow96]
  8. 19 novembre: Remise TP2. ch. 9 [Fow96]
  9. 26 novembre: ch. 10 [Fow96]
  10. 3 décembre: ch. 11 [Fow96]
  11. 10 décembre: Remise TP3. Révision. ch. 12 et 13 [Fow96]
  12. 17 décembre: Examen final

Lectures additionnelles

Design SOLID

Design SOLID (copies en cache)

Réflexions sur le design et la maintenance de systèmes

XP

Généralités sur le design

DCI

Communication interprocessus

mglUnit

Projet de session

Livrable 1

Vous devez réaliser le design d'une librairie de tests unitaires (pensez à jUnit). La librairie doit permettre les cas suivants:

  • Définir des cas de tests.
  • Définir des tests unitaires (un cas de tests est composé de plusieurs tests unitaires).
  • Définir 4 types de fixtures (i.e. code toujours exécuté avant un cas de tests, après un cas de tests, avant chaque test unitaire, après chaque test unitaire).
  • Même lorsqu'un test unitaire échoue, les autres tests et les fixtures doivent être exécutés.
  • Les cas de tests peuvent être regroupés en suites de cas tests.
  • L'exécution d'un cas de tests ou d'une suite de tests doit produire un rapport contenant 1) le nombre de cas de tests exécutés, 2) le nombre de tests unitaires exécutés, 3) le nombre de tests unitaires réussis, 4) le nombre de tests unitaires échoués.

Vous devez produire, dans un premier temps, le document de conception de cette librairie. Le format du document est libre mais une autre équipe devraient être en mesure de programmer cette librairie à partir de ce document.

Finalement, vous devez aussi produire un document qui justifie vos choix de conception. Ce document doit expliquer votre processus de conception (pourquoi avoir pris telle ou telle décision), comment votre design respecte l'approche SOLID (voir les lectures additionnelles) et pourquoi votre design est de grande qualité.

Livrable 2

Vous devez d'abord effectuer la critique du design d'une autre équipe. Vous devez ensuite poursuivre leur travail en ajoutant les fonctionnalités suivantes:

  • La librairie doit avoir un mécanisme d'assertions permettant au rapport de contenir une affirmation comme ("résultat attendu [foo] mais était [bar]")
  • Il devrait être possible de produire différents rapports simultanément (dans un fichier, à la console, etc.).
  • Il devrait être possible de produire les rapports dans différents format (lisible pour un humain, XML, JSON, etc.)

L'évaluation du design de l'autre équipe doit prendre en considération (entre autres choses) la facilité/simplicité avec laquelle les modifications ont été apportés et si le design respecte l'approche SOLID.

Vous devrez aussi expliquer la rationnelle de vos modifications et pourquoi le design est de meilleure qualité suite à votre intervention.

Finalement, vous devez réaliser un second design de la librairie qui respectent les patterns d'analyse du chapitre 3 d' Analysis Patterns.

Livrable 3

Vous travaillerez avec votre design initial tel que modifié par l'autre équipe.

Vous devez d'abord effectuer la critique des modifications qui ont été apportées. Si des modifications supplémentaires doivent être apportées, faites-les et justifiez pourquoi.

Vous devez ensuite implémenter une version utilisable et complète de l'application. Le jour de la remise, vous ferez une courte présentation de son utilisation en classe.

À la lumière de l'expérience vécue lors de la réalisation, vous devez finalement faire une réflexion sur le processus de design employé et sur la qualité de votre design dans son ensemble.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment