Le Génie Logiciel
Khalid Nafil Email : knafi
[email protected] knafi
[email protected]
04/14/2010
Kh. Nafil : Le Génie Logiciel
1
Software Engineering is not a discipline : it is an aspiration, as yet unachieved
04/14/2010
Kh. Nafil : Le Génie Logiciel
2
Software Engineering is not a discipline : it is an aspiration, as yet unachieved
04/14/2010
Kh. Nafil : Le Génie Logiciel
2
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 3
Plan du cours •
•
•
•
•
•
Définition du Génie Logiciel Cycle de vie d’un logiciel Les modèles de Cycle de Vie Techniques de spécification DFD et Modèle de processus UML
4
Ingénieries •
Les génies classiques :
•
Ingénierie :
•
Civil, maritime, mécanique, informatique Production, fabrication, construction Science de l’ingénieur / art Théories, méthodes, techniques, outils
Génie logiciel : Software Engineering 5
Le logiciel •
Un logiciel est un ensemble de :
Instructions, qui une fois exécutées fournissent les fonctionnalités et performances attendues Structures de données qui permettent aux programmes de manipuler les informations d’un manière adéquate Documents qui décrivent les opérations et l’utilisation des programmes 6
GL •
Art de bien faire de bons programmes
Art : technique, créativité, esthétique,… Bien faire : réussite, rentabilité,… Bons : performance, fiabilité,…
7
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é 8
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’af aires
9
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
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 11
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
12
É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 13
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
14
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
15
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 16
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
17
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
18
19
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
20
Métaphore du logiciel
21
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) 22
Planification des tâches
23
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
24
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 25
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 26
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
27
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
28
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é 29
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.
30
Objectifs du G.L. Développer des logiciels considérés comme : Logiciels fiables Logiciels satisfaisant les besoins Logiciels maintenables Logiciels exploitables dans dif érents environnement •
•
•
•
31
La discipline G.L. •
Le GL repose principalement sur :
L’informatique Les mathématiques La psychologie L’érgonomie La gestion
32
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 33
Historique du G.L. •
•
Un certain nombre de projets prirent du retard (parfois plsrs années) Ceci produit des systèmes peu fiables :
•
•
Diciles à 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
34
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 35
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 Bug de l'an 2010 : 20 millions de cartes bancaires paralysées en Allemagne (jan 2010) 36
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 37
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 38
É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
39
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 40
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 41
Problèmes avec le •
Les clients sont souvent insatisfaits du produit logiciel
•
Les logiciels existants sont souvent diciles à maintenir
•
…interaction client-développeur
Vestiges de technologie dépassée
La qualité du logiciel est dicile à mesurer 42
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 dif érent d’une tâche d’ingénierie 43
Mythes du logiciel: côté •
Mythe:
Un énoncé général des objectifs est susant Les besoins du projet changent, mais on incorporera les modifications facilement parce que le logiciel est flexible
•
Réalité:
Une définition insusante 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
44
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’ef ort consacré à un programme se produit après la livraison à l’usager Les revues de logiciel peuvent être plus ecaces 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. 45
Coûts
Coûts relatifs du logiciel par phase 3%4% 2% 6% 5% 7% 6% 67%
Besoins Spécifications Planification Conception Codage Tests Intégration Maintenance
46
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 susants. Si le projet prend du retard, il sura 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. 47
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 48
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 49
Bibliographie •
•
Ian Sommerville, “Le génie logiciel et ses applications”, InterEditions, 1988 Bohem, “Software Engineering Economics”, Prentice-Hall, 1981
50