Vous êtes sur la page 1sur 42

Introduction au

Génie logiciel
Salah BAINA

ENSIAS - Génie logiciel - S. BAINA 1


Contenu est basé sur transparents du 9ème édition de
Questions d’ingénierie de logiciel

• Qu’est ce que c’est logiciel?


• Qu’est ce que c’est génie logiciel?
• Quelle est la différence entre génie logiciel et
génie des systèmes?
• Quelles sont les propriétés du bon logiciel?
• Qu’est ce que c’est modèle du processus de
logiciel ?
• Quelles sont les méthodes du génie logiciel?

ENSIAS - Génie logiciel - S. BAINA 2


La Crise du Logiciel

• Historiquement, il y a eu une prise de conscience dans


les années 70, appelée la crise du logiciel, dû à un
tournant décisif : c’est à cette époque que le coût de
construction du logiciel est devenu plus important que
celui de la construction du matériel.

Edsger W. Dijkstra : The Humble Programmer. ACM Turing Lecture, 1972.


http://cs.utexas.edu/users/EWD/transcriptions/EWD03xx/EWD340.html

ENSIAS - Génie logiciel - S. BAINA 3


La Crise du Logiciel
De 1965 à 1995 :
– le volume de chaque logiciel a été multiplié 100
– la productivité des développeurs a été multipliée par 3

Développement de Microsoft Exchange Server (en 1995)


– 1 000 années x hommes pour 7 millions de lignes.
– Productivité de 30 lignes par homme par jour.

Développement de Windows 2000


– 5 000 ingénieurs pendant 3 ans pour réécrire 70% des 16 millions de lignes de
code de Windows NT.
– Productivité = 4,8 lignes par homme par jour.

Pourtant un bon hacker, motivé, seul, avec les bons outils, sans se
préoccuper d’un cahier des charges ou de relation client, peut écrire 3 000
lignes dans la même journée...

ENSIAS - Génie logiciel - S. BAINA 4


Logiciel

• Un logiciel est en général un sous-système d’un


système englobant.

• Il peut interagir avec des clients, qui peuvent être :


– des opérateurs humains (utilisateurs, administrateurs, . . . ) ;
– d’autres logiciels ;
– des contrôleurs matériels.
• Il réalise une spécification : son comportement vérifie un
ensemble de critères qui régissent ses interactions avec
son environnement.

ENSIAS - Génie logiciel - S. BAINA 5


Logiciel
On regroupe sous le terme de logiciel les différentes
formes de programmes qui permettent de faire fonctionner
un ordinateur, et de l’utiliser pour résoudre des problèmes,
les données qu’ils utilisent et les documents qui servent à
concevoir ces programmes et ces données, à les mettre en
œuvre, à les utiliser et à les modifier.

Fait bien ressortir :


•Programmes
•Données
•Documentation

ENSIAS - Génie logiciel - S. BAINA 6


Qu’est-ce qu’un système ?

• Un système est un ensemble d’éléments interagissant


entre eux suivant un certains nombres de principes et de
règles dans le but de réaliser un objectif.

Caractéristiques des systèmes :


• Possède une frontière (= critère d’appartenance au système)
• Evolue dans un environnement (= la partie du monde
• extérieure au système)
• Hiérarchisé et plusieurs sous-systèmes
• Complexité = dimension + évolutivité

ENSIAS - Génie logiciel - S. BAINA 7


Les propriétés du bon logiciel
En plus du respect (essentiel) de sa spécification, la qualité
d’un logiciel dépend des 4 critères suivants :

1.Maintenabilité - Peut-on faire évoluer le logiciel ?


2.Robustesse - Le logiciel est-il sujet à des dysfonctionnements ?
3.Efficacité - Le logiciel fait-il bon usage de ses ressources ?
4.Utilisabilité - Est-il facile à utiliser ?

ENSIAS - Génie logiciel - S. BAINA 8


Qualité du Logiciel
Validité
– Aptitude d’un produit logiciel à remplir exactement ses fonctions, définies par le
cahier des charges et la spécification

Fiabilité
– Facilité avec laquelle un logiciel se prête à une modification ou à une extension des
fonctions qui lui sont demandées

Réutilisabilité
– Aptitude d’un produit logiciel à fonctionner dans des conditions éventuellement
anormales

Extensibilité
– Aptitude d’un logiciel à êre réutilisé, en tout ou partie, dans de nouvelles applications

Compatibilité
– Facilité avec laquelle un logiciel peut être combiné avec d’autres

ENSIAS - Génie logiciel - S. BAINA 9


Qualité du Logiciel
Efficacité
– Utilisation optimale des ressources matérielles

Portabilité
– Facilité de préparation des procédures de recette et de validation

Intégrité
– Facilité avec laquelle un produit peut être transféré dans différents
environnements matériels et logiciels

Vérifiabilité
– Aptitude d’un logiciel à protéger son code et ses données contre des accès non
autorisés

Facilité d’emploi
– Facilité d’apprentissage, d’utilisation, de préparation des données, de correction
des erreurs d’utilisation, d’interprétation des résultats

ENSIAS - Génie logiciel - S. BAINA 10


Génie logiciel
Définitions
Génie logiciel ≈ Programmation ?

ENSIAS - Génie logiciel - S. BAINA 11


Génie logiciel

ENSIAS - Génie logiciel - S. BAINA 12


Génie logiciel

Le génie logiciel est un domaine des sciences de


l’ingénieur dont l’objet d’étude est

•la conception,
•la fabrication et
•la maintenance
des systèmes logiciels.

ENSIAS - Génie logiciel - S. BAINA 13


Génie logiciel

Génie Logiciel selon IEEE


L’application d’approches systématiques, rigoureuses, quantifiables
pour le développement, la mise en œuvre et la maintenance d’un
logiciel, c’est à dire l’application de l’ingénierie au domaine du logiciel.

more
ACM : http://www.acm.org
IEEE : http://www.ieee.org

ENSIAS - Génie logiciel - S. BAINA 14


Comment fabriquer un logiciel de qualité ?
• Pour répondre à cette exigence de qualité, on a essayé
d’appliquer les méthodes connues de l’ingénieur au
domaine du logiciel, pour établir des méthodes fiables
pour le logiciel.

• Méthode = un cadre rigoureux pour :


– Guider le développement du logiciel, de sa conception à sa livraison.
– Contrôler les coûts, évaluer les risques et respecter les délais.
– Établir des critères d’évaluation de la qualité d’un logiciel.

ENSIAS - Génie logiciel - S. BAINA 15


Comment fabriquer un logiciel de qualité ?
• Cependant, la construction d’un logiciel diffère de celle d’un
pont ...
– les progrès technologiques très rapides peuvent rendre un logiciel
caduque
– on ne sait pas très bien réutiliser les programmes existants

• Le génie logiciel est un domaine en pleine évolution qui offre une


grande palette d’outils et de méthodes pour parvenir à construire du
logiciel de qualité.
• Aucune de ses méthodes ne s’est imposée à ce jour, donc du recul
est nécessaire !
• Ces méthodes se distinguent principalement par :
– leur degré de formalisme ;
– leur champ d’application ;
– les contraintes de qualité qu’elles ambitionnen

ENSIAS - Génie logiciel - S. BAINA 16


Méthodes de conception du logiciel

Méthodes formelles : B, Model-checking, SPARK, ...


– utilisent des outils mathématiques et des méthodes de preuve pour
construire un logiciel correct par construction dont la vérification est
automatisée ou assistée.

Méthodes sémi-formelles : Rational Unified P., Merise, ...


– visent à introduire un langage normalisé pour décrire le logiciel et sa
spécification, mais ces langages contiennent certaines ambiguïtés et
n’offrent aucune garantie sur la qualité des résultats.

Méthodes empiriques : test unitaire, peer reviewing, ...


– un ensemble de « bonnes pratiques » qui ont fait leur preuve par
l’expérience

ENSIAS - Génie logiciel - S. BAINA 17


Génie logiciel
Le génie logiciel vise à garantir que :

1.la spécification répond aux besoins réels de ses


clients ;
– identifier les besoins
– concevoir des solutions adaptées
– démontrer que les besoins sont satisfaits
2.le logiciel respecte sa spécification ;
– valider le logiciel par rapport à sa spécification
3.les coûts alloués pour sa réalisation et les délais de
réalisation sont respectés.
– « time is money »

ENSIAS - Génie logiciel - S. BAINA 18


Comment spécifier un logiciel ?
Répondre à la question : Que doit faire le logiciel ?

•La spécification d’un logiciel peut prendre de


nombreuses formes :
– formelles : logique, automate, théorie des ensembles, ...
– semi-formelles : diagramme, fiches structurées, ...
– informelles : texte en langage naturel, prototype, ...

•La complexité et la taille de la spécification peuvent


varier énormément en fonction de l’environnement
d’utilisation du logiciel et des objectifs auxquels il répond.

ENSIAS - Génie logiciel - S. BAINA 19


Les grands principes du Génie logiciel
Un certain nombre de grands principes (de bon sens) se
retrouvent dans toutes ces méthodes.

En voici une liste :


1.La rigueur
2.La décomposition des problèmes en sous-problèmes
3.indépendants
4.La modularité
5.L’abstraction
6.L’anticipation des évolutions
7.La généricité
8.La construction incrémentale

ENSIAS - Génie logiciel - S. BAINA 20


Les grands principes du Génie logiciel
1. La rigueur :
– Les principales sources de défaillances d’un logiciel sont d’origine humaine.
– Des outils de vérification accompagnant le développement peuvent aider à
réduire les erreurs. Cette famille d’outils s’appelle CASE (Computer Aided
Software Engineering).
– Upper-CASE
• Support les activités de conception et de definition des besoins
– Lower-CASE
• Support les activités tards – programmer, déboguer, tester,
générateurs de tests, assistants de preuve, ...

2. La décomposition en sous-problèmes :
« Separation of concerns » en anglais.
– Simplifier les problèmes (temporairement) pour aborder leur complexité
progressivement.
– Décorréler les problèmes pour n’en traiter qu’un seul à la fois.

ENSIAS - Génie logiciel - S. BAINA 21


Les grands principes du Génie logiciel
Exemple #1

Comment acheminer un email de façon sûr à travers un réseau ?

Décomposition en couches utilisée sur Internet :

SMTP protocole de la couche application (sûr, grâce au store and forward)


qui suppose une couche de transport de paquet sûr.

TCP protocole de la couche transport permettant de s’assurer que tous les


paquets arrivent, même si leréseau peut perdre des paquets.

ENSIAS - Génie logiciel - S. BAINA 22


Les grands principes du Génie logiciel
Exemple #2
Comment créer dynamiquement une page internet pour visualiser et
modifier le contenu d’une base donnée sans la corrompre ?

Décomposition en trois composants :


Modèle son rôle est gérer le stockage des données.
Vue son rôle est formatter les données.
Contrôleur son rôle est de n’autoriser que les modifications correctes.

ENSIAS - Génie logiciel - S. BAINA 23


Les grands principes du Génie logiciel
3. La modularité :
Partitionner le logiciel en modules qui :
– ont une cohérence interne (des invariants)
– possèdent une interface ne divulguant sur le contenu du module que ce
qui est nécessaires aux modules clients
– réalisent l’indépendence de l’évolution
– C’est une instance cruciale du principe de décomposition des problèmes.

4. L’abstraction :
– Exhiber les concepts généraux qui englobent un certains nombre de cas
particuliers.
• Classes abstraites, polymorphisme, templates, généricité

5. L’anticipation des évolutions :


– Concevoir un système suffisamment riche pour que l’on puisse le modifier
incrémentalement.

ENSIAS - Génie logiciel - S. BAINA 24


Les grands principes du Génie logiciel
6. La généricité :
– Un logiciel réutilisable a beaucoup plus de valeur qu’un composant dédié.
– Un composant est générique lorsqu’il est adaptable.

7. La construction incrémentale :
– Un développement logiciel a plus de chances d’aboutir si il suit une
cheminement incrémental (baby-steps).

✓ Ecrire le code source d’une fonction ou module, le compiler, et


passer à la suivante

✗ Écrire l’ensemble du code source d’un programme et compiler.

ENSIAS - Génie logiciel - S. BAINA 25


Le processus de développement logiciel

• Un processus de développement logiciel est un


ensemble structuré d’activités que conduisent à la
production d’un logiciel.

ENSIAS - Génie logiciel - S. BAINA 26


Les protagonistes du génie logiciel
Les quatre P
• La production de logiciels est une tâche extrèmement complexe qui
posent de nombreux challenges.

• Coordination de nombreuses personnes (organisées en équipes)

• Objectif premier = construire un produit (qui répond aux besoins


du/des client(s)).
• Effort de développement doit être organisé en projet (avec un
planning rigoureux pour assurer le succès).

• Pour développer le produit avec succès, les activités des personnes


doivent être organisées suivant un processus ordonné bien défini.

ENSIAS - Génie logiciel - S. BAINA 27


Les protagonistes du génie logiciel
Les quatre P

Personnes

•Business management
•Equipe de management du Projet
•Equipe de développement
•Clients
•Utilisateurs finaux

ENSIAS - Génie logiciel - S. BAINA 28


Les protagonistes du génie logiciel
Les quatre P

Produit

•Bien plus que le code source


•Documentation produite durant la définition et le
•développement
•Code source et objet
•Document des tests (plans, cas, résultats)
•Documentation utilisateurs
•Diverses mesures de productivité

ENSIAS - Génie logiciel - S. BAINA 29


Les protagonistes du génie logiciel
Les quatre P

Projet

•Les diverses activités d’un projet


– Planification
– Analyse des besoins
– Conception
– Implémentation
– Tests
– Maintenance

ENSIAS - Génie logiciel - S. BAINA 30


Les protagonistes du génie logiciel
Les quatre P

Processus

•Façon dont vont se succéder les diverses activités d’un projet


•(on en reparlera dans la partie du cours concernant le processus de
développement d’un logiciel)

ENSIAS - Génie logiciel - S. BAINA 31


Le développement peut être un échec
Raisons expliquant ces conséquences négatives

•Il n’y a pas que les erreurs de programmation !!!
•Projet non réaliste
•Management de projet de mauvaise qualité
•Mauvaise estimation des ressources
•Mauvaise définition des besoins du système
•Mauvais reporting du status du projet
•Risques non gérés
•Mauvaise communication entre les clients, développeurs, utilisateurs
•Inaptitude à gérer la complexité du projet
•Mauvaise méthodologie de conception
•Mauvais outils de développement
•Mauvaise méthodologie de test
•Mauvaise couverture des tests
•Processus de développement inappropriéFaçon dont vont se succéder les diverses activités d’un projet

ENSIAS - Génie logiciel - S. BAINA 32


Le processus de développement logiciel
Il n’existe pas de processus idéal, mais les activités des
processus existants se regroupent en 6 grandes catégories
:
•La spécification (analysis) du logiciel définit ses fonctionnalités et
leurs contraintes.
•La conception (design) . . .
•. . . et l’implémentation (coding) sont chargées de réaliser le logiciel,
en conformité avec sa spécification.
•La validation s’assure effectivement du respect de la spécificationpar
le logiciel produit.
•La livraison (deployement) installe le logiciel chez les clients.
•L’évolution adapte le logiciel aux besoins futurs de ses clients.

ENSIAS - Génie logiciel - S. BAINA 33


Méthodes de génie logiciel

• Composants des méthodes


– Modèles – graphiques (objets, flux des données,
machine d’états et c.)
– Règles - contraintes
– Recommandations – bonne pratique
– Direction et gestion – la séquence des activités

ENSIAS - Génie logiciel - S. BAINA 34


Modèle du processus
• Un modèle – une présentation simplifiée d’un
point de vue différent

ENSIAS - Génie logiciel - S. BAINA 35


Modèle du processus
• Un modèle – une présentation simplifiée d’un
point de vue différent

Différents points de vue


– Flux d’activités
– Flux des données
– Rôles/activités

Modèles génériques
– Cascade (Waterfall)
– Itérative
– Composants

ENSIAS - Génie logiciel - S. BAINA 36


Modèle en cascade
• Chaque phase doit se terminer pour commencer la suivante.
• Des documents sont produits pour concrétiser la réalisation de
chaque phase.
• Il hérité des méthodes classiques d’ingénierie, il s’adapte donc bien
dans uncontexte où le logiciel fait partie d’un système complexe
englobant, mais inadapté au développement de systèmes dont la
spécification est difficile à formuler a priori.

ENSIAS - Génie logiciel - S. BAINA 37


Modèle évolutif
• Un prototype est écrit rapidement et est confronté à l’utilisateur.
En fonction du résultat, on raffine la spécification.
• On reprend le prototype ou on le réécrit jusqu’à l’obtention du
système final.
• Il augmente les chances de répondre aux besoins de l’utilisateur car
il permet de les comprendre plus rapidement : voir le « manifeste »
de la méthode agile.
• Il ne dispense d’écrire la spécification du système car il faut
s’assurer que l’implémentation est correcte.

ENSIAS - Génie logiciel - S. BAINA 38


38
Modèle évolutif
• Il est adapté aux projets de taille moyenne.
• Critique : il est difficile de structurer correctement le logiciel (définir
de bonnes abstractions, modulariser efficacement) et ne pas faire
des produits « bricolés ».

ENSIAS - Génie logiciel - S. BAINA 39


Les coûts
Waterfall model
0 25 50 75 100

Specification Design Development Integ ration and testing

It erative development

0 25 50 75 1 00

Specification Iterative development System testing

Component-based software eng ineering

0 25 50 75 1 00

Specification Development Integ ration and testing

Development and evolution costs for long-lifetime syst ems


0 10 200 30 400

System development System evolution

ENSIAS - Génie logiciel - S. BAINA 40


Les coûts

ENSIAS - Génie logiciel - S. BAINA 41


Les coûts
100

90

80

70

60

50
Coût
40

30

20

10

0
Conception Codage Tests Validation Exploitation
ENSIAS - Génie logiciel - S. BAINA 42