GL Ch 1

Télécharger au format pptx, pdf ou txt
Télécharger au format pptx, pdf ou txt
Vous êtes sur la page 1sur 61

Domaine: MI 3ième Année Licence

Académique
Filière: Informatique Spécialité:
systèmes informatiques
Semestre: 5

Module : Génie
logiciel

Année :
2022/2023
Objectif du cours
Comprendre comment sont
construits les logiciels ;
Etre en mesure d'exprimer des
besoins et de suivre un
développement de logiciel.
Vous donner envie de devenir
développeur de logiciels !
Où se trouve le logiciel ?
Impacts Positifs
Le logiciel accélère les traitements
Le logiciel ne « se lasse » pas
Le logiciel résout des problèmes
complexes rapidement
Capacité de calcul, de stockage et de
traitement incroyables
Le logiciel a introduit de nouveaux
loisirs
Le logiciel introduit une nouvelle
dimension sociale
Impacts d’un logiciel
de Mauvaise Qualité
Plusieurs désastres plus ou moins importants ont été
causés par des
« erreurs » dans des logiciels :
 Le bug du Mariner-1 en 1962 : Une fusée spatiale
a dérouté de sa trajectoire à cause d’une formule
mathématique qui a été mal transcrite en code
source
 Therac-25 accélérateur médical (1985) : La
machine était destinée à soigner des malades. À
cause d’un bug sur le déclenchement des radiations,
au moins cinq personnes ont trouvés mort.
 En 1983, la troisième guerre mondiale a failli
éclater : En pleine guerre froide, un logiciel de
surveillance soviétique a détecté de faux missiles
balistiques envoyés des USA.
Génie logiciel
 Idée : 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
 Génie civil, naval, aéronautique, mécanique,
chimique...
Génie logiciel
 Définition : Ensemble des méthodes, des
techniques et des outils dédiés à la conception,
au développement et à la maintenance des
systèmes informatiques

 Objectif : Avoir des procédures systématiques


pour des logiciels de grande taille afin que

 la spécification corresponde aux besoins réels


du client
 le logiciel respecte sa spécification
 les délais et les coûts alloués à la réalisation
soient respectés
Logiciel : définitions
Ensemble d'entités nécessaires au
fonctionnement d'un processus de traitement
automatique de l'information

 Programmes, données, documentation..

Ensemble de programmes qui permet à un


système informatique d’assurer une tâche ou
une fonction en particulier

Logiciel = programme + utilisation


Comparaison d’un
logiciel avec un produit
normal

Produit palpable Produit non palpable


Produit manufacturé Produit Développé
Assemblage facile de Assemblage difficile
composants (réutilisation) (réutilisation)
Maintenance par Maintenance par l'équipe
remplacement des de
composants développement elle-
même
Procédé de développement Procédé de
industrialisé développement
entièrement basé sur les
humains
Classification de Logiciels
Historique (Crise du
logiciel)
Constat du développement logiciel
fin 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
Historique (Étude du DoD
1995)
Étude du Department of Defense
des États-Unis sur les logiciels
produits dans le cadre de 9 gros
projets militaires
Raisons de la faible
qualité des logiciels
Tâche complexe :
 Taille et complexité des logiciels
 Taille des équipes de
Manque de méthodes et
conception/développement 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


 Négligence de la phase d'analyse des
besoins :
besoins du client

Raisons de la faible
qualité des logiciels
Raisons de la faible
qualité des logiciels
Difficultés spécifiques du logiciel :
 Produit invisible et immatériel
 Difficile de mesurer la qualité
 Conséquences critiques causées par
modifications infimes
 Mises à jour et maintenance dues à
l'évolution rapide de la technologie
 Difficile de raisonner sur des
programmes
 Défaillances logicielles principalement
humaines
Importance de la qualité
des logiciels
Fiabilité, sûreté et sécurité des logiciels
 Transports automobile, ferroviaire, aéronautique
 Contrôle de processus industriels, nucléaire,
armement
 Médical : imagerie, appareillage, télé-surveillance
 e-commerce, carte bancaire sans contact, passeport
électronique
Raisons économiques : coût d'un bug
 Coût de la correction, du rappel des appareils
défectueux
 Coût de l'impact sur l'image, de l'arrivée tardive sur
le marché
Enjeu du génie
logiciel ?
Bien développer le bon logiciel.

Comment faire des logiciels de


qualité ?
Qu'attend-on d'un logiciel ? Quels
sont
les critères de qualité ?
Critères de qualité du
logiciel
1. Validité : réponse aux besoins des utilisateurs
2. Facilité d’utilisation( ergonomie) : prise en
main et robustesse
3. Performance : temps de réponse, débit,
fluidité
4. Fiabilité : tolérance aux pannes
5. Sécurité : intégrité des données et protection
des accès
6. Maintenabilité : facilité à corriger ou
transformer le logiciel
7. Portabilité : changement d'environnement in
matériel ou logiciel
Critères de qualité du
logiciel
Critères de qualité du
logiciel
Critères de qualité du
logiciel
Critère de qualité
La validité (correction. justesse,
conformité)
est la capacité que possède un produit
logiciel à remplir exactement ses
fonctions, définies
par le cahier des charges et les
spécifications.

Adéquation entre :
Le besoin effectif de l'utilisateur
Les fonctions offertes par le logiciel
Critère de qualité
L’efficacité (performance)
L'efficacité est la capacité d'un système logiciel à
utiliser le minimum de ressources matérielles. que
ce soit le temps machine, l'espace occupé en
mémoire externe et
interne, ou la bande passante des moyens de
communication.
Les logiciels doivent satisfaire aux contraintes de
temps d'exécution
 Solutions:
 logiciels plus simples
 Veiller à la complexité des algorithmes
 Machines plus performantes
Critère de qualité
La compatibilité (Interopérabilité ou
coulabilité)

La compatibilité est la facilité avec laquelle des

éléments logiciels peuvent être combinés à d’autre .

Un logiciel doit pouvoir interagir en synergie avec

d’autres logiciels
Solutions :
 Bases de données (découplage données./traitements)
 « Externaliser »Certaines fonctions en utilisant des «
Middleware »avec une API (Application Program interface) bien
définie
 Standardisation des formats de fichiers (XML ... ) et des
protocoles de communication (CORBA ... )
 Les ERP (Entreprise Ressources Planning)
Critère de qualité
Portabilité
 La portabilité est la facilité avec
laquelle des produits logiciels
peuvent être transférés d'un
environnement logiciel ou matériel à
l'autre.
Un même logiciel doit pouvoir
fonctionner sur plusieurs machines
Solutions :
 Rendre le logiciel indépendant de son environnement
d’exécution (voir interopérabilité)
 Machines virtuelles
Critère de qualité
Extensibilité
L’extensibilité est la facilité d'adaptation des
produits logiciels aux changements de
spécifications.
Intégrité
Aptitude d’un logiciel à protéger son code et
Ses données contre des accès non autorisé.
La ponctualité
La ponctualité est la capacité d'un système
logiciel à être livré au moment désire par ses
utilisateurs, ou avant.
Critère de qualité
Réutilisabilité
La réutilisabilité est la capacité des éléments logiciels à
servir à la construction de plusieurs applications
différentes.
 On peut espérer des gains considérables car dans la

plupart des logiciels :


 80% du code est du tout venant qu’on retrouve à peu
prés partout
 20% du code est spécifique

Solutions :
 Abstraction, généricité
 Construire un logiciel à partir de composants prêts à
l’emploi
 Design Patterns
Critère de qualité
Maintenabilité
 La maintenabilité est le degré de facilité de la
maintenance d’un produit logiciel.
 Un logiciel ne s’use pas
 Pourtant, la maintenance absorbe une très grosse
partie des efforts de développement (représente
67% de l’effort de développement)
 Les couts de maintenance se jouent très tôt dans
le processus d’élaboration du logiciel

Solution :
 Réutilisabilité, modularité
 Vérifier, tester
 Anticiper les changements à venir
C'est quoi un bon logiciel bien
fait ?
Un bon logiciel bien fait est un logiciel

correct (valide),
fiable (robuste),
avec un code réutilisable,
compatible avec d’autres logiciel,
efficace,
portable,
facile à utiliser
maintenable,
ponctuel et extensible
Processus de développement
d’un logiciel

Ensemble d'activités successives,


organisées en vue de la production
d'un logiciel
Activité
Les activités d’un processus sont souvent
décrites en termes de:
 Entrées de l' activité (matière première)
 Sorties de l' activité (résultat)
 Intervenants et rôles (qui ?)
 Description de l'activité (quoi - quel est le
problème à traiter ?) Standards, guides, «
best practices Ȉ appliquer ( comment ?)
Activités du développement
logiciel
1. Etude de faisabilité
2. Analyse des besoins
3. Spécification
4. Conception
5. Programmation
6. Validation et vérification
7. Livraison
8. Maintenance
Faisabilité (pourquoi ?)
 Etude préalable ou étude de faisabilité :
Elle concerne la définition globale du problème.

Questions
 Pourquoi développer le logiciel ?
 Y a-t-il de meilleures alternatives ?
 Comment procéder pour faire ce
développement ?
 Y a-t-il un marché pour le logiciel ?
 Quels moyens faut-il mettre en œuvre? A-t-on le

budget, le personnel,
 le matériel nécessaires ?
Spécification (quoi ?)
 Analyse des besoins :
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 . . . )
 Spécification :
• Établir une description claire de ce que doit faire
le logiciel
(fonctionnalités détaillées, exigences de qualité,
interface ... )
• Clarifier le cahier des charges (ambiguïtés,
Exigences fonctionnelles et non
fonctionnelles
 Exigences fonctionnelles
Décrivent les fonctionnalités du système ,ce qu'un
système doit faire .

Exemple : Distributeur GAB


-Retirer Argent , consulter solde ,Verser argent .... ect

 Exigences non fonctionnelles


 Définissent les propriétés et contraintes du système

Exemple : Fiabilité, Temps de réponse, Taille de


stockage
 Exigences sur le processus de développement

Exemple :Environnement de développement , Langage


de programmation , Méthode de développement
Conception (comment ?)
Conception : élaborer une solution
concrète réalisant la spécification
Conception globale :description
architecturale en composants (avec
interface et fonctionnalités)
Conception (comment ?)
 Conception détaillé
 Détailler le fonctionnement des composants
 Définir quelques algorithmes, la
représentation des données, ...
 des tests unitaires sont définis pour s'assurer
que les composants réalisés sont bien
conformes à leurs descriptions
Programmation
 Programmation : Implantation de la
solution conçue
 Choix de l'environnement de
développement, du/des langage(s) de
programmation, de normes de
développement. ..
Validation et vérification
Validation : assurer que les besoins
du client sont satisfaits (au niveau de
la spécification, du produit fini ... )
Vérification : assurer que le logiciel
satisfait sa spécification
Maintenance
Types de maintenance :
 Corrective : identifier et corriger des
erreurs trouvées après la livraison

 Adaptative : adapter le logiciel aux


changements dans l'environnement
(format des données, environnement
d'exécution ... )

 Perfective : améliorer la performance,


ajouter des fonctionnalités, améliorer la
maintenabilité du logiciel.
Remarque
 Client : il fait la demande du logiciel (le
produit).
 Maître d'ouvrage (MOA) : il représente le client,
comprendre ces besoin et établie une contrat
avec le maître d'oeuvre (cahier de charge).
 Maître d'oeuvre (MOE): suivi le cahier de
charge afin de garante la bonne réalisation du
logiciel (il fournit le produit).
Modèles de cycle de vie d'un
logiciel
Modèles de cycle de vie d'un
logiciel
Cycle de vie en
cascade(Waterfall model)
Le modèle en cascade (Waterfall
model) est le plus classique des cycles
de vie.
Cycle de vie linéaire sans aucune
évaluation entre le début du projet et
la validation.
Le projet est découpé en phases
successives dans le temps.
A chaque phase correspond une
activité principale bien précise
produisant un certain nombre de
Livrables.
Cycle de vie en
cascade(Waterfall model)
Cycle de vie en cascade avec
retour en arrière
Cycle de vie en cascade
 Propriétés

1. Séquentielle
2. Phases
3. Documents
 Limites
• Les vrais projets suivent rarement un
développement séquentiel
• Établir tous les besoins au début d’un projet est
difficile
• Sensibilité à l’arrivée de nouvelles exigences :
refaire toutes les étapes
• Bien adapté lorsque les besoins sont clairement
identifiés et stables
Cycle de vie en <<V >>
A ce jour, le cycle en V reste le cycle de vie le
plus utilisé. C'est un cycle de vie orienté test :

A chaque activité créative (spécification,


conception et codage) correspond une
activité de vérification (validation,
intégration, tests unitaires).

 Chaque phase en amont prépare la phase


correspondante de vérification (la vérification
est prise en compte au moment même de la
création).
Cycle de vie en <<V >>
Cycle de vie en <<V >>
Avantages
 La préparation des dernières phases (validation-vérification)
par les premières (construction du logiciel), permet d'éviter
d 'énoncer une propriété qu’il est impossible de vérifier
objectivement après la réalisation.

Inconvénients
 Construit-on le bon logiciel ? Le logiciel est utilisé très
(trop) tard.
• Il faut attendre longtemps pour savoir si on a construit le
bon logiciel.
• Difficile d' impliquer les utilisateurs lorsque qu'un logiciel
utilisable n'es t
disponible qu'à la dernière phase
Prototypage
Principe:
 Développement rapide d'un prototype avec le
client pour valider ses besoins
 Ecriture de la spécification à partir du prototype,
puis processus de développement linéaire

Avantage : Validation concrète des besoins,


moins de risques d'erreur de spécification
Prototypage
le prototypage Jetable : ici, le
squelette
du logiciel n'est créé que dans un but et
dans une phase particulière du
développement.

Le prototypage Evolutif: ici, on


conserve tout, au long du cycle de
développement Il est amélioré et
complété pour obtenir le logiciel final
Prototypage
Avantage :
Les efforts consacrés au développement
d'un prototype sont le plus souvent
compensés par ceux gagnés à ne pas
développer de fonctions inutiles
Mais :
• Les décisions rapides sont rarement de
bonnes décisions
• Le prototype évolutif donne-t-il le
produit demandé?
Modèle incrémental
Principe : Développement pas à pas
1. Sous-ensemble minimal et fonctionnel du
système
2. Ajouts d'incréments jusqu'à la fin du
processus
Modèle incrémental
Avantage
• chaque développement est moins complexe;
• les intégrations sont progressives ;
• possibilité de livraisons et de mises en
service après chaque incrément ;
Limite
• la remise en cause du noyau de départ ;
• la remise en cause des incréments
précédents;
• l'impossibilité d'intégrer un nouvel incrément
Modèle en Spiral
Plusieurs cycles
1. Consultation du client
2. Analyse des risques
3. Conception
4. Implémentation
5. Tests
6. Planification
du prochain cycle
Avantage
• Meilleure maîtrise des risques
Processus de développement
logiciel
En pratique:
• Pas de processus idéal
• Choix du processus en fonction
des contraintes (taille des
équipes, temps, qualité ... )
• Adaptation de << processus
types >> aux besoins réels
Documentation
Objectif : Traçabilité du projet
Pour l'équipe
• Regrouper et structurer les décisions prises
• Faire référence pour les décisions futures
• Garantir la cohérence entre les modèles et le
produit
Pour le client :
 Donner une vision claire de l'état d'avancement
du projet
 Base commune de référence :
 Personne quittant le projet: pas de perte
d'informations
 Personne rejoignant le projet : intégration rapide
Documents de spécification et
conception
Rédaction : le plus sot1vent en
langage naturel (français)
Problèmes :
 Ambiguïtés plusieurs sens d'un même
mot selon les personnes ou les
contextes.
 Contradictions, oublis. redondances
difficiles à détecter
 Difficultés à trouver une information.
 Mélange entre les niveaux d’abstraction
(spécification VS conception).
Documents de spécification et
conception
Alternatives au langage naturel
Langages informels :
• Langage naturel structuré : modèles de document et
règles de rédaction précis et documentés
• Pseudo-code : description algorithmique de l'exécution
d'une tâche, donnant une vision opérationnelle du
système
Langages semi-formels :
 Notation graphique : diagrammes accompagnés de
texte structuré, donnant une vue statique ou
dynamique du système
Langages formels :
 Formalisme mathématique : propriétés logiques ou
modèle du comportement du système dans un langage
mathématique
Documents de spécification et
conception
Langages informels ou semi-formels :
Avantages : intuitifs, fondés sur l'expérience,
facile à apprendre et à utiliser, répandus
Inconvénients : ambigus, pas d'analyse
systématique
Langages formels :
 Avantages : précis, analysables
automatiquement, utilisables pour automatiser la
vérification et le test du logiciel
 Inconvénients : apprentissage et maîtrise
difficiles
En pratique: utilisation de langages formels
principalement pour logiciels critiques, ou
restreinte aux parties critiques du système

Vous aimerez peut-être aussi