Vous êtes sur la page 1sur 50

Introduction 

à l'Assurance de Qualité 
Logicielle

Basé sur D. Galin Ch1 – 4, 5 et R. Patton Ch 1
Objectifs
● Qu'est­ce la Qualité Logicielle ?
● Pourquoi la Qualité Logicielle est importante ?
● Qu'est­ce l'Assurance de Qualité Logicielle ?
● Facteurs de Qualité Logicielle 
● Éléments de l'Assurance de Qualité Logicielle 
● Plans de Développement et de qualité 
● Modèles de maturité de processus
Qu'est­ce un logiciel ?
Selon l'IEEE 
Un logiciel est:
Des programmes, procédures, ainsi que 
possiblement de la documentation et des données 
liées à l'opération d'un système informatique. 
Erreurs, fautes et pannes du logiciel 
● Bug/défaut/faute conséquence d'erreurs humaines
● résulte en non-conformité aux exigences
● se manifeste comme un panne lors de l'exécution

Processus de Développement du Logiciel

erreur
faute
panne
Neuf sources d'erreurs
1. Mauvaise définition des exigences
2. Problèmes de communication entre clients et developpeurs 
3. Déviations délibérées des exigences du logiciel
4. Erreur de conception (logique) 
5. Erreurs de programmation
6. Non conformité à la documentation ainsi qu'aux instructions de 
programmation
7. Insuffisances du processus de tests 
8. Erreurs de l'interface usagers ainsi que de la procédure 
9. Erreurs de documentation 
Relation entre processus de 
développement et défauts
La majorité des défauts sont introduits tôt
Effort pour
Pourcentage fixer
Phase de défaux défaux
Exigences 56 82
Design 27 13
Code 7 1
Autres 10 4

Coût relatif pour corriger les défauts
Phase ou trouvée Ratio de coût
Exigences 1 Exigences sont la 
Design 3–6 raison principale du 
Coding 10
Unit/Integration testing 15 – 40
succès ou échec de 
System/Acceptance testing 30 – 70 projets
Production 40 – 1000
Qu'est­ce la Qualité logicielle ?
● Conformité aux exigences
● Sens le plus étroit de qualité du logiciel
– absence de bugs
– bas ratio de défauts (# de défauts/unité de taille)
– haute fiabilité (nombre de pannes par n heures
d'opération)
● Temps Moyen entre Pannes (Mean Time To
Failure - MTTF) probabilité d'opération sans
panne dans un temps spécifié
Qu'est­ce la Qualité logicielle ?
Selon l'IEEE

La qualité logicielle est:
 
(1) Le degré avec lequel un système, un composant ou un 
processus satisfait à ses exigences spécifiées.
(2) Le degré avec lequel un système, un composant ou un 
processus satisfait aux besoins ou attentes de ses 
clients/usagers.  
Qu'est­ce la Qualité logicielle?
Selon Pressman

La qualité logicielle est:
 
Conformité aux exigences fonctionnelles et de performance 
explicites, aux normes de developpement explicitement 
documentées, et aux caractéristiques implicites qui sont 
attendues de tout le logiciel professionnellement développé
Importance de la qualité du logiciel
● Logiciel est une composante majeure des systèmes 
informatiques (environ 80% du coût) – utilisés pour
– communication (ex. syst. téléphone, syst. email)
– santé (monitoring),
– transport (ex. automobile, aéronautique),
– échanges économiques (ex. e­commerce),
– entertainment,
– etc.
● Les défauts du logiciel sont extrêmement coûteux en terme 
– d'argent
– de réputation
– de perte de vie
Importance de la qualité du logiciel
● Plusieurs désastres historiques attribués au logiciel 
– 1988 abattage d'un Airbus 320 par l'USS Vincennes – affichage cryptique 
et confusant du logiciel de détection
– 1991 échec de missile patriot ­ calcul imprécis de temps dû à des erreurs 
arithmétiques
– London Ambulance Service Computer Aided Despatch System – plusieurs 
décès
– Le 3 Juin 1980, North American Aerospace Defense Command (NORAD) 
rapporta que les  U.S. étaient  sous attaque de  missiles
– Échec du premier lancement opérationnel de la navette spatiale dont le 
logiciel d'exploitation temps­réel consiste en environ 500,000 LOC – 
problème de synchronisation entre les ordinateurs de contrôle de vol
– panne de 9 heures  du réseau téléphonique longue distance d'AT&T – 
provoqué par un patch de code non testé
Importance de la qualité du logiciel
● Ariane 5 crash 4 Juin 1996
– Vol inaugural du lanceur européen Ariane 5 crash  
environ 40 secondes après décollage
– Perte d'environ ½  milliards de dollars
– L'explosion était le résultat d'une erreur logiciel 
● Exception non capturée due à une erreur de floating­point:  
conversion d'entier 64­bit à entier 16­bit signed integer 
appliqué à un nombre plus large que supposé 
● Le module était ré­utilisé sans avoir été testé 
convenablement d'Ariane 4 
– Erreur n'était pas supposé survenir avec Ariane 4
– Pas de gestionnaire d'exception
Importance de la qualité du logiciel
● Mars Climate Orbiter – 23 Septembre 1999
– Mars Climate Orbiter disparaît alors qu'il commence à 
orbitrer Mars.
– Coût environ $US 125­million 
– Panne due à une erreur dans le transfert de 
l'information entre une équipe au Colorado et une 
équipe en Californie
● Une équipe utilisa des unités anglaises (ex., inches, feet, 
pounds) tandis que l'autre utilisa des unités métriques pour 
une opération clé.
Importance de la qualité du logiciel
● Mars Polar Lander ­ Décembre 1999
– Mars Polar Lander disparait à l'atterrissage sur la 
planète Mars 
– Panne probablement due à la mise inattendue d'un 
seul bit de donnée.
● défaut non décelé durant les tests
● équipes indépendantes on testés des aspects du système 
séparément
Importance de la qualité du logiciel
● Virus et vers Internet 
– Ver Blaster ($US 525 millions)
– Sobig.F ($US 500 millions – 1milliard)
● Exploitent des vulnérabilités bien connues du 
logiciel
– Les développeurs de logiciel ne consacrent pas assez d'effort à 
appliquer des leçons apprises sur les causes des vulnérabilités. 
– Les mêmes types de vulnérabilités continuent à être vus dans 
les nouvelles versions des produits qui étaient dans des 
versions précédentes.
● Problèmes d'utilisabilité
Importance de la qualité du logiciel
● Impact monétaire de logiciel de mauvaise qualité (Standish group ­ 1995)
● 175,000 projets logiciels/an – coût moyen par projet
– Grosses compagnies ­ $US 2,322,000 
– Compagnies Moyennes ­ $US 1,331,000 
– Petites compagnies ­ $US 434,000
● 31.1% des projets annulés avant leur complétion
– coût $81 milliards
● 52.7% des projets dépassent leur budget ­ coûtent 189\% de l'original
– coût $59 milliards
● 16.2% des projets complétés à temps selon le budget (9% pour grosses 
compagnies)
● Grosses compagnies – systèmes délivrés ont approximativement seulement 
42% des fonctions originellement­proposées
● 78.4% des projets de petites compagnies sont déployés avec au moins  74.2% 
des fonctions originelles.
Problématique de la Qualité 
Logicielle
● Le caractère unique du produit logiciel 
● Grande complexité 
● Invisibilité du produit
● Opportunités limités de détection de  (“bugs”)
● seulement durant le développement
● Les environnements de développement du logiciel 
● Sous contrat
● Sujet à une relation client­fournisseur
● Exige un travail d'équipe
● Exige la coopération et coordination avec d'autres équipes de développement 
● Exige des interfaces avec d'autres systèmes
● Exige la poursuite du projet alors que l'équipe change 
● Exige la maintenance pendant plusieurs années
Facteurs de Qualité Logicielle
● Modèle de qualité logicielle de McCall's 

Facteurs de qualité logicielle

Facteurs liés à l'opération du produit

• Correctude Facteurs liés à la révision du produit
• Fiabilité
• Maintainabilité Facteurs liés à la transition du produit
• Efficacité
• Flexibilité • Portabilité
• Intégrité
• Testabilité • Reusabilité
• Utilisabilité
• Interopérabilité
Facteurs de Qualité Logicielle
● Correctude
– exactitude, complétude de la sortie requise
– disponibilité, caractère à­jour de l'information
● Fiabilité
– taux de panne maximum
● Efficacité
– ressources nécessaires à la fonction du logiciel 
● Intégrité
– sécurité du système logiciel, droits d'accès
● Utilisabilité
– habilité d'apprentissage, habilité d'usage pour la tâche requise
Facteurs de Qualité Logicielle
● Maintenabilité
– effort pour identifier et corriger les pannes (modularité, 
documentation, etc)
● Flexibilité
– degré d'adaptabilité (a de nouveaux usagers, tâches, etc)
● Testabilité
– support pour tests (ex: fichier logs, diagnostics automatiques, 
etc) 
Facteurs de Qualité Logicielle
● Portabilité
– adaptation à d'autres environnements (matériel, logiciel)
● Reusabilité
– usage de composants du logiciel pour d'autres projets
● Interopérabilité 
– habilité d'interfassage avec d'autres composants/systèmes
Qu'est­ce l'assurance de qualité 
logicielle ?
Selon l'IEEE
L'assurance qualité logicielle est:
 
1. Un modèle planifié et systématique de toutes les actions 
nécessaires pour fournir une confiance adéquate qu'un 
article ou un produit est conforme à ses exigences  
techniques établies.
2. Un ensemble d'activités conçu pour évaluer le processus 
par lequel les produits sont développés ou fabriqués.  A 
contraster avec:  le contrôle de qualité.
Qu'est­ce l'assurance de qualité 
logicielle ?
Selon D. Galin
L'assurance qualité logicielle est:
 
Un ensemble systématique et prévu d'actions nécessaires à 
l'obtention d'une confiance adéquate que le procédé de 
développement de logiciel ou le processus de maintenance 
d'un produit de système logiciel est conforme aux exigences 
techniques fonctionnels établies aussi bien qu'aux exigences 
concernant  le schedule et budget.
Objectifs de l'AQL dans le 
développement
(1) Assurer un niveau de confiance acceptable que le logiciel 
sera conforme aux exigences fonctionnelles techniques.
(2) Assurer un niveau de confiance acceptable que le logiciel 
sera conforme aux exigences de gestion concernant 
l'échéancier et le budget.
(3) Initiation et activités de gestion pour l'amélioration et la plus 
grande efficience des activités de developpement et 
d'assurance de qualité logicielle.
Objectifs de l'AQL dans la  
maintenance
(1) Assurer un niveau de confiance acceptable que les activités 
de maintenance  logiciel seront conformes aux exigences 
fonctionnelles techniques.
(2) Assurer un niveau de confiance acceptable que les activités 
de maintenance  logiciel seront conformes aux exigences de 
gestion concernant l'échéancier et le budget.
(3) Initier et gérer des activités visant à l'amélioration et à 
l'augmentation de l'efficience des activités de maintenance et 
d'assurance de qualité logicielle.
Trois principes généraux de l'AQL
● Savoir ce que vous faites
● Savoir ce que vous devriez faire
● Savoir mesurer la différence
Trois principes généraux de l'AQL
● Savoir ce que vous faites
– comprendre ce qui  est entrain d'être construit, 
comment il est construit et ce qu'il fait
– suppose un processus de développement logiciel avec 
● une structure de gestion (milestones, schéduling)
● politique de rapport
● processus de suivi 
Trois principes généraux de l'AQL
● Savoir ce que vous devriez faire
– avoir des exigences et spécifications explicites
– suppose un processus de développement logiciel avec
● analyse des exigences,
● tests d'acceptabilité,
● feedback fréquent des usagers 
Trois principes généraux de l'AQL
● Savoir mesurer la différence
– avoir des mesures explicites comparant ce qui est 
entrain d'être fait de ce qui devrait­être fait
– quatre méthodes complémentaires:
● méthodes formelles – vérifier mathématiquement des propriétés 
spécifiées 
● tests – données explicites pour exécuter le logicielle et vérifier si 
les résultats correspondent aux attentes 
● inspections – examen par humain des exigences, design, code, ... 
basés sur des checklists
● métriques – mesures un ensemble connu de propriétés liées à la 
qualité
Assurance de Qualité Logicielle 
● Approche complète de cycle de vie concernée par chaque aspect 
du processus de développement de logiciels.
● Comprend
– ensemble complet d'objectifs de qualité, 
– attributs mesurables de qualité (métriques de qualité) pour 
évaluer le progrès vers les objectifs,
– objectifs quantitatives de certification pour toutes les parties du 
processus de développement
● Prend en compte:
– exigence de produit des clients
– exigences de qualité, et 
– exigences de qualité corporatifs
AQL 
SQE comprend
● Vérification Exigences vérification
– construisons nous le produit bien?
– effectuée à la fin d'une phase pour  Architecture vérification
s'assurer que des besoins établis 
pendant la phase précédente ont 
été répondus
Design Design vérification
● Validation
– construisons nous le bon produit? 
Codage vérification
– effectuée à la fin du processus de 
développement pour assurer la 
conformité aux exigences du  validation
produit
AQL
Comprend
● Prévention de défauts
–  Préviens la survenance de défauts
–  Activités: formation, planification, simulation
● Détection de défauts 
– Trouver des défauts dans un artefact logiciel
– Activités: inspections, test, mesure
● Suppression de défauts
–  isolation, correction, vérification de correction
– Activités: isolation de fautes, analyse de fautes, test de régression
AQL
● Activités typiques de processus d'Assurance de la 
Qualité Logicielle
–  Validation des exigences.
–  Vérification de Design.
–  Vérification statique de code (inspection/revues).
–  Test dynamique.
–  Ingénierie de processus et standards.
–  Métriques et amélioration continue.
Composants d'un système d'AQL ­ 
sommaire
•Composants pre­projet
•revues de contrats
•plans de développement et de qualité
•Composants du cycle de vie du logiciel
•Revues
•Opinions d'experts
•Tests du logiciel 
•Composants de maintenance logiciel
•Assurance de la qualité du travail des participants externes 
Composants d'un système d'AQL ­ 
sommaire
•Composants d'infrastructure pour la prévention d'erreurs et des 
améliorations
•Procédures et instruction de travail
•Templates et listes de contrôle
•Formation, recyclage et certification du personnel  
•Actions de prévention et correction  
•Gestion de configuration
•Contrôle de documentation
•Gestion de composants d'AQL 
•Contrôle du progrès de projets
•Métriques de qualité logicielle
•Coûts de qualité logicielle
Composants d'un système d'AQL ­ 
sommaire
•Standards AQL, système de certification et composants de vérification
•Standards de processus de projets
•Standards de gestion de qualité
•Organisation pour AQL – composante humaine
•Rôle de gestion
•Unité AQL
•Administrateurs, comités et forum d'AQL
Composants d'un système d'AQL ­ 
sommaire
•Considérations guidant la construction et l'organisation du système 
d'AQL
•Types de clientèle du développement/maintenance logicielle
•Gamme des produits logiciel.
•Taille de l'organisation
•Degré et nature de la coopération avec d'autres organisations 
développant des projets liés 
•Objectifs d'optimisation
•Niveau de complexité et difficulté
•Degré d'expérience avec la technologie du projet
•Degré de ré­utilisation du logiciel dans les nouveau projets
•Qualifications professionnelles
•Niveau de familiarité avec les membres de l'équipe 
L'Edifice de la Qualité 
Logicielle
s
p o nent Pre­
proj
Q A com ect S
QA
ect  S  com
proj
Project 
pon
Pre­ Contract review Development plan
 and Quality Plan ents
Ch.5 Ch.6

Project Life Cycle SQA components

SQA of External Participants 
Formal Design Reviews

Software Maintenance
Software Testing
Experts Opinion
Peer Reviews

Chs. 9­10
Sec. 8.2

Sec. 8.3

Sec. 8.5

Ch. 11

Ch 12
Quality Infrastructure components Quality Management  Standards
Supporting  Training Preventive Configuration Document­                                  
Project  Software  Software Quality  Project
Management ation Progress Quality Quality  Management Process
Devices Instruction Actions
Procedures Control Control Metrics Costs Standards Standards
Ch. 14 Ch. 15 Ch. 16 Ch.17 Ch. 18 Ch. 19 Ch. 20 Ch. 21 Ch. 22    Ch. 23 Ch.24

Organizational Base – Human components
Management ­ Ch. 25 SQA Unit ­ Sec. 26.1 SQA Trustees – Sec. 26.2 SQA Committees – Sec. 26.2 SQA Forums – Sec 26.4

From Galin 04
Plans de Développement et de Qualité 
La planification a pour but de préparer les bases adéquates de 
l'accomplissement avec succés (le bon produit dans les bons delais et coûts) 
du projet.  Le procédé de planification inclut: 
1.  Schedule des activités de développement et estimation de l'effort et    
budget nécessaires
2. Recrutement des membres de l'équipe et allocation des ressources du 
développement 
3. Resolution des risques du développement 
4. Implémentation des activités d'AQL requises
5. Fourniture au management des données nécessaires au contrôle du 
projet 
Eléments du plan de développement
1. Produits du projet, spécification des  “livrables”
2. Interfaces du projet 
3. Méthodologie du projet et outils de développement
4. Standards et procédures de développement
5. Plan du processus de développement
6. Milestones du projet
7. Organisation du staff du projet et coordination avec les 
participants externes
8. Équipements de développement requis.
9. Risques de développement et actions de gestion de risques 
10. Méthodes de contrôle
11. Estimation de coût du projet
Eléments du plan d'AQL
1.  Liste d'objectifs de qualité 
2.  Activités de revue
3.  Tests  
4.  Tests d'acceptance pour composants développés à 
l'externe
5.  Plans de gestion de configuration; outils, procédures et 
données pour versions
Modèles de Maturité de Processus
● Évaluation de la maturité du processus de développement d'une 
organisation 
– Repère pour la pratique en matière d'AQL 
● Division du processus en secteurs de processus 
● Permet de mesurer la maturité de processus complets et/ou de 
secteurs de processus
● Exemples:
– SEI (Carnegie­Mellon University) Capability Maturity Model 
(CMM)
– International Organization for Standardization ISO 9000 quality 
standard
CMM Niveaux de Maturité
1. Initial – chaotique

    non­prédicable (coût, schedule, qualité) 

2. Répétable ­ intuitif, coût/qualité très variables, 

    quelque contrôle du schedule,   

    procédures informelles/ad hoc.

3. Defined – qualitatif, coûts, schedules 

    fiables, performance de qualité  non

    prédicable mais en amélioration

4. Managed – contrôle

    quantitatif statistique

    raisonnable sur 

    qualité du produit

5. Optimizing – base quantitative pour amélioration continue.
Secteurs de processus clés de CMM
Fonctions devant être présentes à un niveau donné
● Niveau 2: Repeatable
– Gestion des Exigences 
– Planification de projet 
– Gestion de sous­contraction
– Assurance de qualité du logiciel 
– Gestion de configuration du logiciel
Secteurs de processus clés de CMM
● Niveau 3: Defined
– Amélioration de processus Organisationnelle
– Définition de processus Organisationnelle 
– Programme de formation
– Gestion de projet intégrée
– Ingénierie de produit logiciel 
– Coordination Inter groupes
– Revues par des Paires 
Secteurs de processus clés de CMM
● Niveau 4: Managed
– Mesure et analyse de Processus 
● Statistiques sur design/code/test défauts
● projection de défauts
● Mesure de la couverture de tests
● analyse des causes de défauts liés processus 
● analyse de l'efficacité des revues pour chaque projet 
– Gestion de Qualité
Secteurs de processus clés de CMM
● Niveau 5: Optimisation
– Prévention de défauts
● mécanisme d'analyse de cause des défauts pour  les 
changements aux processus pour les prévenir  
● mécanisme d'initiation d'actions de prévention 
– Innovation Technologique
– Gestion de changement de Processus
ISO 9000
● Ensemble de normes et directives pour systèmes de gestion de 
qualité 
● Enregistrement implique de passer un audit de tiers, et des audits 
réguliers pour assurer la conformité continue 
● ISO 9001 s'applique au génie logiciel ­ 20 secteurs
ISO 9000
1.   Management responsibility
2.   Quality system
3.   Contract review
4.   Design control
5.   Document control
6.   Purchasing
7.   Purchaser­supplied product
8.   Product identification and traceability
9.   Process control
10.  Inspection and testing
ISO 9000
11.  Inspection, measuring, and test equipment
12. Inspection and test status
13. Control of nonconforming product
14. Corrective action
15. Handling, storage, packaging, and delivery
16. Quality records
17. Internal quality audits
18. Training
19. Servicing
20.  Statistical techniques

Vous aimerez peut-être aussi