Logo ÉTS
Session
Cours
Responsable(s) Sègla Jean-Luc Kpodjedo, Alain April

Se connecter
 

Sauvegarde réussie
Echec de sauvegarde
Avertissement





Cours

PARTIE 1 – L'évolution continue du logiciel (21 heures)

1. L'ingénieur de maintenance/support et les tests (4 heures)

  1.  La structure et le modèle du cours LOG240
  2.  Les laboratoires
  3.  Les normes utilisées dans ce cours
  4. La maintenance et l'agileté
    1. Introduction
    2. Modeèle de cycle de vie agile
    3. Quelle organisation effectue la maintenance du logiciel
    4. La maintenance dans un cadre agile

2. Les connaissances fondamentales en maintenance du logiciel (4 heures)

  1.  La définition de la maintenance du logiciel
  2.  La différence entre opérations, développement et maintenance
  3.  Les normes et les processus de la maintenance du logiciel
  4. L'activité de maintenance continue du logiciel

3. Les problématiques de la maintenance continue du logiciel (4 heures)

  1.  Les problèmes de la maintenance du logiciel
    • Perception externe (c.-à-d. vos utilisateurs et clients) des problèmes de la maintenance du logiciel
    • Perception interve (c.-à-d. vous, les mainteneurs) des problèmes de la maintenance du logiciel
  2.  Le modèle de mesure
    1. La mesure du processus de la maintenance
    2.  La mesure du produit logiciel maintenu
    3.  La mesure du service de maintenance
      • l'entente de service interne (SLA),
      • le contrat de service avec un tiers,
      • l'entente d'impartition, et
      • l'étalonnage (benchmarking) de la maintenance.

4. La compréhension du logiciel (4 heures)

  1. Introduction
  2. Les objectifs de la compréhension du logiciel:
    • la connaissance du domaine d'affaire, l'effet de l'exécution du logiciel et la relation cause à effet, la relation entre le logiciel et son environnement, et le support à la décision
  3. Le mainteneur et ses besoins d'information:
    • le gestionnaire, les analystes, les concepteurs et les programmeurs
  4. Les modèles de compréhension du logiciel et la notion de modèle mental
  5. Les stratégies de compréhension
    • stratégie descendante, ascendante et opportuniste
  6. Les techniques de lecture du logiciel
  7. Les facteurs qui ont un impact sur la compréhension du logiciel
    • l'expertise du domaine,
    • les questions de mise en oeuvre de la programmation,
    • la documentation,
    • l'organisation et la présentation du code source, et
    • les outils mis à la disposition du mainteneur

5. La réingénierie (5 heures)

  1. Introduction
  2. Les niveaux d'abstraction du logiciel
    • l'abstraction des fonctionalités, des données et des processus
  3.  Les buts et objectifs de la réingénierie du logiciel
  4.  Les techniques de la réingénierie du logiciel
    • les fondements de la réingénierie du logiciel, la redocumentation, la rétro-ingénirerie (recouvrement de la conception et des spécifications), la restructuration et l'optimisation
  5.  La stratégie de mise en oeuvre et les bénéfices (étude de cas)

 

PARTIE 2 – Les tests du logiciel (18 heures)

1. Les connaissances fondamentales en tests logiciels (4 heures)

  1. Introduction
  2. Vue d'ensemble du contrôle de la qualité du logiciel (incluant le SWEBOK)
  3.  Les connaissance fondamentales de tests
    • les questions clés que se posent les testeurs
    • les relations entre les tests et les autres activités de développement logiciel
  4.  Buts et objectifs de tests
    • le but du test
    • l'objectif de test
  5. Les techniques de tests
    • Les techniques qui utilisent les spécifications
    • Les techniques qui utilisent la structure du code
    • Les techniques selon l'expérience
    • Les techniques de test de mutation
    • Les techniques selon l'utilisation du logiciel
    • Les techniques combinées
  6. Les mesures de tests
  7. Tests applicatifs et domaines d'applications spécifiques
  8. Survol des outils de test
  9. Sommaire des apprentissages

2. Les tests boîte noire (5 heures)

  •  Tests aléatoires
  •  Séparation en classes d'équivalence
  •  Analyse de valeurs limites
  •  Graphes cause-effet
  •  Tests de transition d'états
  •  Tests boîte noire et produits commerciaux (COTS)

3. Les tests boîte blanche (5 heures)

  • Critères de tests
  • Graphes de flux de commande (contrôle)
  • Tests basés sur le flux de données
  • Tests de mutation
  • Les revues de code et de documents

4.  Développement dirigé par les tests et outils (3 heures)

  •  Introduction aux outils de tests populaires
  •  Introduction au développement dirigé par les tests (de l'anglais Test-Driven Development -TDD)
  • Introduction au langage Gherkin pour la technique BDD
  • Les outils pour les tests automatisés
  • Préoccupations pour bien réussir en tests automatisés
  • Des outils d'évaluation de la qualité du code source

5. Documentation et processus de tests (1 heure)

  • Présentation sommaire du modèle de maturité de tests (TMMi)
  • Centre d'expertise de test
  • Estimation de l'effort de test
  • Processus de classification des défauts
  • Plan de tests et spécification de cas de tests
  • Rapport d'exécution de tests

 

* La matière ne sera pas nécessairement présentée dans cet ordre.

 

Laboratoires et travaux pratiques

1.   Familiarisation et prise en charge d’un logiciel (VMWARE, GitHub, JIRA, MAVEN, QALab) – (4 heures)

2.   Rétro-ingénierie, Rapports de Problèmes et demandes de changements  (Eclipse Luna UML generators, Java RoundTrip) – (8 heures)

3.   Tests unitaires, d'intégration et système (UIspec4j et Junit) (6 heures)

4.   Réingénierie dirigée par les tests (6 heures)

Les étudiant(e)s effectuent les travaux pratiques en équipe. La composition des équipes sera déterminée au début du trimestre. Un projet de trimestre sera réalisé. Le projet consistera à mettre en œuvre les pratiques de tests et maintenance enseignées en classe.

NOTE : Si vous éprouvez des difficultés techniques avec le matériel des laboratoires du département, s.v.p. communiquez le problème à support-logti@etsmtl.ca. Consultez le site de cours pour les contenus pour chaque cours.


Utilisation d'outils d'ingénierie

Utilisation de divers logiciels dont: IntelliJ IDEA, QALab, Maven, Wiki, Jira, UIspec4j, Junit, Visual Paradigm et Cobertura.