Aller au contenu

Génie logiciel

Analyse (#AGREG)

  • Phases de développement
  • Diagrammes associés (diagrammes de cas d’utilisation, d’état, de séquence, de classes, etc.).

Conception (#AGREG)

  • Conception orientée objet (exceptions, principes SOLID, patrons de conception).

    Une connaissance exhaustive des patrons de conception n’est pas exigible à cette épreuve.

Tests

Notions   Commentaires
Jeu de tests associé à un programme. Il n’est pas attendu de connaissances sur la génération automatique de jeux de tests; un étudiant est capable d’écrire un jeu de tests à la main, donnant à la fois des entrées et les sorties correspondantes attendues. On sensibilise, par des exemples, à la notion de partitionnement des domaines d’entrée et au test des limites.
Graphe de flot de contrôle. Chemins faisables. Couverture des sommets, des arcs ou des chemins (avec ou sans cycle) du graphe de flot de contrôle. Les étudiants sont capables d’écrire un jeu de tests satisfaisant un critère de couverture des instructions (sommets) ou des branches (arcs) sur les chemins faisables.
Test exhaustif de la condition d’une boucle ou d’une conditionnelle. Il s’agit, lorsque la condition booléenne comporte des conjonctions ou disjonctions, de ne pas se contenter de la traiter comme étant globalement vraie ou fausse mais de formuler des tests qui réalisent toutes les possibilités de la satisfaire. On se limite à des exemples simples pour lesquels les cas possibles se décèlent dès la lecture du programme.

#AGREG

  • Assertions, jeux de tests, tests en boîte blanche/noire.
  • Notion de test fonctionnel appliqué aux tests unitaires, comportementaux et d’intégration.
  • Notion de test non-fonctionnel : tests de performances, tests d’intrusions.
  • Tests avancés : bouchons de test (mock ), notion de couvertures de test, mutation testing.

Qualité logicielle (#AGREG)

  • Métriques de code (complexité cyclomatique, métriques d’Halstead, indice de maintenabilité).

Gestion de projet (#AGREG)

  • Intégration & livraison continue, gestionnaire de code source (e.g., Git).