Changer le numéro de l'itération plus bas pour chaque rapport -->
# Rapport Itération numéro 2
## Identification des membres de l'équipe
## Membre 1

- <nomComplet1>Jean-Félix St-Hilaire</nomComplet1>
- <courriel1>jean-felix.st-hilaire.1@ens.etsmtl.ca</courriel1>
- <codeMoodle1>AQ82960</codeMoodle1>
- <githubAccount1>[jfl3x](https://github.com/jfl3x)</githubAccount1>

## Membre 2

- <nomComplet2>Frédéric Gour-Bonin</nomComplet2>
- <courriel2>frederic.gour-bonin.1@ens.etsmtl.ca</courriel2>
- <codeMoodle2>AR88480</codeMoodle2>
- <githubAccount2>[JFKFred](https://github.com/JFKFred)</githubAccount2>

## Membre 3

- <nomComplet3>Samuel Montambault</nomComplet3>
- <courriel3>samuel.montambault.1@ens.etsmtl.ca</courriel3>
- <codeMoodle3>AQ83180</codeMoodle3>
- <githubAccount3>[MysticFragilist](https://github.com/MysticFragilist)</githubAccount3>

## Membre 4

- <nomComplet4>Simon Roy</nomComplet4>
- <courriel4>simon.roy.6@ens.etsmtl.ca</courriel4>
- <codeMoodle4>AQ83870</codeMoodle4>
- <githubAccount4>[SimonR99](https://github.com/SimonR99)</githubAccount4>

## Membre 5

- <nomComplet5>Amin Sghaier</nomComplet5>
- <courriel5>amin.sghaier.1@ens.etsmtl.ca</courriel5>
- <codeMoodle5>AR41550</codeMoodle5>
- <githubAccount5>[amins01](https://github.com/amins01)</githubAccount5>


## Exigences

| Exigence | Responsable |
| 
| MDD | Tous |
| Problème itération 01 | Tous |
| CU05a, CU05b, CU05c et CU05d | Amin & Samuel |
| CU03a, CU03b, CU03c et CU03d | Simon & Frédéric |
| Bonus (FURPS+) - F1 | JF St-Hilaire |
| Bonus (FURPS+) - U1 | JF St-Hilaire |
| Bonus (FURPS+) - S2 | JF St-Hilaire |
| Bonus (FURPS+) - S3 | JF St-Hilaire |

## Modèle du domaine (MDD) ![MDD SGA](../docs/modeles/mdd/mdd_sga.svg)

## CU03
### CU03a - Ajouter devoir <table>   <thead>     <tr>       <th>Contrats</th>       <th>Diagramme de séquence système (DSS)</th>     </tr>   </thead>   <tbody>     <tr>       <td>       <b>Opération:</b> Ajouter devoir <br>       <b>Postconditions:</b> <br>
- une nouvelle instance "devoir" Devoir a été créée <br>
- "devoir" a été associée au "cours" Cours sur une base de correspondance avec listeTravaux <br>       </td>       <td><img src="../docs/modeles/CU03/dss/dss_cu03a.svg" alt="DSS CU03a"></img></td>     </tr>   </tbody> </table>

Réalisation de cas d'utilisation (RDCU) <img src="../docs/modeles/CU01/rdcu/rdcu_RecupererCours.svg" alt="RDCU RecupererListCours"></img> <img src="../docs/modeles/CU03/rdcu/rdcu_recupererListeDevoirs.svg" alt="RDCU RecupererListDevoir"></img> <img src="../docs/modeles/CU03/rdcu/rdcu_AjouterDevoir.svg" alt="RDCU AjouterDevoir"></img>

### CU03b - Récupérer devoir <table>   <thead>     <tr>       <th>Contrats</th>       <th>Diagramme de séquence système (DSS)</th>     </tr>   </thead>   <tbody>     <tr>       <td>       <b>Opération:</b> Récupérer devoir <br>       <b>Postconditions:</b> aucune <br>       </td>       <td><img src="../docs/modeles/CU03/dss/dss_cu03b.svg" alt="DSS CU03b"></img></td>     </tr>   </tbody> </table>

Réalisation de cas d'utilisation (RDCU) <img src="../docs/modeles/CU01/rdcu/rdcu_RecupererCours.svg" alt="RDCU RecupererListCours"></img> <img src="../docs/modeles/CU03/rdcu/rdcu_recupererListeDevoirs.svg" alt="RDCU RecupererListDevoir"></img> <img src="../docs/modeles/CU03/rdcu/rdcu_RecupererDevoir.svg" alt="RDCU RecupererDevoir"></img>

### CU03c - Modifier devoir <table>   <thead>     <tr>       <th>Contrats</th>       <th>Diagramme de séquence système (DSS)</th>     </tr>   </thead>   <tbody>     <tr>       <td>       <b>Opération:</b> Modifier un devoir <br>       <b>Postconditions:</b> <br>
- devoir.description a été changé pour la nouvelle description <br>
- devoir.noteMax a été changé pour la nouvelle note maximal <br>
- devoir.description a été changé pour la nouvelle description <br>
- devoir.dateDebut a été changé pour la nouvelle dateDebut <br>
- devoir.dateFin a été changé pour la nouvelle dateFin <br>
- devoir.actif a été changé pour le nouvel état d'activité <br>       </td>       <td><img src="../docs/modeles/CU03/dss/dss_cu03c.svg" alt="DSS CU03c"></img></td>     </tr>   </tbody> </table>

Réalisation de cas d'utilisation (RDCU) <img src="../docs/modeles/CU03/rdcu/rdcu_RecupererDevoir.svg" alt="RDCU RecupererDevoir"></img> <img src="../docs/modeles/CU03/rdcu/rdcu_modifierDevoir.svg" alt="RDCU modifierDevoir"></img>

### CU03d - Supprimer devoir <table>   <thead>     <tr>       <th>Contrats</th>       <th>Diagramme de séquence système (DSS)</th>     </tr>   </thead>   <tbody>     <tr>       <td>       <b>Opération:</b> Supprimer devoir <br>       <b>Postconditions:</b> <br>
- "devoir" a été supprimé de "cours".listeTravaux       </td>       <td><img src="../docs/modeles/CU03/dss/dss_cu03d.svg" alt="DSS CU03d"></img></td>     </tr>   </tbody> </table>

Réalisation de cas d'utilisation (RDCU) <img src="../docs/modeles/CU03/rdcu/rdcu_RecupererDevoir.svg" alt="RDCU RecupererDevoir"></img> <img src="../docs/modeles/CU03/rdcu/retirerDevoir.svg" alt="RDCU retirerDevoir"></img>

## CU05

### CU05a - Ajouter questionnaire
<table>
  <thead>
    <tr>
      <th>Contrats</th>
      <th>Diagramme de séquence système (DSS)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
      <b>Opération:</b> Ajouter questionnaire <br>
      <b>Postconditions:</b> <br>
      - Le questionnaire a été ajouté.<br>
      - questionnaire.nom a été défini.<br>
      - questionnaire.description a été défini.<br>
      - questionnaire.etat a été défini.<br>
      - Les questions ont été associées au questionnaire.<br>
      </td>
      <td><img src="../docs/modeles/CU05/dss/dss_cu05a.svg" alt="DSS CU05a"></img></td>
    </tr>
  </tbody>
</table>

####  Réalisation de cas d'utilisation (RDCU)
<!-- TODO pas le même nom que dans le dss ? -->
<img src="../docs/modeles/CU01/rdcu/rdcu_RecupererCours.svg" alt="RDCU RecupererListCours"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_recupererQuestionnaire.svg" alt="RDCU RecupererQuestionnaires"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_ajouterQuestionnaire.svg" alt="RDCU ajouterQuestionnaire"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_recupererCategoriesQuestions.svg" alt="RDCU RecupererCategoriesQuestions"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_recupererQuestionsDansCategorie.svg" alt="RDCU recupererQuestionsDansCategorie"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_ajouterQuestionsAuQuestionnaire.svg" alt="RDCU ajouterQuestionsAuQuestionnaire"></img>


### CU05b - Récupérer questionnaire
<table>
  <thead>
    <tr>
      <th>Contrats</th>
      <th>Diagramme de séquence système (DSS)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
      <b>Opération:</b> Récupérer questionnaire <br>
      <b>Postconditions:</b> aucun <br>
      </td>
      <td><img src="../docs/modeles/CU05/dss/dss_cu05b.svg" alt="DSS CU05b"></img></td>
    </tr>
  </tbody>
</table>

####  Réalisation de cas d'utilisation (RDCU)
<!-- TODO pas le même nom que dans le dss ? -->
<img src="../docs/modeles/CU01/rdcu/rdcu_RecupererCours.svg" alt="RDCU RecupererListCours"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_recupererQuestionnaire.svg" alt="RDCU RecupererQuestionnaires"></img>
<!-- TODO il manque tu un RDCU details ici ? -->


### CU05c - Modifier questionnaire
<table>
  <thead>
    <tr>
      <th>Contrats</th>
      <th>Diagramme de séquence système (DSS)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
      <b>Opération:</b> Modifier questionnaire <br>
      <b>Postconditions:</b> <br>
      - questionnaire.description a été modifié. <br>
      - questionnaire.etat a été modifié. <br>
      - Une question peut avoir été associée au questionnaire. <br>
      - Une question peut avoir été dissociée du questionnaire. <br>
      - La liste de question a été réordonnée dans le questionnaire.<br>
      </td>
      <td><img src="../docs/modeles/CU05/dss/dss_cu05c.svg" alt="DSS CU05c"></img></td>
    </tr>
  </tbody>
</table>

####  Réalisation de cas d'utilisation (RDCU)
<img src="../docs/modeles/CU05/rdcu/rdcu_recupererQuestionnaire.svg" alt="RDCU RecupererQuestionnaire"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_modifierQuestionnaire.svg" alt="RDCU modifierQuestionnaire"></img>




### CU05d - Supprimer questionnaire
<table>
  <thead>
    <tr>
      <th>Contrats</th>
      <th>Diagramme de séquence système (DSS)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>
      <b>Opération:</b> Supprimer questionnaire <br>
      <b>Postconditions:</b> <br>
      - Le questionnaire a été supprimé du cours.
      </td>
      <td><img src="../docs/modeles/CU05/dss/dss_cu05d.svg" alt="DSS CU05d"></img></td>
    </tr>
  </tbody>
</table>

####  Réalisation de cas d'utilisation (RDCU)
<img src="../docs/modeles/CU05/rdcu/rdcu_recupererQuestionnaire.svg" alt="RDCU RecupererQuestionnaire"></img>
<img src="../docs/modeles/CU05/rdcu/rdcu_retirerQuestionnaire.svg" alt="RDCU retirerQuestionnaire"></img>



## Diagramme de classe logicielle (DCL)
![Custom diagram class](../docs/modeles/diagramClass/diagramClass.svg)
Ce diagramme est pour illustré grossièrement la relation entre les classes ainsi que l'utilisation du patron **_décorateur_** pour la tâche F1 (journalisation des erreurs) qui utilise l'objet Console pour inscrire les messages de console pertinent dans un fichier .txt.

### Diagramme de classe TPLANT
![diagramme de classe (autogénéré)](../docs/modeles/diagramClass_tplant/diagramClass_tplant.svg)
tous comme durant l'itération 01, le diagramme de classe ne sera pas comme le MDD car l'application, en plus d'être encore en développement, nous avons du créer plusieurs classes supplémentaires pour utilisé Node.JS et typescript, mais nous avons aussi ajouté des classes qui permettre de créer une application selon les bonnes pratiques de programmation telles que le patron MVC, l'utilisation d'interface et le polymorphisme qui n'est pas présent dans le MDD.


<!-- retour de chariot pour permettre lors de l'export en PDF de ne pas avoir des champs sur 2 pages -->
<br>
<br>
<br>

## Retour sur la correction du rapport précédent
Le rapport précédent à bien été, les erreurs principalement présentées étaient principalement ajustées et complète nos tests unitaires ainsi que quelque refactorisation du code pour permettre une meilleure cohésion des classes. Nous avons changé de correcteur donc nous avons aussi eux certains recommandations durant la rencontre de conception qui ont bousculé quelque que changement dans notre projet. Nous avons changé les équipes et continué à utiliser une tactique qu'une personne "code" tandis que l'autre effectue les tests.
Vérification finale

- [x] Vous avez un seul MDD
- [x] Vous avez mis un verbe à chaque association
- [x] Chaque association a une multiplicité
- [x] Vous avez un DSS par cas d'utilisation
- [x] Chaque DSS a un titre
- [x] Chaque opération synchrone a un retour d'opération
- [x] L'utilisation d'une boucle (LOOP) est justifiée par les exigences
- [x] Vous avez autant de contrats que d'opérations système (pour les cas d'utilisation nécessitant des contrats)
- [x] Les postconditions des contrats sont écrites au passé
- [x] Vous avez autant de RDCU que d'opérations système
- [x] Chaque décision de conception (affectation de responsabilité) est identifiée et surtout **justifiée** (par un GRASP ou autre heuristique)
- [x] Votre code source (implémentation) est cohérent avec la RDCU (ce n'est pas juste un diagramme)
- [x] Vous avez un seul diagramme de classes
- [x] Vous avez remis la version PDF de ce document dans votre répertoire
- [x] [Vous avez regardé cette petite présentation pour l'architecture en couche et avez appliqué ces concepts](https://log210-cfuhrman.github.io/log210-valider-architecture-couches/#/)  -->
