introduction au génie logiciel 1.2
DESCRIPTION
Cours de génie logiciel n°1TRANSCRIPT
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‣ [email protected]
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