partie 6: qualité du logiciel — programmation orientée objet en c++
DESCRIPTION
Support material for a continued education course "Introduction to object oriented programming in C++". In French.TRANSCRIPT
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
© 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
© 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é
© 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...
© 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
© 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
© 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)
© 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
© 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é
© 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é
© 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,...)
© 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
© 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
© 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
© 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
© 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
© 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
© 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
© 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]
© 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