introduction au gl mustapha el feddi [email protected]

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

Upload: degare-lefort

Post on 03-Apr-2015

114 views

Category:

Documents


0 download

TRANSCRIPT

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

Plan des cours

Positionnement du cours GL

Introduction au GL

Différentes étapes du processus de développement

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

Introduction au GL

Positionnement du cours GL

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

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

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

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

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

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

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

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'entreprisedécrivent les buts, les ressources, les règles et letravail réel dans une entreprise

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

La nature du logiciel Le logiciel est facile à reproduire

Tout le coût se trouve dans son développementPour d’autres produits, la fabrication est souvent le

processus le plus coûteux

Le logiciel est intangibleIl est difficile d'estimer l’effort de développement

Le processus de développement est difficile à automatiserL’industrie du logiciel exige beaucoup de main d’oeuvre

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

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

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

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

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

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

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

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

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

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%

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

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

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

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

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

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

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

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)

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

Génie Logiciel: Objectifs

Objectifs du génie logiciel: CQFDLe 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).

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

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

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

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

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

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

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

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

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

Génie Logiciel: Les 7 principes fondamentaux

Rigueur Séparation des problèmes Modularité Abstraction Anticipation du changement Généricité Construction incrémentale

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

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.

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

Séparation des problèmesdiviser 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, …)

...

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

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

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

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é

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

Anticipation du changementUn 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.

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

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)

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

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

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

Introduction au GL

Différentes étapes du processus de développement

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

Étapes du processus de développement

Analyse des besoins

Analyse du système

Implémentation

Maintenance

Validation

Conception

Spécifications

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

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.

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

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

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

Analyse du systèmeQuoi 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

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

ConceptionComment 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

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

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

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

Validation Tests de vérification

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

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

Maintenance Deux types de maintenance

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

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

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