Cours 4.1 Flashcards
Quel est l’objectif de l’espace de définition du problème?
Comprendre le problème et son domaine d’application.
Quel est l’objectif de l’espace de définition de la solution?
Comprendre comment réaliser la solution.
Quels sont les aspects importants de l’implémentation?
- Programmer
- Déboguer
- Tester unitaire
- Intégrer
Qu’est ce que le plan d’intégration?
C’est l’ordre d’intégration des sous-systèmes en builds et comment ces builds sont intégrés dans un système fonctionnel.
Quelles est le contenu du guide de programmation?
- Niveau de documentation du code : Qu’est-ce qui doit être commenté et comment?
- Restrictions de programmation : Y’a-t-il certains mécanismes du langage qu’on n’utilise pas?
- Conventions de nommage : Comment rédiger les noms de variables, de fonctions, de classe, etc.
Quels sont les fondements de l’approche de création du guide de programmation?
- Généralement sous la responsabilité de l’organisation
- Créé itérativement selon les besoins des équipes
- Adapté au besoins de l’organisation, du projet
Quels sont les principes fondamentaux de programmation?
- DRY: Don’t repeat yourself.
- KISS: Keep it simple, stupid!
- YAGNI : You ain’t gonna need it. Éviter de planifier des structures trop complexes.
- SOLID
- Guide de microsoft
Que testent les tests unitaires?
- Paramètres corrects et incorrects
- Retour de fonction corrects et incorrects
- Erreurs et exceptions possibles
- Préconditions et postconditions
- Invariants de classe
Que se passe-t-il après un commit?
- Lancement des tests unitaires
- Intégration automatique
- Lancement des tests de système sur le build
- Autres tests (performance, sécurité, métriques de qualité du code, etc).
- Transfert du code source à l’environnement suivant.
Quelles sont les autres approches d’implémentation?
- Pair programming (PP)
- Double commit
- Test driven development (TDD)
- Refactoring
- Intégration continue et tests automatisés
- Revue de code formelle
Qu’est-ce que l’approche rationnelle?
C’est ne pas prendre de décision avant d’avoir toutes les information pertinentes. C’est une approche irréaliste en logiciel étant donné qu’il y a une infinité de détails pour chaque problème.
Qu’est-ce que l’approche naturaliste?
C’est sauter sur la première solution qui semble marcher. Elle n’est pas idéale pour des problèmes complexes où un échec pourrait être critique. Ex.: Eilmer de Malmesbury.
Qu’est-ce que le point milieu?
Rechercher des informations jusqu’à trouver une gramme de solutions parmi laquelle s’en trouve une SUFFISAMMENT SATISFAISANTE (Satisficing).
Qu’est-ce qui n’est pas testé par les tests unitaires?
- Est-ce que ça interragit correctement avec une autre fonction? -> INTÉGRATION
- Est-ce que ça fonctionne? -> VÉRIFICATION
- Est-ce que ça correspond aux besoins du client -> VALIDATION
Quelles sont les différentes approches d’intégration selon l’architecture et quand sont-ils utilisés?
- Bottom-up : Quand les aspects matériels sont importants, en créant seulement des drivers.
- Top-down : Quand les interfaces sont importantes, en créant seulement des stubs.
- Par silo : Par paquetage, par module relativement indépendant
- En étoile : À partir d’un élément central critique (ex.: plugiciel, plugin)
- Par bus : À travers un canal commun de communication, un portail commun, etc.
- Par microservices : Des petits logiciels qui fonctionnent indépendamment les uns des autres.
- Etc.