ENI - L3
Définition du logiciel
Un logiciel (software) est l’ensemble des
programmes, des procédures et des
Introduction au Génie Logiciel
documentations nécessaires au
fonctionnement d’un système informatique.
RAZAFIMAHATRATRA Hajarisena
Docteur en Informatique Année: 2023
Critères de qualité du logiciel Critères de qualité du logiciel
Exactitude Extensibilité
Aptitude d’un logiciel à fournir des résultats voulus dans les Facilité avec laquelle un programme pourra être adapté
conditions normales d’utilisation. pour faire face à une évolution des besoins de l’utilisateur.
Robustesse Réutilisabilité
Aptitude à bien réagir lorsque l’on s’écarte des conditions
normales d’utilisation. Possibilité d’utiliser certaines parties du logiciel pour
Exemple : IP (Internet Protocol). Le succès d’Internet est développer un autre logiciel répondants à d’autres besoins.
du à la robustesse du protocole de communication utilisé. Cette notion est souvent relié à l’orienté objet où une
Un datagramme IP arrive à destination même si un réseau classe générale sera facilement réutilisable.
local est inaccessible.
Caractéristiques du logiciel -1
Critères de qualité du logiciel
le logiciel est facile à reproduire
Portabilité
Facilité avec laquelle on peut exploiter un logiciel dans Tout le coût se trouve dans le développement
différentes implémentations. Exemple Windows 95 ou
Linux. le logiciel est immatériel et invisible
On ne peut l’observer qu’en l’utilisant
Efficience La qualité n’est pas vraiment apparente
Temps d’exécution, taille mémoire… Difficile d’estimer l’effort de développement
développement difficile à automatiser
Beaucoup de main-d’œuvre nécessaire …
1
ENI - L3
Caractéristiques du logiciel -2 Différentes catégories de logiciels
le logiciel ne s’use pas, mais il vieillit
Détérioration suite aux changements :
sur-mesure : pour un client spécifique
complexification indue
duplication de code
introduction d’erreurs
générique : vendu sur un marché
Mal conçu au départ :
inflexibilité
manque de modularité
documentation insuffisante
Evolution du matériel
Différents types de logiciels Problématique historique du logiciel
système d’information et d’aide à la « D’une part le logiciel n’est pas fiable,
décision
d’autre part il est incroyablement difficile de
logiciel temps-réel réaliser dans les délais prévus des logiciels
logiciel embarqué satisfaisant leur cahier des charges »
logiciel distribué
Le logiciel n’est pas fiable … Délais et exigences non satisfaits …
Quelques exemples célèbres :
Quelques exemples célèbres :
1ère sonde Mariner vers Vénus
perdue dans l’espace (erreur Fortran) OS 360 d’IBM
navette spatiale en retard, dépassement mémoire et prix, erreurs
lancement retardé (problème logiciel) Aéroport de Denver (système de livraison des bagages)
ATT 1 an de retard
appels longue distance suspendus (changement de version) SNCF (système Socrate)
avion F16 difficultés importantes
retourné à l’équateur (non prise en compte hémisphère sud)
bug de l’an 2000
Tout système comporte des bugs …
2
ENI - L3
Abandons … Naissance d’une nouvelle discipline
Historique
Quelques exemples célèbres :
Problématique apparue dès les années 1960
EDF (contrôle-commande centrales 1400 MWatts)
renonce après plusieurs années d’efforts Conférence parrainée par l’OTAN (1968)
bourse de Londres (projet d’informatisation)
abandon : 4 années de travail + 100 ML perdus
Naissance du « Génie Logiciel » (software
engineering)
Etats-Unis (système de trafic aérien)
abandon
La non rencontre des exigences et les
dépassements de délais sont fréquents : 300 à
400 %
Naissance d’une nouvelle discipline Définition du « Génie Logiciel »
Objectif Processus visant :
Démarche de développement ingénierique
la résolution de problèmes posés par un client
Principes, méthodes, outils par le développement systématique et l’évolution
Techniques de fabrication assurant : de systèmes logiciels de grande taille et de haute
respect des exigences qualité
respect de la qualité
en respectant les contraintes de coûts, de temps, et
respect des délais et des coûts
autres
Résolution de problèmes posés par un client … Développement systématique et évolution …
identifier et comprendre le problème à techniques maîtrisées, organisation,
résoudre rigueur
solution utile résolvant un problème concret bonnes pratiques standardisées (IEEE, ISO)
la solution peut être de ne rien développer ! la plupart des projets consistent en une
évolution
3
ENI - L3
Systèmes de grande taille et haute qualité … Respectant les contraintes …
travail en équipe(s) les ressources sont limitées (temps,
bonne coordination essentielle argent, …)
principal défi : subdiviser et recomposer le bénéfice doit être supérieur aux coûts
harmonieusement la productivité doit rester concurrentielle
produit final : critères de qualités bien établis mauvaise estimation échec
Transition …
Risques majeurs du développement de
logiciels :
ne pas remplir les exigences du client
Méthodes du Génie Logiciel
produire un logiciel non fiable
Méthodologies de développement
dépasser les délais, les coûts et autres
contraintes
Introduction Activités du développement de logiciel
Comme pour tout produit manufacturé
complexe : Analyse des besoins
on décompose la production en « phases » Spécification
l’ensemble des phases constitue un « cycle de Conception
vie » Programmation
les phases font apparaître des activités clés Intégration
Vérification et validation
4
ENI - L3
Analyse des besoins Spécification
But : But :
déterminer ce que doit faire (et ne pas faire) le logiciel établir une 1ère description du futur système
déterminer les ressources, les contraintes consigner dans un document qui fait référence
Caractéristiques : Données :
parler métier et non info résultats de l’analyse des besoins + faisabilité informatique
entretiens, questionnaires
observation de l’existant, étude de situations similaires Résultat : Spécification Technique de Besoin (STB)
ce que fait le logiciel, mais pas comment
Résultat : ensemble de documents
rôle du système Remarques :
future utilisation
pas de choix d’implémentation
aspects de l’environnement
(parfois) un manuel de référence préliminaire
(parfois) un manuel d’utilisation préliminaire
Conception Conception architecturale
But : But : décomposer le logiciel en composants
décrire comment le logiciel est construit mettre au point l’architecture du système
décider comment utiliser la techno. pour répondre aux besoins définir les sous-systèmes et leurs interactions
concevoir les interfaces entre composants
Travail :
enrichir la description de détails d’implémentation
pour aboutir à une description très proche d’un programme Résultat :
description de l’architecture globale du logiciel
2 étapes : spécification des divers composants
conception architecturale
conception détaillée
Conception détaillée Programmation
But : élaborer les éléments internes de chaque sous- But :
syst. passer des structures de données et algorithmes à un
ensemble de programmes
Résultat :
pour chaque composant, description des
structures de données, algorithmes Résultat :
ensemble de programmes
Remarque : ensemble de bibliothèques / modules
documentés (commentaires)
si la conception est possible, la faisabilité est démontrée
sinon, la spécification est remise en cause
Remarque :
activité la mieux maîtrisée et outillée (parfois automatisée)
5
ENI - L3
Gestion de configurations et Vérification
Intégration
Gestion de configurations : But : vérifier par rapport aux spécifications
gérer les composants logiciels (programmes, bibliothèques, …) vérifier que les descriptions successives
maîtriser leur évolution et leurs mises à jour (et in fine le logiciel) satisfont la STB
Moyens : revues de projet, tests
Intégration : test = chercher des erreurs dans un programme
exécution sur un sous-ensemble fini de données
assembler les composants pour obtenir un système
exécutable
4 types de tests :
test unitaire : composants isolés
test d’intégration : composants assemblés
test système : système installé sur site
test d’acceptation : testé par l’utilisateur
Validation Maintenance
But : vérifier par rapport aux utilisateurs But :
corriger des défauts
améliorer certaines caractéristiques
suivre les évolutions (besoin, environnement)
Moyen : revues de projet
Remarque :
peut remettre en cause les fonctions du système
peut impliquer un re-développement (re-ingeneering)
Maquettage / Prototypage Répartition des activités
But : Actuellement, dans un projet logiciel bien conduit :
préciser les besoins et les souhaits des utilisateurs
développer rapidement une ébauche du système
40 % Analyse, Spécification, Conception
2 types de maquettes : 20 % Programmation
maquette exploratoire : spécification
maquette expérimentale : conception
40 % Intégration, Vérification, Validation
6
ENI - L3
Résumé Introduction
analyse des besoins Modèle de développement ?
spécification descriptions enchaînements et interactions entre les activités
de plus en plus
(maquettage)
précises But pour le projet : ne pas s’apercevoir des
conception problèmes qu’à la fin
architecturale = contrôler l’avancement des activités en cours
détaillée vérifier / valider les résultats intermédiaires
raffinements
programmation
Objectif général : obtenir des processus de
config. et intégration développement
vérif. et validation rationnels
Exécutable + Doc. contrôlables
maintenance reproductibles
Modèles de développement logiciel Modèle en cascade
modèle en cascade (fin des années 1960)
modèle en V (années 1980)
modèle en spirale (Boehm, 1988)
Modèle en cascade Modèle en V
principe : le développement se divise en étapes
une étape se termine à une certaine date
des docs ou prog sont produits à la fin de chaque
étape
les résultats d’étapes sont soumis à revue
on passe à l’étape suivante si l’examen est
satisfaisant
une étape ne remet en cause que la précédente
commentaire :
modèle séduisant car simple
moyennement réaliste (trop séquentiel)
7
ENI - L3
Modèle en V Modèle en spirale
principe : les premières étapes préparent les
dernières
interprétation : 2 sortes de dépendances entre
étapes
en V, enchaînement séquentiel (modèle en cascade)
de gauche à droite, les résultats des étapes de départ
sont utilisés par les étapes d’arrivée
commentaire :
avec la décomposition est écrite la recomposition
vérification objective des spécifications
modèle plus élaboré et réaliste
éprouvé pour de grands projets, le plus utilisé
Modèle en spirale Résumé
principe : développement itératif (prototypes)
modèles : enchaînements et interactions entre étapes
interprétation: chaque mini-cycle se déroule en 4
phases
passage d’une étape à la suivante :
1. Analyse des besoins, Spécification
documents, tests
2. Analyse des risques, Alternatives, Maquettage vérifiés et validés
3. Conception et Implémentation de la solution retenue
3 modèles : cascade, V, spirale (séquentiels et
4. Vérification, Validation, Planification du cycle suivant
itératif)
commentaire :
nouveau : analyse de risques, maquettes, prototypage
cascade : simple mais pas très réaliste
modèle complet, complexe et général
spirale : nouvelles notions, très complet mais lourd
effort important de mise en œuvre
utilisé pour projets innovants ou à risques V : assez réaliste, le plus éprouvé et utilisé
Maturité du processus de Niveaux de maturité
développement
Notion définie par le SEI (Software Engineering
Institute)
Capacity Maturity Model (CMM)
5 niveaux de maturité :
Initial
Reproductible
Défini
Géré
Optimisé
8
ENI - L3
Etude américaine (1991) Etude américaine (1999)
Etude SEI Etude SEI
Organisations américaines Organisations américaines
Différentes perceptions de la qualité …
QUALITÉ
EXTERNE
Principes du Génie Logiciel
Vers une assurance qualité …
QUALITÉ
INTERNE
Facteurs de qualité -1 Facteurs de qualité -2
Qualité externe : Qualité interne :
complétude fonctionnelle adaptabilité
réalise toutes les tâches attendues facile à modifier, à faire évoluer
réutilisabilité
ergonomie / convivialité des parties peuvent être réutilisées facilement
facile d’utilisation
apprentissage aisé traçabilité / compréhension
le fonctionnement du logiciel est facile à comprendre
fiabilité / robustesse efficacité / performance
tâches effectuées sans problème bonne utilisation des ressources (mémoire, cpu, …)
fonctionne même dans des cas atypiques
portabilité
capacité à marcher dans un autre contexte ou env.
9
ENI - L3
Comment agir sur la qualité logicielle ? Rigueur et formalisme
La qualité est atteinte ou améliorée en
appliquant certains principes : rigueur = précision, exactitude (confiance en la
fiabilité)
rigueur et formalisme formalisme = le plus haut degré de rigueur
séparation des préoccupations (mathématiques)
nécessaire pour les parties critiques (haut risque)
modularité peut être utilisé dans chaque phase
généralité / abstraction spécification formelle
vérification formelle (preuve)
incrémentalité analyse de complexité d’algorithmes
…
anticipation des changements
Séparation des préoccupations -1 Séparation des préoccupations -2
différentes sortes de séparations :
séparation de domaine
principe : traiter séparément les ≠ aspects d’un
domaine de problème : quoi résoudre ?
problème diviser pour régner domaine de solution : comment résoudre ?
séparation de temps : phases du cycle de vie
résultat : réduit la quantité de complexité à contrôler séparation de qualité
maquettes, prototypes
conception globale, détaillée
vues séparées sur le logiciel : modélisation en UML
cas d’utilisation, structure statique
comportement dynamique, architecture
séparation de responsabilités : org. en équipes projet
Modularité Généralité / Abstraction
principe : séparer le système en composants logiques principe :
généraliser un problème particulier
modules le rendre réutilisable dans d’autres contextes
avantages :
exemple :
réduction de complexité
logiciel générique vs logiciel sur mesure
les modules peuvent être
design : des solutions généralisées pour des
conçus et construits séparément problèmes typiques de conception
réutilisés
système modifié en changeant un nombre limité de modules
10
ENI - L3
Incrémentalité Anticipation des changements
le logiciel évolue constamment pour différentes
principe :
développer le logiciel en une série d’incréments raisons :
se rapprocher de la solution par raffinements successifs réparation des erreurs détectées
adaptation à de nouveaux environnements
exemple : traitement de nouvelles exigences
phase de conception changements dans les exigences
changement des formats de données
cycle de vie en spirale
changement d’exigences non-fonctionnelles
avant de développer, poser les
questions :
quels changements, où ?
comment les rendre plus faciles à appliquer ?
Résumé Résumé général
la qualité du logiciel est fondamentale logiciel ≠ programme
problèmes : pas fiable
elle est aperçue différemment selon les points de
dépassements (délais, coûts)
non conforme au cahier des
vue : charges
qualité externe : client, utilisateurs
génie logiciel : démarche ingénierique
qualité interne : développeurs, gestionnaires
méthodes, principes, outils
méthodes : processus de développement
pour l’atteindre, on adopte des principes
activités et modèles (cascade, V,
spirale)
participation des activités et modèles de développement
l’utilisation de l’approche OO participe aussi beaucoup principes : pour atteindre des objectifs de qualité
à remplir ces objectifs
outils : Ateliers de Génie Logiciel (AGL)
Conclusion
situation en progrès : logiciel plus fiable
plus facilement modifiable
satisfait mieux les utilisateurs
en contrepartie, les problèmes sont plus critiques,
centr. téléph., centrales nucléaires
avions, spatial, ferroviaire
banque, bourse, …
plus complexes,
de plus en plus de fonctionnalités
systèmes distribués
mutations technologiques rapides
et les exigences plus fortes (fiabilité, permanence du service)
la maîtrise du logiciel reste un défi scientifique et
technologique majeur
11