SlideShare a Scribd company logo
1 of 20
Download to read offline
Programmation Orientée Objet en C++
       6ème Partie: Qualité du Logiciel



                Fabio Hernandez
              Fabio.Hernandez@in2p3.fr
Vue d'Ensemble
   Notions de base
   Types, variables, opérateurs
   Contrôle d'exécution
   Fonctions
   Mémoire dynamique
   Qualité du logiciel
   Evolution du modèle objet
   Objets et classes
   Fonctions membres
   Classes génériques
   Héritage
   Polymorphisme
   Héritage multiple
   Entrée/sortie


POO en C++:Qualité du Logiciel         152        © 1997-2003 Fabio HERNANDEZ
Table des Matières

   Qualité du logiciel
   Facteurs de qualité
   Apport de la technologie orientée objet
   Maintenance du logiciel
   Résumé




POO en C++:Qualité du Logiciel           153          © 1997-2003 Fabio HERNANDEZ
Qualité 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 externes
   Les facteurs internes sont perceptibles uniquement par les
   personnes ayant accès aux sources du logiciel (développeurs)
          modularité
          lisibilité
          facilité de modification
          ...


POO en C++:Qualité du Logiciel           154           © 1997-2003 Fabio HERNANDEZ
Qualité du Logiciel (suite)

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




POO en C++:Qualité du Logiciel        155          © 1997-2003 Fabio HERNANDEZ
Facteurs de Qualité

   Correction
          capacité d'un produit logiciel à accomplir sa tâche exacte, telle que
          définie dans la spécification
          c'est une qualité indispensable
          suppose d'avoir écrit une spécification précise des besoins du système à
          construire, ce qui est en soi une tâche difficile
          c'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
                                            Application
                                   Bibliothèques de l'Application
                                      Bibliothèques Standard
                                            Compilateur
                                      Système d'exploitation
                                             Matériel

POO en C++:Qualité du Logiciel                   156                © 1997-2003 Fabio HERNANDEZ
Facteurs de Qualité (suite)

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

POO en C++:Qualité du Logiciel          157                  © 1997-2003 Fabio HERNANDEZ
Facteurs de Qualité (suite)

   Extensibilité
          degré de facilité d'adaptation des produits logiciels aux modifications à
          la spécification
          relative 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émentation
          supporter les changements est un des objectifs principaux de la
          technologie objet



POO en C++:Qualité du Logiciel            158                  © 1997-2003 Fabio HERNANDEZ
Facteurs de Qualité (suite)

   Extensibilité (suite)
          deux principes essentiels pour améliorer l'extensibilité:
              simplicité de conception: une architecture simple est plus facile à adapter
              dé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érentes
          les solutions logiciel suivent certains patrons: il devrait être possible
          d'exploiter ces éléments communs pour éviter de réinventer des
          solutions à chaque fois
          en conséquence, moins de logiciel à écrire et à tester
          plus de temps à consacrer pour améliorer les autres facteurs de qualité


POO en C++:Qualité du Logiciel               159                    © 1997-2003 Fabio HERNANDEZ
Facteurs de Qualité (suite)

   Compatibilité
          facilité de combiner des éléments logiciels avec d'autres
          chaque élément logiciel a besoin d'interagir avec d'autres
          chacun fait des suppositions différentes sur l'environnement
          exemple: 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âche
          en 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éutiliser
          la capacité de calcul est en constante croissance: pas besoin de gagner
          une micro-seconde si cela compromet les autres facteurs de qualité

POO en C++:Qualité du Logiciel            160                   © 1997-2003 Fabio HERNANDEZ
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-formes
          l'expression plate-forme englobe la combinaison matériel et logiciel
          (processeur, système d'exploitation, système de fenêtrage,...)
   Facilité d'utilisation
          degré de facilité avec laquelle des personnes de qualifications
          différentes peuvent apprendre à utiliser les produits logiciels pour
          résoudre des problèmes
          facilité 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,...)


POO en C++:Qualité du Logiciel             161                   © 1997-2003 Fabio HERNANDEZ
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 à utiliser
          le concepteur du système doit faire un effort pour comprendre la
          spécificité de la communauté des utilisateurs ciblés
          les 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
          vaste
          les concepteurs des interfaces homme-machine font des suppositions
          aussi limitées que possible à propos des utilisateurs




POO en C++:Qualité du Logiciel           162                 © 1997-2003 Fabio HERNANDEZ
Facteurs de Qualité (suite)

   Fonctionnalité
          ensemble de possibilités offertes par un système
          jusqu'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ù les
          utilisateurs 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




POO en C++:Qualité du Logiciel           163                  © 1997-2003 Fabio HERNANDEZ
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
   Economie
          qualité d'un produit logiciel d'être terminé dans le budget affecté
   Documentation
          ce n'est pas un facteur de qualité en soi, mais plutôt une conséquence
          d'autres facteurs
          la 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

POO en C++:Qualité du Logiciel           164                 © 1997-2003 Fabio HERNANDEZ
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 extensible
          la 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




POO en C++:Qualité du Logiciel         165                 © 1997-2003 Fabio HERNANDEZ
Apport 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

POO en C++:Qualité du Logiciel   166             © 1997-2003 Fabio HERNANDEZ
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




POO en C++:Qualité du Logiciel   167             © 1997-2003 Fabio HERNANDEZ
Maintenance du Logiciel

   Maintenance c'est ce qui arrive quand un produit est délivré
   pour son utilisation
   Le coût de la maintenance du logiciel est estimé à 70% du coût
   total du produit
   Qu'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 évoluer
   La correction des défauts fait aussi partie de la maintenance




POO en C++:Qualité du Logiciel         168         © 1997-2003 Fabio HERNANDEZ
Maintenance du Logiciel (suite)

                                                  Changements dans la spécification

                                                  Changements du format des données

               41,80 %
                                  17,60 %         Correction d'urgence des défauts

                                                  Corrections de routine

                                                  Modifications du matériel
                                  12,40 %
                                                  Documentation

    3,40 %                                        Améliorations de performance

        4,00 %                    9,00 %
                  5,50 % 6,20 %                   Autres

Source: OOSC [B. Meyer 1997]

POO en C++:Qualité du Logiciel              169               © 1997-2003 Fabio HERNANDEZ
Résumé

   La qualité du logiciel est un compromis entre un ensemble
   d'objectifs différents
   Les facteurs externes, perceptibles par les utilisateurs du
   système, doivent être différenciés des facteurs internes,
   perceptibles par les développeurs et concepteurs
   Ce qui importe ce sont les facteurs externes, dont la qualité est
   conditionnée par la qualité des facteurs internes
   La 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

POO en C++:Qualité du Logiciel     170           © 1997-2003 Fabio HERNANDEZ

More Related Content

What's hot

Slides ceplex
Slides ceplexSlides ceplex
Slides ceplexTECOS
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineGeeks Anonymes
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséEmmanuel Hugonnet
 
Cours android
Cours androidCours android
Cours androidAd Hafsa
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Olivier Le Goaër
 
Lilie - l'ENT de la Région Ile-de-France
Lilie - l'ENT de la Région Ile-de-FranceLilie - l'ENT de la Région Ile-de-France
Lilie - l'ENT de la Région Ile-de-FranceStefane Fermigier
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire Mohammed Zaoui
 
Introduction rapide à 'objet et à UML
Introduction rapide à 'objet et  à UML Introduction rapide à 'objet et  à UML
Introduction rapide à 'objet et à UML Mireille Blay-Fornarino
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaRached Krim
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange LabsEmmanuel Hugonnet
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithmebadr zaimi
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMicrosoft Technet France
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneGrégory Ott
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test Imen Turki
 

What's hot (20)

Slides ceplex
Slides ceplexSlides ceplex
Slides ceplex
 
Cours.langage c
Cours.langage cCours.langage c
Cours.langage c
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
 
Cours android
Cours androidCours android
Cours android
 
Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]Syntaxe concrète des DSL en IDM [avec Xtext]
Syntaxe concrète des DSL en IDM [avec Xtext]
 
Chapitre 1
Chapitre 1Chapitre 1
Chapitre 1
 
Lilie - l'ENT de la Région Ile-de-France
Lilie - l'ENT de la Région Ile-de-FranceLilie - l'ENT de la Région Ile-de-France
Lilie - l'ENT de la Région Ile-de-France
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
 
Introduction rapide à 'objet et à UML
Introduction rapide à 'objet et  à UML Introduction rapide à 'objet et  à UML
Introduction rapide à 'objet et à UML
 
Implémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En JavaImplémentation de l’algorithme du Simplexe En Java
Implémentation de l’algorithme du Simplexe En Java
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Cours algorithme
Cours algorithmeCours algorithme
Cours algorithme
 
Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014 Cours de Génie Logiciel / ESIEA 2013-2014
Cours de Génie Logiciel / ESIEA 2013-2014
 
Agl2012
Agl2012Agl2012
Agl2012
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
Fichetp Api 2
Fichetp  Api 2Fichetp  Api 2
Fichetp Api 2
 
Exposé qualité et test
Exposé qualité et test Exposé qualité et test
Exposé qualité et test
 

Viewers also liked

Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++Fabio Hernandez
 
Partie 14: Entrée/Sortie — Programmation orientée objet en C++
Partie 14: Entrée/Sortie — Programmation orientée objet en C++Partie 14: Entrée/Sortie — Programmation orientée objet en C++
Partie 14: Entrée/Sortie — Programmation orientée objet en C++Fabio Hernandez
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Fabio Hernandez
 
Partie 1: Notions de base — Programmation orientée objet en C++
Partie 1: Notions de base — Programmation orientée objet en C++Partie 1: Notions de base — Programmation orientée objet en C++
Partie 1: Notions de base — Programmation orientée objet en C++Fabio Hernandez
 
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Fabio Hernandez
 
Partie 5: Mémoire Dynamique — Programmation orientée objet en C++
Partie 5: Mémoire Dynamique — Programmation orientée objet en C++Partie 5: Mémoire Dynamique — Programmation orientée objet en C++
Partie 5: Mémoire Dynamique — Programmation orientée objet en C++Fabio Hernandez
 
Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++Fabio Hernandez
 
Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++Fabio Hernandez
 
Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Fabio Hernandez
 

Viewers also liked (10)

Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
Partie 3: Contrôle d'Exécution — Programmation orientée objet en C++
 
Partie 14: Entrée/Sortie — Programmation orientée objet en C++
Partie 14: Entrée/Sortie — Programmation orientée objet en C++Partie 14: Entrée/Sortie — Programmation orientée objet en C++
Partie 14: Entrée/Sortie — Programmation orientée objet en C++
 
Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++Partie 13: Héritage Multiple — Programmation orientée objet en C++
Partie 13: Héritage Multiple — Programmation orientée objet en C++
 
Partie 1: Notions de base — Programmation orientée objet en C++
Partie 1: Notions de base — Programmation orientée objet en C++Partie 1: Notions de base — Programmation orientée objet en C++
Partie 1: Notions de base — Programmation orientée objet en C++
 
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
Partie 2: Types, Variables, Opérateurs — Programmation orientée objet en C++
 
Partie 5: Mémoire Dynamique — Programmation orientée objet en C++
Partie 5: Mémoire Dynamique — Programmation orientée objet en C++Partie 5: Mémoire Dynamique — Programmation orientée objet en C++
Partie 5: Mémoire Dynamique — Programmation orientée objet en C++
 
Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++Partie 4: Fonctions - Programmation orientée objet en C++
Partie 4: Fonctions - Programmation orientée objet en C++
 
Introduction à C++
Introduction à C++Introduction à C++
Introduction à C++
 
Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++Partie 12: Polymorphisme — Programmation orientée objet en C++
Partie 12: Polymorphisme — Programmation orientée objet en C++
 
Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++Partie 10: Classes Génériques — Programmation orientée objet en C++
Partie 10: Classes Génériques — Programmation orientée objet en C++
 

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

introduction génie logiciel-1.ppt
introduction génie logiciel-1.pptintroduction génie logiciel-1.ppt
introduction génie logiciel-1.pptSafaeElhouicha
 
Extreme programming
Extreme programmingExtreme programming
Extreme programmingBilal ZIANE
 
1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppt1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppthbadir
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015Julien Vq
 
Gl slides-cours-1
Gl slides-cours-1Gl slides-cours-1
Gl slides-cours-1Sami Neili
 
Introduction au Génie Logiciel
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logicielguest0032c8
 
cours-01-intro.pdf
cours-01-intro.pdfcours-01-intro.pdf
cours-01-intro.pdfNihedBahria2
 
Donner le pouvoir de build à votre PO - DroidCon Paris 18 june 2013
Donner le pouvoir de build à votre PO -  DroidCon Paris 18 june 2013Donner le pouvoir de build à votre PO -  DroidCon Paris 18 june 2013
Donner le pouvoir de build à votre PO - DroidCon Paris 18 june 2013Paris Android User Group
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1DIALLO Boubacar
 
491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdf491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdfHalimaDOUIBI
 
1.Le cycle de vie d’un logiciel.pdf
1.Le cycle de vie d’un logiciel.pdf1.Le cycle de vie d’un logiciel.pdf
1.Le cycle de vie d’un logiciel.pdfHamzaAlAzhar
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linuxIdriss22
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 

Similar to Partie 6: Qualité du Logiciel — Programmation orientée objet en C++ (20)

introduction génie logiciel-1.ppt
introduction génie logiciel-1.pptintroduction génie logiciel-1.ppt
introduction génie logiciel-1.ppt
 
Extreme programming
Extreme programmingExtreme programming
Extreme programming
 
§G-VisualDECO
§G-VisualDECO§G-VisualDECO
§G-VisualDECO
 
1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppt1_Assurance_Qualit_et_Gnie_Logiciel.ppt
1_Assurance_Qualit_et_Gnie_Logiciel.ppt
 
Qualite1
Qualite1Qualite1
Qualite1
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
 
PrésQL.pdf
PrésQL.pdfPrésQL.pdf
PrésQL.pdf
 
Gl slides-cours-1
Gl slides-cours-1Gl slides-cours-1
Gl slides-cours-1
 
Ihm introduction
Ihm introductionIhm introduction
Ihm introduction
 
Introduction au Génie Logiciel
Introduction au Génie LogicielIntroduction au Génie Logiciel
Introduction au Génie Logiciel
 
cours-01-intro.pdf
cours-01-intro.pdfcours-01-intro.pdf
cours-01-intro.pdf
 
Donner le pouvoir de build à votre PO - DroidCon Paris 18 june 2013
Donner le pouvoir de build à votre PO -  DroidCon Paris 18 june 2013Donner le pouvoir de build à votre PO -  DroidCon Paris 18 june 2013
Donner le pouvoir de build à votre PO - DroidCon Paris 18 june 2013
 
Initiation à UML: Partie 1
Initiation à UML: Partie 1Initiation à UML: Partie 1
Initiation à UML: Partie 1
 
491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdf491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdf
 
Method XP
Method XP Method XP
Method XP
 
1.Le cycle de vie d’un logiciel.pdf
1.Le cycle de vie d’un logiciel.pdf1.Le cycle de vie d’un logiciel.pdf
1.Le cycle de vie d’un logiciel.pdf
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linux
 
Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Gl rappels ac
Gl rappels acGl rappels ac
Gl rappels ac
 

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

  • 1. Programmation Orientée Objet en C++ 6ème Partie: Qualité du Logiciel Fabio Hernandez Fabio.Hernandez@in2p3.fr
  • 2. Vue d'Ensemble Notions de base Types, variables, opérateurs Contrôle d'exécution Fonctions Mémoire dynamique Qualité du logiciel Evolution du modèle objet Objets et classes Fonctions membres Classes génériques Héritage Polymorphisme Héritage multiple Entrée/sortie POO en C++:Qualité du Logiciel 152 © 1997-2003 Fabio HERNANDEZ
  • 3. Table des Matières Qualité du logiciel Facteurs de qualité Apport de la technologie orientée objet Maintenance du logiciel Résumé POO en C++:Qualité du Logiciel 153 © 1997-2003 Fabio HERNANDEZ
  • 4. Qualité 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 externes Les facteurs internes sont perceptibles uniquement par les personnes ayant accès aux sources du logiciel (développeurs) modularité lisibilité facilité de modification ... POO en C++:Qualité du Logiciel 154 © 1997-2003 Fabio HERNANDEZ
  • 5. Qualité du Logiciel (suite) Les facteurs externes sont perceptibles par les utilisateurs du produit logiciel Le but est d'améliorer la qualité des facteurs externes Les techniques orientées objet aident à améliorer la qualité interne comme un moyen d'atteindre la qualité externe POO en C++:Qualité du Logiciel 155 © 1997-2003 Fabio HERNANDEZ
  • 6. Facteurs de Qualité Correction capacité d'un produit logiciel à accomplir sa tâche exacte, telle que définie dans la spécification c'est une qualité indispensable suppose d'avoir écrit une spécification précise des besoins du système à construire, ce qui est en soi une tâche difficile c'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 Application Bibliothèques de l'Application Bibliothèques Standard Compilateur Système d'exploitation Matériel POO en C++:Qualité du Logiciel 156 © 1997-2003 Fabio HERNANDEZ
  • 7. Facteurs de Qualité (suite) Robustesse capacité des systèmes de réagir correctement aux conditions anormales la correction fait référence au comportement du système dans les cas prévus dans la spécification la robustesse caractérise le comportement dans des situations en dehors de la spécification la notion de normalité ou anormalité est relative à la spécification un cas anormal est un cas qui n'est pas traité dans la spécification normal ne veut pas dire souhaitable, mais prévu lors de la conception du système il y a toujours des cas que la spécification ne traite pas explicitement si ces cas arrivent, le système ne doit pas provoquer des effets catastrophiques (produire des messages d'erreur, travailler en mode dégradé, terminer l'exécution de façon appropriée) POO en C++:Qualité du Logiciel 157 © 1997-2003 Fabio HERNANDEZ
  • 8. Facteurs de Qualité (suite) Extensibilité degré de facilité d'adaptation des produits logiciels aux modifications à la spécification relative 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émentation supporter les changements est un des objectifs principaux de la technologie objet POO en C++:Qualité du Logiciel 158 © 1997-2003 Fabio HERNANDEZ
  • 9. Facteurs de Qualité (suite) Extensibilité (suite) deux principes essentiels pour améliorer l'extensibilité: simplicité de conception: une architecture simple est plus facile à adapter dé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érentes les solutions logiciel suivent certains patrons: il devrait être possible d'exploiter ces éléments communs pour éviter de réinventer des solutions à chaque fois en conséquence, moins de logiciel à écrire et à tester plus de temps à consacrer pour améliorer les autres facteurs de qualité POO en C++:Qualité du Logiciel 159 © 1997-2003 Fabio HERNANDEZ
  • 10. Facteurs de Qualité (suite) Compatibilité facilité de combiner des éléments logiciels avec d'autres chaque élément logiciel a besoin d'interagir avec d'autres chacun fait des suppositions différentes sur l'environnement exemple: 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âche en 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éutiliser la capacité de calcul est en constante croissance: pas besoin de gagner une micro-seconde si cela compromet les autres facteurs de qualité POO en C++:Qualité du Logiciel 160 © 1997-2003 Fabio HERNANDEZ
  • 11. 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-formes l'expression plate-forme englobe la combinaison matériel et logiciel (processeur, système d'exploitation, système de fenêtrage,...) Facilité d'utilisation degré de facilité avec laquelle des personnes de qualifications différentes peuvent apprendre à utiliser les produits logiciels pour résoudre des problèmes facilité 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,...) POO en C++:Qualité du Logiciel 161 © 1997-2003 Fabio HERNANDEZ
  • 12. 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 à utiliser le concepteur du système doit faire un effort pour comprendre la spécificité de la communauté des utilisateurs ciblés les 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 vaste les concepteurs des interfaces homme-machine font des suppositions aussi limitées que possible à propos des utilisateurs POO en C++:Qualité du Logiciel 162 © 1997-2003 Fabio HERNANDEZ
  • 13. Facteurs de Qualité (suite) Fonctionnalité ensemble de possibilités offertes par un système jusqu'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ù les utilisateurs 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 POO en C++:Qualité du Logiciel 163 © 1997-2003 Fabio HERNANDEZ
  • 14. 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 Economie qualité d'un produit logiciel d'être terminé dans le budget affecté Documentation ce n'est pas un facteur de qualité en soi, mais plutôt une conséquence d'autres facteurs la 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 POO en C++:Qualité du Logiciel 164 © 1997-2003 Fabio HERNANDEZ
  • 15. 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 extensible la 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 POO en C++:Qualité du Logiciel 165 © 1997-2003 Fabio HERNANDEZ
  • 16. Apport 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 POO en C++:Qualité du Logiciel 166 © 1997-2003 Fabio HERNANDEZ
  • 17. 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 POO en C++:Qualité du Logiciel 167 © 1997-2003 Fabio HERNANDEZ
  • 18. Maintenance du Logiciel Maintenance c'est ce qui arrive quand un produit est délivré pour son utilisation Le coût de la maintenance du logiciel est estimé à 70% du coût total du produit Qu'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 évoluer La correction des défauts fait aussi partie de la maintenance POO en C++:Qualité du Logiciel 168 © 1997-2003 Fabio HERNANDEZ
  • 19. Maintenance du Logiciel (suite) Changements dans la spécification Changements du format des données 41,80 % 17,60 % Correction d'urgence des défauts Corrections de routine Modifications du matériel 12,40 % Documentation 3,40 % Améliorations de performance 4,00 % 9,00 % 5,50 % 6,20 % Autres Source: OOSC [B. Meyer 1997] POO en C++:Qualité du Logiciel 169 © 1997-2003 Fabio HERNANDEZ
  • 20. Résumé La qualité du logiciel est un compromis entre un ensemble d'objectifs différents Les facteurs externes, perceptibles par les utilisateurs du système, doivent être différenciés des facteurs internes, perceptibles par les développeurs et concepteurs Ce qui importe ce sont les facteurs externes, dont la qualité est conditionnée par la qualité des facteurs internes La 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 POO en C++:Qualité du Logiciel 170 © 1997-2003 Fabio HERNANDEZ