partie 6: qualité du logiciel — programmation orientée objet en c++

20
Fabio Hernandez [email protected] Programmation Orientée Objet en C++ Programmation Orientée Objet en C++ 6ème Partie: Qualité du Logiciel 6ème Partie: Qualité du Logiciel

Upload: fabio-hernandez

Post on 22-Jun-2015

1.166 views

Category:

Documents


0 download

DESCRIPTION

Support material for a continued education course "Introduction to object oriented programming in C++". In French.

TRANSCRIPT

Page 1: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

Fabio [email protected]

Programmation Orientée Objet en C++Programmation Orientée Objet en C++

6ème Partie: Qualité du Logiciel6ème Partie: Qualité du Logiciel

Page 2: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ152POO en C++:Qualité du Logiciel

Vue d'EnsembleVue d'Ensemble

Notions de base Types, variables, opérateursContrôle d'exécutionFonctionsMémoire dynamiqueQualité du logicielEvolution du modèle objet Objets et classesFonctions membresClasses génériquesHéritagePolymorphismeHéritage multipleEntrée/sortie

Page 3: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ153POO en C++:Qualité du Logiciel

Table des MatièresTable des Matières

Qualité du logicielFacteurs de qualitéApport de la technologie orientée objetMaintenance du logicielRésumé

Page 4: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ154POO en C++:Qualité du Logiciel

Qualité du LogicielQualité du Logiciel

Le génie logiciel s'intéresse à la production du logiciel de qualitéLes techniques orientées objet aident à produire des logiciels de bonne qualitéLa qualité du logiciel est le résultat de la combinaison de plusieurs facteurs internes et externesLes facteurs internes sont perceptibles uniquement par les personnes ayant accès aux sources du logiciel (développeurs)

modularitélisibilitéfacilité de modification...

Page 5: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ155POO en C++:Qualité du Logiciel

Qualité du Logiciel (suite)Qualité du Logiciel (suite)

Les facteurs externes sont perceptibles par les utilisateurs du produit logicielLe but est d'améliorer la qualité des facteurs externesLes techniques orientées objet aident à améliorer la qualité interne comme un moyen d'atteindre la qualité externe

Page 6: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ156POO en C++:Qualité du Logiciel

Facteurs de QualitéFacteurs de Qualité

Correctioncapacité d'un produit logiciel à accomplir sa tâche exacte, telle que définie dans la spécificationc'est une qualité indispensablesuppose d'avoir écrit une spécification précise des besoins du système à construire, ce qui est en soi une tâche difficilec'est une qualité conditionnée: le logiciel étant construit en couches, il s'agit de garantir que chaque couche est correcte, en supposant que les couches inférieures le sont aussi

MatérielSystème d'exploitation

CompilateurBibliothèques Standard

Bibliothèques de l'ApplicationApplication

Page 7: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ157POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Robustessecapacité des systèmes de réagir correctement aux conditions anormalesla correction fait référence au comportement du système dans les cas prévus dans la spécificationla robustesse caractérise le comportement dans des situations endehors de la spécificationla notion de normalité ou anormalité est relative à la spécificationun cas anormal est un cas qui n'est pas traité dans la spécificationnormal ne veut pas dire souhaitable, mais prévu lors de la conception du systèmeil y a toujours des cas que la spécification ne traite pas explicitementsi ces cas arrivent, le système ne doit pas provoquer des effetscatastrophiques (produire des messages d'erreur, travailler en mode dégradé, terminer l'exécution de façon appropriée)

Page 8: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ158POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Extensibilitédegré de facilité d'adaptation des produits logiciels aux modifications à la spécificationrelative la taille du système: plus le système est grand, plus l'adaptation aux changements est difficileà la base de chaque système logiciel il y a un besoin humain: les modifications sont donc inévitables (par exemple changements de la loi)le changement est une constante dans le développement des produits logiciel: changements de besoins, de notre compréhension des besoins, des algorithmes, de la représentation des données, des techniques d'implémentationsupporter les changements est un des objectifs principaux de la technologie objet

Page 9: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ159POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Extensibilité (suite)deux principes essentiels pour améliorer l'extensibilité:

simplicité de conception: une architecture simple est plus facile à adapterdécentralisation: plus les modules sont autonomes, plus il y a de chance que les modifications affectent un seul ou un nombre limité de modules

Réutilisabilitécapacité des composants logiciel de servir pour la construction de plusieurs applications différentesles solutions logiciel suivent certains patrons: il devrait être possible d'exploiter ces éléments communs pour éviter de réinventer des solutions à chaque foisen conséquence, moins de logiciel à écrire et à testerplus de temps à consacrer pour améliorer les autres facteurs de qualité

Page 10: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ160POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Compatibilitéfacilité de combiner des éléments logiciels avec d'autreschaque élément logiciel a besoin d'interagir avec d'autreschacun fait des suppositions différentes sur l'environnementexemple: format des fichiers sur les différents systèmes d'exploitation

Efficacitécapacité de demander peu de ressources machine (processeur, espace mémoire interne et externe, bande passante des dispositifs de communications, ...) pour accomplir la tâcheen rapport avec l'extensibilité et la réutilisabilité: les optimisations trop agressives peuvent rendre le logiciel tellement spécialisé qu'il devient difficile de le modifier et de le réutiliserla capacité de calcul est en constante croissance: pas besoin de gagner une micro-seconde si cela compromet les autres facteurs de qualité

Page 11: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ161POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Efficacité (suite)dans certains situations l'efficacité a des effets sur la correction (météo, temps réel,...)

Portabilitéfacilité de transférer les produits logiciel sur plusieurs plate-formesl'expression plate-forme englobe la combinaison matériel et logiciel (processeur, système d'exploitation, système de fenêtrage,...)

Facilité d'utilisationdegré de facilité avec laquelle des personnes de qualifications différentes peuvent apprendre à utiliser les produits logiciels pour résoudre des problèmesfacilité d'installation, de desintallation, d'opération, de surveillance, ...ce facteur prend en compte les différents niveaux d'expertise des utilisateurs potentiels (novice, intermédiaire, expert,...)

Page 12: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ162POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Facilité d'utilisation (suite)un système bien conçu autour d'une structure claire a tendance à être plus facile à comprendre et à utiliserle concepteur du système doit faire un effort pour comprendre laspécificité de la communauté des utilisateurs ciblésles systèmes à succès vont toujours au delà de l'audience initiale prévue par le concepteur (FORTRAN, UNIX,...)un système conçu pour un groupe spécifique d'utilisateurs se base sur des suppositions qui ne sont pas forcement vraies pour une audience plus vasteles concepteurs des interfaces homme-machine font des suppositions aussi limitées que possible à propos des utilisateurs

Page 13: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ163POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Fonctionnalitéensemble de possibilités offertes par un systèmejusqu'où aller? Combien est-il suffisant?l'introduction de nouvelles fonctionnalités peut induire une perte de cohérence du système, et donc impacter sa facilité d'utilisation

Opportunité (Timeliness)qualité d'un produit logiciel d'être disponible au moment où lesutilisateurs le désirent

Verifiabilitéfacilité de préparation de procédures d'acceptation, des données de test et des procédures pour détecter les problèmes

Page 14: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ164POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Intégritécapacité d'un produit logiciel de protéger ses composants (programmes, données,...) contre les accès et les modifications non autorisés

Réparabilitédegré de difficulté de détection et réparation des défauts

Economiequalité d'un produit logiciel d'être terminé dans le budget affecté

Documentationce n'est pas un facteur de qualité en soi, mais plutôt une conséquence d'autres facteursla documentation externe, qui permet aux utilisateurs d'un système de le comprendre et de l'utiliser correctement, est une conséquence de la facilité d'utilisation

Page 15: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ165POO en C++:Qualité du Logiciel

Facteurs de Qualité (suite)Facteurs de Qualité (suite)

Documentation (suite)la documentation interne, qui permet aux développeurs de comprendre la structure et l'implémentation du système, est une conséquence de la nécessité d'être extensiblela documentation des composants, permettant aux développeurs de comprendre ses fonctionnalités sans comprendre son implémentation, est une conséquence de la nécessité de réutilisation

Page 16: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ166POO en C++:Qualité du Logiciel

Apport de la technologie objetApport de la technologie objet

comment la technologie OO améliore-t-elle ces facteurs de qualité?la méthode OO encourage un style de conception commun et des interfaces entre modules standardisés (compatibilité)la méthode encourage l'abstraction et l'encapsulation en séparant spécification et implémentation (portabilité)des mécanismes comme le polymorphisme et la résolution dynamique aident à écrire des systèmes capables de s'adapter automatiquement à la plate-forme (par exemple systèmes de fenêtrage)la réutilisation de composants de qualité industrielle résulte en des gains considérables en performance

Page 17: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ167POO en C++:Qualité du Logiciel

Apport de la technologie objet (suite)Apport de la technologie objet (suite)

les techniques OO permettent de construire systèmes plus rapidement et à un coût inférieur et facilitent l'ajout des nouvelles fonctionnalités

Page 18: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ168POO en C++:Qualité du Logiciel

Maintenance du LogicielMaintenance du Logiciel

Maintenance c'est ce qui arrive quand un produit est délivré pour son utilisationLe coût de la maintenance du logiciel est estimé à 70% du coût total du produitQu'est-ce qu'on entend par maintenance?Au fur et à mesure que la spécification du logiciel change comme conséquence des changements dans le monde externe, le logiciel doit aussi évoluerLa correction des défauts fait aussi partie de la maintenance

Page 19: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ169POO en C++:Qualité du Logiciel

Maintenance du Logiciel (suite)Maintenance du Logiciel (suite)

6,20 %5,50 %

3,40 %

41,80 %17,60 %

12,40 %

9,00 %4,00 %

Changements dans la spécification

Changements du format des données

Correction d'urgence des défauts

Corrections de routine

Modifications du matériel

Documentation

Améliorations de performance

Autres

Source: OOSC [B. Meyer 1997]

Page 20: Partie 6: Qualité du Logiciel — Programmation orientée objet en C++

© 1997-2003 Fabio HERNANDEZ170POO en C++:Qualité du Logiciel

RésuméRésumé

La qualité du logiciel est un compromis entre un ensemble d'objectifs différentsLes facteurs externes, perceptibles par les utilisateurs du système, doivent être différenciés des facteurs internes, perceptibles par les développeurs et concepteursCe qui importe ce sont les facteurs externes, dont la qualité est conditionnée par la qualité des facteurs internesLa technologie OO peut aider à améliorer la qualitéLe coût du logiciel est impacté par le coût de la maintenance, principalement dû à la difficulté d'implémenter des modifications et par la forte dépendance des logiciels sur le format physique des données