GENERALITES
Définitions de logiciel Cycle de vie d’un logiciel
CaraCtéristiques d’un logiCiel etapes du CyCle de vie d’un logiCiel
Crise du logiciel Documents courants du cycle de vie
d’un logiCiel
Raison de la faible qualité de
logiciel Modèle en cascade
Définition de génie logiciel Modèle en V
Réponse à la crise de logiciel Modèle incrémental
Objectifs du génie logiciel Modèle en spirale
Critères de qualité d’un logiCiel
1
Définitions de Logiciel
Logiciel
Ensemble d'entités (programmes, données,
documentation, etc.) nécessaires au fonctionnement d'un
processus de traitement automatique de l'information
Ensemble de programmes qui permet à un système
informatique d’assurer une tâche ou une fonction en
particulier
Logiciel = programme + utilisation
2
Crise du Logiciel
Constat fait sur le développement logiciel fait en fin
années 60
Les délais de livraison non respectés
Les budgets non respectés
Les logiciels ne répondent pas aux besoins de l'utilisateur
ou du client
Les logiciels difficiles à utiliser, maintenir, et faire évoluer
3
Crise du Logiciel
Une étude du Department of Defense des États-Unis
réalisée en 1995 sur les logiciels produits dans le cadre de
9 gros projets militaires a donné lieu au diagramme
suivant
4
Crise du Logiciel
5
Crise du Logiciel
Une enquête menée en 2013 par la Standish group sur
des milliers de projets, de toutes tailles et de tous secteurs
a donné lieu à l’histogramme suivant
6
Crise du Logiciel
7
Crise du Logiciel
Comparaison entre petits et grands projets
8
Raisons de la faible
qualité des logiciels
Tâche complexe
Taille et complexité des logiciels
Taille des équipes de conception/développement
Manque de méthodes et de rigueur
Manque de méthodes de conception
Négligence et manque de méthodes et d'outils des phases de
validation/vérification
Mauvaise compréhension des besoins
Négligence de la phase d'analyse des besoins du client
Manque d'implication du client dans le processus
9
Raisons de la faible
qualité des logiciels
Difficultés spécifiques du logiciel
Conséquences critiques causées par modifications infimes
Mises à jour et maintenance dues à l'évolution rapide de la
technologie
Défaillances logicielles principalement humaines
10
Définition du Génie
Logiciel
Génie logiciel: Ensemble des méthodes, des techniques
et d’outils dédiés à la conception, au développement et à
la maintenance des systèmes informatiques
L’Idée est d’appliquer les méthodes classiques
d'ingénierie au domaine du logiciel
Ingénierie (ou génie) : Ensemble des fonctions allant de
la conception et des études à la responsabilité de la
construction et au contrôle des équipements d'une
installation technique ou industrielle
11
Réponse à la crise du
logiciel
La solution imaginée pour répondre à cette crise a été
l’industrialisation de la production du logiciel.
Cette industrialisation vise la maîtrise du processus de
développement et définit pour cela des procédés de fabrication de
manière à satisfaire :
les besoins des utilisateurs,
la qualité du logiciel,
les coûts du logiciel,
les délais de production du logiciel.
12
Réponse à la crise du
logiciel
Le Génie Logiciel a ainsi pour principal objectif, la recherche
permanente des moyens pour réussir à maîtriser :
le développement,
le fonctionnement,
Et la maintenance du logiciel.
Ces moyens sont les suivants :
les modèles,
les langages,
la démarche,
les outils
13
Réponse à la crise du
logiciel
Les modèles
Un modèle est une représentation simplifiée d’une réalité.
Ils sont conçus avec un ensemble de concepts, dotés de
règles d’utilisation et de représentation (souvent
graphiques).
Ils guident le raisonnement dans l’identification des
aspects pertinents du domaine qu’on étudie.
14
Réponse à la crise du
logiciel
Les langages
Ils permettent de décrire les aspects pertinents du
système.
Ils peuvent être textuels ou graphiques, naturels ou
formels
La démarche
Elle découpe le processus de conception en étapes
successives à enchaîner.
15
Réponse à la crise du
logiciel
Les outils
Ils constituent le support automatique ou semi-
automatique pour les méthodes.
Ils permettent ainsi d’automatiser partiellement ou
totalement certaines phases du processus de conception.
On trouve ainsi des outils d’aide à la conception, des outils
de simulation, des outils d’aide à la vérification, etc.
16
Objectifs du Génie
Logiciel
Le Génie Logiciel se préoccupe des procédés de fabrication
de logiciels de façon à s’assurer que le produit qui est
fabriqué :
Réponde aux besoins des utilisateurs : Fonctionnalités
Reste dans les limites financières prévues au départ : Coût
Corresponde au contrat de service initial : Qualité
Reste dans les limites de temps prévues au départ : Délai
=> Règle du CQFD: Coût Qualité Fonctionnalités Délai
17
Critères de qualité d’un
logiciel
L'utilité: adéquation entre le besoin effectif de l’utilisateur
et les fonctions offertes par le logiciel.
Il faut mettre l’accent sur l’analyse des besoins
La Fiabilité: aptitude d’un logiciel à être conforme à ses
spécifications, et produire les résultats attendus
La robustesse: aptitude d’un logiciel à fonctionner
raisonnablement en toutes circonstances, tout en évitant
des situations catastrophiques même en dehors des
conditions d’utilisation prévues
18
Critères de qualité d’un
logiciel
L'interopérabilité: aptitude pour un logiciel à pouvoir
interagir en synergie avec d’autres logiciels
La performance: aptitude pour un logiciel à pouvoir
satisfaire aux contraintes de temps d’exécution.
Pour y arriver, il faut veiller à la complexité des
algorithmes et opter pour des machines plus
performantes
La facilité d’utilisation: aptitude pour le logiciel à
nécessiter le moins d’effort possible de la part de ses
utilisateurs, tout en produisant les résultats escomptés
19
Critères de qualité d’un
logiciel
La portabilité: aptitude pour un même logiciel à pouvoir
fonctionner sur plusieurs machines.
Il faut pour cela rendre le logiciel indépendant de son
environnement d’exécution
La maintenabilité: aptitude pour un logiciel à pouvoir
subir des corrections et/ou des améliorations.
La réutilisabilité: aptitude pour un code à être réutilisable
par d’autres.
L’idéal est donc de construire son logiciel à partir de
composants prêts à l’emploi
20
Cycle de vie d’un logiciel
Le cycle de vie d'un logiciel est l’ensemble des étapes de
développement du logiciel, depuis sa conception jusqu’à sa
disparition
Cela couvre de la création du logiciel à sa disparition en
passant par son utilisation
Le but du découpage du processus est de maîtriser les
risques, maîtriser au mieux les délais et les coûts et
obtenir une qualité conforme aux exigences.
21
Etapes du cycle de vie
d’un logiciel
Etude de faisabilité: Il s’agit de déterminer si le
développement proposé vaut la peine d’être mis en œuvre,
compte tenu des attentes et de la difficulté de
développement
22
Etapes du cycle de vie
d’un logiciel
Analyse des besoins: Il s’agit de comprendre les besoins
du client
Objectifs généraux, environnement du futur système,
ressources disponibles, contraintes de performance…
Fournie par le client (expert du domaine d'application,
futur utilisateur…)
=> Rédaction d’un cahier des charges fonctionnel
(document côté métier/utilisateur).
23
Etapes du cycle de vie
d’un logiciel
Spécification : Il s’agit de la traduction des besoins
analysés en exigences techniques et détaillées.
Spécifications fonctionnelles détaillées (cas d’utilisation
UML, règles métiers).
Spécifications techniques (choix des technologies,
architecture, contraintes techniques).
Interfaces attendues (maquettes, IHM, API).
=> Rédaction du document de spécifications techniques
(DST).
24
Etapes du cycle de vie
d’un logiciel
Organisation du projet: Il s’agit de déterminer comment le logiciel
sera développé. Elle passe par :
L’analyse des coûts: Il s’agit d’établir une estimation du prix du
projet.
La planification des taches: Il s’agit d’établir un calendrier de
développement du projet.
L’assurance qualité du logiciel: Il s’agit de déterminer les actions
qui permettront de s’assurer de la qualité du produit fini.
La répartition des tâches: Il s’agit de hiérarchiser les tâches et les
sous-taches nécessaires au développement du logiciel.
=> Rédaction du plan de gestion de projet logiciel ou Software Project
Management Plan (SPMP)
25
Etapes du cycle de vie
d’un logiciel
Conception: Il s’agit de déterminer la façon dont le logiciel
fournit les différentes fonctionnalités recherchées. Elle englobe :
La conception générale: Il s’agit de déterminer la structure du
système (conception architecturale), et de déterminer la
façon dont les différentes parties du système agissent entre
elles (conception des interfaces).
La conception détaillée: Il s’agit de déterminer les algorithmes
pour les différentes parties du système.
=> Rédaction du document de conception logicielle ou Software
Design Document (SDD)
26
Etapes du cycle de vie
d’un logiciel
Implémentation ou codage: Il s’agit de l’implantation de la
solution conçue
Choix de l'environnement de développement
Choix du/des langage(s) de programmation
Choix des normes de développement...
=> Rédaction d’une documentation technique de
développement
27
Etapes du cycle de vie
d’un logiciel
Tests: Il s’agit d’essayer le logiciel sur des données
d’exemple afin de s’assurer qu’il fonctionne correctement.
Ils englobent :
Les tests unitaires: Il s’agit de faire tester les parties du
logiciel par leurs développeurs
Les tests d’intégration: Ce sont les tests effectués pendant
l’intégration des modules
Les tests de validation: Il s’agit des tests pour
l’acceptation par l’acheteur
28
Etapes du cycle de vie
d’un logiciel
Les tests système: Il s’agit de faire des tests dans un
environnement proche de l’environnement de production
Les tests de régression: Il s’agit d’enregistrer les résultats
des tests et de les comparer à ceux des anciennes versions
pour vérifier si la nouvelle n’en a pas dégradé d’autres
=> Rédaction d’un rapport de tests ou Test Report
29
Etapes du cycle de vie
d’un logiciel
Déploiement: Il s’agit de fournir au client une solution
logicielle qui fonctionne correctement. Elle englobe :
L’installation: Il s’agit de rendre le logiciel opérationnel sur le
site du client
La formation: Il s’agit d’enseigner aux utilisateurs à se servir du
logiciel
L’assistance: Il s’agit de répondre aux questions des utilisateurs
=> Rédaction d’un manuel utilisateur / guide d’installation
=> Rédaction d’un guide de formation (si formation prévue)
30
Etapes du cycle de vie
d’un logiciel
Maintenance: Il s’agit de Mettre à jour et d’améliorer le
logiciel pour assurer sa pérennité. Il existe 3 types de
maintenance:
La maintenance corrective: Il s’agit d’identifier les
défaillances de fonctionnement, de localiser les parties de
code responsables, puis de corriger et d’estimer l’impact
de la modification.
La maintenance perfective: Il s’agit d’accroître ou
d’améliorer les possibilités du logiciel
31
Etapes du cycle de vie
d’un logiciel
La maintenance adaptative: Il s’agit d’ajuster le logiciel
pour qu’il continue de remplir son rôle en tenant compte
de l’évolution des environnements d’exécution, des
fonctions à satisfaire et des conditions d’utilisation
=> Rédaction d’un rapport de maintenance (par
intervention)
=> Rédaction d’un journal de maintenance (suivi global)
=> Rédaction d’une documentation mise à jour (technique
et utilisateur)
32
Modèles de développement
d’un logiciel
Il existe plusieurs modèles de développement de logiciels,
parmi les plus courants:
Le modèle en cascade
Le modèle en V
Le modèle incrémental
Le modèle en spirale
Les méthodes agiles
…
33
Modèle en cascade
Modèle en cascade
Il a été formalisé en 1970.
Il s’agit d’un modèle linéaire avec phases séquentielles qui
s’assure des vérifications à chacune des phases avec à l’issue,
production de document avant de passer à la phase suivante.
La découverte d'une erreur entraîne retour à la phase à
l'origine de l'erreur et nouvelle cascade, avec de nouveaux
documents
Ce modèle est adapté aux projets de petite taille, et dont le
domaine est bien maîtrisé
34
Modèle en cascade
35
Modèle en V
Modèle en V
Il a vu le jour dans les années 1980.
Il s’agit d’un modèle linéaire, dérivé du modèle en cascade
Il est adapté à des projets dont le domaine est bien maîtrisé
36
Modèle en V
37
Modèle incrémental
Modèle incrémental
Ce modèle prend en compte le fait qu'un logiciel peut
être construit étape par étape.
La réalisation se fait par incréments de fonctionnalités.
Chaque incrément est intégré à l'ensemble des
précédents et à chaque étape le produit est testé,
exploité et maintenu dans son ensemble.
38
Modèle incrémental
Modèle incrémental
Principe :
• Hiérarchiser les besoins du client
•Concevoir et livrer au client un produit implantant un
sous ensemble de fonctionnalités par ordre de priorité
39
Modèle incrémental
40
Modèle incrémental
41
Modèle en spirale
Le modèle en spirale met l'accent sur l'activité d'analyse des risques.
Chaque cycle de la spirale se déroule en quatre phases :
1. Détermination des objectifs du cycle, des alternatives pour les
atteindre et des contraintes,
2. Identification et résolution des risques : évaluation des
alternatives et, éventuellement maquettage,
3. Développement et vérification/validation de la solution retenue,
un modèle « classique » (cascade ou en V) peut être utilisé ici,
4. Planification, revue des résultats et vérification du cycle suivant.
42
Modèle en spirale
43