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

Mustapha EL FEDDI mustapha.elfeddi@sofrecom.com Introduction au GL Mustapha EL FEDDI mustapha.elfeddi@sofrecom.com.

Présentations similaires


Présentation au sujet: "Mustapha EL FEDDI mustapha.elfeddi@sofrecom.com Introduction au GL Mustapha EL FEDDI mustapha.elfeddi@sofrecom.com."— Transcription de la présentation:

1 Mustapha EL FEDDI mustapha.elfeddi@sofrecom.com
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 Positionnement du cours GL
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 l’accè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 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

8 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

9 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

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

12 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

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

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 l’extensibilité : 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 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

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

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

25 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, …) ...

26 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

27 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é

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 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 prochains chapitres)

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

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

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

33 Analyse des besoins Étape préalable si le client n’a 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 L’analyse n’est 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 d’une architecture technique (matérielle, logicielle) suivant certaines contraintes (robustesse, efficacité, performances, portabilité …) Expertise informatique: hors compréhension du client Modèle de l’architecture 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 d’implémentions, de validation et de maintenances Production d’un modèle du système final en cohérence avec les choix d’architecture

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

38 Validation Tests de vérification Recette Activité souvent sous estimée
Vérification de la robustesse et cohérence du système, en particulier dans les cas d’exceptions 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 Facteurs da qualité essentiels
Correction des erreurs du système Demande d’évolution (modification de l’environnement 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 d’un 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 d’un logiciel Citer quelques exemples de cycles de vie d’un logiciel


Télécharger ppt "Mustapha EL FEDDI mustapha.elfeddi@sofrecom.com Introduction au GL Mustapha EL FEDDI mustapha.elfeddi@sofrecom.com."

Présentations similaires


Annonces Google