Génie Logiciel - Cours de Génie Logiciel

Feb 6, 2003 - Utilisés après modifications ... 06/02/2003. 4. Page : 7. Samuel Kortas – Janvier/Février 2003 ... Durée de vie : 3 mois à 20 ans… à 50 ans.
1MB taille 2 téléchargements 78 vues
Software Engineering / Génie Logiciel Samuel KORTAS

Janvier-Février 2003

But du cours ¾

Initier aux méthodes de gestion du logiciel

¾ Théorie (8h de cours) Historique Cycles de Developpement ¾ Tests !!! ¾ règles de codage ¾ UML ¾ methode CRC ¾ Pratique : projet suivi ¾ ¾

¾

Présenter :

¾ l’Assurance Qualité ¾

Apprendre à utiliser

¾ Un outil de Gestion de configuration ¾ Rational Rose Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 2

1

Sensibilisation aux projets logiciels ➀ Les projets logiciels ☞ ☞ ☞ ☞

la réalité en chiffres les cycles de vie les problèmes la qualité logicielle

② Les errements de la pratique ☞ bonnes habitudes ☞ erreurs classiques

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 3

Software Engineering / Génie Logiciel 1 . Pourquoi ?

Janvier-Février 2002

06/02/2003

2

Un peu d’histoire… •

Boulier, Machine de Pascal, Machine de Turing, Etudiants dans un Stade, ENIAC • Pas de logiciels, mais un utilisateur ou un chef d’orchestre • Une opération, pas de mémoire



Années 50 et 60 : programmation empirique • Production « artisanale » de logiciels scientifiques • Royaume des « codeurs » et des « gourous »



Fin des années 60 : « la crise du logiciel » • Difficulté d’écrire de grands programmes • Difficulté de les utiliser, de les faire évoluer • De nombreux projets échouent…..

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 5

La crise… s’éternise! Etude du gouvernement américain en 1979 ‰ ‰ ‰ ‰ ‰

Payés mais jamais livrés Livrés mais jamais utilisés Abandonnés ou refaits Utilisés après modifications Utilisés tel quel

Samuel Kortas – Janvier/Février 2003

06/02/2003

$ 3.2 M $ 2.0 M $ 1.3 M $ 0.2 M $ 0.1 M

47% 28% 20% 03% 02%

Software Engineering

Page : 6

3

Mais pourquoi? …. Complexité des Logiciels ‰

Taille : des millions de lignes de code, des milliers de module

Š Windows NT = 15 millions de ligne C++ Š Linux 2.4.0 = 3 millions de ligne C/C++/asm Š --> Dans Excel 97 est caché un simulateur de vol en 3D !! ‰

Durée de vie : 3 mois à 20 ans… à 50 ans

Š Un serveur web de e-commerce doit etre mis en place au plus tard avant… hier! --> Time to market de + en + cours Š En 1998, on rappelle les programmeurs COBOL! ‰

Tailles des équipes : 1 à 50… à 1000 ingénieurs logiciels

Š plusieurs acteurs : Constructeurs, SSII, Utilisateurs finaux et clients

Š équipes réparties autour de la planète ‰

Coût de développement et de maintenance élevés :

Š de centaine de milliers de francs à des milliards!

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 7

Niveau (approximatif) de langage Assembleur

1   

C

2.5

Fortran 77 Pascal Ada 83

3    3.5 4.5

C++ Visual Basic 3

6.5 10   

Perl

15   

Tableur Excel

‰ ‰ ‰

on développe à peu près le même nombre de lignes/mois (la productivité individuelle variant néanmoins de 1 à 10) donc développement plus ou moins rapide mais dépend de l’utilisation

~50   

Samuel Kortas – Janvier/Février 2003

06/02/2003

‰

Software Engineering

Page : 8

4

Qu ’est ce qu ’un logiciel? Computer Programs and the associated documentation required to develop, upgrade and maintain them [ Boehm 76]

‰

Logiciel ≠ Code !!!

‰

Et quoi d ’autre?

Š Š Š Š ‰

Binaires, librairies, manuels utilisateurs spécifications, dossier de conception détaillée et général plans de tests, résultats de tests Savoir faire, Stratégie de maintenance, procédures qualités

Savoir programmer : un détail !!!

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 9

Charges Des Différents postes Poste

Cycle de développement

Cycle de vie

Spécifications Etude du Pb Analyse Besoins Définir Actions & Données

20%

8%

Conception/Développement Décomposer le projet Coder Documenter

30%

12%

Tests/Validation Vérifier les fonctions Tester les perf Optimiser

50%

20%

Operation/Maintenance Formation Mise en place Maintenance corrective Evolution/Portage

Samuel Kortas – Janvier/Février 2003

06/02/2003

60%

Software Engineering

Page : 10

5

De Codeur à Ingénieur Logiciel! ‰

1968 : 1ére Conférence de Genie Logiciel/Software Engineering

Š Š Š Š ‰

Génie Logiciel = Ingénierie + Logiciel idée : organiser la production des logiciels Contrôle des coûts, contrôle de la qualité, … meilleure Estimation, prévision et gestion des risques

changement de terminologie :

Š 1950 : codeur Š 1970 : analyste-programmeur Š 1980 : ingénieur logiciel

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 11

Définition Ingénierie "Creating cost-effective solutions … ... to practical problems … ... by applying scientific knowledge » [Shaw90]

‰ ‰ ‰ ‰ ‰

ressources limitées (e.g. temps, argent, ...) solution utile résolvant un problème concret le problème n'est pas inventé par l'ingénieur rigueur dans la résolution du problème prédictibilité du résultat

Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 12

6

En pratique... ‰ ‰ ‰ ‰

résolution de problèmes complexes résolution de problèmes récurrents catalogue de solutions pour un type de problèmes solutions sûres et éprouvées

Et…..

"There are three ways to loose money: women, gambling and engineers. The two former are the more comfortable ones, the latter the most certain » - bankier Rothschild -

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 13

Rotschild avait raison (1/2) Š Ariane 5: mauvaise couverture de test / OUT OF RANGE = $370 000 000

Š AT&T, 1992: interruption du service téléphonie pendant 5 heures à l'est des états unis.

Š Aéroport de Denver, 1994: logiciel de suivi des bagages, coût 3 millards de $, retard de 18 mois.

Š Oslo, Sept. 1993 : erreur dans le système de comptage des votes du parlement => nouvelles éléctions

Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 14

7

Rotschild avait raison (2/2) ‰

Etude récente effectuée aux états unis [Standish Group 1995]

Š 31% des projets non achevés ou abandonnés à la livraison Š 53% des projets dépassent les ressources allouées Š 16% des projets se déroulent comme prévu

Faut-il retourner tenter sa chance et sa fortune au jeu et en amour

?

Peut-être pas encore! ‰

Valeur du logiciel aux états unis

Š 1980 : 2% of PNB Š 1985 : 8% of PNB Š 1990 : 13% of PNB ‰

Augmentation de 12% par an

‰

Une amélioration de rendement même faible peut avoir des répercutions trés importantes Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 15

Questions ?

? Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 16

8

Software Engineering / Génie Logiciel 2. Comment ?

Janvier-Février 2002

2. Comment ? General Cycle / Actors and Steps

Janvier-Février 2002

06/02/2003

9

Software Cycle : Sample [1/2] End User

Designer

clear definition of needs Proposal/planning GO/NOGO Architecture Architecture Validation Specifications Specifications Validation Development Samuel Kortas – Janvier/Février 2003

Software Engineering

Page : 19

Software Cycle : Sample [2/2] End User

Designer Test Plan Definition

Test Plan Validation Bugs Correction Validation Test Plan Bug Revue Bug Report

Delivery Acceptance Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 20

10

2. Comment ? Different Cycles

Janvier-Février 2002

Différent cycles

‰ ‰ ‰

Shoot and Try Simple Cascade Modified Cascade

Š Š Š Š

with overlap with sub projects with risk management Spiral

‰ ‰ ‰ ‰ ‰

Evolutive Prototyping Step by Step Delivery Evolutive Delivery Conception regarding planning Conception regarding tools

‰ Specification, conception, test steps are always part of the cycle ½ Cycle depends on project!

Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 22

11

Time to Market – “Classical” Development Process? Product Lifecycle

Problems: •Time To Market •High Costs •Meeting deadlines •Visibility

Requirements Specification

Design Implementation Test Operation & Maintenance TIME Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 23

V Cycle • Good Quality, but expensive and long • No Results before the end of the cycle Operation & Maintenance

Requirements

Validation & Maintenance

Specification

Architecture Design

Integration Tests

Detailled Design & specification

TIME Samuel Kortas – Janvier/Février 2003

06/02/2003

Unitary Tests

Implementation

Software Engineering

Page : 24

12

Incremental Lifecycle Product Lifecycle Requirements Specification

Design Implementation Test Operation & Maintenance TIME Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 25

« Spiral » Life Cycle Design a Little, Code a Little

Product Lifecycle Requirements Specification

Design Implementation Test Operation & Maintenance TIME Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 26

13

Modèle en spirale

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 27

Comparaison des cycles Capacité du cycle Spécifications mal comprises

-1

-1

+1

+1

Architecture mal comprise

-1

-1

+1

-1/0   0

Fiabilité (taux de défauts)

-1

+1

+1

-1/0

+1

+1

+1

Gestion des risques

-1

-1

+1

  0

Respect du planning

-1

 0

  0

-1

Temps d’utilisation efficace

+1

-1

  0

  0

Possibilités de modifications

-1/+1

-1

  0

+1

Indice d’avancement (client)

  0

-1

+1

+1

Indice d’avancement (projet)

-1

 0

+1

  0

Faible compétence

+1

 0

  0

-1

Capacité d’extension en taille

Samuel Kortas – Janvier/Février 2003

06/02/2003

Programmer Cascade Spirale Prototypage -corriger évolutif

Software Engineering

Page : 28

14

Sotware LifeCycle 1. Requirements / Analyse des Besoins

For this part... ‰

Slides taken from un cours du DESS Compétence Complémentaire en Informatique

‰

« Analyse des Besoins » du cours de Génie Logiciel de JeanMarie Favre, Maitre de Conférence à l'Universite Joseph Fourier (Université Grenoble 1)

‰

http://www-adele.imag.fr/~jmfavre/

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 30

15

Problématique ‰

Beaucoup de systèmes informatiques ne sont jamais utilisés car ils ne correspondent pas aux besoins du client ! – « Ce n ’est pas ce que je voulais… » – « Ca ne sert à rien... » – « Comment je fais ça ?» – « Ce n’est pas le bon résultat ! » – « Je vous avais dis que je voulais ça ! » – ...

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

Software Engineering

Page : 31

Causes ‰ ‰ ‰ ‰ ‰

Le client ne sait pas ce qu’il veut Le client ne sait pas exprimer ce qu’il veut L’informaticien ne comprend pas client Le client ne comprend pas l’informaticien Ce que le client veut n’est pas ce qu’il voulait

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 32

16

Des difficultés réelles! ‰

Difficultés de communiquer

Š difficulté d’être précis, cohérent, complet, ... Š différences de culture : z z

‰

les utilisateurs ne sont pas informaticiens… les informaticiens ne connaissent pas le domaine…

Complexité du problème

Š problème non formalisé Š problème complexe ‰

Évolutivité

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

Software Engineering

Page : 33

Analyse des besoins ‰

L ’une des étapes les plus importantes

Š étape déterminante pour la suite Š aspects contractuels ‰

• L ’une des étapes les plus difficiles

Š différents intervenants : ‰

le client, les utilisateurs, les développeurs…

Š le problème n’est pas encore formalisé

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 34

17

Différents Roles ‰

Identifier les différents intervenants : – Le(s) client(s) – Les utilisateurs – Le maître d’œuvre – Les développeurs – ...

‰

Identifier le rôle de chacun

‰

Éventuellement associer des priorités

‰

Le client est roi (mais quand même)

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

Software Engineering

Page : 35

Différentes étapes

‰

Capture des besoins

Š collecte des informations : interviews, lecture de doc. Š chercher à comprendre : (1) le domaine (2) le problème ‰

Définition des besoins

Š restitution dans un langage compréhensible par le client Š identification, structuration, définition d'un dictionnaire ‰

Spécification des besoins

Š spécification détaillée des besoins, plus formel Š utile pour le client, mais aussi pour les développeurs

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 36

18

Capture des besoins - (1) Collecter ‰

Objectifs

Š comprendre le domaine Š comprendre le problème ‰

(1) Collecter le maximum d ’informations

Š Š Š Š Š

Lecture des documents fournis Interviews du client, des utilisateurs, … Réunions de travail Collecter des exemples pour valider Étudier les systèmes existants le cas échéant

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

Software Engineering

Page : 37

Capture des besoins - (2) Intéragir ‰

(2) Réagir et être actif !

Š Établir la liste des documents consultés, les classer Š Élaborer une liste de questions précises z z

les numéroter, les dater, … faire référence aux documents concernés

Š Écrire un ou plusieurs documents et les diffuser Š Provoquer les réunions et les mener z z z

établir l’ordre du jour prendre des notes faire systématiquement des comptes rendus écrits

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 38

19

Définition des besoins ‰

Restituer les informations sous forme synthétique

‰

Ce qui n’est pas écrit n’existe pas !

‰

Préciser les besoins, pas la solution

‰

Préciser ce que doit faire le système

Š et aussi ce qu’il n ’est pas sensé faire. Š mais surtout pas comment il doit le faire. ‰

Etablir des priorités

‰

Arriver à un consensus avec le client

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

Software Engineering

Page : 39

Different Types de besoins ‰

Besoins fonctionnels

Š à quoi sert le système Š ce que doit faire le système, les fonctions utiles ‰

• Besoins non fonctionnels

Š performance, sûreté, confidentialité, portabilité, etc. Š chercher des critères mesurables

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 40

20

Conseils ‰

Les besoins doivent être compris par tous

Š utiliser la langue naturelle Š utiliser des schémas si nécessaire ‰

tout schéma doit être commenté

‰

tout schéma doit toujours comporter une légende

‰

Structurer le document

Š suivre un plan standard si disponible Š numéroter les sections, références, index, …

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

Software Engineering

Page : 41

Langue Naturelle... mais technique ‰

Faire des phrases courtes

‰

Eviter le conditionnel, le futur

‰

Eviter les termes ambigus ou subjectifs, ...

‰

Parler en termes de rôles plutôt que de personnes

‰

Numéroter les paragraphes si nécessaire

‰

Utilisation de références précises

‰

Elaborer un dictionnaire

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 42

21

Spéfication des besoins

‰

Interface entre le client et les développeurs

Š doit être compris par les deux Š défini dans le détail ce qui doit être réalisé Š doit être précis car contractuel ‰

Utilisation de techniques semi-formelles

Š e.g. diagrammes de cas d'utilisation UML Š e.g. diagrammes de classes UML

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

Software Engineering

Page : 43

Résumé ‰

L'analyse des besoins est une étape essentielle

‰

Origine de toute activité de développement

‰

Problème de communication client / informaticiens

‰

Capture des besoins : collecter l'information

‰

Définition des besoins : restituer les besoins

‰

Spécification des besoins : définir précisément

‰

Des techniques informelles mais utiles !

‰

Besoin également de techniques plus précises…

Jean-Marie (UJF Grenoble) Samuel Kortas –Favre Janvier/Février 2003

06/02/2003

Software Engineering

Page : 44

22

Travaux Dirigés n°1 Software Engineering / Génie Logiciel A vous! Janvier-Février 2003

Sotware LifeCycle 2. Architecture

06/02/2003

23

Architecture Design ¾

The architecture goals are to design a software that is :

¾ Portable : multiple OS, multiple targets ¾ Reusable : modularity ¾

These features are important to design an evolutionary and maintainable software.

¾

Arhitecture Design Process :

¾ List of features supported ¾ Components and objects definition ¾ Portability and reusability constraints

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 47

Architecture Design Portability Tests Cost Performances

List of features

Components Approach

Samuel Kortas – Janvier/Février 2003

06/02/2003

Components Interaction Approach

Implementation

Software Engineering

Page : 48

24

Sotware LifeCycle 3. Specifications

Specifications ¾

The specifications are a base for the software development.

¾

All the elements needed during the development have to be detailled in the specifications.

¾

The specifications have to be reviewed and validated before the beginning of the development phase.

¾

It will be a reference for further modifications of the software

¾ Successive versions of the specifications have to be clearly traced and should appear in the code

¾

Will allow to develop the code in parallel

¾

Important for maintenance

Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 50

25

Specifications ¾

Two kinds of Specifications

¾ General for the Portable parts ¾ OS specific for implementation and adaptation parts ¾

The specifications have to include :

¾ A project overview ¾ Scenarios in nominal case and error case ¾ The architecture ¾ For each module : ¾ ¾ ¾

The functional specifications The detailled APIs Data structures

Samuel Kortas – Janvier/Février 2003

Software Engineering

Page : 51

Sotware LifeCycle 4 . Implementation

06/02/2003

26

Configuration Management Tool ¾

Principle :

¾ Only store the delta from a version to another ¾ Provides tagging facilities ¾ Allows multi-site, multi-developers, multi-branches coding ¾

A tool to help you !

¾ Keep track of your work from beginning to end ¾ Save space and version management ¾ Manage easely different version of the code ¾

Famous tools :

¾ SCCS, RCS, CVS ¾ Source Safe ¾ Clear Case (Rational Software)

Software Engineering

Samuel Kortas – Janvier/Février 2003

Page : 53

An Example of Version Management ¾

Tag to help keep track

¾ For each different branch : stable, delivered/maintained, experimental

¾ For each major step of the software cycle : development, validation, delivery

¾ Shall we all track : modules, compiled objects, executable, tests, results of the tests, test proofs? ¾

One base for all developments?

¾ Windows and Linux have problems to stay aside ¾ How to synchronize versions developped on different places? ¾ To which version and when to report modification/fix made in one branch

¾ --> efficient and convenient way of saving the work of everyone

Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 54

27

Automatic Code Generation Tool A dramatic help and danger for productivity!

¾

¾ Idea : automatize the repetitive generation work ¾ use a higher level of abstraction than the programming language : better to discuss with people, to stick with specification ¾ Examples : ¾ Rational Rose : UML to C++ ¾ perl2C, a2p, a2ps… ¾

¾ Danger : ¾ ¾ ¾

Not to know how to use the tool Think it ’s magical NEVER change by hand a generated code!!!!!!

Samuel Kortas – Janvier/Février 2003

Software Engineering

Page : 55

Documentation ‰

As a minimum

Š Š Š Š Š Š Š ‰

requirements detailled specification APIs sources : Version, modules, functions AND variables tests (procédures+résults) User manual Bug and trick tracing manual

Blind and systematic rules never replace intelligence

Š Documentation volume ∝ project volume Š Do not do too much or too less!

Samuel Kortas – Janvier/Février 2003

06/02/2003

Software Engineering

Page : 56

28

Documentation ‰

Bad excuses :

Š Š Š Š Š Š

It ’s not the final version, we are only testing That ’s a toy program anyway I am the only one to use the code, I ’ll remember! That is trivial. That is too complicated : I ’ll explain it later I ’ll complete the comments later : we have to reach our goal as soon as possible Š Documentation is not in the requirements ‰

Advices :

Š Do it while coding! Š Document any tricky part, even fast or in an unclear maner

Samuel Kortas – Janvier/Février 2003

Software Engineering

Page : 57

Coding Rules ¾

Efficient coding is clear coding :

¾ Easy to read ¾ Easy to maintain ¾ Easy to trace ¾ Avoid : for (i++=(j--)