La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Introduction au GL Mustapha EL FEDDI

Présentations similaires


Présentation au sujet: "Introduction au GL Mustapha EL FEDDI"— Transcription de la présentation:

1 Introduction au GL Mustapha EL FEDDI

2 Plan des cours Positionnement du cours GL Introduction au GL Différentes étapes du processus de développement

3 Introduction au GL Positionnement du cours GL

4 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

5 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

6 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 laccès aux données Quelques fois les 2 aspects sont présents dans un logiciel

7 Les différentes catégories du logiciel Les systèmes distribués synchronisent la transmission, assurent linté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

8 La nature du logiciel Le logiciel est facile à reproduire Tout le coût se trouve dans son développement Pour dautres produits, la fabrication est souvent le processus le plus coûteux Le logiciel est intangible Il est difficile d'estimer leffort de développement Le processus de développement est difficile à automatiser Lindustrie du logiciel exige beaucoup de main doeuvre

9 La nature du logiciel Même des informaticiens peu qualifié peuvent arriver à bricoler quelque chose qui semble fonctionner La qualité dun logiciel nest pas apparente Un logiciel semble facile à modifier La tentation est forte deffectuer des changements rapides sans vraiment en mesurer la portée Un logiciel ne suse pas Il se détériore à mesure que des changements sont effectués (software aging) en raison de lintroduction derreurs ou par une complexification indue

10 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...

11 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 " Lingénierie du logiciel est une nécessité processus systématique au lieu de bricolage

12 Un peu dhistoire … 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

13 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%

14 É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.

15 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

16 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

17 Génie Logiciel: définition Définition du génie logiciel (GL): Domaine des sciences de lingé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)

18 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).

19 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 lextensibilité : facilité d'adaptation d'un logiciel aux changements de spécification

20 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 lefficacité : aptitude d'un logiciel à bien utiliser les ressources matérielles telles la mémoire, la puissance de lU.C., etc. la portabilité : facilité à être porté sur de nouveaux environnements matériels et/ou logiciels

21 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 linté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, dentretien, etc

22 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

23 Génie Logiciel: Les 7 principes fondamentaux Rigueur Séparation des problèmes Modularité Abstraction Anticipation du changement Généricité Construction incrémentale

24 Rigueur Le niveau maximum de rigueur est la formalité: descriptions et validations sappuient sur des notations et lois mathématiques. Il nest 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.

25 Séparation des problèmes diviser pour régner : considérer séparément différents aspects dun problème afin den 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 lon cherche à optimiser à un stade donné (ex : assurer la correction avant de se préoccuper de lefficacité) Séparations des vues que lon peut avoir dun système (ex : se concentrer sur laspect flots de données avant de considérer laspect ordonnancement des opérations ou flot de contrôle) Séparation du système en parties (un noyau, des extensions, …)...

26 Modularité Un système est modulaire sil 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

27 Abstraction Labstraction consiste à ne considérer que les aspects jugés importants dun système à un moment donné, en faisant abstraction des autres aspects Labstraction permet une meilleure maîtrise de la complexité

28 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.

29 Généricité Il est parfois avantageux de remplacer la résolution dun problème spécifique par la résolution dun problème plus général Utilisation des design pattern (voir dans les prochains chapitres)

30 Construction incrémentale Un procédé incrémental atteint son but par étapes en sen approchant de plus en plus; chaque résultat est construit en étendant le précédent

31 Introduction au GL Différentes étapes du processus de développement

32 Étapes du processus de développement Analyse des besoins Analyse du système Implémentation Maintenance Validation Conception Spécifications

33 Analyse des besoins Étape préalable si le client na pas une idée précise du système à réaliser Étude informelle des fonctionnalités (externes) du système sans considération technique: Point de vue métier / utilisateur Aide au formalisme du problème à résoudre Production de documents textuels avec schémas, graphes, etc.

34 Spécifications Ce que doit faire le système côté client Document précis spécifiant les fonctionnalités attendues (contour fonctionnel) Base du contrat commercial avec le client Document facile à comprendre par le client / utilisateur (scénarios, interactions, enchaînement décrans) Les spécifications ne sont jamais complètes et définitives (évolution du domaine, besoins supplémentaires, …)

35 Analyse du système Quoi faire ? : comprendre et modéliser le métier Réflexion métier hors de toute considération technique Reste un support de discussion avec le client/utilisateur (questions/réponses) Premier modèle du système (niveau métier) Identifier les éléments intervenant (acteurs) hors et dans le système: fonctionnalités, structure et relations, états par lesquels ils passent suivant certains événements Lanalyse nest jamais complète, mais elle doit être juste Établissement du cahier des charges et des contraintes du système

36 Conception Comment faire le système: choix techniques Choix dune architecture technique (matérielle, logicielle) suivant certaines contraintes (robustesse, efficacité, performances, portabilité …) Expertise informatique: hors compréhension du client Modèle de larchitecture logicielle du système Décomposition en sous systèmes: application (interfaces), domaine (métier) et infrastructure (implémentation) Permet la définition des phases dimplémentions, de validation et de maintenances Production dun modèle du système final en cohérence avec les choix darchitecture

37 Implémentation Trop de temps consacré à cette phase au détriment danalyse et de conception: mauvaise pratique, parfois très coûteuse … Nécessite un savoir de la réutilisabilité des composants, voir doutils de génération de code (voir MDA) Lactivité sera de plus en plus tournée vers la réutilisation des composants existants

38 Validation Tests de vérification Vérification de la robustesse et cohérence du système, en particulier dans les cas dexceptions Testeur est différent du concepteur ou du développeur Logiciels de tests: toute ligne de code doit être testée Différentes méthodes de validation (voir cours méthodes formelles) Recette Validation client: accord avec les besoins Planification dès spécifications: cahier de recettes Activité souvent sous estimée

39 Maintenance Deux types de maintenance Correction des erreurs du système Demande dévolution (modification de lenvironnement technique, nouvelle fonctionnalités …) Facteurs da qualité essentiels Corrections: robustesse Évolution: modificabilité, portabilité Étape longue, critique et coûteuse Une enquête effectuée aux USA en 1986 auprès de 55 entreprises a révélé que 53% du budget total d'un logiciel est affecté à la maintenance

40 Questions Donner une définition dun logiciel Donner des exemples de catégories de logiciel avec des exemples de logiciels Donner une définition du Génie logiciel Citer les 7 principes fondamentaux du génie logiciel Citer les différentes étapes du processus de développement dun logiciel Citer quelques exemples de cycles de vie dun logiciel


Télécharger ppt "Introduction au GL Mustapha EL FEDDI"

Présentations similaires


Annonces Google