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
Documents similaires










-
33
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 26, 2021
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.5541MB