SlideShare une entreprise Scribd logo
Génie logiciel : Conception Orient��e Objet avec UML Responsable : Abdelmajid DARGHAM Licence Professionnelle  ABD Semestre 5 Année universitaire 2009/2010
Chapitre 1 :   Introduction au génie logiciel
Sommaire Caractérisation du logiciel Les facteurs de qualité d’un logiciel Cycle de vie d’un logiciel La modélisation en général La modélisation en génie logiciel
Caractérisation du logiciel Aspects des systèmes informatiques :  Matériel  :  Équipements physiques : processeurs, Mémoires, périphériques, …etc. Représente 20% du coût global. Logiciel  :  Programmes : OS, compilateurs, SGBD, bureautique, gestion, comptabilité, …etc.  Occupe 80% du coût global.
Caractérisation du logiciel Matériel informatique :  Fabrication  :  Assurée par quelques fabricants seulement. Fiabilité  :  Le matériel est devenu relativement fiable. Standardisation  :  Le marché du matériel est standardisé. À notre époque, le matériel ne pose pas de  vrais problèmes !!!
Caractérisation du logiciel Logiciel informatique :  Nature virtuelle  :  Le logiciel est un produit immatériel. Nature technique  :  Le logiciel est un objet technique fortement contraint. Cycle de production particulier  :  La reproduction ne pose pas de problèmes, seule la première copie a un coût. Les problèmes liés à l’informatique sont essentiellement des problèmes de logiciel !!!
Caractérisation du logiciel La « crise du logiciel » :  Étude sur 8 380 projets de fabrication de logiciels (Standish Group, 1995)  :  Succès  : 16%; Problématique  : 53% (budget ou délais non respectés, défaut de fonctionnalités); Échec  : 31% (projets abandonnés). Le taux de succès décroît avec la taille des projets et la taille des entreprises
Caractérisation du logiciel Le génie logiciel (Software Engineering) :  Objectifs  :  Comment faire des logiciels de qualité ? Définir et spécifier les critères de qualité logicielle. Maîtriser le processus de fabrication de logiciels. Définition  : le génie logiciel regroupe les sciences et  les technologies qui permettent la construction de logiciels de qualité.
Les facteurs de qualité d’un logiciel Les facteurs de qualité d’un logiciel :  Correction  :  Le logiciel assume correctement ses fonctionnalités, comme a été définie par sa spécification.  Robustesse  : Le logiciel réagit correctement dans une situation anormale. Extensibilité  : Le logiciel présente une grande facilité d’adaptation aux changements de spécifications.
Les facteurs de qualité d’un logiciel Les facteurs de qualité d’un logiciel :  Réutilisabilité  : Les composants du logiciel peuvent très bien servir à la construction de nouveaux logiciels. Compatibilité  : Les éléments du logiciel peuvent être combinés à d’autres sans problèmes. Portabilité  :  Le logiciel peut être transféré d’un environnement à un autre.
Les facteurs de qualité d’un logiciel Les facteurs de qualité d’un logiciel :  Efficacité  : Le logiciel consomme le minimum de ressources tels que le temps d’exécution, l’espace mémoire, la bande passante du réseau, …etc. Facilité d’utilisation  : Le logiciel présente une grande facilité d’utilisation (installation + apprentissage + pilotage, tous faciles).
Cycle de vie d’un logiciel Utilité du cycle de vie d’un logiciel :  Maîtriser le processus d’élaboration de logiciel. La qualité du processus de fabrication est garante de la qualité du produit. Réduire la complexité du logiciel. Définition  : le cycle de vie d’un logiciel ( software   lifecycle ) regroupe les étapes de production du logiciel, ainsi que leur ordonnancement.
Cycle de vie d’un logiciel Étapes du cycle de vie :  Étude de faisabilité . Analyse et spécification des besoins . Conception générale  : Définir l’architecture globale du logiciel. Conception détaillée  : Déterminer les modules du logiciels. Programmation  :  Coder le logiciel (Implémentation). Tests unitaires  :  Vérifier le fonctionnement de chaque module.
Cycle de vie d’un logiciel Étapes du cycle de vie :  Tests d’intégration  :  Vérifier le fonctionnement de l’ensemble des modules. Documentation du logiciel  :  Éditer le manuel d’installation et le manuel d’utilisation. Distribution du logiciel . Maintenance  :  Définir les éléments du logiciel à maintenir.
Cycle de vie d’un logiciel Les deux Types de maintenances :  Maintenance corrective  :  Maintenir pour corriger certaines lacunes dans le logiciel.  Maintenance évolutive  :  Maintenir pour faire évoluer certaines fonctionnalité du logiciel.
Cycle de vie d’un logiciel Les modèles de cycle de vie du logiciel :  Modèle en tunnel  :  Absence de modèle de développement. Modèle en cascade  : L’enchaînement des étapes est linéaire. Chaque étape ne commence que lorsque l’étape précédente est terminée.  Modèle en V  : À chaque étape correspond une étape de test spécifique. Les tests peuvent être définis avant les phases de test.
Cycle de vie d’un logiciel Les modèles de cycle de vie du logiciel :  Modèle itératif  : On commence par développer un sous-ensemble des fonctionnalités (noyau du logiciel) de manière linéaire (en cascade). On itère un modèle linéaire pour développer incrémentalement de plus en plus de fonctionnalités, jusqu’à achèvement du projet.
Cycle de vie d’un logiciel Modèle en cascade
Cycle de vie d’un logiciel Modèle en V
La modélisation en général Modèles :  Définition  : Un modèle est une représentation abstraite de la réalité qui exclut certains détails du monde réel. Utilité  : Reflète ce que le concepteur croit important pour la compréhension et la prédiction du phénomène modélisé, les limites du phénomène modélisé dépendent des objectifs du modèle.
La modélisation en général Modèles :  Utilité (suite)  : Permet de réduire la complexité d’un phénomène en éliminant les détails qui n’influencent pas son comportement de manière significative. Modélisation :  Définition  : Processus par lequel on arrive à élaborer un modèle décrivant un système réel (ou un phénomène du monde réel).
La modélisation en général Types de Modélisation :  Modélisation à priori  : Modéliser un système avant sa réalisation (le système n’existe pas encore). Objectifs  : Comprendre le fonctionnement du future système. Mesurer et Maîtriser sa complexité. Assurer sa cohérence. Pouvoir communiquer au sein de l’équipe de réalisation.
La modélisation en général Types de Modélisation :  Modélisation à posteriori  : Modéliser un système après sa réalisation (le système existe déjà). Objectifs  : Corriger les erreurs dans l’ancien système. Faire évoluer l’ancien système.
La modélisation en génie logiciel Approches de modélisation pour le logiciel :  Approche fonctionnelle  : Approche traditionnelle basée sur l’utilisation des procédures et des fonctions. Les grands programmes sont décomposés en sous-programmes. Approche orientée objets  : On identifie les éléments du système et on en fait des objets. On cherche à faire collaborer ces objets pour qu’ils accomplissent la tâche voulue.
La modélisation en génie logiciel Modélisation fonctionnelle :  Approche descendante  : La modélisation du système se base sur les fonctions, et non pas sur les objets. On commence par déterminer la fonction globale du système. Puis, on décompose la fonction globale du système en plusieurs sous-fonctions jusqu’à obtenir des fonctions élémentaires simples à programmer. Il s’agit d’une  démarche descendante .
La modélisation en génie logiciel Modélisation fonctionnelle :  Avantages  : Adéquate pour les petits logiciels et les système peu complexes. Démarche ordonnée et organisée. Inconvénients  : Pose des problèmes de structuration de données, car elle est orientée fonctions. Produit des logiciels non réutilisables. Produit des logiciels très difficile à les faire évoluer ou corriger.
La modélisation en génie logiciel Modélisation orientée objets :  Approche fondée sur les objets  : Le modèle à produire est décrit en terme d’objets et non pas en terme de fonctions. On peut partir des objets du domaine (briques de base) et remonter vers le système global.  On défini également les interactions et les collaborations entre les objets du système. Il s’agit essentiellement d’une  approche ascendante .
La modélisation en génie logiciel Modélisation orientée objets :  Avantages  : Démarche naturelle et logique. Raisonnement par abstraction sur les objets du domaine. Inconvénients  : Parfois moins intuitive que l’approche fonctionnelle. Rien dans les concepts de base objets ne précise comment modéliser la structure objet d’un système de manière pertinente.
La modélisation en génie logiciel Penser et programmer objet :  COO & POO  : La conception objet doit être dissociée de la programmation objet. Les langages à objets ne présentent que des manières particulières d’implémenter certains concepts. Ils ne valident en rien la conception. Il est même possible de concevoir objet et de coder en fonctionnelle (Langage C, par exemple).
La modélisation en génie logiciel Penser et programmer objet :  COO & POO  : Connaître des langages de programmation objet comme C++ ou Java n’est pas suffisant. Il faut savoir s’en servir en utilisant un moyen de modélisation, d’analyse et de conception objet. Sans les langages de haut niveau (donc de modélisation), il est difficile de comparer plusieurs solutions de modélisation objet.
La modélisation en génie logiciel Utilisation efficace de l’approche objet :  Niveau démarche de modélisation  : Il faut suivre une démarche d’analyse et de conception objet.  Ne pas effectuer une analyse fonctionnelle, et se contenter d’une implémentation objet. Niveau langage de modélisation  : Il faut utiliser un langage de modélisation qui permet de représenter les concepts abstraits, de limiter les ambiguïtés et de faciliter l’analyse.
La modélisation en génie logiciel Langages de modélisation :  Objectifs  : Définir la sémantique des concepts. Définir une notation pour la représentation des concepts. Définir des règles d’utilisation des concepts et de construction. Langages de modélisation  : Adaptés aux système procéduraux (MERISE, …). Adaptés aux systèmes temps réel (ROOM, SADT, …).
La modélisation en génie logiciel Langages de modélisation :  Adaptés aux systèmes à objets (OMT, Booch, UML, …). Ateliers de génie logiciel  : Présenter des outils pour la modélisation. Le rôle de ces outils est primordial pour l’utilisabilité en pratique des langages de
La modélisation en génie logiciel Langages à objets :  Langages de programmation  : SIMULA  (1967). Smalltalk (1972). C++ (1985). JAVA (1995). Méthodes de modélisation  : OMT : Object Modeling Technique. OOSE : Object Oriented System and Engineering.

Contenu connexe

Introduction au Génie Logiciel

  • 1. Génie logiciel : Conception Orientée Objet avec UML Responsable : Abdelmajid DARGHAM Licence Professionnelle ABD Semestre 5 Année universitaire 2009/2010
  • 2. Chapitre 1 : Introduction au génie logiciel
  • 3. Sommaire Caractérisation du logiciel Les facteurs de qualité d’un logiciel Cycle de vie d’un logiciel La modélisation en général La modélisation en génie logiciel
  • 4. Caractérisation du logiciel Aspects des systèmes informatiques : Matériel : Équipements physiques : processeurs, Mémoires, périphériques, …etc. Représente 20% du coût global. Logiciel : Programmes : OS, compilateurs, SGBD, bureautique, gestion, comptabilité, …etc. Occupe 80% du coût global.
  • 5. Caractérisation du logiciel Matériel informatique : Fabrication : Assurée par quelques fabricants seulement. Fiabilité : Le matériel est devenu relativement fiable. Standardisation : Le marché du matériel est standardisé. À notre époque, le matériel ne pose pas de vrais problèmes !!!
  • 6. Caractérisation du logiciel Logiciel informatique : Nature virtuelle : Le logiciel est un produit immatériel. Nature technique : Le logiciel est un objet technique fortement contraint. Cycle de production particulier : La reproduction ne pose pas de problèmes, seule la première copie a un coût. Les problèmes liés à l’informatique sont essentiellement des problèmes de logiciel !!!
  • 7. Caractérisation du logiciel La « crise du logiciel » : Étude sur 8 380 projets de fabrication de logiciels (Standish Group, 1995) : Succès : 16%; Problématique : 53% (budget ou délais non respectés, défaut de fonctionnalités); Échec : 31% (projets abandonnés). Le taux de succès décroît avec la taille des projets et la taille des entreprises
  • 8. Caractérisation du logiciel Le génie logiciel (Software Engineering) : Objectifs : Comment faire des logiciels de qualité ? Définir et spécifier les critères de qualité logicielle. Maîtriser le processus de fabrication de logiciels. Définition : le génie logiciel regroupe les sciences et les technologies qui permettent la construction de logiciels de qualité.
  • 9. Les facteurs de qualité d’un logiciel Les facteurs de qualité d’un logiciel : Correction : Le logiciel assume correctement ses fonctionnalités, comme a été définie par sa spécification. Robustesse : Le logiciel réagit correctement dans une situation anormale. Extensibilité : Le logiciel présente une grande facilité d’adaptation aux changements de spécifications.
  • 10. Les facteurs de qualité d’un logiciel Les facteurs de qualité d’un logiciel : Réutilisabilité : Les composants du logiciel peuvent très bien servir à la construction de nouveaux logiciels. Compatibilité : Les éléments du logiciel peuvent être combinés à d’autres sans problèmes. Portabilité : Le logiciel peut être transféré d’un environnement à un autre.
  • 11. Les facteurs de qualité d’un logiciel Les facteurs de qualité d’un logiciel : Efficacité : Le logiciel consomme le minimum de ressources tels que le temps d’exécution, l’espace mémoire, la bande passante du réseau, …etc. Facilité d’utilisation : Le logiciel présente une grande facilité d’utilisation (installation + apprentissage + pilotage, tous faciles).
  • 12. Cycle de vie d’un logiciel Utilité du cycle de vie d’un logiciel : Maîtriser le processus d’élaboration de logiciel. La qualité du processus de fabrication est garante de la qualité du produit. Réduire la complexité du logiciel. Définition : le cycle de vie d’un logiciel ( software lifecycle ) regroupe les étapes de production du logiciel, ainsi que leur ordonnancement.
  • 13. Cycle de vie d’un logiciel Étapes du cycle de vie : Étude de faisabilité . Analyse et spécification des besoins . Conception générale : Définir l’architecture globale du logiciel. Conception détaillée : Déterminer les modules du logiciels. Programmation : Coder le logiciel (Implémentation). Tests unitaires : Vérifier le fonctionnement de chaque module.
  • 14. Cycle de vie d’un logiciel Étapes du cycle de vie : Tests d’intégration : Vérifier le fonctionnement de l’ensemble des modules. Documentation du logiciel : Éditer le manuel d’installation et le manuel d’utilisation. Distribution du logiciel . Maintenance : Définir les éléments du logiciel à maintenir.
  • 15. Cycle de vie d’un logiciel Les deux Types de maintenances : Maintenance corrective : Maintenir pour corriger certaines lacunes dans le logiciel. Maintenance évolutive : Maintenir pour faire évoluer certaines fonctionnalité du logiciel.
  • 16. Cycle de vie d’un logiciel Les modèles de cycle de vie du logiciel : Modèle en tunnel : Absence de modèle de développement. Modèle en cascade : L’enchaînement des étapes est linéaire. Chaque étape ne commence que lorsque l’étape précédente est terminée. Modèle en V : À chaque étape correspond une étape de test spécifique. Les tests peuvent être définis avant les phases de test.
  • 17. Cycle de vie d’un logiciel Les modèles de cycle de vie du logiciel : Modèle itératif : On commence par développer un sous-ensemble des fonctionnalités (noyau du logiciel) de manière linéaire (en cascade). On itère un modèle linéaire pour développer incrémentalement de plus en plus de fonctionnalités, jusqu’à achèvement du projet.
  • 18. Cycle de vie d’un logiciel Modèle en cascade
  • 19. Cycle de vie d’un logiciel Modèle en V
  • 20. La modélisation en général Modèles : Définition : Un modèle est une représentation abstraite de la réalité qui exclut certains détails du monde réel. Utilité : Reflète ce que le concepteur croit important pour la compréhension et la prédiction du phénomène modélisé, les limites du phénomène modélisé dépendent des objectifs du modèle.
  • 21. La modélisation en général Modèles : Utilité (suite) : Permet de réduire la complexité d’un phénomène en éliminant les détails qui n’influencent pas son comportement de manière significative. Modélisation : Définition : Processus par lequel on arrive à élaborer un modèle décrivant un système réel (ou un phénomène du monde réel).
  • 22. La modélisation en général Types de Modélisation : Modélisation à priori : Modéliser un système avant sa réalisation (le système n’existe pas encore). Objectifs : Comprendre le fonctionnement du future système. Mesurer et Maîtriser sa complexité. Assurer sa cohérence. Pouvoir communiquer au sein de l’équipe de réalisation.
  • 23. La modélisation en général Types de Modélisation : Modélisation à posteriori : Modéliser un système après sa réalisation (le système existe déjà). Objectifs : Corriger les erreurs dans l’ancien système. Faire évoluer l’ancien système.
  • 24. La modélisation en génie logiciel Approches de modélisation pour le logiciel : Approche fonctionnelle : Approche traditionnelle basée sur l’utilisation des procédures et des fonctions. Les grands programmes sont décomposés en sous-programmes. Approche orientée objets : On identifie les éléments du système et on en fait des objets. On cherche à faire collaborer ces objets pour qu’ils accomplissent la tâche voulue.
  • 25. La modélisation en génie logiciel Modélisation fonctionnelle : Approche descendante : La modélisation du système se base sur les fonctions, et non pas sur les objets. On commence par déterminer la fonction globale du système. Puis, on décompose la fonction globale du système en plusieurs sous-fonctions jusqu’à obtenir des fonctions élémentaires simples à programmer. Il s’agit d’une démarche descendante .
  • 26. La modélisation en génie logiciel Modélisation fonctionnelle : Avantages : Adéquate pour les petits logiciels et les système peu complexes. Démarche ordonnée et organisée. Inconvénients : Pose des problèmes de structuration de données, car elle est orientée fonctions. Produit des logiciels non réutilisables. Produit des logiciels très difficile à les faire évoluer ou corriger.
  • 27. La modélisation en génie logiciel Modélisation orientée objets : Approche fondée sur les objets : Le modèle à produire est décrit en terme d’objets et non pas en terme de fonctions. On peut partir des objets du domaine (briques de base) et remonter vers le système global. On défini également les interactions et les collaborations entre les objets du système. Il s’agit essentiellement d’une approche ascendante .
  • 28. La modélisation en génie logiciel Modélisation orientée objets : Avantages : Démarche naturelle et logique. Raisonnement par abstraction sur les objets du domaine. Inconvénients : Parfois moins intuitive que l’approche fonctionnelle. Rien dans les concepts de base objets ne précise comment modéliser la structure objet d’un système de manière pertinente.
  • 29. La modélisation en génie logiciel Penser et programmer objet : COO & POO : La conception objet doit être dissociée de la programmation objet. Les langages à objets ne présentent que des manières particulières d’implémenter certains concepts. Ils ne valident en rien la conception. Il est même possible de concevoir objet et de coder en fonctionnelle (Langage C, par exemple).
  • 30. La modélisation en génie logiciel Penser et programmer objet : COO & POO : Connaître des langages de programmation objet comme C++ ou Java n’est pas suffisant. Il faut savoir s’en servir en utilisant un moyen de modélisation, d’analyse et de conception objet. Sans les langages de haut niveau (donc de modélisation), il est difficile de comparer plusieurs solutions de modélisation objet.
  • 31. La modélisation en génie logiciel Utilisation efficace de l’approche objet : Niveau démarche de modélisation : Il faut suivre une démarche d’analyse et de conception objet. Ne pas effectuer une analyse fonctionnelle, et se contenter d’une implémentation objet. Niveau langage de modélisation : Il faut utiliser un langage de modélisation qui permet de représenter les concepts abstraits, de limiter les ambiguïtés et de faciliter l’analyse.
  • 32. La modélisation en génie logiciel Langages de modélisation : Objectifs : Définir la sémantique des concepts. Définir une notation pour la représentation des concepts. Définir des règles d’utilisation des concepts et de construction. Langages de modélisation : Adaptés aux système procéduraux (MERISE, …). Adaptés aux systèmes temps réel (ROOM, SADT, …).
  • 33. La modélisation en génie logiciel Langages de modélisation : Adaptés aux systèmes à objets (OMT, Booch, UML, …). Ateliers de génie logiciel : Présenter des outils pour la modélisation. Le rôle de ces outils est primordial pour l’utilisabilité en pratique des langages de
  • 34. La modélisation en génie logiciel Langages à objets : Langages de programmation : SIMULA (1967). Smalltalk (1972). C++ (1985). JAVA (1995). Méthodes de modélisation : OMT : Object Modeling Technique. OOSE : Object Oriented System and Engineering.