Génie logiciel avancé Introduction Delphine Longuet delphine.longuet@lri.fr Uni
Génie logiciel avancé Introduction Delphine Longuet delphine.longuet@lri.fr Université Paris-Sud L3 MIAGE apprentissage Année 2014-2015 D. Longuet - Génie logiciel 2 Logiciel : définitions Ensemble d'entités nécessaires au fonctionnement d'un processus de traitement automatique de l'information ●Programmes, données, documentation... Ensemble de programmes qui permet à un système informatique d’assurer une tâche ou une fonction en particulier Logiciel = programme + utilisation D. Longuet - Génie logiciel 3 Logiciel : caractéristiques Environnement ●utilisateurs : grand public (traitement de texte), spécialistes (calcul scientifique, finances), développeurs (compilateur) ●autres logiciels : librairie, composant ●matériel : capteurs (système d'alarme), réseau physique (protocole), machine ou composant matériel contrôlé (ABS) Spécification : ce que doit faire le logiciel, ensemble de critères que doivent satisfaire son fonctionnement interne et ses interactions avec son environnement D. Longuet - Génie logiciel 4 Spécification Spécification fonctionnelle ●Fonctionnalités du logiciel, réponse aux besoins des utilisateurs Spécification non fonctionnelle ●Facilité d'utilisation : prise en main et robustesse ●Performance : temps de réponse, débit, fluidité... ●Fiabilité : tolérance aux pannes ●Sécurité : intégrité des données et protection des accès ●Maintenabilité : facilité à corriger et à faire évoluer le logiciel ●Portabilité : adaptabilité à d'autres environnements matériels ou logiciels D. Longuet - Génie logiciel 5 Crise du logiciel Constat du développement logiciel fin années 60 : ●délais de livraison non respectés ●budgets non respectés ●ne répond pas aux besoins de l'utilisateur ou du client ●difficile à utiliser, maintenir, et faire évoluer D. Longuet - Génie logiciel 6 Étude du DoD 1995 Étude du Department of Defense des États-Unis sur les logiciels produits dans le cadre de 9 gros projets militaires Jarzombek, Stanley J., The 5th annual JAWS S3 proceedings, 1999 2% 3% 19% 47% 29% Utilisés directement Utilisés après quelques modifications Utilisés après de fortes modifications Jamais utilisés Payés et pas livrés D. Longuet - Génie logiciel 7 Étude du Standish group 1994 1996 1998 2000 2002 2004 2006 2008 2010 2012 0% 20% 40% 60% 80% 100% Projets réussis : achevés dans les délais et pour le budget impartis, avec toutes les fonctionnalités demandées Projets mitigés : achevés et opérationnels, mais livrés hors délais, hors budget ou sans toutes les fonctionnalités demandées Projets ratés : abandonnés avant la fin ou livrés mais jamais utilisés Enquête sur des milliers de projets, de toutes tailles et de tous secteurs Standish group, Chaos Manifesto 2013 - Think Big, Act Small, 2013 D. Longuet - Génie logiciel 8 Petits vs grands projets 76% 20% 4% Petits projets budget ≤ $1 million 10% 52% 38% Grands projets budget ≥ $10 millions Projets réussis Projets mitigés Projets ratés Standish group, Chaos Manifesto 2013 - Think Big, Act Small, 2013 D. Longuet - Génie logiciel 9 Utilisation des fonctionnalités implantées Toujours, 7% Souvent, 13% Parfois, 16% Rarement, 19% Jamais, 45% Standish group, Chaos Manifesto 2002, 2002 D. Longuet - Génie logiciel 10 Bugs célèbres Sonde Mariner 1, 1962 ●Détruite 5 minutes après son lancement; coût : $18,5 millions ●Défaillance des commandes de guidage due à une erreur de spécification ●Erreur de transcription manuelle d'un symbole mathématique dans la spécification Therac-25, 1985-87 ●Au moins 5 morts par dose massive de radiations ●Problème d'accès concurrents dans le contrôleur Processeur Pentium, 1994 ●Bug dans la table de valeurs utilisée par l'algorithme de division Ariane V vol 501, 1996 ●Explosion après 40 secondes de vol; coût : $370 millions ●Panne du système de navigation due à un dépassement de capacité (arithmetic overflow) ●Réutilisation d'un composant d'Ariane IV non re-testé Electron mode X-ray mode Problem D. Longuet - Génie logiciel 11 Plus récemment PlayStation Network, avril 2011 ●Des millions de données personnelles et bancaires piratées ●Pertes financières de plusieurs milliards de dollars ●Vulnérabilité du réseau connue mais conséquences mal évaluées ? Outil de chiffrement OpenSSL, mars 2014 ●500 000 serveurs web concernés par la faille ●Vulnérabilité permettant de lire une portion de la mémoire d'un serveur distant De manière générale, fiabilité, sûreté et sécurité des logiciels ●Transports automobile, ferroviaire, aéronautique ●Contrôle de processus industriels, nucléaire, armement ●Médical : imagerie, appareillage, télé-surveillance ●e-commerce, carte bancaire sans contact, passeport électronique D. Longuet - Génie logiciel 12 Pourquoi ? Raisons principales des bugs : ●Erreurs humaines ●Taille et complexité des logiciels ●Taille des équipes de conception/développement ●Manque de méthodes de conception ●Négligence de la phase d'analyse des besoins du client ●Négligence et manque de méthodes et d'outils des phases de validation/vérification D. Longuet - Génie logiciel 13 Mythes du logiciel ●Idée grossière du logiciel suffisante pour commencer à programmer Faux : échecs dus principalement à une idée imprécise du logiciel ●Travail terminé quand programme écrit et fonctionnel Faux : maintenance du logiciel = plus du 50% du coût total ●Facile de gérer spécifications changeantes Faux : changements de spécifications souvent coûteux ●En cas de retard, solution : ajouter des programmeurs Faux : période de familiarisation et communication plus difficile impliquent perte de productivité « Ajouter des programmeurs à un projet en retard ne fait que le retarder davantage » D. Longuet - Génie logiciel 14 Génie logiciel Idée : appliquer les méthodes classiques d'ingénierie au domaine du logiciel Ingénierie (ou génie) : Ensemble des fonctions allant de la conception et des études à la responsabilité de la construction et au contrôle des équipements d'une installation technique ou industrielle Génie civil, naval, aéronautique, mécanique, chimique... D. Longuet - Génie logiciel 15 Génie logiciel Définition : Ensemble des méthodes, des techniques et des outils dédiés à la conception, au développement et à la maintenance des systèmes informatiques Objectif : Avoir des procédures systématiques pour des logiciels de grande taille afin que ●la spécification corresponde aux besoins réels du client ●le logiciel respecte sa spécification ●les délais et les coûts alloués à la réalisation soient respectés D. Longuet - Génie logiciel 16 Génie logiciel Particularités du logiciel : ●produit invisible et immatériel ●difficile de mesurer la qualité ●conséquences critiques causées par modifications infimes ●mises à jour et maintenance dues à l'évolution rapide de la technologie ●difficile de raisonner sur des programmes ●défaillances logicielles principalement humaines D. Longuet - Génie logiciel 17 Principes d'ingénierie pour le logiciel Sept principes fondamentaux ●Rigueur : principale source d'erreurs humaine, s'assurer par tous les moyens que ce qu'on écrit est bien ce qu'on veut dire et que ça correspond à ce qu'on a promis (outils, revue de code...) ●Abstraction : extraire des concepts généraux sur lesquels raisonner, puis instancier les solutions sur les cas particuliers ●Décomposition en sous-problèmes : traiter chaque aspect séparément, chaque sous-problème plus simple que problème global ●Modularité : partition du logiciel en modules interagissant, remplissant une fonction et ayant une interface cachant l'implantation aux autres modules D. Longuet - Génie logiciel 18 Principes d'ingénierie pour le logiciel ●Construction incrémentale : construction pas à pas, intégration progressive ●Généricité : proposer des solutions plus générales que le problème pour pouvoir les réutiliser et les adapter à d'autres cas ●Anticipation des évolutions : liée à la généricité et à la modularité, prévoir les ajouts/modifications possibles de fonctionnalités De façon transversale ●Documentation : essentielle pour le suivi de projet et la communication au sein de l'équipe de projet ●Standardisation/normalisation : aide à la communication pour le développement, la maintenance et la réutilisation D. Longuet - Génie logiciel 19 Processus de développement logiciel Ensemble d'activités successives, organisées en vue de la production d'un logiciel En pratique : ●Pas de processus idéal ●Choix du processus en fonction des contraintes (taille des équipes, temps, qualité...) ●Adaptation de « processus types » aux besoins réels D. Longuet - Génie logiciel 20 Processus de développement logiciel Activités du développement logiciel ●Analyse des besoins ●Spécification ●Conception ●Programmation ●Validation et vérification ●Livraison ●Maintenance Pour chaque activité : Utilisation et production de documents D. Longuet - Génie logiciel 21 Objectif : Comprendre les besoins du client ●Objectifs généraux, environnement du futur système, ressources disponibles, contraintes de performance... Analyse des besoins Analyse des besoins Cahier des charges (+ manuel d'utilisation préliminaire) Besoins du client D. Longuet - Génie logiciel 22 Spécification Objectifs : ●Établir une description claire de ce que doit faire le logiciel (fonctionnalités détaillées, exigences de qualité, interface...) ●Clarifier le cahier des charges (ambiguïtés, contradictions) Spécification Cahier des charges fonctionnel Cahier des charges D. Longuet - Génie logiciel 23 Conception Objectif : Élaborer une solution concrète réalisant la spécification ●Description architecturale en composants (avec interface et fonctionnalités) ●Réalisation des fonctionnalités par les composants (algorithmes, organisation des données) ●Réalisation des exigences non-fonctionnelles (performance, sécurité...) Conception Dossier de conception Cahier des charges fonctionnel D. Longuet - Génie logiciel 24 Programmation Objectif : Implantation de la solution conçue ●Choix de l'environnement de développement, du/des langage(s) de programmation, de normes de développement... Programmation Code documenté + manuel d'utilisation Dossier de conception D. Longuet - Génie logiciel 25 Validation et vérification Objectifs : ●Validation : assurer que les besoins du client sont satisfaits (au niveau de la spécification, du produit fini...) Concevoir le bon logiciel ●Vérification : assurer que le logiciel satisfait sa spécification Concevoir le logiciel correctement Validation Vérification Cahier des charges fonctionnel Logiciel Besoins du client D. Longuet - Génie logiciel 26 uploads/Sante/ s1-intror.pdf
Documents similaires
-
25
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 13, 2022
- Catégorie Health / Santé
- Langue French
- Taille du fichier 1.0344MB