Introduction au Génie Logiciel et Catégories de Logiciels
Introduction au Génie Logiciel et Catégories de Logiciels
Genie Logiciel
Positionnement du cours GL
Introduction au GL
Différentes étapes du processus de
développement
Modelisation Orientée Objet
Paradigme Objet
UML
2
Introduction au GL
Positionnement du cours GL
3
Donner une définition
Logiciel : Programming in the small
Programmation individuelle sur des petits
problèmes
4
Les différentes catégories de logiciel
Sur mesure (custom)
Pour un client spécifique
Générique (generic)
Vendu sur le marché
• un tableur (spreadsheet), un outil de base de donnée
(database)
• un outil de traitement de texte (word processor)
•…
Embarqués (embedded)
exécutent dans du matériel électronique isolé
machine à laver, télévision, lecteur DVD, téléphone mobile,
magnétoscope, four à micro-ondes, réfrigérateur, joueur
MP3, ...
Difficile à modifier
5
Les différentes catégories de logiciel
Logiciel à temps réel (real-time)
systèmes de contrôle et de surveillance
manipulent et contrôlent le matériel technique
Réaction immédiate requise
Environnement souvent très contraignant
6
Les différentes catégories du logiciel
Les systèmes distribués
synchronisent la transmission, assurent l’intégrité des
données et la sécurité, ...
Technologies utilisées
CORBA, DOM/DCOM, SOAP, EJB, …
7
La nature du logiciel
Le logiciel est facile à reproduire
Tout le coût se trouve dans son développement
Pour d’autres produits, la fabrication est souvent le
processus le plus coûteux
8
La nature du logiciel
Même des informaticiens peu qualifié peuvent
arriver à bricoler quelque chose qui semble fonctionner
La qualité d’un logiciel n’est pas apparente
9
La nature du logiciel
Raisons pour lesquelles le logiciel vieillit
maintenance (e.g., bug fixes)
érosion architecturale
inflexibilité dès le début
documentation insuffisante ou inconsistante
duplication de code
manque de modularité
complexité croissante
...
10
La nature du logiciel
Beaucoup de logiciels sont mal conçus et se
détériorent rapidement
11
Un peu d’histoire …
Années 50 et 60 : programmation empirique
production "artisanale" de logiciels scientifiques
royaume des "codeurs" et les "grands gourous"
12
Quelques statistiques
Étude du gouvernement américain en 1979
13
Échecs: Pannes logicielles
La sonde vers Vénus s'est perdue dans l'espace.
Cause : une erreur de programme FORTRAN,
virgule remplacée par un point.
14
Approches Méthodologiques
Crise de l'industrie du logiciel à la fin des
années 60 :
augmentation des coûts
difficultés d'évolution
non fiabilité
non respect des spécifications
non respect des délais
Apparition et développement
du Génie Logiciel
15
Génie Logiciel: définition
Génie Logiciel : Programming in the
large
Travail en équipe sur des projets complexes et
longs
Spécifications de départ « floues »
Dialogue avec les utilisateurs/clients : discours
métier
Organisation, planification, gestion du risque
16
Génie Logiciel: définition
Définition du génie logiciel (GL):
Domaine des ‘sciences de l’ingénieur’ dont la
finalité est:
la conception
la fabrication
la maintenance
de systèmes logiciels complexes, sûrs et de
qualité
(‘Software Engineering’ en anglais)
17
Génie Logiciel: Objectifs
Objectifs du génie logiciel: CQFD
Le GL se préoccupe des procédés de fabrication des
logiciels de façon à satisfaire les 4 critères suivants:
18
Génie Logiciel: Objectifs
La qualité correspond au contrat de service initial. La
qualité du logiciel est une notion multiforme qui
recouvre :
20
Génie Logiciel: Objectifs
la traçabilité : capacité à identifier et/ou suivre un
élément du cahier des charges lié à un composant
d'un logiciel
21
Génie Logiciel: Objectifs
Règle du CQFD :
Coût Qualité Fonctionnalités Délai
22
Génie Logiciel: Les 7 principes
fondamentaux
Rigueur
Séparation des problèmes
Modularité
Abstraction
Anticipation du changement
Généricité
Construction incrémentale
23
Rigueur
Le niveau maximum de rigueur est la
formalité: descriptions et validations
s’appuient sur des notations et lois
mathématiques.
Séparations des ‘vues’ que l’on peut avoir d’un système (ex
: se concentrer sur l’aspect ‘flots de données’ avant de
considérer l’aspect ordonnancement des opérations ou ‘flot
de contrôle’)
26
Abstraction
L’abstraction consiste à ne considérer
que les aspects jugés importants d’un
système à un moment donné, en
faisant abstraction des autres aspects
27
Anticipation du changement
Un logiciel est presque toujours soumis à des
changements continuels (corrections d'imperfections
et évolutions en fonctions des besoins qui changent)
28
Généricité
Il est parfois avantageux de remplacer
la résolution d’un problème spécifique
par la résolution d’un problème plus
général
29
Construction incrémentale
Un procédé incrémental atteint son but
par étapes en s’en approchant de
plus en plus; chaque résultat est
construit en étendant le précédent
30
Introduction au GL
Analyse du Conception
système
Validation
Implémentation
Maintenance
32
Cycle de Vie « Traditionnel »
QUOI ? Analyse
Cahier des Charges
COMMENT ? Conception
Découpage en modules Développement
Implémentation
Code
Test
Logiciel opérationnel
Maintenance 33
Répartition du coût de développement
34
Cycle de Vie Logiciel
Retrait
Gestion
Analyse
Activités techniques
Conception
Implémentation
Tests Maintenance
Étude
&
préalable
Installation Assistance
Documentation
Vérification et Validation (V&V)
35
Gestion des configuration
Documentation
Analyse du Conception
système
Validation
Implémentation
Maintenance
39
Analyse des besoins
Étape préalable si le client n’a pas une idée
précise du système à réaliser
40
Étapes du processus de
développement
Analyse des Spécifications
besoins
Analyse du Conception
système
Validation
Implémentation
Maintenance
41
Spécifications
Analyse du Conception
système
Validation
Implémentation
Maintenance
43
Analyse du système
Quoi faire ? : comprendre et modéliser le métier
Réflexion métier hors de toute considération technique
Reste un support de discussion avec le
client/utilisateur (questions/réponses)
Premier modèle du système (niveau métier)
Identifier les éléments intervenant (acteurs) hors et
dans le système: fonctionnalités, structure et
relations, états par lesquels ils passent suivant
certains événements
L’analyse n’est jamais complète, mais elle doit être juste
Établissement du cahier des charges
et des contraintes du système
44
Étapes du processus de
développement
Analyse des Spécifications
besoins
Analyse du Conception
système
Validation
Implémentation
Maintenance
45
Conception
Comment faire le système: choix techniques
Choix d’une architecture technique (matérielle,
logicielle) suivant certaines contraintes (robustesse,
efficacité, performances, portabilité …)
Expertise informatique: hors compréhension du client
Modèle de l’architecture logicielle du système
Décomposition en sous systèmes: application
(interfaces), domaine (métier) et infrastructure
(implémentation)
Permet la définition des phases d’implémentions, de
validation et de maintenances
Analyse du Conception
système
Validation
Implémentation
Maintenance
47
Implémentation
Trop de temps consacré à cette phase au
détriment d’analyse et de conception:
mauvaise pratique, parfois très coûteuse …
48
Étapes du processus de
développement
Analyse des Spécifications
besoins
Analyse du Conception
système
Test
Implémentation
Maintenance
49
Test
Tests de vérification
Vérification de la robustesse et cohérence du
système, en particulier dans les cas d’exceptions
Testeur est différent du concepteur ou du
développeur
Logiciels de tests: toute ligne de code doit être testée
Différentes méthodes de validation (voir cours Master
méthodes formelles)
Recette
Validation client: accord avec les besoins
Planification dès spécifications: cahier de recettes
50
Étapes du processus de
développement
Analyse des Spécifications
besoins
Analyse du Conception
système
Validation
Implémentation
Maintenance
51
Maintenance
Deux types de maintenance
Correction des erreurs du système (Curative)
Demande d’évolution (modification de
l’environnement technique, nouvelle
fonctionnalités …) (Evolutive)(Adaptative)
Facteurs da qualité essentiels
Corrections: robustesse
Évolution: modificabilité, portabilité
52
Processus de développement
Processus de développement
une certaine modélisation,
décomposition du processus global de
la production de logiciels afin de mieux
maîtriser la complexité, les temps de
réalisation et les coûts
enchaînement d ’étapes, de sous-
processus
Processus ?
Modèle ? 53
Modèles de Cycle de vie du
logiciel
modèle de la cascade (plusieurs variantes)
modèle en V
modèle du prototypage
modèle de la programmation exploratoire
modèle en spirale
modèle incrémental
modèle de la transformation formelle
Modèle MDA en Y (Master Ingénierie des Modèles)
etc.
54
Modèle de la cascade
Analyse V&V
Conception V&V
Codage V&V
Intégration
et Tests V&V
Exploitation /
Maintenance
55
Modèle de la cascade
56
Modèle de la cascade
Avantages
Facile à comprendre
Le plus utilisé dans l’industrie
Inconvénients
Approche purement séquentielle et
« simpliste »
Il est rare que le client puisse fournir toutes les
spécifications dès le début du projet.
Le client ne reçoit pas les résultats concret
pendant le développement du logiciel
57
Modèle en V
Installation
Analyse
et Tests
V&V
Conception Intégration
Globale et Tests
Conception
Tests unitaires
Détaillée
Codage
58
Modèle en V : Principe
Inconvénients : 60
Modèle du Prototypage
Essai du prototype
par le Client
62
Modèles – Prototypage :
avantages et inconvénients
Le client participe activement dans le développement du produit;
Le client reçoit des résultats tangibles rapidement ;
expérimentation rapide ou des fonctions voulue par les utilisateurs
Introduction d’un feedback immédiat de la part des utilisateurs
Vérification du comportement réel (mais partiel) du système
Amélioration de la COMMUNICATION entre d’une part le client et
l’analyste, d’autre part l’analyste et le concepteur
Expression claire
des besoins réels
Spécifications
définitives
65
Modèles - Prototypage exploratoire:
Cas d’une application
BOEHM cite l’exemple d’un système d’aide à
la décision pour les systèmes de diagnostic
médical où le simple recensement des
traitements informatiques à effectuer et des
informations à manipuler peut être 100 fois
plus coûteux que la modification du cahier des
charges issu d’une analyse moins poussée.
Cette analyse est suivie par un développement
RAPIDE d’un prototype du système,
permettant une expérimentation. Cette
démonstration concrète avec les futurs
utilisateurs peut servir comme catalyseur pour
révéler les besoins réels, les bonnes idées, etc.66
Modèle en spiral
Planification
Communication Analyse
avec le client des risques
Ingénierie
Évaluation par
le client
Construction et
déploiement 67
Modèle en spiral : Principe
Modèle plus général que les autres modèles
Il met l’accent sur une activité particulière :
l’analyse des risques
Le modèle est divisé en « région-tâches » qui
sont :
Communication avec le client et détermination des
objectifs du cycle, des alternatives pour les atteindre, les
contraintes à partir du résultat précédent, analyse
préliminaire des besoins…
Planification des activités du projet
Analyse des risques, évaluation des alternatives…
Ingénierie nécessaire à la réalisation des activités
Déploiement des activités
Vérification de la solution retenue par le client et 68
planification du cycle suivant.
Modèle en spiral : Principe …
Les activités du projet commencent par le
spiral le plus profond
Chaque tour passe par les région tâches
L’accomplissement des phases du projet est
le résultat de l’application des tâches prescrites
par les régions
Un tour du modèle résulte en un prototype
On obtient un raffinement du produit en
parcourant plusieurs tours du modèle
69
Modèle en spiral : Exemple
Planification
Analyse
Communication des risques
avec le client
Construction et
déploiement
70
Modèle en spiral : explication
de l’exemple
Le premier tour résulte de la spécification du logiciel,
les tâches à réaliser pour cette spécification :
Communiquer avec le client pour obtenir les spécifications
Planifier le projet et les étapes de l’analyse des spécifications
Évaluer les risques technologiques des techniques d’analyse
Décider sur les techniques à utiliser pour l’analyse des
spécifications
Réalisation proprement dite de l’analyse des spécifications
Présenter les résultats au client
On réalisera les autres tours du modèle de la même
façon
On profitera de la région « planification » pour
réajuster le plan du projet
71
Modèle en spiral : Avantages et
inconvénients
AVANTAGES
Modèle réaliste et naturel
Conserve le caractère « étapiste » du modèle
en cascade mais l’intègre dans une approche
itérative
Le risque est un facteur qui est tenu en compte
explicitement dans ce modèle.
INCONVENIENTS
Il est difficile de faire comprendre au client le
mode d’opération de ce modèle
L’évaluation des risques exige une expertise
spécifique 72
Modèle Incrémental : Principe
Conception Conception …
Incrément 3
globale détaillée
temps
74
Modèle Incrémental :
Avantages et inconvénients
AVANTAGES
Chaque développement est moins complexe
Les intégrations sont progressives
Il peut y avoir des livraisons et des mises en service après
chaque intégration d’incrément
Permet d’optimiser le temps et le partage de tâche
(contrairement aux autres modèles)
Diminution d’effort pendant la phase de tests d’intégration
INCONVENIENTS
Le risque majeur de ce modèle est de voir remettre en
cause le noyau ou les incréments précédent (définition
globale des incréments et de leurs interactions dès le début
du projet).
Les incréments doivent être indépendants aussi bien
fonctionnellement qu’au niveau des calendriers de
développement 75
Modèle de la transformation
formelle
Besoins exprimé
formellement
Code du logiciel
76