Vous êtes sur la page 1sur 19

Génie Logiciel

Chapitre 1- Introduction

1
Introduction

• Qu’est ce qu’un logiciel?


• Quelles sont les qualités d’un bon logiciel?
• Qu’est-ce que le génie logiciel?
• Génie Logiciel = génie + Logiciel (Software engineering)
• Quelles sont les activités fondamentales du génie logiciel?

2
Introduction et définitions

Logiciel :
Un logiciel est un ensemble d’entités nécessaires au fonctionnement d’un
processus de traitement automatique de l’information.

Paermi ces entités, on trouve :


• des programmes (en format code source ou exécutables);
• des documentations d’utilisation;
• des informations de configuration.

3
Introduction et définitions

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.

Le génie logiciel vise à garantir que :


- la spécification répond aux besoins réels de ses clients;
- le logiciel respecte sa spécification;
- les coûts alloués pour sa réalisation sont respectés;
- les délais de réalisation sont respectés.
4
Logiciel : caractéristiques

• Produit unique
Conçu et fabriqué une seule fois, reproduit

• Complexe
Le logiciel est fabriqué pour soulager l'humain d'un problème
complexe; il est donc par nature complexe

• Invisible
Fabrication du logiciel = activité purement intellectuelle
Difficulté de perception de la notion de qualité du logiciel

• Technique non mature


Encore artisanal malgré les progrès

5
Logiciel : caractéristiques

Spécification :
Ce que doit faire le logiciel, ensemble de critères que doivent satisfaire son
fonctionnement interne et ses interactions avec son environnement

6
Logiciel : caractéristiques

Spécification fonctionnelle
• Fonctionnalités du logiciel, réponse aux besoins des utilisateurs

Spécification non fonctionnelle


• Facilité d'utilisation : prise en main et robustesse
• Performance : temps de réponse, débit, fluidité...
• Fiabilité : tolérance aux pannes
• Sécurité : intégrité des données et protection des accès
• Maintenabilité : facilité à corriger et à faire évoluer le logiciel
• Portabilité : adaptabilité à d'autres environnements matériels ou logiciels

7
Plan de développement

• La description du logiciel à réaliser en différents niveaux de produits


(programmes et documents)

• Les moyens matériels et/ou logiciel à mettre à disposition ou à réaliser


(Méthodes, Techniques, Outils)

• Le découpage du cycle de vie en phases, la définition des tâches à effectuer


dans chaque phase et l'identification des responsables associés

• Les supports de suivi de l'avancement (Planning et calendriers)

• Les moyens utilisés pour gérer le projet

• Les points clés avec ou sans intervention du client


8
Constat sur le développement de logiciel

• Le coût du développement du logiciel dépasse souvent celui du matériel.

• Les coûts dans le développement du logiciel :


- 20% pour le codage et la mise au point individuelle
- 30% pour la conception
- 50% pour les tests d'intégration

• Durée de vie d'un logiciel de 7 à 15 ans.

• Le coût de la maintenance évolutive et corrective constitue la part


prépondérante du coût total.

• Plus de la moitié des erreurs découvertes en phases de tests proviennent


d'erreurs introduites dans les premières étapes.
• La récupération d'une erreur est d'autant plus coûteuse que sa découverte
9 est tardive.
Etapes de développement de logiciel

Analyse (du problème)


• Comprendre et recenser les besoins
• Spécification (par exemple cahier des charges)

Conception (du logiciel)


• Préliminaire
- Eclater le logiciel en sous-parties
- Définir les interfaces entre ces sous-parties
- Définir l’architecture du logiciel
• Détaillée
- Préciser l’architecture des sous-parties
Implemetation
• Codage, intégration, tests

10
Activités de développement de logiciel

L’organisation de ces activités et leur enchaînement définit le cycle de


développement du logiciel

11
Importance de qualité de logiciel

• Le logiciel est une composante majeure des systèmes informatiques


(environ 80% du coût) utilisés pour :
- Communication (ex. syst. téléphone, syst. email)
- Santé (monitoring)
- Transport (ex. automobile, aéronautique)
- Echanges économiques (ex. commerce)
- Entertainment
- ….

• Les défauts du logiciel sont extrêmement coûteux en terme


- d'argent
- de réputation
- de perte de vie

12
Facteurs de non qualité de logiciel

• Mauvaise spécification :
- Vague, incomplète, instables…

• Mauvaise estimation :
- Fausse, oublis, précisions insuffisantes…

• Mauvaise répartition des tâches :


- Organisation inadaptée, contraintes omises
- Ecart non détecté à temps

• Mauvaise réalisation technique


- Codage, tests, documentation

• Problèmes humains
- Mauvaise distribution des travaux
- Conflits, rétention d’’information
• Manque d’expérience du métier de chef de projet
13
Bugs

Raisons principales des bugs :


• Erreurs humaines
• Taille et complexité des logiciels
• Manque de méthodes de conception
• Négligence de la phase d'analyse des besoins du client
• Négligence et manque de méthodes et d'outils des phases de
validation/vérification

Exemple de Bugs : Healthcare.Gov en 2014, Sonde Mariner 1, 1962…

14
La crise du logiciel : naissance

Constat du développement logiciel depuis la fin des années 60 :

• Délais de livraison non respectés,


• Budgets non respectés,
• Ne répond pas aux besoins de l'utilisateur ou du client,
• Difficile à utiliser, maintenir, et faire évoluer.

15
La crise du logiciel : naissance

Étude du DoD 1995 Étude du Département de Défense des États-Unis sur les
logiciels produits dans le cadre de 9 gros projets militaires

16
La crise du logiciel : naissance

Standish group, Chaos Manifesto 2013 - Think Big, Act Small, 2013

17
Introduction

• Qu’est-ce que le génie logiciel ?

IEEE definition:

Le Génie Logiciel est l’application d’une approche systématique,


disciplinée et quantifiable au développement, à l’exploitation et à la
maintenance du logiciel. C’est-à-dire, l’application de l’ingénierie au
logiciel.

D’après MC. Gaudel :


Le Génie Logiciel est l’art de spécifier, de concevoir, de réaliser et de faire
évoluer, avec des moyens et dans des délais raisonnables, des programmes,
des documentations et des procédures de qualité en vue d’utiliser un
système informatique pour résoudre certains problèmes.

18
Introduction

• Génie Logiciel = Software Engineering.

• Né en octobre 1968 en Europe (OTAN)

• Objectifs : répondre au 2 problèmes :


- Non fiabilité du logiciel
- Difficulté de réalisation de logiciel dans les délais prévus et vérifiant le
cahier de charge.

• Génie Logiciel
Bases théoriques + Méthodes et outils validés par la pratique

Fabrication de systèmes informatisés complexes

19