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é
2. Objectifs
● Qu'estce la Qualité Logicielle ?
● Pourquoi la Qualité Logicielle est importante ?
● Qu'estce 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
3. Qu'estce 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.
4. 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
faute
panne
erreur
5. 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
6. Relation entre processus de
développement et défauts
Phase
Exigences 56 82
Design 27 13
Code 7 1
Autres 10 4
Pourcentage
de défaux
Effort pour
fixer
défaux
Phase ou trouvée Ratio de coût
Exigences 1
Design 3 – 6
Coding 10
Unit/Integration testing 15 – 40
System/Acceptance testing 30 – 70
Production 40 – 1000
Exigences sont la
raison principale du
succès ou échec de
projets
La majorité des défauts sont introduits tôt
Coût relatif pour corriger les défauts
7. Qu'estce 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é
8. Qu'estce 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.
9. Qu'estce 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é
10. 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. ecommerce),
– entertainment,
– etc.
● Les défauts du logiciel sont extrêmement coûteux en terme
– d'argent
– de réputation
– de perte de vie
11. 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 tempsré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é
12. 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 floatingpoint:
conversion d'entier 64bit à entier 16bit 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
13. 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 125million
– 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é.
14. 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
15. 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é
16. 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 originellementproposées
● 78.4% des projets de petites compagnies sont déployés avec au moins 74.2%
des fonctions originelles.
17. 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 clientfournisseur
● 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
18. Facteurs de Qualité Logicielle
● Modèle de qualité logicielle de McCall's
Facteurs de qualité logicielle
Facteurs liés à l'opération du produit
Facteurs liés à la révision du produit
Facteurs liés à la transition du produit
• Correctude
• Fiabilité
• Efficacité
• Intégrité
• Utilisabilité
• Maintainabilité
• Flexibilité
• Testabilité
• Portabilité
• Reusabilité
• Interopérabilité
19. 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
20. 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)
21. 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
22. Qu'estce 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é.
23. Qu'estce 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.
24. 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.
25. 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.
26. Trois principes généraux de l'AQL
● Savoir ce que vous faites
● Savoir ce que vous devriez faire
● Savoir mesurer la différence
27. 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
28. 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
29. 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é
30. 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
31. AQL
SQE comprend
● Vérification
– construisons nous le produit bien?
– effectuée à la fin d'une phase pour
s'assurer que des besoins établis
pendant la phase précédente ont
été répondus
● Validation
– construisons nous le bon produit?
– effectuée à la fin du processus de
développement pour assurer la
conformité aux exigences du
produit
Exigences
Architecture
Design Design
Codage
vérification
vérification
vérification
vérification
validation
32. 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
33. 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.
34. Composants d'un système d'AQL
sommaire
•Composants preprojet
•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
35. 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
36. 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
37. 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
38. L'Edifice de la Qualité
Logicielle
Project
Development plan
and Quality Plan
Ch.6
Preproject SQA components
Project Life Cycle SQA components
Formal
Design
Reviews
Sec.
8.2
Experts
Opinion
Sec.
8.5
Peer
Reviews
Sec.
8.3
SQA
of
External
Participants
Ch
12
Software
Maintenance
Ch.
11
Software
Testing
Chs.
910
Quality Infrastructure components
Procedures
Ch. 14
Supporting
Devices
Ch. 15
Training
Instruction
Ch. 16
Preventive
Actions
Ch.17
Configuration
Management
Ch. 18
Document
ation
Control
Ch. 19
Quality Management
Project
Progress
Control
Ch. 20
Software
Quality
Metrics
Ch. 21
Software
Quality
Costs
Ch. 22
Quality
Management
Standards
Ch. 23
Standards
Project
Process
Standards
Ch.24
Organizational Base – Human components
Management Ch. 25 SQA Unit Sec. 26.1 SQA Committees – Sec. 26.2
SQA Trustees – Sec. 26.2 SQA Forums – Sec 26.4
Contract review
Ch.5
Preproject SQA components
From Galin 04
39. 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
40. 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
41. 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
42. 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 (CarnegieMellon University) Capability Maturity Model
(CMM)
– International Organization for Standardization ISO 9000 quality
standard
43. CMM Niveaux de Maturité
1. Initial – chaotique
nonpré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.
44. 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 souscontraction
– Assurance de qualité du logiciel
– Gestion de configuration du logiciel
45. 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
46. 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é
47. 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
48. 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
49. ISO 9000
1. Management responsibility
2. Quality system
3. Contract review
4. Design control
5. Document control
6. Purchasing
7. Purchasersupplied product
8. Product identification and traceability
9. Process control
10. Inspection and testing
50. 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