Plan des cours Genie Logiciel Positionnement du cours GL Introduction au GL

Plan des cours Genie Logiciel Positionnement du cours GL Introduction au GL Différentes étapes du processus de développement Modelisation Orientée Objet Paradigme Objet UML 2 Introduction au GL Positionnement du cours GL 3 Donner une définition Logiciel : Programming in the small Programmation individuelle sur des petits problèmes Algorithmique, langages de programmation, structures de données, et un peu de méthodologie 4 Les différentes catégories de logiciel  Sur mesure (custom)  Pour un client spécifique  Générique (generic)  Vendu sur le marché • un tableur (spreadsheet), un outil de base de donnée (database) • un outil de traitement de texte (word processor) • …  Embarqués (embedded)  exécutent dans du matériel électronique isolé machine à laver, télévision, lecteur DVD, téléphone mobile, magnétoscope, four à micro-ondes, réfrigérateur, joueur MP3, ...  Difficile à modifier 5 Les différentes catégories de logiciel  Logiciel à temps réel (real-time)  systèmes de contrôle et de surveillance  manipulent et contrôlent le matériel technique  Réaction immédiate requise  Environnement souvent très contraignant  Logiciel de traitement de données (data processing)  Ils stockent, recherchent, transforment et présentent l'information aux utilisateurs  Grandes quantités de données avec des corrélations complexes, enregistrées dans les bases de données  Largement utilisés en administration des affaires  Fiabilité des résultats  Sécurité dans l’accès aux données  Quelques fois les 2 aspects sont présents dans un logiciel 6 Les différentes catégories du logiciel  Les systèmes distribués  synchronisent la transmission, assurent l’intégrité des données et la sécurité, ...  Technologies utilisées CORBA, DOM/DCOM, SOAP, EJB, …  Les systèmes de matériel  Systèmes d'exploitation, exécutions de matériel de bas niveau  Les systèmes d'entreprise décrivent les buts, les ressources, les règles et le travail réel dans une entreprise 7 La nature du logiciel  Le logiciel est facile à reproduire Tout le coût se trouve dans son développement Pour d’autres produits, la fabrication est souvent le processus le plus coûteux  Le logiciel est intangible Il est difficile d'estimer l’effort de développement  Le processus de développement est difficile à automatiser L’industrie du logiciel exige beaucoup de main d’oeuvre 8 La nature du logiciel  Même des informaticiens peu qualifié peuvent arriver à bricoler quelque chose qui semble fonctionner  La qualité d’un logiciel n’est pas apparente  Un logiciel semble facile à modifier  La tentation est forte d’effectuer des changements rapides sans vraiment en mesurer la portée  Un logiciel ne s’use pas  Il se détériore à mesure que des changements sont effectués (software aging)  en raison de l’introduction d’erreurs  ou par une complexification indue 9 La nature du logiciel Raisons pour lesquelles le logiciel vieillit  maintenance (e.g., bug fixes)  érosion architecturale  inflexibilité dès le début  documentation insuffisante ou inconsistante  duplication de code  manque de modularité  complexité croissante  ... 10 La nature du logiciel Beaucoup de logiciels sont mal conçus et se détériorent rapidement La demande pour du logiciel est toujours croissante Le logiciel se trouve en perpétuel "état de crise " L’ingénierie du logiciel est une nécessité  processus systématique au lieu de bricolage 11 Un peu d’histoire … Années 50 et 60 : programmation empirique  production "artisanale" de logiciels scientifiques  royaume des "codeurs" et les "grands gourous" Fin des années 60 : la "crise du logiciel"  difficulté d'écrire de grands programmes  difficulté de les utiliser, difficulté de les faire évoluer  de nombreux projets échouent 12 Quelques statistiques Étude du gouvernement américain en 1979 Payés mais jamais livrés $3.2M 45% Livrés mais jamais utilisés $2.0M 30% Abandonnés ou refaits $1.3M 20% Utilisés après modification $0.2M 3% Utilisés tel quel $0.1M 2% 13 Échecs: Pannes logicielles La sonde vers Vénus s'est perdue dans l'espace. Cause : une erreur de programme FORTRAN, virgule remplacée par un point. Au passage de l'équateur un F16 se retrouve sur le dos. Cause : changement de signe de la latitude mal pris en compte.  La lutte contre le bogue de l'an 2000 a coûté à la France 500 milliards de francs. Cause : la donnée "année" était codée sur deux caractères pour gagner un peu de place. 14 Approches Méthodologiques Crise de l'industrie du logiciel à la fin des années 60 :  augmentation des coûts  difficultés d'évolution  non fiabilité  non respect des spécifications  non respect des délais Importance d'approches méthodologiques Apparition et développement du Génie Logiciel 15 Génie Logiciel: définition Génie Logiciel : Programming in the large  Travail en équipe sur des projets complexes et longs  Spécifications de départ « floues »  Dialogue avec les utilisateurs/clients : discours métier  Organisation, planification, gestion du risque 16 Génie Logiciel: définition Définition du génie logiciel (GL): Domaine des ‘sciences de l’ingénieur’ dont la finalité est: la conception la fabrication la maintenance de systèmes logiciels complexes, sûrs et de qualité (‘Software Engineering’ en anglais) 17 Génie Logiciel: Objectifs Objectifs du génie logiciel: CQFD Le GL se préoccupe des procédés de fabrication des logiciels de façon à satisfaire les 4 critères suivants: Le système qui est fabriqué répond aux besoins des utilisateurs (correction fonctionnelle). 18 Génie Logiciel: Objectifs  La qualité correspond au contrat de service initial. La qualité du logiciel est une notion multiforme qui recouvre :  la validité : aptitude d'un logiciel à réaliser exactement les tâches définies par sa spécification  la fiabilité : aptitude d'un logiciel à assurer de manière continue le service attendu  la robustesse : aptitude d'un logiciel à fonctionner même dans des conditions anormales  l’extensibilité : facilité d'adaptation d'un logiciel aux changements de spécification 19 Génie Logiciel: Objectifs la réutilisation : aptitude d'un logiciel à être réutilisé en tout ou partie la compatibilité : aptitude des logiciels à pouvoir être combinés les uns aux autres l’efficacité : aptitude d'un logiciel à bien utiliser les ressources matérielles telles la mémoire, la puissance de l’U.C., etc. la portabilité : facilité à être porté sur de nouveaux environnements matériels et/ou logiciels 20 Génie Logiciel: Objectifs la traçabilité : capacité à identifier et/ou suivre un élément du cahier des charges lié à un composant d'un logiciel la vérifiabilité : facilité de préparation des procédures de recette et de certification l’intégrité : aptitude d'un logiciel à protéger ses différents composants conte des accès ou des modifications non autorisés la facilité d'utilisation, d’entretien, etc 21 Génie Logiciel: Objectifs Les coûts restent dans les limites prévues au départ. Les délais restent dans les limites prévues au départ. Règle du CQFD : Coût Qualité Fonctionnalités Délai 22 Génie Logiciel: Les 7 principes fondamentaux Rigueur Séparation des problèmes Modularité Abstraction Anticipation du changement Généricité Construction incrémentale 23 Rigueur Le niveau maximum de rigueur est la formalité: descriptions et validations s’appuient sur des notations et lois mathématiques. Il n’est pas possible d’être formel tout le temps : il faut bien construire la première description formelle à partir de connaissances non formalisées ! Mais dans certaines circonstances les techniques formelles sont utiles. 24 Séparation des problèmes diviser pour régner : considérer séparément différents aspects d’un problème afin d’en maîtriser la complexité  séparation dans le temps (les différents aspects sont abordés successivement, voir cycle de vie du logiciel)  séparation des qualités que l’on cherche à optimiser à un stade donné (ex : assurer la correction avant de se préoccuper de l’efficacité)  Séparations des ‘vues’ que l’on peut avoir d’un système (ex : se concentrer sur l’aspect ‘flots de données’ avant de considérer l’aspect ordonnancement des opérations ou ‘flot de contrôle’)  Séparation du système en parties (un noyau, des extensions, …)  ... 25 Modularité  Un système est modulaire s’il est composé de sous- systèmes plus simples, ou modules  La modularité permet de considérer séparément le contenu du module et les relations entre modules. Elle facilite également la réutilisation de composants biens délimités  Un bon découpage modulaire se caractérise par une forte cohésion interne des modules (ex : fonctionnelle, temporelle, logique, ...) et un faible couplage entre les modules (relations inter modulaires en nombre limité et clairement décrites)  Programmation par composants 26 Abstraction L’abstraction consiste à ne considérer que les aspects jugés importants d’un système à un moment donné, en faisant abstraction des autres aspects L’abstraction permet une meilleure maîtrise de la complexité 27 Anticipation du changement Un logiciel est presque toujours soumis à des changements continuels (corrections d'imperfections et évolutions en fonctions des besoins qui changent) Ceci requiert des efforts particuliers pour prévoir, faciliter et gérer ces évolutions inévitables. Il faut par exemple :  faire en sorte que les changements soient les plus localisés possibles (bonne modularité)  être capable de gérer les multiples versions des modules et configurations des versions des modules, constituant des versions du produit complet. 28 Généricité Il est parfois avantageux de remplacer la résolution d’un problème spécifique par la résolution d’un problème plus général Utilisation des design pattern (voir dans les prochaines Années Master) 29 Construction incrémentale Un procédé incrémental atteint son but par étapes uploads/Industriel/ cour-gl1.pdf

  • 33
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager