You are on page 1of 51

Le Génie Logiciel

Khalid Nafil
Email : knafil@gmail.com

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


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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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

5
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
GL

• Art de bien faire de bons programmes


 Art : technique, créativité, esthétique,…
 Bien faire : réussite, rentabilité,…
 Bons : performance, fiabilité,…

7
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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

9
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
É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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
19
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
Métaphore du logiciel

21
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
Planification des tâches

23
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
27
Que regroupe le Génie logiciel

• Des méthodes • Des procédures


 Analyse  Gestion de projet
 Conception  Assurance-qualité
 Implémentation  Gestion de
configuration
 Tests
 Mesures
 Maintenance (métriques)
 Technologies
novatrices

28
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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

31
04/14/2010 Kh. Nafil : Le Génie Logiciel
La discipline G.L.

• Le GL repose principalement sur :


 L’informatique
 Les mathématiques
 La psychologie
 L’érgonomie
 La gestion

32
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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 34
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
Évolution du matériel et du

• Années 50, 60 • Années 70, 80


 Systèmes distribués
 Traitements en lots
 Systèmes embarqués
 Distribution limitée
• Années 80, 90
 Logiciel  Ordinateurs personnels
personnalisé  Orienté-objet
• Années 60, 70  Systèmes experts
 Réseaux de neurones
 Multi-usagers
 Calcul parallèle
 Temps réel
 Bases de données

39
04/14/2010 Kh. Nafil : Le Génie Logiciel
Langages et outils logiciels

• Années 60, 70 • Années 80, 90


 Langages 0/1,  Langages OO:
assemblages smalltalk, C++
• Années 70, 80  Interfaces usagers
 Langages de • Années 90, 2000
base:Fortran, Cobol
 Outils CASE
 Langages structurés:
C, Pascal  Normes de
 Compilateurs conception: UML,
CORBA

40
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
42
04/14/2010 Kh. Nafil : Le Génie Logiciel
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

43
04/14/2010 Kh. Nafil : Le Génie Logiciel
Mythes du logiciel: côté

• Mythe: • Réalité:
 Un énoncé général des  Une définition
objectifs est suffisant insuffisante des besoins
des usagers est une
 Les besoins du projet cause majeure de
changent, mais on production d’un logiciel
incorporera les de mauvaise qualité
modifications  Les coûts pour un
facilement parce que le changement du logiciel
logiciel est flexible augmentent
dramatiquement dans les
dernières phases du
développement

44
04/14/2010 Kh. Nafil : Le Génie Logiciel
Mythes du logiciel: côté

• Mythes: • Réalité:
 Une fois le programme  50% à 70% de l’effort
écrit et qu’il fonctionne, consacré à un programme
le travail du développeur se produit après la
est terminé livraison à l’usager
 Tant qu’un programme  Les revues de logiciel
ne fonctionne pas, il n’y peuvent être plus efficaces
a pas moyen d’en pour détecter les erreurs
mesurer la qualité que les jeux de tests.
 Le succès d’un projet  Une configuration logicielle
dépend de son livrable inclut toute la
le plus important, soit documentation, des
un programme données d’entrée pour les
fonctionnel tests, etc.

45
04/14/2010 Kh. Nafil : Le Génie Logiciel
Coûts

Coûts relatifs du logiciel par phase

3%4%
2%
6%
Besoins
5%
Spécifications
7% Planification
Conception
6% Codage
67% Tests
Intégration
Maintenance

46
04/14/2010 Kh. Nafil : Le Génie Logiciel
Mythes du logiciel: côté

• Mythe: • Réalité:
 L’entreprise possède  Les standards sont-ils
des normes, le logiciel utilisés, appropriés et
complets.
développé devrait être
satisfaisant.  Il faut plus que des
outils pour réaliser des
 Les ordinateurs et les logiciels de qualité. Il
outils logiciels que faut aussi une bonne
l’entreprise possède pratique
sont suffisants.  Le développement du
 Si le projet prend du logiciel n’est pas une
activité mécanique.
retard, il suffira Ajouter des
d’ajouter quelques programmeurs peut
programmeurs. empirer la situation.
47
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
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
04/14/2010 Kh. Nafil : Le Génie Logiciel
Bibliographie

• Ian Sommerville, “Le génie logiciel et


ses applications”, InterEditions, 1988
• Bohem, “Software Engineering
Economics”, Prentice-Hall, 1981

50
04/14/2010 Kh. Nafil : Le Génie Logiciel
…pour finir

• Mechanical Engineering is
like looking for a black cat
in a lighted room
• Chemical Engineering is
like looking for a black cat
in a dark room
• Software Engineering is
like looking for a black cat
in a dark room in which
there is no cat

51
04/14/2010 Kh. Nafil : Le Génie Logiciel

You might also like