Construction et Qualité Logicielle
La construction et la qualité logicielles concernent la création disciplinée de code fonctionnel et les techniques — tests, vérification, revue et mesure — qui établissent et assurent que le logiciel répond à ses exigences et à ses objectifs de qualité.
Definition
La construction logicielle est la création détaillée de logiciels fonctionnels par le codage, la vérification, les tests unitaires et le débogage, et la qualité logicielle est le degré auquel un logiciel satisfait ses exigences déclarées et implicites, assurée par des activités de vérification, de validation et de gestion de la qualité.
Scope
Ce domaine couvre les pratiques de construction logicielle, y compris les standards de codage, la programmation défensive et les tests unitaires ; les niveaux et techniques de test logiciel ; la vérification et la validation ; l'analyse statique et dynamique ; la revue de code et le refactoring ; les attributs et métriques de qualité logicielle ; et les méthodes formelles pour prouver la correction. Il unifie les activités qui produisent et assurent un logiciel fiable.
Sub-topics
Core questions
- Quelles pratiques produisent un code correct, lisible et maintenable ?
- Comment les défauts sont-ils détectés par les tests, la revue et l'analyse ?
- Comment la qualité logicielle est-elle définie, mesurée et assurée ?
- Quand la correction peut-elle être établie par une preuve formelle plutôt que par les seuls tests ?
Key theories
- Les tests révèlent la présence, et non l'absence, de défauts
- Les tests peuvent démontrer l'existence de défauts mais ne peuvent pas prouver leur absence ; des tests efficaces visent donc à maximiser la probabilité de trouver des erreurs par une sélection systématique de cas plutôt que par une exécution exhaustive.
- Vérification et validation
- La vérification s'assure que le logiciel est construit correctement par rapport à sa spécification, tandis que la validation s'assure que le bon logiciel a été construit pour répondre aux besoins de l'utilisateur ; ensemble, elles couvrent les revues, l'analyse et les tests tout au long du cycle de vie.
- La qualité est intégrée dès la conception, non ajoutée par les tests
- La qualité résulte des pratiques de construction, de la conception et de la discipline des processus plutôt que de l'inspection finale ; la prévention des défauts et la détection précoce sont bien moins coûteuses qu'une correction tardive.
Clinical relevance
Les activités de construction et de qualité déterminent la fiabilité, la sécurité et la maintenabilité d'un système et dominent le coût des défauts ; une vérification précoce et systématique réduit les défaillances sur le terrain et le travail de reprise, ce qui est essentiel pour livrer un logiciel fiable.
Evidence & guidelines
La norme ISO/IEC 25010 définit un modèle de qualité des produits logiciels, et les domaines de connaissance du SWEBOK sur la construction logicielle, les tests et la qualité fournissent des orientations de référence consensuelles.
History
Les tests systématiques ont été articulés par Myers dans les années 1970, la programmation structurée et la vérification par Dijkstra et Hoare à la même époque, et l'artisanat de la construction par McConnell dans les années 1990 ; les modèles et standards de qualité tels que l'ISO/IEC 25010 ont consolidé les attributs et la mesure de la qualité.
Debates
- Tests versus vérification formelle
- La question de savoir si la confiance dans la correction doit reposer sur des tests approfondis ou sur une preuve formelle est débattue ; les tests s'adaptent aux grands systèmes mais ne peuvent garantir la correction, tandis que les méthodes formelles offrent des garanties solides à un coût plus élevé et sont réservées aux composants critiques.
Key figures
- Glenford Myers
- Steve McConnell
- C. A. R. Hoare
- Edsger Dijkstra
Related topics
Seminal works
- myers2011
- mcconnell2004
- swebok2014
Frequently asked questions
- Les tests peuvent-ils prouver qu'un programme est correct ?
- Non. Les tests exercent un ensemble fini d'entrées et peuvent révéler des défauts, mais ne peuvent pas démontrer leur absence ; prouver la correction pour toutes les entrées nécessite une vérification formelle, ce qui n'est réalisable que pour des parties restreintes ou critiques d'un système.
- La qualité est-elle la même chose que l'absence de bogues ?
- Non. La qualité logicielle est multidimensionnelle, englobant la correction fonctionnelle ainsi que des attributs tels que la fiabilité, la performance, la sécurité, l'utilisabilité et la maintenabilité ; un programme avec peu de bogues peut néanmoins être de mauvaise qualité s'il est impossible à maintenir ou peu sécurisé.