Vous êtes sur la page 1sur 15

19/10/12&

Qualité&du&Logiciel&

1&

Défini7ons&
ISO$15504:$La&finalité́&du&processus&de&
management&de&la&qualité́&est&de&suivre$la$
qualité́$des$produits$et/ou$services$du&projet&et$
de$s’assurer$qu’ils$sa<sfont$au$client.$$
Ce&processus&implique&d’établir&une&focalisa7on&
sur&le&suivi&de&la&qualité&des&produits&et&
processus&aux&niveaux&à&la&fois&du&projet&et&de&
l’organisa7on.&&

2&

1&
19/10/12&

•  La&qualité&est&une&no7on&subjec7ve,&il&n'en&
existe&pas&de&défini7on&universelle.&
•  &Fondamentale&à&obtenir&dès&lors&que&l'offre&
dépasse&la&demande,&la&qualité́&concerne&tous&
les&types&de&produc7on,&avec&des&
par7cularismes&pour&chacun,&en&par7culier&
pour&les&systèmes&informa7ques.&
&

3&

Normes&ISO&spécifiques&à&la&qualite&
•  ISO&9000S9001&est&la&norme&générale:&"La&qualité́,&
c’est&l’ap7tude&d’un&ensemble&de&caractéris7ques&
intrinsèques&d’un&produit,&d’un&système&ou&d’un&
processus&à&sa7sfaire&les&exigences&des&clients&et&
autres&par7es&intéressées"&&
•  ISO&9126&est&la&norme&qualité́&spécifique&aux&
logiciels&:&elle&définit&une&liste&de&6&
caractéris7ques&et&27&sousScaractéris7ques&
qualités,&un&modèle&indiquant&les&liens&de&
causalité́&entre&qualités&internes&et&externes,&et&
un&ensemble&de&systèmes&de&mesures.&&

4&

2&
19/10/12&

Facteurs&de&qualité&de&Meyer&&
•  La&correc7on&(Validité)&&
•  La&robustesse.&
•  L’extensibilité&
•  La&réu7lisabilité&&
•  La&compa7bilité&

5&

•  L’efficacité&&
•  La&portabilité&&

•  La&facilité&d’u7lisa7on&&
•  La&ponctualité&
•  La&vérificabilité&
•  L'intégrité&
•  La&Maintenabilité&
&&

6&

3&
19/10/12&

Illustra7on&Validité/Correc7on&

7&

Solu7on&Pour&obtenir&la&qualité&
•  Correc7on&&
–  Emphase&sur&l’analyse&des&besoins&
–  Améliorer&la&communica7on&(langage&commun,&
démarche&par7cipa7ve)&&
–  Travailler&avec&rigueur&&
•  Robustesse&
–  U7liser&des&méthodes&formelles,&des&langages&et&
des&méthodes&de&&
–  programma7on&de&haut&niveau&Vérifica7ons,&tests&&

8&

4&
19/10/12&

•  Facilité&d’u7lisa7on&
–  Analyse&du&mode&opératoire&des&u7lisateurs&
–  Adapter&l’ergonomie&des&logiciels&aux&u7lisateurs&&
•  Compa7bilité&
–  Bases&de&données&(découplage&données/
traitements)&
–  «&Externaliser&»certaines&fonc7ons&en&u7lisant&des&
«&Middleware&»&avec&une&API&(Applica7on&
Program&Interface)&bien&définie&
–  Standardisa7on&des&formats&de&fichiers&(XML...)&et&
des&protocoles&de&communica7on&(CORBA...)&
–  Les&ERP&(Entreprise&Resources&Planning)&&
9&

•  Efficacité&
–  Logiciels&plus&simples&
–  Veiller&à&la&complexité́&des&algorithmes&
–  Architecture&distribuée&
–  Machines&plus&performantes&&
•  Portabilité&
–  Rendre&le&logiciel&indépendant&de&son&
environnement&d’exécu7on&(voir&interopérabilité)&&
–  Machines&virtuelles&&
&
10&

5&
19/10/12&

•  Réu7lisa7on&
–  Abstrac7on,&généricité́&
–  Construire&un&logiciel&à&par7r&de&composants&prêts&
à&l’emploi&&
–  Design&Palerns&&
•  Maintenabilité&
–  Réu7lisabilité́,&modularité́&
–  Vérifier11,&tester&
–  An7ciper&les&changements&à&venir.&

11&

Approche&Assurance&Qualité&&
de&Mc&Call&
•  La&qualité́&s'approche&à&par7r&de&la&défini7on&
de&caractéris7ques&externes&(facteurs&de&
qualité́),&internes&(critères&de&qualité́),&
mesurables&(métriques)&»&&
•  On&a&défini&
–  Facteurs&(11)&:&qualité&vue&de&l'u7lisateur&
–  Critères&(23)&:&qualité&vue&du&réalisateur&
–  Mesures&(176)&:&qualité&vue&du&contrôle&

12&

6&
19/10/12&

Facteurs&de&Qualité&
•  Fiabilité&&
•  Sécurité&&
•  Intégrité&
•  &Ergonomie&
•  &Efficacité&&
•  Testabilité&

13&

•  Maintenabilité&
•  Flexibilité&
•  Réu7lisabilité&
•  Portabilité&&
•  Compa7bilité&
NB&:&On&pourrait&ajouter&(France&Télécom)‫&‏‬:&
confiden7alité,&auditabilité,&intégrabilité&

& 14&

7&
19/10/12&

les&critères&de&Qualité&&
•  Traçabilité&&
•  Complétude&
•  Précision&
•  Cohérence&&
•  Robustesse&
•  Simplicité&
•  Modularité&
•  Généralité&

15&

•  Extensibilité&&
•  Instrumenta7on&
•  Auto&descrip7on&
•  Efficacité&de&stockage&
•  Efficacité&d'exécu7on&
•  Audit&des&accès&
•  Contrôle&des&accès&&
•  Souplesse&des&interfaces&&

16&

8&
19/10/12&

•  Facilité&d'exploita7on&&&
•  Facilité&d'appren7ssage&&
•  Indépendance&machine&&
•  Indépendance&système&
•  Normalisa7on&des&communica7ons&
•  Standardisa7on&des&structures&de&données&
•  Concision&
•  Conformité&&

17&

•  Liaisons&(facteur&S>&critères&S>&mesures)&est&
intui7ves&
•  Exemple&
–  facteur&:&fiabilité&
–  critères&:&cohérence,&robustesse,&simplicité&
–  mesures&:&présence&d'une&administra7on&des&
données,&couverture&des&tests,&taux&de&panne...&

18&

9&
19/10/12&

Iso&9126&
Les&6&caractéris7ques:&
•  Capacité&fonc7onnelle:&&porte&sur&l’existence&d’un&ensemble&de&
fonc7ons&qui&sa7sfont&aux&besoins&exprimés&ou&implicites.&&
•  Fiabilité:&porte&sur&l’ap7tude&du&logiciel&à&maintenir&son&niveau&de&
service&dans&des&condi7ons&précises&et&pendant&une&période&
déterminée.&&
•  Facilité&d’u7lisa7on:&porte&sur&l’effort&nécessaire&pour&l’u7lisa7on&et&
sur&l’évalua7on&individuelle&de&cele&u7lisa7on&par&un&ensemble&
défini&ou&implicite&d’u7lisateurs.&&
•  Rendement:&porte&sur&le&rapport&existant&entre&le&niveau&de&service&
d’un&logiciel&et&la&quan7té&de&ressources&u7lisées,&dans&des&
condi7ons&déterminées.&&
•  Maintenabilité&&
•  Portabilité&

19&

20&

10&
19/10/12&

Normalisa7on&
•  Intervient&dans&des&nombreux&niveaux&
–  Nommage&des&variables,&classes,&packages&
–  PlanStype&des&documents&rédigés&(specs,&dev,&tests…)‫&‏‬
–  Numérota7on&des&versions&(releases)‫&‏‬
–  …&
•  Objec7fs:&
–  pérenniser&le&travail&effectué,&gagner&du&&temps&par&la&suite&
–  Savoir&où&chercher&quelle&info&
–  Comprendre&la&structure&à&par7r&des&libellés&(noms&de&&classes,&
variables,&7tres&de&chapitres…)‫&‏‬
•  Exemple:&Numérota7on&des&versions&&
eg.&Noyau&Linux:&&Version.Majeure.Mineure.Révision&
(2.6.23.12)&

21&

Tests&du&logiciel&&
•  Pour&spécifier&une&fonc7on,&on&doit&préciser&:&
–  QUOI&elle&doit&faire&(descrip7on)&
–  Dans&quel&contexte&(préScondi7ons)&
–  Avec&quel&résultat&(postScondi7ons)&
•  Avant&de&réfléchir&au&comment&faire,&on&peut:&
–  Donner&l’ensemble&des&cas&d’u7lisa7on&
–  En&déduire&la&liste&des&tests&à&faire&et&les&coder&
«&les&tests&me&donnent&une&occasion&de&réfléchir&à&&
ce&que&je&veux&obtenir&sans&considéra7on&de&la&&
façon&dont&je&vais&implémenter&»&
22&

11&
19/10/12&

•  Défini7on&:&Test&&c'est&une&technique&de&contrôle&
consistant&à&s'assurer,&&grâce&à&l'exécu7on&d'un&
programme,&que&son&&comportement&est&conforme&à&
un&comportement&de&&référence&préalablement&
formalisé&dans&un&&document.&
•  Le&test&sert&à&prouver&l'existence&d'erreurs&plutôt&&que&
leur&absence&
•  Les&tests&sont&écrits&lors&de&la&rédac7on&des&&
spécifica7ons&:&
–  Spécifica7on&fonc7onnelle&S>&tests&de&valida7on&
–  Concep7on&préliminaire&S>&tests&d'intégra7on&
–  Concep7on&détaillée&S>&tests&unitaires&(par&module&&

23&

•  Tests%Unitaires&:&ceux&du&programmeur&
–  Tests&fonc7on&par&fonc7on&
–  doivent&être&posi7fs&à&100%&sur&le&code&passé&et&&
courant&
•  Tests%d’intégra/on&:&ceux&du&concepteur&
–  Groupent&plusieurs&fonc7ons&(modules&/&Composants)&
•  Tests%fonc/onnels%:&ceux&du&client&
–  Tests&scénario&par&scénario&
–  Tant&que&produit&non&fini,&pas&forcément&posi7f&à&
100%&

24&

12&
19/10/12&

•  Comme&on&peut&effectuer:&&
•  Tests&parallèles&:&valider&que&la&nouvelle&version&fait&&
exactement&comme&la&précédente&
•  Tests&en&charge&(panique)&
•  Tests&du&singe&:&un&ingénu&(naive&in&english)&se&sert&du&
système&et&fait&n’importe&quoi&
•  On&peut&tester&le&système&on&le&considérant&comme&:&
•  &boîte&noire&:&test&fonc7onnement&:&sans&aller&voir&à&
l'intérieur,&répondSil&au&besoin?&
•  boîte&blanche&:&test&structurel&:&en&allant&voir&sa&&
composi7on,&répondSil&Bien&au&besoin?&

25&

Il&faut&aussi&faire&:&
•  Test&des&cas&normaux&:&u7lisa7on&normale&du&
logiciel&&
•  Test&des&cas&anormaux&par&exemples&:&
–  vérifica7on&des&données&en&entrée&
–  valida7on&des&procédures&de&reprise&
•  Test&des&cas&limites&et&valeurs&spéciales&par&
exemple&:table&pleine&,&table&vide&et&fichier&
inexistant&
26&

13&
19/10/12&

•  Certains&langages&fournissent&des&bibliothèques&de&
fonc7ons&pour&automa7ser&le&lancement&des&tests&et&la&
ges7on&des&résultats&&
Exemple:&JUnit&de&Java&
•  il&faut&Faire&des&tests&indépendants&les&uns&des&autres&&
–  eviter&les&tests&imbriqués&:&si&un&test&échoue,&il&ne&fait&pas&
échouer&les&tests&suivants&
•  Les&testes&doivent&être&automa7sés&:&
–  sans&saisie&de&l’u7lisateur&&
–  Avec&compila7on&&
–  Lancement&automa7que&&

27&

Refactoring&&
Il&est&important&de&melre&en&œuvre&des&techniques&
qui&permelront&de&conserver&un&code&aussi&simple&
que&possible.&Cela&consiste&à&:&
•  S'assurer&que&toute&l'informa7on&nécessaire&est&
disponible&&
•  Supprimer&toute&informa7on&redondante&ou&
duplica7on&de&code&&
•  Simplifier&l'algorithmique&des&méthodes&&
•  Limiter&la&complexité&des&classes&&
•  Limiter&le&nombre&de&classes&&

28&

14&
19/10/12&

Les&niveaux&de&refactorisa7on&&
selon&l'impact&des&modifica7ons&sur&le&déroulement&
du&programme&et&les&risques&rencontrés,&On&
dis7ngue&plusieurs&niveaux:&&
•  Modifica7on&de&la&présenta7on&du&code&:&
–  Suppression&ou&ajout&des&commentaires&&
–  la&mise&en&page&(indenta7on&du&code,&passages&à&la&
ligne).&&
•  Modifica7on&de&l'algorithmique&
•  Relocalisa7on&de&procédures&
•  Refonte&du&design&&

& 29&

Les&ac7vités&de&refactorisa7on&&
•  Suppression&du&code&mort&&
•  Ajout&d'asser7ons&&
•  Renommage&
•  Commentaires&&

30&

15&

Vous aimerez peut-être aussi