Upload
vucong
View
225
Download
0
Embed Size (px)
Citation preview
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 1
Génie LogicielGénie Logiciel
IntroductionIntroduction
Renaud Marlet
LaBRI / INRIA
http://www.labri.fr/~marlet
màj 21/03/2006
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 2
Qu'est-ce que le génie logiciel ?Qu'est-ce que le génie logiciel ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 3
IngénieriesIngénieries
● Les « génies » traditionnels :– civil, militaire, maritime, mécanique, chimique– production, fabrication, construction
● Ingénierie :– science de l'ingénieur / art– théories, méthodes, techniques, outils
● Génie Logiciel (GL) :– software engineering
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 4
Le génie logiciel, c'est...Le génie logiciel, c'est...
l'art
de bien faire
de bons programmes
techniquecréativité
réussite
rentabilité
performancefiabilité
...
...
...
esthétique
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 5
Pourquoi c'est importantPourquoi c'est importantpour vous ?pour vous ?
● Dans votre vie professionnelle– participation à des projets incluant de l'informatique– gestion de projets incluant de l'informatique– vos besoins individuels de programmation
● Plus généralement (pas seulement en informatique)
– organisation et planification– structuration et contrôle
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 6
L'importance du logicielL'importance du logiciel
Informatique en France (2003) :– Édition logicielle
● 11 milliards d'euros de chiffre d'affaire● 33.000 salariés (80% cadres)
– Services informatiques● 56 milliards d'euros de chiffre d'affaire● 485.000 emplois● 3,7% du PIB
– Technologies de l'information ● ¼ de la croissance (1987-1998)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 7
Dans cette salle...Dans cette salle...
● Combien de microprocesseurs ?
● Combien de programmes ?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 8
Nombre de CPU / de programmes Nombre de CPU / de programmes dans cette salledans cette salle
● PC : Linux ~ 5000 programmes● Vidéo-projecteur● Téléphones mobiles : OS, MIDlet, ...● Baladeurs : MP3, CD, ...● Cartes à puce : CB/Visa, Vitale, transport, ...● PDA● Clés USB● Montres digitales● Calculatrices, ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 9
L'importance du logicielL'importance du logiciel
● Informatisation généralisée– ordinateurs / microprocesseurs– omniprésents, omnipotents...
● Économie des pays développés– facteur de croissance
– instrument de pouvoir ()
☛ Maîtrise de la production de logiciels
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 10
La réussite des projets La réussite des projets informatiquesinformatiques
Les projets informatiques ont la réputation d'être des gouffres financiers
Qu'en est-il vraiment ?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 11
Comment juger de la réussiteComment juger de la réussited'un projet informatique ?d'un projet informatique ?
Succès :– ...
Mitigé :– ...
Échec :– ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 12
Jugement de la réussite des Jugement de la réussite des projets informatiquesprojets informatiques
Succès– livré à temps, à l'intérieur des budgets et des
spécifications originales
Mitigé– livré et opérationnel mais à moins de fonctions que
prévu et dépassent le budget et/ou les échéanciers
Échec– abandonné en cours de route, ou résultat livré mais
jamais utilisé
(étude Standish Group)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 13
La réussite des projets La réussite des projets informatiquesinformatiques
Selon vous, quelle est la proportion des projets informatiques qui sont des réussites ou des échecs ?
– succès : ... %– mitigé : ... %– échec : ... %
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 14
La réussite des projets La réussite des projets informatiquesinformatiques
Taux de succès en hausse depuis 10 ans
Année Succès Mitigé Échec
1995 16% 53% 31%
2000 28% 49% 23%
2004 29% 53% 18%
(étude Standish Group)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 15
L'objectif de ce coursL'objectif de ce cours(ou en tout cas ce qu'on peut en dire/faire en 24h...)(ou en tout cas ce qu'on peut en dire/faire en 24h...)
● Transmettre de bonnes recettes– méthodologies– trucs à savoir, choses à ne pas faire– outils pour produire, pour comprendre
● Susciter/développer certains sens/goûts– structuration, organisation– planification, anticipation
● Vous faire réfléchir (☺)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 16
Le génie logiciel, c'est...Le génie logiciel, c'est...
l'art
de bien faire
de bons programmes
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 17
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme ? programme ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 18
Tout d'abordTout d'abordQui a affaire avec un programme ?Qui a affaire avec un programme ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 19
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme ? programme ?
Différents points de vue :– l'utilisateur (ce que ça fait)– le programmeur (comment ça le fait)– le fournisseur (combien ça coûte)– la hotline (pourquoi ça ne le fait pas/plus)– le juriste (à qui est l'idée pour le faire)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 20
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme ? programme ?
Différents points de vue :– l'utilisateur (ce que ça fait)– le programmeur (comment ça le fait)– le fournisseur (combien ça coûte)– la hotline (pourquoi ça ne le fait pas/plus)– le juriste (à qui est l'idée pour le faire)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 21
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme programme pour l'pour l'utilisateurutilisateur ? ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 22
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Un programme qui fonctionne...
Étude du gouvernement américain
2% - Fonc-tionnent à la livraison
3% - Fonc-tionnent après modifications
20% - Utilisés après modifica-tions majeures
45% - Jamais uti-lisés
30% - Payés mais jamais livrés
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 23
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Adéquation / satisfaction des besoins :– cahier des charges (si commande spécifique)– besoins actuels du marché (hors commande)– capacité d'évolution
(« besoins » des utilisateurs au sens large)
☛ Les besoins, ça se crée ()
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 24
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Qualité des résultats produits :– précision– optimalité– pertinence– présentation
Ex. :– météo, compilateur, optimiseur (logistique...), ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 25
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Facilité d'installation / utilisation / mise à jour : – intuitif / convivial / ergonomique– standard de présentation, d'interaction– qualité de la documentation
● documents papier, aide en ligne, messages d'erreur
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 26
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Vitesse :– seuil d'utilisabilité– garantie de temps réel
☛ Acceptabilité de confort : carte à puce (< 1s)
☛ Applications critiques : avion, train, ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 27
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Consommation raisonnée des ressources :– temps CPU– threads, processus– espace mémoire (programme/données, RAM/disque)– charge du réseau– périphériques, ports– ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 28
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Fiabilité, sûreté, résistance aux pannes :– pas de plantage– si erreur, rattrapage / poursuite de l'exécution– si plantage, rattrapage des données– si plantage local, pas d'arrêt global (réseau)
☛ Risques humains :– avion, centrale nucléaire, ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 29
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Robustesse, passage à l'échelle :– capacité à traiter de grandes quantités– résistance aux cas limites (pics de comportement)
Ex. :– central téléphonique, serveur web, ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 30
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Sécurité :– intégrité– confidentialité, authentification– déni de service
☛ Risques économiques, sociaux :– transactions boursières, central téléphonique, virus,
données privées...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 31
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Interopérabilité– Programme :
● disponibilité/compatibilité sur divers environnements, OS, ...
– Données :● standards, formats d'échange
– Programme + données :● protocoles
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 32
Un Un bonbon programme programmepour l'pour l'utilisateurutilisateur
Et aussi :– Pas cher– Bon rapport qualité / prix– Réactivité du service de maintenance– Existence de livres, de formations, ...– ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 33
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme ? programme ?
Différents points de vue :– l'utilisateur (ce que ça fait)– le programmeur (comment ça le fait)– le fournisseur (combien ça coûte)– la hotline (pourquoi ça ne le fait pas/plus)– le juriste (à qui est l'idée pour le faire)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 34
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme programme pour le pour le programmeurprogrammeur ? ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 35
Un Un bonbon programme programmepour le pour le programmeurprogrammeur
Qualités intrinsèques (hors de tout contexte) :– facile à comprendre
– structuration, commentaires, documentation, ...
– facile à vérifier / valider– hypothèses explicites, autotest, accès interne en debug, ...
– facile à modifier– corrections, extensions, ...
– facile à réutiliser– généricité, encapsulation, ...
– facile à porter– structuration en couches, ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 36
Un Un bonbon programme programmepour le pour le programmeurprogrammeur
Implémentation :– bonne conception– bonne architecture– bon codage– bien testé / vérifié
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 37
Un Un bonbon programme programmepour le pour le programmeurprogrammeur
Informations :– de bons commentaires– une bonne documentation de développement– une bonne traçabilité
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 38
Un Un bonbon programme programmepour le pour le programmeurprogrammeur
Environnement de programmation / exécution :– une bonne gestion de la compilation– un bon environnement de debug– une bonne gestion de l'exécution des tests– une bonne gestion de l'historique :
● documentation et archivage du code, des bugs, ...
– une bonne gestion du travail coopératif
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 39
Un Un bonbon programme programmepour le pour le programmeurprogrammeur
Un bon programme est souvent aussi...
...un programme bien fait
☛ Voir plus loin « bien faire un programme »
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 40
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme ? programme ?
Différents points de vue :– l'utilisateur (ce que ça fait)– le programmeur (comment ça le fait)– le fournisseur (combien ça coûte)– la hotline (pourquoi ça ne le fait pas/plus)– le juriste (à qui est l'idée pour le faire)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 41
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme programme pour le fournisseur / l'éditeur ?pour le fournisseur / l'éditeur ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 42
Un Un bonbon programme programmepour le fournisseurpour le fournisseur
● Coût réduit (→)
– développement + maintenance● Délai tenu
– contrat– marché : arriver le premier, « fenêtre » à ne pas rater
● Production avec des risques maîtrisés● Qualité conforme aux exigences● ... succès de vente
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 43
Dépassement des coûts et délaisDépassement des coûts et délais
● IBM, 24 projets d'envergure en TI (1992) :– 55% des systèmes coûtent plus que prévu– 68% dépassent les délais prévus– 88% ont été considérablement redesignés
● Standish Group, 8000 projets en TI (1994) :– Seulement 10% des projets sont livres selon le
budget et l'echeancier initial
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 44
Un Un bonbon programme programmepour le fournisseurpour le fournisseur
● Coût réduit (←)
– développement + maintenance (→)
● Délai tenu– contrat– marché : arriver le premier, « fenêtre » à ne pas rater
● Production avec des risques maîtrisés● Qualité conforme aux exigences● ... succès de vente
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 45
Vie du logicielVie du logiciel
Temps
Coûts
Revenus
développement maintenance
1ère livraison
amortissement gain
équilibre
fin de vie
(d'après J. Printz)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 46
Un Un bonbon programme programmepour le fournisseurpour le fournisseur
● Coût réduit– développement + maintenance (←)
● Délai tenu (→)
– contrat– marché : arriver le premier, « fenêtre » à ne pas rater
● Production avec des risques maîtrisés● Qualité conforme aux exigences● ... succès de vente
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 47
Dépassement des délaisDépassement des délais
90% des projets de haute technologie réalisés aux États-Unis ne sont pas complétés dans les délais (et selon le budget prévu)
Étude du Standish Group (1995)
10% - Complété selon le budget prévu
30% - Dépasse le temps prévu jusqu'à x 2
20% - Dépasse le temps prévu de x 2 à x 3
10% - Dépasse le temps prévu de plus de x 3
30% - Jamais terminé
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 48
Un Un bonbon programme programmepour le fournisseurpour le fournisseur
● Coût réduit– développement + maintenance
● Délai tenu (←)
– contrat– marché : arriver le premier, « fenêtre » à ne pas rater
● Production avec des risques maîtrisés (→)
● Qualité conforme aux exigences● ... succès de vente
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 49
Dépassement des délais et des coûts :Dépassement des délais et des coûts :Nouvel aéroport international de DenverNouvel aéroport international de Denver
Devait être une merveille d'ingénierie moderne– 140 km2 (4 ou 5ème plus grand au monde —
aujourd'hui encore le 10ème)– convoyeur de bagages sous-terrain « intelligent »,
193 millions de $– 33 km de rails, 4000 trajets, 5000 capteurs optiques,
400 récepteurs radio, 100 ordinateurs en réseau, 56 lecteurs de code barre, etc.
(Scientifc American, 1994)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 50
Dépassement des délais et des coûts :Dépassement des délais et des coûts :Nouvel aéroport international de DenverNouvel aéroport international de Denver
● Objectif : aéroport opérationnel pour 29/10/1993● En juin 1994, système de convoyage en retard :
– pertes = 1,1 million de $ par jour– responsables incapables de prévoir quand le système serait
suffisamment stable pour que l'aéroport ouvre● Ouverture de l'aéroport : 28/02/1995
– 16 mois de retard– 5,2 milliards de $ au lieu de 2 milliards
● Fini : septembre 1995– convoyage des bagages encore en grande partie manuel
● Système abandonné en 2005– jamais utilisé pour avions arrivants– 1 million de $ de maintenance par mois
(Scientifc American, 1994)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 51
Un Un bonbon programme programmepour le fournisseurpour le fournisseur
● Coût réduit– développement + maintenance
● Délai tenu– contrat– marché : arriver le premier, « fenêtre » à ne pas rater
● Production avec des risques maîtrisés (←)
● Qualité conforme aux exigences● ... succès de vente
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 52
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme ? programme ?
Différents points de vue :– l'utilisateur (ce que ça fait)– le programmeur (comment ça le fait)– le fournisseur (combien ça coûte)– la hotline (pourquoi ça ne le fait pas/plus)– le juriste (à qui est l'idée pour le faire)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 53
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme programme pour la pour la hotlinehotline ? ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 54
Un Un bonbon programme programmepour la pour la hotlinehotline
Facilité de diagnostic :– reproductibilité du problème– identification du problème– administration à distance
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 55
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme ? programme ?
Différents points de vue :– l'utilisateur (ce que ça fait)– le programmeur (comment ça le fait)– le fournisseur (combien ça coûte)– la hotline (pourquoi ça ne le fait pas/plus)– le juriste (à qui est l'idée pour le faire)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 56
Qu'est-ce qu'un Qu'est-ce qu'un bonbon programme programme pour le pour le juristejuriste ? ?
?
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 57
Un Un bonbon programme programmepour le pour le juristejuriste
Questions de propriété intellectuelle :– Utiliser des brevets détenus par la société
● reproduction / contournement difficile par concurrents● argument commercial : prestige, prix, ...
☛ ☛ Attention, effet néfaste possible sur l'innovation ! Attention, effet néfaste possible sur l'innovation !
– Utiliser des idées publiques– Éviter d'utiliser les idées des autres
● brevets, droits d'auteurs (données)● look and feel, noms, marques, ...
– Sauf si l'on peut prouver une antécédence● mais... (→)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 58
Un Un bonbon programme programmepour le pour le juristejuriste
Mais un brevet n'est pas une garantie !– La protection est théorique– En cas de procès
● Le gagnant est souvent celui qui a les meilleurs avocats !● Les grosses sociétés pèsent plus que les petites
– Valeur juridique pratique ≈ preuve d'antécédence
– Les bureaux d'enregistrement vérifient peu l'originalité
☛ ☛ Attention! Attention! Il reste toujours un risque ((☹☹))une grosse société peut en étouffer une petiteune grosse société peut en étouffer une petite
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 59
Un Un bonbon programme programmepour le pour le juristejuriste
● Droits d'exploitation : – Gestion des licences logicielles :
● licences par machine, par site, flottantes, ...
– Contrôle :● numéro d'enregistrement, dongle, ...
● Conditions d'utilisation– Acceptation par l'utilisateur
● Pack physique : « en brisant ce sceau, vous acceptez ... »● Accord électronique : boutons « I accept » / « I refuse »
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 60
Un Un bonbon programme programmepour le pour le juristejuriste
● Dispositions légales : – loi informatique et liberté (CNIL)– incitation à la violence, à la haine raciale, ...– interdiction d'accès aux mineurs– ...
● Règles éthiques, déontologie, ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 61
Un bon Un bon programme pour qui ?programme pour qui ?DDes contraintes souvent antagonistes...es contraintes souvent antagonistes...
– Utilisateur :● besoins, performance, convivialité, fiabilité, sécurité, ...
– Programmeur :● facile à comprendre, vérifier, modifier, porter, réutiliser, ...
– Fournisseur :● marché, délai, coût, risques, ventes
– Hotline :● facilité de diagnostic
– Juriste :● propriété industrielle, dispositions légales
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 62
Le génie logiciel, c'est...Le génie logiciel, c'est...
l'art
de bien faire
de bons programmes
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 63
Qu'est-ce que Qu'est-ce que bien fairebien faireun programme ?un programme ?
● ...● ...● ...
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 64
Qu'est-ce que Qu'est-ce que bien fairebien faireun programme ?un programme ?
– Bonne organisation● découpage en tâches / répartition des rôles● coopération
– Bonnes procédures● pour produire● pour contrôler la production
– Bonnes personnes● compétence, formation, ...
– Bons outils● matériel, logiciel
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 65
Réussite des projets informatiques Réussite des projets informatiques (rappel)(rappel)
Mais quels sont les facteurs de succès ?
Année Succès Mitigé Échec
1995 16% 53% 31%
2000 28% 49% 23%
2004 29% 53% 18%
(étude Standish Group)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 66
Facteurs de succès des projets Facteurs de succès des projets informatiques (par ordre d'importance)informatiques (par ordre d'importance)
– engagement de la direction– implication des utilisateurs– expérience du chef de projet– formulation des objectifs d'affaires– envergure limitée aux besoins essentiels– infrastructure technologique normalisée– spécifications précises et stables– utilisation de méthodologies (formelles)– estimations fiables et rigoureuses– autres : découpage des livraisons, compétence du personnel, ...
(étude Standish Group)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 67
Facteurs d'échecFacteurs d'échecdes projets informatiques des projets informatiques
Facteurs d'échec Réponses
1. Manque d'implication de l'utilisateur 12,8%
2. Exigences et spécifications incomplètes 12,3%
3. Changements aux exigences et spécifications 11,8%
4. Manque de soutien de la direction 7,5%
5. Incompétence technologique 7,0%
6. Manque de ressources 6,4%
7. Attentes irréalistes 5,9%
8. Objectifs mal définis 5,3%
9. Calendrier irréaliste 4.3%
10. Nouvelle technologie 3,7%
Autres 23,0%
(étude Standish Group)
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 68
Des souhaits et des réalisations...Des souhaits et des réalisations...
ce que la direction demande
ce que demande le chef de
projet
ce qui est conçu
ce qui est programmé
ce qui est installé ce que
l'utilisateur souhaitait
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 69
À retenir...À retenir...
● Le génie logiciel, c'est– l'art de bien faire de bons programmes
● Un programme n'est pas « bon » dans l'absolu,– ça dépend pour qui
● On se trompe presque toujours (coût, délai, contenu, ...)
☛ essayer de « se tromper le moins possible »
Génie logiciel – Introduction © 2005-2007 Renaud Marlet 70
À suivreÀ suivre
Vision d'ensemble :– cycle de vie du logiciel