Génie Logiciel – Première partie

IEEE
Page 1 sur 9Lecteur de document UniversityLib

Génie Logiciel – Première partie

Génie logiciel, Développement de logiciels, Tests de logiciels · course

Browse all génie logiciel documents

Génie Logiciel – Première partie

Introduction générale

Ø Plan de la première partie

Ÿ Rappels historiques et définition du génie logiciel

Ÿ Présentation des cycles de développement (concepts et outils)

Ÿ Les Tests

ú Tests unitaires, tests de couverture, tests de non régressions…

Ÿ Les grands principes de développement

ú KISS, SOLID, DRY, YAGNI…

Ÿ Les patrons de conception

ú Les patrons du GoF essentiellement

Ø Objectifs:

Ÿ Comprendre comment s’inscrit le développement dans un processus industriel

Ÿ Savoir écrire des tests pour produire du code plus fiable

Ÿ Maitriser les principaux patrons de conception

Définitions

Définitions

Ø Selon le journal officiel et l’arrêté du 30 décembre 1983: « Le génie logiciel est

l'ensemble des activités de conception et de mise en œuvre des produits et

des procédures tendant a rationaliser la production du logiciel et son suivi »

Ø La qualité d’un logiciel se mesure à travers plusieurs items

Ÿ Fiabilité

ú Le logiciel répond au besoin initial

Ø « Le logiciel est l'ensemble des programmes, procédés et règles, et

éventuellement de la documentation, relatifs au fonctionnement d'un

ensemble de traitement de l'information »

Ø Le génie logiciel couvre tout ce qui est lié à la fabrication d’un logiciel

Ÿ C’est l’ « art » de produire de bons logiciels au meilleur rapport qualité/prix

Ÿ Il se base sur des méthodes et sur des outils permettant de formaliser et

d’automatiser la production de logiciels

Ÿ Il nécessite une bonne connaissance des différentes techniques mais également

de l’entrainement et de l’expérience

3

ú Le logiciel fonctionne même dans des conditions imprévues au départ

Ÿ Ergonomie

ú L’utilisateur peut exploiter le logiciel de manière simple et intuitive

Ÿ Extensibilité

ú Le logiciel peut être enrichi sans devoir repartir de 0 à chaque fois

Ÿ Réutilisabilité

ú Le logiciel peut être utilisé dans des contextes différents de celui de départ

Ÿ Compatibilité (ou interopérabilité)

ú Le logiciel peut interagir avec d’autres logiciels pour fournir de nouveaux services

Ÿ Portabilité

ú Capacité du logiciel à être adapté à des environnements informatiques différents

2

4

Définitions

Ÿ Coût

Rappels historiques

Ø Jusque dans les années 60, le logiciel n’était pas considéré comme quelque

ú Direct: Argent investi pour le développement et la maintenance du logiciel au cours de

chose de critique

sa vie

ú Indirect: Argent généré par les utilisateurs pour son utilisation et sa possession

Ÿ Performances

ú En terme de résultats, de vitesse d’exécution, d’utilisation mémoire…

Ÿ Intégrité

Ø Plusieurs organismes de standardisation/normalisation propose des normes

pour évaluer les logiciels

Ÿ AFNOR, ANSI, ISO (9126+), ACM et IEEE

Ø Le génie logiciel est donc bien plus que simplement du développement

Ÿ Rapidement le fait qu’il n’y ait pas de méthodes unifiées a posé problème

ú Les développements individuels ne tenaient pas les délais, étaient souvent émaillés de

bug

Ÿ Le coût du développement des logiciels n’a cessé de croitre alors que dans le

même temps le coût du matériel diminuait

Ø Le tournant a lieu à la fin des année 60 quand le coût de production d’un

logiciel a dépasse celui des machines qui le faisait fonctionner

Ÿ Les temps sont explosés, les budgets dépassés, il y a de graves erreurs dans les

produits finaux, les logiciels produits ne sont pas maintenables…

Ÿ On est entré dans ce que l’on appelle la crise du logiciel qui continue encore de

Ÿ Le développement n’est qu’une partie d’un projet informatique

nos jours

5

Advertisement

6

Rappels historiques

Rappels historiques

Ø La complexité explose et le coût de maintenance devient largement supérieur

Ø Les grands bugs de l’histoire

au coût de production

Ÿ En 1962, la mission Mariner 1 qui devait explorer Vénus fut détruite après un vol

Ÿ On considère qu’entre 1965 et 1995 la taille des logiciels a été multipliée par 100

de 293s

alors que la productivité des développeurs n’a été multiplié que par 3

Ÿ Windows NT a été produit de zéro par 8 personnes à partir de 1988

ú Il a eu 3 ans de retard sur le planning initial qui était de 18mois

ú L’équipe est montée à 200 personnes pour NT 3,1, 800 personnes pour NT4

Ÿ Windows 2000 avait une équipe de 1400 développeurs et 1700 testeurs

ú Le code source dans son ensemble occupait 50Gb et il fallait 2h pour le synchroniser et

8h pour le recompiler

ú Au total sa production aura mobilisé 5000 personnes pour un coût de 1 milliard de

dollars

ú Plus de détails sur : https://www.usenix.org/legacy/events/usenix-

win2000/invitedtalks/lucovsky_html/sld001.htm

ú Une erreur dans le code de guidage déviait la fusée vers le sol au lieu de la trajectoire

prévue ce qui a nécessité de la détruire en vol

« Une erreur de caractère en Fortran serait à l’origine du crash

« « Le trait d’union le plus cher de l’histoire » Arthur C. Clarke

ú Cout: 18,5 millions de dollars

Ÿ En 1996 le vol inaugural d’Ariane 5 s’auto détruit au bout de 36,7s à cause d’un

programme issue d’Ariane 4

ú Le programme n’a pas supporté la puissance d’accélération d’Ariane 5

« En fait Ariane 5 s’inclinait plus vite qu’Ariane 4 ce qui était normal

« Le programme a considéré que la trajectoire était non conforme au plan de tir et a

déclenché l’auto destruction

ú Il transportait 4 satellites d’une valeur de 370 millions de dollars

7

8

Rappels historiques

Rappels historiques

Ÿ En 1999, perte de la sonde Mars climate orbiter après 9 mois de voyages

ú Il y a eu une confusion entre des pieds et des mètres dans un sous programme

ú Cout: 120 millions de dollars

Ÿ En l’an 2000, le fameux bug ne se produisit pas mais les travaux de vérification et

de maintenance ont été évalués à 600 millions de dollars

Ÿ En 2002, l’hôpital St Mary’s Mercy dans le Michigan a déclaré par erreur la mort

de 8500 personnes

ú Elles ont reçus à leur domicile une facture et une déclaration de décès

ú Les compagnies d’assurances et la sécurité sociale américaine ont également été

prévenue

ú Il a fallu des semaines pour que ces « décès » soient annulés

Ÿ Entre 2009 et 2011, la Lexus ES350 a été impliqué dans de nombreuses sorties de

route à grande vitesse

ú L’ordinateur de bord pouvait accélérer jusqu’à 150km/h en désactivant la pédale de

frein. Bilan: entre 200 et 400 morts

Ø En 2009, le moteur de recherche de google a notifié ses utilisateurs que tous

les sites du monde étaient malicieux…..y compris lui-même

Ø En 2012, le groupe Knight Capital a perdu 440 millions de dollars en 45

minutes à cause d’un mauvais déploiement d’une mise à jour d’un

programme de trading

Ÿ La mise à jour ayant échouée, l’ancienne version du programme a continué à être

utilisée pendant ces 45 minutes

Ø Plus globalement, en 2002, le NIST a estimé que les erreurs logicielles

coutaient 59 milliards de dollars annuellement ce qui représente 0,6% du PIB

des USA

9

10

Les cycles de développement

Les cycles de développement

Ø Les cycles de développement sont des processus définissant un ensemble

structuré d’activités permettant d’obtenir un logiciel

Ø Il existe de nombreux modèles, le sujet ayant été étudié depuis les années 80,

mais tous reposent au moins sur 4 phases essentielles

Ÿ La spécification des besoins

Ÿ La conception générale du logiciel qui va servir à définir son organisation

Ÿ L’implémentation qui sera la réalisation qui en découle

Ÿ La validation (ou tests la plupart du temps) qui permet de s’assure que la solution

proposée vérifie les besoins définis à la première phase

Advertisement

Ÿ La prise en compte de l’évolution pour pouvoir répondre aux changements de

besoins

12

Les cycles de développement

Ce qu’il faut éviter

Ø Le cycle de développement peut également inclure

Ÿ Les produits qui sont les résultats des activités des processus

Ÿ Les rôles qui définissent les responsabilités des personnes impliquées dans les

différents processus

Ÿ Les pré-conditions et les post-conditions qui permettent de définir les assertions

en entrée et en sortie des processus

Ø Du point de vue méthodologique on trouve une vision dirigée par la

planification et une vision agile

Ÿ La planification définis tous les processus et actions à l’avance et les progrès sont

évalués par rapport à ce plan

Ÿ Dans les méthodes agiles on privilégie l’approche incrémentale qui permet

d’adapter les processus pour s’adapter aux évolutions des besoins

Ÿ En pratique, on retrouve souvent un mélange des deux approches

13

http://bonkersworld.net/building-software

Les cycles de développement – La cascade

Les cycles de développement – La cascade

Ø Introduit dans les année 70, basé sur le fonctionnement des projets en BTP

Analyse des besoins

Analyse des besoins

Spécifications

Conception de

l’architecture

Conception de

détaillée

Implémentation

Tests et validation

Déploiement et

maintenance

15

Spécifications

Ø L’analyse des besoins permet de faire l’analyse du problème avec le client

Ÿ L’objectif est de définir les attentes et de déterminer ce qu’il est possible et

impossible de faire

Ÿ On y fixe les conditions générales d’exécution du projet

Ÿ Permet de fixer le cahier des charges

Ø Les spécifications reprennent ce cahier des charges

Ÿ Part de la description informelle pour arriver à des choses précises

ú Objets à manipuler, taches à effectuer..

Ÿ Permet de planifier de manière détaillée la suite du processus

14

16

Les cycles de développement – La cascade

Les cycles de développement – La cascade

Conception de

l’architecture

Conception de

détaillée

Ø La conception de l’architecture est une conception générale du système

Ÿ On définit les principaux composants et la manière dont ils s’interfacent

Ÿ On choisit les principales structures de données à utiliser

Ø La conception détaillée permet de rentrer dans le cœur des composants

définis dans l’étape précédente

Ÿ On détaille jusqu’à arriver aux lignes de code quasiment

Ø Ces deux phases reposent souvent sur l’utilisation de méthodologie comme

UML

Les cycles de développement – La cascade

Ø Avantages

Ÿ Facilite la gestion de projet en particulier lorsque le projet est distribué sur

plusieurs sites

Ÿ Simple et logique

Ø Inconvénients

Ÿ Le découpage rigide du projet rend difficile de s’adapter aux changements des

besoins du client

ú Lorsque le projet prend plusieurs années cela peut être problématique surtout dans le

monde informatique où les choses évoluent rapidement

ú Le modèle est par contre très bien adapté si les exigences (requirements) sont bien

fixées et ne sont pas sujette à changement

Ÿ Les tests arrivent tard dans le processus

Advertisement

ú Il peut arriver qu’ils mettent en évidence des problèmes nécessitant de remonter à la

première étape ce qui est alors très couteux

17

19

Implémentation

Tests et validation

Ø L’implémentation est la partie de réalisation du programme dans le langage

choisi dans les étapes supérieures

Ÿ Cette phase s’appuie sur la conception et sur les exigences

Ÿ Elle est parfois décomposer en deux taches: Implémentation et Intégration

ú La tache d’intégration consiste à regrouper les différents composants implémentés pour

arriver au produit final

Ø Les tests et validation permettent de vérifier que le produit logiciel obtenu est

bien conforme aux attentes du client

Ÿ Les tests sont automatisable et sont écrits indépendamment de la phase

d’implémentation

18

Les cycles de développement – La cascade

Source Univ. of London Computer Center Newsletter n53 march 73

20

Les cycles de développement – Le cycle en V

Les cycles de développement – Le cycle en V

Ø C’est une évolution du modèle précédent

Ø Avantages

Ÿ Simple à appréhender

Ÿ Les vérifications ont lieu à chaque étape ce qui lui permet d’être plus adaptable

que le modèle en cascade

Ÿ Segmente clairement le projet

Ÿ Mise en avant de l’analyse

Ø Inconvénients

Ÿ Vision en tunnel (peu évolutif)

Ÿ Manque de souplesse

Ÿ Nécessite une bonne connaissance des besoins sous peine de déveloper un

logiciel inadapté

Ÿ Découverte tardive d’erreurs d’analyse

21

22

Les cycles de développement – L’itératif

Les cycles de développement – L’itératif

Ø Dans le développement logiciel, les besoins évoluent rapidement et les

processus classique comme le modèle en cascade ne sont pas adaptés à tous

les projets

Ø Le modèle itératif ou incrémental consiste a concevoir, développer et tester

le logiciel de manière incrémentale en ajoutant progressivement de nouvelles

fonctionnalités

Ÿ C’est une combinaison du modèle en cascade et de la philosophie du prototypage

Ÿ Le logiciel est décomposé en composants développés en parallèle et qui sont

fournis au client dès qu’ils sont prets

23

Source: wikipédia

24

Les cycles de développement – L’itératif

Les cycles de développement – Le modèle en spirale

Ø Avantages

Ÿ Il est plus simple et plus rapide de détecter les incohérences

Ø C’est un modèle qui est centré autour de la gestion des risques avec un vision

en spirale des activités plutôt qu’une séquence avec des retours en arrière

Ÿ Après chaque itération on effectue des tests de non-régression pour assurer la

Ÿ Chaque boucle de la spirale représente une étape du processus de

cohérence d’ensemble

Ÿ Plus simple à tester que les autres modèles car il y a normalement peu de

changement dans les exigences au cours d’une itération

Ÿ Les premiers prototypes sont disponibles rapidement et permettent au client de

mieux suivre les avancés

Ø Inconvénients

Ÿ Le nombre de cycle est élevé et donc le projet d’ensemble peut se révéler couteux

Ÿ L’ajout de fonctionnalités peut avoir un impact sur l’architecture générale du

système qui peuvent faire varier grandement les prototypes

développement

Ÿ Les risques sont pointés et résolus au fur et à mesure du processus

Ø Il repose sur 4 grands secteurs

Ÿ La détermination des objectifs permet d’identifier les objectifs de chaque itération

Ÿ L’identification et la réduction des risques

Ÿ Le développement et les tests sont ensuite réalisés

Advertisement

Ÿ La planification de l’itération suivante est réalisée

25

26

Les cycles de développement – Le modèle en spirale

Les cycles de développement – Le modèle en spirale

Ø Avantages

Ÿ Souvent utilisés dans les projets où les risques sont importants (et donc les

impacts financiers pour le développeur et pour le client)

Ÿ Il y a moins de divergence entre les pré-requis et la conception

ú Les prérequis sont régulièrement vérifiés voir modifiés à chaque passage dans la spirale

ú La production de prototype permet de mieux cibler les couts

Ÿ Il y a des retours de toutes les parties prenantes (client, concepteur, développeur)

assez rapidement

ú L’expertise du client se développe au fur et à mesure des itérations

Ø Inconvénients

Ÿ Il faut éviter que les premiers prototypes ne se retrouvent dans le système de

production pour éviter que des risques ne persistent dans ce dernier

Ÿ Il y a un risque que des boucles se forment à l’intérieur de la spirale

27

28

Les cycles de développement – Le processus unifié

Les cycles de développement – Le processus unifié

Ø Le processus unifié reprend cette idée d’unifier l’itératif avec le modèle en

Ø Une des versions les plus connues est RUP (Rational Unified Process)

cascade

Ÿ Il est piloté par les cas d’utilisation

Ÿ Il est centré sur l’architecture à travers la modélisation orientée objet, l’utilisation

Ø Il se décompose en 4 phases

Ÿ Etudes d’opportunité

Ÿ Elaboration de la solution à travers l’analyse du besoin

ú Choix de l’architecture et réalisation de prototype d’architecture en petites équipes

Ÿ Construction de la solution

ú Enrichissement progressif des fonctionnalités

ú Réalisation d’une version béta et rédaction de la documentation

Ÿ Transition vers le produit final

ú Fabrication, livraison, formation support technique …

29

Les cycles de développement – Les méthodes Agile

Les cycles de développement – Les méthodes Agile

Ø Les méthodes agiles sont des méthodes itératives réutilisant des principes du

processus unifié

Ÿ Il prévilégie une planification souple et des itérations très courtes

Ø Le terme vient du manifeste agile qui repose sur 4 valeurs et 12 principes

Ø Il faut favoriser

Ÿ les individus et leurs interactions plus que les processus et les outils

Ÿ Un logiciel qui fonctionne plutôt qu’une documentation exhaustive

Ÿ La collaboration avec les clients plutôt que la négociation contractuelle

Ÿ L’adaptation au changement

Ø Les 12 principes généraux

Ÿ Satisfaire le client en priorité

Ÿ Accueillir favorablement les demandes de changement

Ÿ Livrer le plus souvent possible des versions opérationnelles de l’application

Ÿ Assurer une coopération permanente entre le client et l’équipe projet

Ÿ Construire des projets autour d’individus motivés

Ÿ Privilégier la conversation en face à face

Ÿ Mesurer l’avancement du projet en termes de fonctionnalités de l’application

Ÿ Faire avancer le projet à un rythme soutenable et constant

Ÿ Porter une attention continue à l’excellence technique et à la conception

Ÿ Faire simple

Ÿ Responsabiliser les équipes

Ÿ Ajuster à intervalles réguliers son comportement et ses processus pour être plus

31

efficace

30

32

Les cycles de développement – Les méthodes Agile

Les cycles de développement – Les méthodes Agile

Ø SCRUM

Ø eXtrem Programming

33

34