logiciel et genie logiciel
TRANSCRIPT
10/24/2009 Kh. Nafil : Le Génie Logiciel 2
Software Engineering is not a discipline : it is an
aspiration, as yet unachieved
10/24/2009 Kh. Nafil : Le Génie Logiciel3
The Aspiration
• In late 1967 the [NATO Science Committee] Study Group recommended the holding of a working conference on Software Engineering. The phrase SE was deliberately chosen as being provocative in implying the need for software manufacture to be based on the types of theoretical foundations and practical disciplines that are traditional in the established branches of engineering
10/24/2009 Kh. Nafil : Le Génie Logiciel4
Plan du cours
• Définition du Génie Logiciel• Les modèles de Cycle de Vie• Techniques de Spécifications Formelles (Z, Petri
nets, B)• Gestion de configuration et de Versions (CVS)• Tests• Méthodes agiles • eXtreme Programming• Design patterns• Gestion de projet
10/24/2009 Kh. Nafil : Le Génie Logiciel5
Ingénieries
• Les génies classiques : Civil, maritime, mécanique, informatique Production, fabrication, construction
• Ingénierie : Science de l’ingénieur / art Théories, méthodes, techniques, outils
• Génie logiciel : Software Engineering
10/24/2009 Kh. Nafil : Le Génie Logiciel6
GL
• Art de bien faire de bons programmes Art : technique, créativité, esthétique,… Bien faire : réussite, rentabilité,… Bons : performance, fiabilité,…
10/24/2009 Kh. Nafil : Le Génie Logiciel7
Caractéristiques du logiciel
• Conceptuellement: une structure d’informations
• Caractéristiques physiques du logiciel: Une suite d’items ou d’objets Incluant programmes, données,
documents,… Le tout formant une configuration
• Techniquement: il est développé non manufacturé
10/24/2009 Kh. Nafil : Le Génie Logiciel8
Caractéristiques du logiciel
• Temporellement: il ne s’use pas, mais se détériore
• Structurellement: il est personnalisé plutôt qu’assemblé
• Économiquement: une opportunité d’affaires
10/24/2009 Kh. Nafil : Le Génie Logiciel9
Domaines d’applications
• Logiciels de système• Logiciels temps réel• Logiciels d’ingénierie et logiciels
scientifiques• Logiciels embarqués• Logiciels d’intelligence artificielle• Logiciels d’applications Web
10/24/2009 Kh. Nafil : Le Génie Logiciel10
Domaines d’application
• Utilisation du logiciel : de plus en plus volumineux
• Montre : 2K instructions• Téléphone portable : 150 K
instructions• Automobile : 1 M instructions• Centrale téléphonique : 1M
instructions• Noyaux linux : 3,7M instructions
10/24/2009 Kh. Nafil : Le Génie Logiciel11
Domaines d’application
• 90% des nouvelles fctnnalités des voitures sont apportées par l’informatique et l’éléctronique
• Il y a plus d’informatique dans la Volvo S80 que dans le chasseur F15, avait déclaré le président d’Audi
10/24/2009 Kh. Nafil : Le Génie Logiciel12
Évolution de l’informatique :
• I think there is a world market for maybe five computers : Thomas Watson, PDG fondateur, IBM, 1943
• There is no reason for any individual to have a computer in his home : Ken Olson, PDG DEC, 1977
• Les ordinateurs du futur ne devraient pas peser plus de 1,5 tonnes : Popular Mechanics, 1949
10/24/2009 Kh. Nafil : Le Génie Logiciel13
Explosion du logiciel
• En 30 ans (1965 à 1995), le volume de chaque logiciel a été multiplié par 100, alors que la productivité des développeurs n’augmentait que d’un facteur de 3
• C’est la crise du logiciel
10/24/2009 Kh. Nafil : Le Génie Logiciel14
Problème de productivité
• En 1995, le développement de Microsoft Exchange Server a coûté 1000 années*hommes pour 7 millions lignes. La productivité a été de 30 lignes par homme par jour
10/24/2009 Kh. Nafil : Le Génie Logiciel15
Développement de logiciels :
• 90% des projets informatiques sortent en retard
• Un nombre considérable de projets informatiques ne répondent pas aux besoins des utilisateurs en respectant les contraintes de budget et de délai
• 50% des projets informatiques dépassent le budget prévu
10/24/2009 Kh. Nafil : Le Génie Logiciel16
Coûts élevés des logiciels
• Le coût de développement d’un logiciel peut être estimé, en moyenne, à 1000 dh par instruction
• À ce coût, il faut ajouter pour chaque instruction 20000 dh de maintenance
10/24/2009 Kh. Nafil : Le Génie Logiciel17
Constat
• Diminution des coûts du matériel informatique• Les coûts des logiciels n’ont pas diminué• Le coût du logiciel représente 80% ou plus du coût
total d’un système informatique• La pratique du G.L. a pour objectif de diminuer
sensiblement les coûts de développement des gros systèmes logiciels
10/24/2009 Kh. Nafil : Le Génie Logiciel18
10/24/2009 Kh. Nafil : Le Génie Logiciel19
Industrie logiciel vs industrie
• Peut-on comparer l’industrie du logiciel à celle de l’industrie automobile : voir lien
10/24/2009 Kh. Nafil : Le Génie Logiciel20
Métaphore du logiciel
• Pour construire une maison, il faut faire appel à un spécialiste : un architecte
• Son rôle consiste à : Analyser et comprendre les besoins Tenir compte des réalités économiques (budget) Proposer des solutions architecturales Contacter tous les corps de métier nécessaires S’assurer que ttes les dispositions/contraintes légales sont
satisfaites
10/24/2009 Kh. Nafil : Le Génie Logiciel21
Métaphore du logiciel…
Planifier l’enchaînement des interventions Faire faire les travaux (réalisation et
codage) S’assurer des avancement des travaux S’assurer de la qualité des travaux
réalisés(qualité et test) Gérer les éventuels conflits Prévoir la recette de la maison (remise
des clés)
10/24/2009 Kh. Nafil : Le Génie Logiciel22
Métaphore du logiciel…
• Pour construire une maison, on fait appel à de nombreux outils : Une méthode qu’applique l’architecte Des documents Des outils spécifiques à chaque corps
métier
10/24/2009 Kh. Nafil : Le Génie Logiciel23
CMM : Capability Maturity
• C’est un modèle d’évaluation et d’évolution des processus logiciels
• Élaboré en 1987 par Watts Humphrey, du SEI de l’université de Pittsburg
• Il comporte 5 niveaux de maturité : initial, reproductible, défini, maîtrisé et optimisé
• Ces niveaux constituent autant d’étapes sur le chemin menant à des processus matures
10/24/2009 Kh. Nafil : Le Génie Logiciel24
CMM : fonctionnement
• Chacun des 5 niveaux est divisé en plsrs secteurs clés
• Niveau 2 : planification de projet, assurance qualité
• Niveau 3 : définition des processus, ingénierie des produits logiciels
• Niveau 4 : gestion quantitative des processus et de la qualité logicielle
• Niveau 5 : gestion des changements technologiques et des changements des processus
10/24/2009 Kh. Nafil : Le Génie Logiciel25
CMM : fonctionnement
• Niveau 1 : le processus est empirique, artisanal
• Niveau 2 : le process est documenté, reproductible
• Niveau 3 : le process est bien défini, réglé• Niveau 4 : le process est dirigé, des
mesures quantitatives sont introduites• Niveau 5 : le process est optimisé,
l’amélioration continue est intégrée ds le fonctnement quotidien
• En Inde, 46 sociétés sont évaluées au niveau 5
10/24/2009 Kh. Nafil : Le Génie Logiciel26
Que regroupe le Génie logiciel
• Des méthodes Analyse Conception Implémentation Tests Maintenance
• Des procédures Gestion de projet Assurance-qualité Gestion de
configuration Mesures
(métriques) Technologies
novatrices
10/24/2009 Kh. Nafil : Le Génie Logiciel27
Vers une définition du Génie
• Le GL désigne l’ensemble des méthodes, des techniques, des pratiques et outils concourant à la production d’un logiciel, imposés par les normes adaptées à l’environnement d’utilisation afin de favoriser la production et la maintenance de composants logiciels de qualité
10/24/2009 Kh. Nafil : Le Génie Logiciel28
Vers une définition du génie
• Le génie logiciel applique les principes et techniques de l’ingénierie à la conception de systèmes logiciels, intégrés et à grande échelle.
• La pratique du génie logiciel est réalisée par des équipes d’ingénieurs.
10/24/2009 Kh. Nafil : Le Génie Logiciel29
Objectifs du G.L.
Développer des logiciels considérés comme :
• Logiciels fiables• Logiciels satisfaisant les besoins• Logiciels maintenables• Logiciels exploitables dans différents
environnement
10/24/2009 Kh. Nafil : Le Génie Logiciel30
La discipline G.L.
• Le GL repose principalement sur : L’informatique Les mathématiques La psychologie L’érgonomie La gestion
10/24/2009 Kh. Nafil : Le Génie Logiciel31
Historique du génie logiciel
• Une crise du logiciel (OTAN, 1968)• La crise résultait de l’apparition des
ordinateurs 3ème génération plus puissants que les précédents
• Réalisation de nouvelles applications jusque là impossibles
• La réalisation de ces applications exigea la construction de grands systèmes logiciels
• Les méthodes de développement de l’époque n’étaient pas adéquates
10/24/2009 Kh. Nafil : Le Génie Logiciel32
Historique du G.L.
• Un certain nombre de projets prirent du retard (parfois plsrs années)
• Ceci produit des systèmes peu fiables : Difficiles à maintenir Peu performants
• Le développement du logiciel entra dans une situation de crise
• Le terme logiciel désigne l’ensemble des programmes associés à telle application ou produit en plus de la documentation nécessaire
10/24/2009 Kh. Nafil : Le Génie Logiciel33
Quelques exemples de
• 01/11/2005 : gros bug à la bourse de Tokyo, toutes les cotations qui sont bloquées toute la journée
• Convocation de centenaires à l’école : convocation à l’école primaire de personnes âgées de 106 ans
• Échec du premier lancement d’ariane V. au premier lancement de la fusée, celle ci a explosé en vol. coût du programme d’étude d’ariane 38 milliards de francs, pour 39 secondes de vols après 10 années de travail
10/24/2009 Kh. Nafil : Le Génie Logiciel34
Exemples de bugs
• Microsoft raciste : le correcteur d’orthographe de Word proposait “anti-arabe” pour corriger “anti-stress”
• L’indisponibilté durant 22 heures du serveur web de ebay, a fait échouer plus de 2,3 millions d’enchères
• Février 2009 : panne de Gmail pendant 2 heures
10/24/2009 Kh. Nafil : Le Génie Logiciel35
Caractéristiques de projets
• Diversité des applications• Objectifs exacts non connus avant
l’achèvement• Niveau d’abstraction• Évolution des besoins• Invisibilité• Le cahier des charges n’est presque jamais
complet et figé• Chaque projet informatique est un cas
nouveau
10/24/2009 Kh. Nafil : Le Génie Logiciel36
Caractéristiques de logiciels
• Dans tous les grands projets, les premiers exemplaires n’ont pas fonctionné correctement : Premiers processeurs ou ordinateurs Premiers Airbus Premieres fusées …
• Un logiciel est considéré toujours comme étant le premier exemplaire produit par un grand projet complexe
10/24/2009 Kh. Nafil : Le Génie Logiciel37
Évolution du matériel et du
• Années 50, 60 Traitements en lots Distribution limitée Logiciel
personnalisé• Années 60, 70
Multi-usagers Temps réel Bases de données
• Années 70, 80 Systèmes distribués Systèmes embarqués
• Années 80, 90 Ordinateurs personnels Orienté-objet Systèmes experts Réseaux de neurones Calcul parallèle
10/24/2009 Kh. Nafil : Le Génie Logiciel38
Langages et outils logiciels
• Années 60, 70 Langages 0/1,
assemblages• Années 70, 80
Langages de base:Fortran, Cobol
Langages structurés: C, Pascal
Compilateurs
• Années 80, 90 Langages OO:
smalltalk, C++ Interfaces usagers
• Années 90, 2000 Outils CASE Normes de
conception: UML, CORBA
10/24/2009 Kh. Nafil : Le Génie Logiciel39
Quelques défis du génie
• Comment assurer la qualité du logiciel à produire
• Comment suivre la demande croissante tout en maintenant des contraintes budgétaires
• Comment mettre à jour des logiciels âgés • Comment éviter des délais désastreux• Comment et quand intégrer avec succès les
nouvelles technologies en génie logiciel
10/24/2009 Kh. Nafil : Le Génie Logiciel40
Problèmes avec le
• Les clients sont souvent insatisfaits du produit logiciel …interaction client-développeur
• Les logiciels existants sont souvent difficiles à maintenir Vestiges de technologie dépassée
• La qualité du logiciel est difficile à mesurer
10/24/2009 Kh. Nafil : Le Génie Logiciel41
Quelques causes pour ces
• Physique: pas de pièce de rechange• La qualité logiciel est un problème humain• Les chefs de projet n’ont pas toujours une
expérience en développement• Même les développeurs ont souvent peu
d’expériences dans l’ingénierie logicielle• L’art de programmer est significativement
différent d’une tâche d’ingénierie
10/24/2009 Kh. Nafil : Le Génie Logiciel42
Mythes du logiciel: côté
• Mythe: Un énoncé général des
objectifs est suffisant Les besoins du projet
changent, mais on incorporera les modifications facilement parce que le logiciel est flexible
• Réalité: Une définition
insuffisante des besoins des usagers est une cause majeure de production d’un logiciel de mauvaise qualité
Les coûts pour un changement du logiciel augmentent dramatiquement dans les dernières phases du développement
10/24/2009 Kh. Nafil : Le Génie Logiciel43
Mythes du logiciel: côté
• Mythes: Une fois le programme
écrit et qu’il fonctionne, le travail du développeur est terminé
Tant qu’un programme ne fonctionne pas, il n’y a pas moyen d’en mesurer la qualité
Le succès d’un projet dépend de son livrable le plus important, soit un programme fonctionnel
• Réalité: 50% à 70% de l’effort
consacré à un programme se produit après la livraison à l’usager
Les revues de logiciel peuvent être plus efficaces pour détecter les erreurs que les jeux de tests.
Une configuration logicielle inclut toute la documentation, des données d’entrée pour les tests, etc.
10/24/2009 Kh. Nafil : Le Génie Logiciel44
Coûts
67%6%
7%
5%
6%2%4%3%
Coûts relatifs du logiciel par phase
Besoins SpécificationsPlanificationConceptionCodageTestsIntégrationMaintenance
10/24/2009 Kh. Nafil : Le Génie Logiciel45
Mythes du logiciel: côté
• Mythe: L’entreprise possède
des normes, le logiciel développé devrait être satisfaisant.
Les ordinateurs et les outils logiciels que l’entreprise possède sont suffisants.
Si le projet prend du retard, il suffira d’ajouter quelques programmeurs.
• Réalité: Les standards sont-ils
utilisés, appropriés et complets.
Il faut plus que des outils pour réaliser des logiciels de qualité. Il faut aussi une bonne pratique
Le développement du logiciel n’est pas une activité mécanique. Ajouter des programmeurs peut empirer la situation.
10/24/2009 Kh. Nafil : Le Génie Logiciel46
Quelques lois
• Loi de Brooker : dix grammes d’abstraction valent des tonnes de bricolages
• Loi de Klipstein : les défauts n’apparaissent qu’après que le système ait passé avec succès la phase d’intégration
• Loi de Brook : doubler le nombre de programmeurs sur un projet en retard ne fait que doubler le retard
10/24/2009 Kh. Nafil : Le Génie Logiciel47
Quelques lois (suite)
• Loi de Weinberg : si les architectes construisaient des maisons comme les programmeurs écrivent les programmes, le premier picvert venu détruirait la civilisation
• Loi de Myers : on passe la moitié de son temps à refaire ce que l’on n’a pas eu le temps de faire correctement
10/24/2009 Kh. Nafil : Le Génie Logiciel48
Bibliographie
• Ian Sommerville, “Le génie logiciel et ses applications”, InterEditions, 1988
• Bohem, “Software Engineering Economics”, Prentice-Hall, 1981