Module Génie Logiciel `a Objet
Transcription
Module Génie Logiciel `a Objet
Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Module Génie Logiciel à Objet Chapitre 1 - Introduction Mohamed Bakhouya - Benoı̂t Delahaye Université Internationale de Rabat - Université de Nantes 2013 Remerciements I Pascal André I Gerson Sunyé M. Bakhouya - B. Delahaye I Jacques Lonchamp Module Génie Logiciel à Objet 1/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Sources I Génie Logiciel - Polycopié du cours de Jacques Lonchamp http://http://www.loria.fr/~jloncham/gl-fr.html I Développement de logiciel à objets avec UML - Jean-Marc Jézéquel, Noël Plouzeau, Yves le Traon http: //people.irisa.fr/Jean-Marc.Jezequel/enseignement/PolyUML/poly.pdf I Modeling in Software Engineering - Benoit Combemale http://people.irisa.fr/Benoit.Combemale/teaching/modeling/ gl-intro-2x2.pdf I Méthode Agile - Jean-Pierre Vickoff http://www.etanche.net/BIO/MethodeAgile.pdf M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 2/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Modalités Enseignants : Mohamed Bakhouya ([email protected]) - Rabat Benoı̂t Delahaye ([email protected]) - Nantes I CM/TD : 26h I TP : 12h Evaluation : I Contrôle continu (1 CC sur table + devoirs maison) I TP à rendre (en plusieurs livrables ?) I Examen final M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 3/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 4/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Mots Clés Génie Logiciel I I Ensemble de techniques pour le développement logiciel Méthodologie(s) Objet I Représentation abstraite I Entité de base Malléabilité I I Capacité d’évolution, de modification Robustesse I Capacité de résistance aux changements I Persistance des caractéristiques face à des perturbations Maintenance évolutive M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 5/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Définition Génie Logiciel “Software engineering (SE) is the application of a systematic, disciplined, quantifiable approach to the design, development, operation, and maintenance of software, and the study of these approaches ; that is, the application of engineering to software” [SWEBOK] M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 6/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Motivation Pourquoi faire appel au Génie Logiciel si : I Tout ce dont on a besoin est sur NetBeans/Eclipse/Emacs/VIM, etc. ? I On peut copier des millions d’exemples sur Internet ? I On peut utiliser des milliers de composants open-source ? On peut développer des logiciels sans connaı̂tre le génie logiciel, tout comme on peut construire des maisons sans connaı̂tre l’architecture. Mais des fois... M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 7/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies La réutilisation de composants existants s’avère complexe M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 8/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Les composants ne s’adaptent pas (bien) à l’environnement M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 9/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies L’assemblage de composants existants est plus compliqué qu’il ne paraı̂t M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 10/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies La solution n’est pas adaptée à tous les utilisateurs M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 11/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies La mise en oeuvre de la solution ne correspond pas à sa conception M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 12/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Les utilisateurs refusent de s’adapter aux solutions proposées M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 13/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Conclusion : Besoin de règles, principes, méthodes, méthodologies et outils pour le développement logiciel C’est le Génie logiciel M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 14/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Objectifs du module Appréhender le génie logiciel à objets : I Appréhender le modèle à objets : (intérêts, concepts, variantes) I Maı̂triser le concept de modélisation et les outils associés (UML, classes, patrons de conception. . . ) I Comprendre et appréhender les aspects avancés de la modélisation objet (spécialisation, généricité, héritage. . . ) I Découvrir et pratiquer le principe de la programmation par contrats (OCL) I Pratiquer la modélisation et la programmation (Eiffel) M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 15/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Introduction Historique Etat des lieux Complexité des systèmes Risques : Catastrophes célèbres Génie Logiciel Cycles de vie du logiciel Méthodologies M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 16/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Etat des lieux Apparition du génie lociel dans les année 1970 pour répondre à la crise du logiciel M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 17/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Complexité des systèmes : Exemples I I I Critique Temps réel Embarqué M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 18/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Complexité des systèmes : Exemples M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 19/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Quelques axes de complexité I critique I réutilisable I temps réel I auto-adaptatif I embarqué I dynamique I distribué I autonome I paramétré I ... M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 20/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Introduction Historique Etat des lieux Complexité des systèmes Risques : Catastrophes célèbres Génie Logiciel Cycles de vie du logiciel Méthodologies M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 21/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Therac 25 Machine de radio-thérapie développée conjointement entre le Canada et la France I 6 morts I de nombreuses personnes irradiées Les causes I Négligence du test I Documentation inadéquate M. Bakhouya - B. Delahaye I Programmé en assembleur I Réutilisation de briques logicielles Module Génie Logiciel à Objet 22/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Ariane 5 - vol 501 Nouveau fleuron aérospatial I 370 millions de $ I aucune victime Les causes I Réutilisation de briques logicielles I Chaı̂ne de défaillances M. Bakhouya - B. Delahaye I Pas de redondance logicielle I Dépassement de capacité Module Génie Logiciel à Objet 23/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Missile PATRIOT Système de défense anti-missile I Défaillance missile SCUD I 28 morts, 98 blessés Les causes I Erreur d’approximation I Non-respect des hypothèses M. Bakhouya - B. Delahaye I Composants logiciels non adaptés I Délai de propagation d’une update Module Génie Logiciel à Objet 24/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Mais aussi... I USS Yorktown (1998) : Nombreuses pannes dues à des divisions par 0 I Mars Orbiter (1998) : Erreur de conversion d’unités I Mars Polar Lander (1999) : Erreur de détection de vibrations I Missile EXOCET : Missile non-répertorié, 88 morts I AT&T (1990) : Blackout du à une propagation en chaı̂ne de messages d’erreur I F22 Raptor (2007) : 6 avions de chasse perdent leur système de navigation en passant la ligne de changement de date I ... M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 25/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Introduction Historique Génie Logiciel Les Critères : CQFD Les principes Cycles de vie du logiciel Méthodologies M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 26/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Génie Logiciel Le génie logiciel est une discipline très vaste, liée à tous les domaines de l’informatique. Il définit des principes de développement, établit des règles à suivre, invente des techniques, développe des méthodes et propose des outils pour garantir la satisfaction de critères établis. M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 27/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Introduction Historique Génie Logiciel Les Critères : CQFD Les principes Cycles de vie du logiciel Méthodologies M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 28/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Génie Logiciel : Quels sont les critères à satisfaire ? la règle du CQFD I Coût I Qualité I Fonctionnalité I Délais M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 29/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Maı̂triser le coût Objectif : rester dans les limites prévues M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 30/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Maı̂triser les délais Objectif : rester dans les limites prévues En tenant compte I Des tests I Des modifications d’objectifs I De l’intégration I ... M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 31/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Fonctionalité Répondre aux besoins demandés par l’utilisateur, dans l’environnement décrit M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 32/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Qualité : une notion complexe et multiforme 1/2 I Validité : Aptitude à réaliser exactement les tâches définies I Fiabilité : Aptitude à assurer de manière continue le service attendu (pas de panne) I Robustesse : Aptitude à fonctionner même dans des conditions anormales I Extensibilité : Facilité d’adaptation aux changements de spécification I Réutilisabilité : Aptitude à être réutilisé en tout ou partie I Compatibilité : Aptitude à être combiné à d’autres logiciels M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 33/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Qualité : une notion complexe et multiforme 2/2 I Efficacité : Aptitude à bien utiliser les ressources matérielles I Portabilité : Facilité à être porté sur d’autres environnements matériels ou logiciels I Traçabilité : Capacité à identifier et/ou suivre un élément du cahier des charges lié à un composant logiciel I Vérifiabilité : Facilité de préparation de procédures de recette et de certification I Intégrité : Aptitude à protéger les différents composants contre des accès ou des modifications non autorisés I ... M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 34/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Introduction Historique Génie Logiciel Les Critères : CQFD Les principes Cycles de vie du logiciel Méthodologies M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 35/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Principes fondamentaux Les 7 principes fondamentaux du Génie Logiciel : I Rigueur I Séparation des problèmes I Modularité I Abstraction M. Bakhouya - B. Delahaye I Anticipation du changement I Généricité I Construction incrémentale Module Génie Logiciel à Objet 36/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Rigueur Rigueur : Caractère de quelqu’un, de quelque chose qui se distingue par une exactitude, une logique, une précision parfaites. (Larousse) En pratique : I Utilisation au maximum de lois mathématiques précises I Formalité I Suivi à la lettre de techniques formelles M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 37/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Séparation des problèmes Séparation des problèmes : Règle de bon sens qui consiste à considérer séparément différents aspects d’un même problème pour en maı̂triser la complexité. En pratique, plusieurs façons de faire (compatibles) : I Séparation dans le temps (= ordonnancement) I Séparation dans l’espace (= on se répartit les taches) I Séparation des qualités (= priorités) Les méthodes du GL donnent des façons de séparer et d’ordonnancer M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 38/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Modularité Modularité : Caractéristique d’un système, matériel ou logiciel, conçu en séparant les fonctions élémentaires pour qu’elles puissent être étudiées et réalisées séparément. (Larousse) Les modules sont des entités cohérentes qui peuvent éventuellement être sorties du contexte et réutilisées. On parle aussi de composants. Les intéractions entre différents modules sont limitées et clairement explicitées. M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 39/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Abstraction Abstraction : Opération intellectuelle qui consiste à isoler par la pensée l’un des caractères de quelque chose et à le considérer indépendamment des autres caractères de l’objet. (Larousse) C’est un exemple de séparation des problèmes. On ne considère à un instant donné que certains aspects du système que l’on juge importants. On peut souvent considérer plusieurs niveaux d’abstraction pour un même système. M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 40/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Anticipation du changement La caractéristique essentielle du logiciel, par rapport à d’autres produits, est qu’il est presque toujours soumis à des changements continuels, dus à des corrections d’imperfections et/ou des évolutions en fonction des besoins. Ceci requiert des efforts pour prévoir, faciliter et gérer ces évolutions inévitables. Il faut par exemple I Faire attention à la modularité (localisation des changements) I Faire attention à la compatibilité entre différentes versions d’un même module M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 41/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Généricité Généricité : Caractéristique générale qui permet d’englober une classe naturelle d’objets dont chacun, pris séparément, reçoit une dénomination spécifique. (Ainsi siège est un terme générique d’une classe comprenant la chaise, le fauteuil, le tabouret, etc.). (Larousse) Il peut être parfois utile de remplacer la résolution d’un problème spécifique par la résolution d’un problème plus général. Des solutions génériques (paramétrables, adaptables) sont plus facilement réutilisables. cf classes, héritage, spécialisation M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 42/75 Introduction Historique Génie Logiciel Cycles de vie du logiciel Méthodologies Construction incrémentale Un procédé incrémental atteint son but par étapes, en s’en approchant progressivement. Chaque résultat intermédiaire est construit en étendant le précédent. En pratique, on implémente d’abord un noyau fonctionnel pour chaque module, qui inclut les fonctions de base. Ce noyau est ensuite incrémenté petit à petit par de nouvelles fonctionnalités. M. Bakhouya - B. Delahaye Module Génie Logiciel à Objet 43/75