Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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¶llè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&