Introduction au génie logiciel 1.2

Preview:

DESCRIPTION

Cours de génie logiciel n°1

Citation preview

Introduction au génie logiciel

I

Version 1.2 janvier 2013

Stéphane Salmons

g 6 ) N O Y41

Cours de génie logiciel n°1

Avertissements/Contact

Violation de copyright / copyright infringement‣ Si l’utilisation d’une ressource de cette présentation va a l’encontre de sa licence

d’utilisation, cela n’est pas intentionnel. Veuillez contacter l’auteur et la ressource sera immédiatement retirée.‣ If the use of a resource of this slideshow conflicts with its licence, this not intentional.

Please contact the author to have the resource immediately removed

Contact‣ stephane.salmons@gmail.com

2

Sommaire

La crise du logicielQu’est-ce qu’un logiciel ?La Qualité du logicielLe génie logicielConclusion

3

La crise du logicielNaissance et enjeux du génie logiciel

4

Les débuts de la crise

Destruction de Mariner 1 (1962)‣ Cause directe

Le programme de contrôle ne lisse plus les valeurs de la vitesse et réagit brutalement à des variations mineures

‣ ImpactDestruction 297s après le décollageCoût non évalué

‣ OrigineErreur de transcription d’une formule dans le code source

5

Les débuts de la crise

Trouverez-vous le bug ?

 ...        IF  (TVAL  .LT.  0.2E-­‐2)  GOTO  40        DO  40  M  =  1,  3        W0  =  (M-­‐1)*0.5        X  =  H*1.74533E-­‐2*W0        DO  20  N0  =  1,  8        EPS  =  5.0*10.0**(N0-­‐7)        CALL  BESJ(X,  0,  B0,  EPS,  IER)        IF  (IER  .EQ.  0)  GOTO  10  20  CONTINUE        DO  5  K  =  1.  3        T(K)  =  W0        Z  =  1.0/(X**2)*B1**2+3.0977E-­‐4*B0**2        D(K)  =  3.076E-­‐2*2.0*(1.0/X*B0*B1+3.0977E-­‐4*      *(B0**2-­‐X*B0*B1))/Z        E(K)  =  H**2*93.2943*W0/SIN(W0)*Z        H  =  D(K)-­‐E(K)    5  CONTINUE  10  CONTINUE        Y  =  H/W0-­‐1  40  CONTINUE        ...

   DO5K=1.3                …5  CONTINUE

         DO  5  K  =  1,3                …5  CONTINUE

C’est une autre cause invoquée pour l’accident de Mariner6

Les débuts de la crise

Nombreux autres exemples (invérifiables)‣ Convocation de centenaires à l’école

Codage de l'âge sur 2 chiffres

‣ Retournement sur le dos d’un avion au passage de l’équateur

Changement de signe de la latitude non pris en compte

‣ Blocage des communications téléphoniques pendant 9h aux USA

Installation d’un patch non testé

7

Réactions à la crise

Comment faire des logiciels de qualité ?‣ L’OTAN jette les bases du génie logiciel en 1968

8

La crise se poursuit ...

Rejet du système Socrate à la SNCF -1990‣ Cause directe

Importantes difficultés de déploiement et d’utilisation

‣ ImpactReport de la clientèle vers d’autres moyens de transportCoût : non communiqué

‣ OrigineRachat d’un système développé pour une compagnie aérienne

Destruction d’Ariane 5 1996‣ Cause directe

Conversion entier/flottant non autorisée

‣ ImpactExplosion 30s après le décollageUne année de retard pour le programme Ariane 5

‣ OrigineReprise du code spécifié pour Ariane 4Absence de tests de validation prévolDésactivation de la gestion des exceptions Conservation de code inutile

Perte de Mars Climate Orbiter 1999‣ Cause directe

Confusion entre pieds et mètres

‣ ImpactDestruction de la sonde à l’entrée de l’atmosphère martienneCoût : 120 millions de $

‣ OrigineCommunication défaillante entre équipe GB et USSpécifications approximatives

9

La crise se poursuit ...

Bogue de l’an 2000‣ Cause directe

Codage de la date sur 2 caractères

‣ ImpactTrès nombreuses mesures préventives et correctivesCoût : estimé à 500 milliards de F

‣ OrigineArbitrage économie mémoire / durée de vieMauvaise perception de la durée de vie des logiciels

Échec du déploiement de PeopleSoft chez Avis - 2004‣ Cause directe

Multiples retards de déploiementNombreux surcoûts d’adaptation

‣ ImpactAbandon du projetCoût : 45 millions d’euros (le projet devait initialement améliorer la profitabilité de l’entreprise)

‣ OrigineComplexité du logiciel mal perçueCharge d’intégration et d’adaptation sous-estimée

10

... persiste encore aujourd’hui ...

Devenir des projets de développement logiciel

53%

31%

16%

1994

44%

24%

32%

2009

RéussiteAnnula,onEchec  par,el

Retard : 63% Dépassement de budget : 45%Fonctionnalités absentes : 33%Le plus souvent : les 3 en même temps

Peu d’autres industries présentent une telle situation

http://www.projectsmart.co.uk/docs/chaos-report.pdf

11

... et devient chroniqueThe Software Chronic Crisis‣ “Despite 50 years of progress, the software

industry remains years-perhaps decades-short of the mature engineering discipline needed to meet the demands of an information-age society”

‣ Gibbs, Scient. Am., Sept. 1994

12

... et devient chronique

13

... et devient chronique

14

Bilan de la crise

Causes‣ Incapacité à faire face à la complexité croissante des logiciels‣ Incompréhension des besoins des utilisateurs‣ Incapacité à prendre en compte l’évolution des besoins‣ Absence de pratiques standards ayant fait leur preuves‣ Absence d’outils pour les mettre en oeuvre

15

Bilan de la crise

Conséquences : les logiciels sont ...‣ Inadaptés aux besoins des utilisateurs ‣ Figés ou très difficiles à faire évoluer‣ De plus en plus chers à développer‣ De faible qualité

16

Bilan de la crise

Qu’est-ce que la Qualité d’un logiciel ?

Comment faire des logiciels de Qualité ?

17

Qu’est-ce qu’un logiciel ?Caractéristiques d’un concept multiforme

18

Les logiciels sont omniprésents

Utilisés par des milliards d’êtres humains chaque jourPrésents dans tous les secteurs de la société‣ Économie, transports, énergie, santé, recherche, télécommunications,

enseignement, média, arts, ...

Au coeur des systèmes critiques‣ Centrales nucléaires, trafic aérien, armement, radiothérapie, ...

19

Génèse du logicielIXe siècle : premier algorithme‣ Mohammed Al-Khwarizmi,

1850 : premier programme‣ Ada Lovelace‣ Calcul des nombres de Bernoulli ‣ Pour la machine analytique de

Charles Babbage (cartes perforées)

Années 1930 : théorie des programmes‣ Alan Turing‣ Concept de Machine de Turing‣ Décidabilité

1948 : théorie de l’information‣ Claude Shannon

20

Génèse du logiciel

21

1950 : premier langage de programmation‣ Sir Maurice Wilkes‣ Microprogrammation en assembleur‣ Concepts de labels, macros,

bibliothèques de sous-routines

1956 : premier système d’exploitation‣ Robert Patrick (General Motors) et Owen Mock (North

American Aviation)‣ GM-NAA I/O fonctionnant sur IBM 104

1957 : premier langage évolué FORTRAN‣ John W. Backus et son équipe (IBM)‣ Vingt fois moins d’instructions que l’assembleur‣ Concept de boucle

1958 : création du mot “Software”‣ John Tukey

Génèse du logiciel1964 : première définition du génie logiciel‣ OTAN, Garmish

1960 à 1970 : premiers langages orientés objet‣ Simula : O.-J. Dahl & K. Nygaard, années 1960‣ SmallTalk : A. Kay, 1970

1985 à 1988 : premier framework applicatif‣ MacApp, 1985 (Apple)‣ Jonhson & Foote, concept de réutilisation 1988

22

1969 : premier OS moderne indépendant du hardware‣ Unix ‣ Ken Thompson et Dennis Ritchie (ATT Bell’s Lab)‣ Ordonnanceur, gestion de fichiers, ...

Qu’est-ce qu’un logiciel ?

Un ensemble constitué de ‣ Programmes

code source (instructions et commentaires)code exécutable

‣ Données ‣ Documentations

spécificationsdossier de conceptionrègles de codagemanuel d’utilisationdossier de testnotice d’installation...

23

Qu’est-ce qu’un logiciel ?

Un produit fabriqué‣ Par des éditeurs de logiciels

Dans une logique d’offre, pour des utilisateurs génériques (marché)Les spécifications sont choisies par l’éditeurLicences commerciales

‣ Par des prestataires en développement (SS2I)Dans une logique de demande, pour des clients spécifiquesLes spécifications sont choisies par le clientLicences commerciales

‣ Par une communauté de développeurs (open source)Dans une logique de partage, pour des utilisateurs génériquesLes spécifications sont choisies par les développeursLicences libres

24

Logiciel

Qu’est-ce qu’un logiciel ?

Une entité se présentant sous trois aspects

d

Comportement

k Structures

H Architecture

Ces trois aspects sont largement indépendants

25

Spécificités du logiciel

Le logiciel est

‣ Très grand nombre de constituants élémentaires (instructions ou LoC)Ex : Windows 7 → 30 MLoCEx : Airbus → 5 M de pièces

‣ Grand nombre d’interactions entre instructionsEn moyenne, une instruction interagit avec dix autres :

100 kLoC → 100 fois plus d’interactions que 10 kLoC

Le nombre d’états possibles d’un logiciel est gigantesque

COMPLEXE

26

Spécificités du logiciel

Le logiciel est

‣ C’est un produit immatériel (non manufacturé)‣ Son comportement est difficile à appréhender entièrement‣ Sa structure est difficile à appréhender entièrement

Le logiciel est beaucoup plus que ce qu’il faitLe seul plan exact et complet d’un logiciel est le logiciel lui-même

A B S T R A I T

27

Spécificités du logiciel

Le logiciel est

‣ Il peut (presque) tout faireLe logiciel est très peu contraint : ni par des lois physiques, ni par les matériaux, ni par le processus de fabricationLes logiciels sont extrêmement variés, il n’y a pas de logiciel “type”

‣ Les besoins sont difficiles à cerner et à formaliserLe logiciel est abstraitUtilisateurs et développeurs partagent rarement des connaissances communesIl est difficile de prévoir tous les usages qui seront fait d’un logiciel

MAL DEFINI

28

Spécificités du logiciel

Le logiciel est en

‣ La technologie change rapidementPlateformes, OS, langages, Frameworks

‣ Les besoins évoluent sans cessePour le client, les changements fonctionnels semblent faciles

‣ La conception est toujours remise en questionLa conception est un processus progressif de découverte de ce que le client veut et de comment cela doit être construit

EN CONSTANTE EVOLUTION

29

Spécificités du logiciel

Le logiciel a une

‣ Le premier exemplaire représente tous l’effort de production‣ La duplication ne coûte (presque) rien‣ La conception est l’essentiel de la production

Plus proche de l’oeuvre d’art que du produit manufacturéLa qualité du logiciel dépend très fortement de la qualité de la conception

fabrication atypique

30

Spécificités du logiciel

Le logiciel est un domaine de

‣ Pas de théorie prouvée, de pratique faisant consensusLe génie logiciel est un domaine de recherche actif

‣ Les retours d’expérience sont limités‣ Le niveau d’industrialisation est (au mieux) celui du fordisme « How Software Engineering can

benefit from traditional industries », T. Sprenger (AdNovum) ICSE 2012 proc. p1000

faible maturite

31

Catégories de logiciels

Logiciels Système

Drivers

Systèmes d’exploitation

Outils de programmation

Intergiciels (Middlewares)

Logiciels réseau

SGBD

Applications

Bureautique Progiciels/Métier

Jeux Embarqué

Temps réel

Web MultimédiaLogiciels scientifiques

Intelligence artificielle

Pourriciels Virus, Worms, Trojans Spywares Adwares

32

La Qualité du logicielLe bon logiciel bien fait

33

Qualité logicielle Norme ISO 9126 (1, 2)Deux types de caractéristiques Qualité ‣ Externes : vues par l’utilisateur du logiciel‣ Internes : vues par producteur

Ces caractéristiques sont : ‣ Interdépendantes‣ Complémentaires‣ Parfois difficilement conciliables‣ Souvent difficilement mesurables

)34

Caractéristiques externes

‣ AdéquationCapacité du logiciel à réaliser ce pour quoi il a été prévu (spécifications)

‣ ExactitudeCapacité des fonctionnalités à fournir un comportement exact

‣ InteropérabilitéCapacité du logiciel à fonctionner avec d’autres logiciels (interfaces, protocoles, format de fichier, etc.)

‣ SécuritéCapacité du logiciel à protéger ses fonctionnalités, ses données et ses programmes contres les accès non autorisés

Capacité fonctionnelle

)35

Caractéristiques externes

‣ MaturitéFréquence des comportements anormaux

‣ Robustesse (ou tolérance aux pannes)Capacité du logiciel à réagir correctement (selon spécifications) à des conditions anormales (hors spécifications)Les conditions anormales peuvent être d’origine interne ou externe (environnement)

‣ Capacité de récupérationCapacité du logiciel à retourner à un état de fonctionnement normal après une anomalieInclu le rétablissement des connexions réseau, la récupération des données, etc.

Fiabilité

)36

Caractéristiques externes

‣ Facilité d’opérationEffort qu’un opérateur doit fournir pour faire fonctionner le logiciel dans son environnement

‣ Facilité d’apprentissageEffort qu’un utilisateur doit fournir pour apprendre à réaliser ses tâches avec le logicielDépend de l'audience prévue, du profil des utilisateurs (expert, novice, etc.)

‣ Facilité de compréhensionEffort à fournir pour se représenter les concepts logiques des fonctionnalités du logiciel

‣ Pouvoir d’attractionEnvie suscitée par le logiciel

Utilisabilité

)37

Caractéristiques externes

‣ Performance temporelleTemps de réponse entre l’invocation d’une fonctionnalité et sa réalisationTemps de réalisation de la fonctionnalité

‣ Économie de ressources (nécessaires pour accomplir les tâches prévues)Puissance CPUMémoireVolume disqueDébit réseauPuissance électrique...

Efficacité

)38

Caractéristiques internes

‣ Flexibilité (ou modifiabilité ou extensibilité)Effort à fournir pour modifier le logiciel (pour répondre à une évolution des spécifications ou pour corriger une anomalie)

‣ Facilité d’analyseEffort à fournir pour analyser la cause d’une anomalie (à partir des symptômes)Effort à fournir pour identifier une partie à modifier (à partir d’une évolution de spécification)

‣ StabilitéSensibilité du logiciel à un changement effectué dans une de ses parties (effet de bord)

‣ TestabilitéEffort à fournir pour tester le logiciel (préparation des données, des procédures de tests, etc.)

Maintenabilité

)39

Caractéristiques internes

‣ AdaptabilitéCapacité du logiciel à s’adapter à un changement d’environnement (plateforme matérielle, OS, compilateurs, etc.)

‣ Facilité d’installationEffort à fournir pour installer et désinstaller le logiciel

‣ Facilité de migration (ou remplaçabilité)Capacité du logiciel à remplacer un autre logiciel remplissant des fonctions similaires

Portabilité

)40

Caractéristiques internes

‣ Capacité des parties du logiciel à être utilisées dans le développement d’un autre

Réutilisabilité

)41

Qualité logicielle

Et la documentation ? ‣ Elle est intégrée dans la plupart des caractéristiques précédentes

42

Qualité logicielle

Qualité, coûts et délais sont étroitement liés

Qualité

Coût

Délai

43

Symboliquement : Qualité = Coûts + Délai

Le génie logicielL’ingénierie au service du logiciel

44

J Outils

Qu’est-ce que l'ingénierie ?

U Méthodologies

ù Méthodes

Savoir

académique

Mesures

GÉthique

RStandardsNormes

Bonnes

pratiques

n Principes de bases

45

Apports du génie industriel

‣ Division du travail en tâches‣ Mécanisation‣ Division des produits en

sous-ensembles‣ Automatisation‣ Standardisation‣ Interchangeabilité des sous-

ensembles

‣ Contrôle Qualité‣ Chemin critique‣ Qualité totale‣ Production en flux tendu‣ ...

Une source d’inspiration pour le génie logiciel (et réciproquement)

Grandes étapes de l’industrialisation de la production manufacturière

46

Qu’est-ce que le génie logiciel ?‣ La discipline d’ingénieur qui concerne la production de logiciel sous tous ses aspects‣ L’étude des pratiques systématiques qui permettent d’obtenir des logiciels

correspondant aux attentesfiablesavec les performances attenduesrespectant les délais et les coûts de construction et de maintenance (Wikipédia)

‣ (1) Une approche systématique, méthodique et quantifiable appliquée au développement, à l’exploitation et à la maintenance des logiciels ; c’est-à-dire l’application de l’ingénierie au logiciel(2) L’étude des approches ci-dessus (IEEE)

De nombreuses autres définitions existent

47

Qu’est-ce que le génie logiciel ?

Le bon logiciel répond aux critère de qualité vues de l’utilisateur

Le logiciel bien fait répond aux critères de qualité vues du producteur

L’art et la manière de bien créer le bon logiciel

48

Génie logiciel ou ingénierie logicielle ?

Deux expressions qui signifient la même chose

Occurrences des expressions dans les livres (source : http://books.google.com/ngrams)

49

Informatique

Positionnement dans l’informatique

Informatique théorique

Ingénierie des télécommunications

Ingénierie du hardware

Ingénierie logicielle Développement Programmation

50

Domaines connexes

#Économie

MManagement

=Psychologie

✈Domaines

métier

GGestion de

projet

Ingénierie logicielle

51

Activités fondamentales

52

TestsDes programmes au produit

Les ingénieurs et les clients contrôlent que le logiciel correspond aux besoins

RéalisationDes spécifications aux programmes

Les ingénieurs conçoivent et programment le logiciel

AnalyseDes besoins aux spécifications

Clients et ingénieurs définissent le logiciel et son mode opératoire

Distribution - Maintenance - Évolution

Les ingénieurs adaptent le logiciel aux évolutions des clients/du marché

Les huit principes du génie logiciel

g

)

N

Y

6 O

Utiliser les processus appropriés Maîtriser les changements

Concevoir pour la Qualité

Tester sans relâche

Documenter avec discernement

Se soucier de l’utilisateur

4 Mesurer la Qualité

Maîtriser les dépendances53

Les huit principes du génie logiciel

Utiliser les processus appropriés‣ Développer en suivant un

processus standard‣ Bien compris par l’équipe‣ Adaptés

à l’organisation du projetà l’équipe projetau type de logiciel être pragmatique

‣ Incarnés dans des outils

Se soucier de l’utilisateur‣ Comprendre et gérer les besoins‣ Aider l’utilisateur à exprimer ses

besoins‣ Utiliser le vocabulaire de

l’utilisateur‣ Prévoir que ces besoins

évolueront‣ Intégrer l’utilisateur dans le

processus de développement

g 6

54

Les huit principes du génie logiciel

Concevoir pour la Qualité‣ Définir et hiérarchiser les

objectifs de la Qualité‣ Utiliser les styles architecturaux

et les patrons de conception adaptés à ces objectifs‣ Prévoir et évaluer différentes

solutions de conception‣ Utiliser les bonnes pratiques de

conception - Éviter les “trucs”‣ Réutiliser au maximum

Maîtriser les dépendances‣ Identifier les dépendances

Envers tous les prérequisEntre tous les éléments internesConsidérer la granularité

‣ Réduire les dépendancesMaximiser la cohésionMinimiser le couplage

‣ Gérer en configuration les références des dépendances

)

55

Les huit principes du génie logiciel

Maîtriser les changements‣ Choisir un processus de

développement adapté à la souplesse voulue‣ Identifier et tracer l’évolution

Des besoinsDes décisions d’architecture et de conception Des sourcesDes tests

Tester sans relâche‣ Tester le plus souvent et le plus

complètement possible (automatisation)‣ Tester en relation avec les

exigences‣ Tester à différents niveau de

granularité‣ Le testeur ne doit pas être un

développeur

N O

56

Les huit principes du génie logiciel

Mesurer la Qualité‣ Par l’analyse technique

analyse statique des sourcesanalyse dynamique des exécutables

‣ Par l’évaluation des processusfréquence des versions, ...

‣ Par les retours d’utilisationsnombre de bogues, satisfaction, ...

Documenter avec discernement‣ Les trois aspects du logiciel

comportementsstructures architecture

‣ Les tests du logiciel‣ Ni trop, ni trop peu

4 Y

57

Des mythes parfois tenaces

‣ Si on ajoute plus de programmeurs, on pourra rattraper notre retard

‣ Si on sous-traite une partie, on pourra se reposer un peu

‣ Les besoins des utilisateurs changent mais ce n’est pas grave car notre logiciel est flexible

‣ Plus un logiciel a de fonctionnalités, meilleur il est

‣ La qualité d’un logiciel se mesure au nombre de ses bugs

‣ Une fois qu’on a écrit le programme et qu’il fonctionne, le travail est fini

‣ Tant qu’on ne fait pas tourner le programme, on ne peut pas évaluer sa qualité

‣ Si on fait tout ce que le génie logiciel demande, on va perdre du temps et de l’argent

‣ Nos programmeurs ont les meilleurs outils de développement logiciel : nous leur avons fournis des ordinateurs dernier cri

58

Conclusion

59

Un domaine en plein essors

Discipline jeune‣ Premières formations diplomantes aux USA fin des années 1990

Objet d’une R&D très active‣ Approche à la fois académique et empirique‣ Une dizaine de journaux et de conférence exclusivement dédiés‣ Quelques acteurs majeurs :

60

Un domaine en plein essors

Quelques référentiels‣ SWEBOK : Software Engineering Body of Knoledge‣ CMM : Capability Maturity Model‣ ISO 12207 : Processus de développement logiciel‣ ISO 9126 : Qualité logicielle‣ COCOMO 2 : modèle d’estimation des coûts‣ ATAM : Architecture Tradeoff Analysis Method

61

Un dernier mot

Prendre garde aux (trop) bonnes intentions ...

62

Références

63

Sources

Sources :http://www.lemondeinformatique.fr/actualites/lire-­‐trop-­‐cher-­‐trop-­‐complique-­‐avis-­‐europe-­‐congedie-­‐peoplesoft-­‐et-­‐atos-­‐10462.htmlhttp://www.baselinemag.com/c/a/ERP/Five-­‐ERP-­‐Disasters-­‐Explained-­‐878312/

Sources :http://fr.wikipedia.org/wiki/Mariner_1http://nssdc.gsfc.nasa.gov/nmc/masterCatalog.do?sc=MARIN1

Sources :http://fr.wikipedia.org/wiki/Mars_Climate_Orbiter#Perte_de_la_sondehttp://www.nirgal.net/mco_end.html

Sources :ESA Inquiry Board. ARIANE 5: Flight 501 failure. Technical report, European Space Agency, July 1996.http://www.esrin.esa.it/htdocs/tidc/Press/Press96/ariane5rep.html.  http://www.inria.fr/actualites/inedit/inedit14_evea.fr.html  

Sources :http://fr.wikipedia.org/wiki/Mariner_1http://www-­‐aix.gsi.de/~giese/swr/mariner1.htmlhttp://nssdc.gsfc.nasa.gov/nmc/masterCatalog.do?sc=MARIN1

     DO5K=1.3                …5  CONTINUE

Sources :http://www.cs.tau.ac.il/~nachumd/horror.html http://www.time.com/time/magazine/

article/0,9171,969266,00.html http://users.csc.calpoly.edu/~jdalbey/SWE/Papers/att_collapse.html http://www.mit.edu/hacker/part1.html

64