Vous êtes sur la page 1sur 11

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

Vous aimerez peut-être aussi