Université Abou Bakr belkaid
faculté des sciences
département d’informatique
Cours Génie Logiciel Click to add text
Click to pour
Cliquez add text
ajouter du
texte
Niveau : L3 informatique
Chargé de cours : S Meziane Tani
E –mail : [email protected]
Octobre 2021
11/11/2022
Organisation du cours
Cours:
8 séances en ligne + 4 séances en présentiel
TD
8 séances en ligne + 4 séances en présentiel
TP: Modélisation UML avec Modelio
4 séances en présentiel + 8 séances en ligne
11/11/2022 2
Contenu de la matière
Chapitre 1. Introduction au génie logiciel
Chapitre 2. Introduction à la modélisation avec
UML((Unified Modeling Language)
Chapitre 3. Diagramme UML
Cliquez pour ajouter du de cas d’utilisation
texte
Chapitre 4. Diagramme de séquence.
Chapitre 5 . Diagrammes UML de classes et
d’objets
11/11/2022 3
Objectif du cours
Comprendre comment sont construits les
logiciels ;
Être en mesure d’exprimer des besoins et
de suivre un développement de logiciel.
Vous donner envie de devenir
développeur de logiciels !
11/11/2022 4
Chapitre 1 :
Introduction au Génie Logiciel
11/11/2022 5
Plan
1. Définition du génie logiciel .
2. Les enjeux du génie logiciel .
3 . Qualité du logiciel .
4. Modèles de cycle de vie d’un logiciel.
11/11/2022 6
Génie Logiciel : c’est quoi ?
Génie Logiciel (software engineering) (IEEE
standards)
Ensemble des méthodes , des techniques et
des outils
dédiés à la conception, au développement et à la
maintenance des systèmes informatiques.
11/11/2022 7
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, mécanique,
11/11/2022 8
Un logiciel : c’est quoi ?
• Ensemble d'entités nécessaires au fonctionnement d'un
processus de traitement automatique de l'information
Click to add text
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
11/11/2022 9
11/11/2022 10
Catégories de logiciel
Systèmes d’information
Manipulation de données
Exemples: gestion de stock, réservation de salles
Systèmes temps reel
Réaction à des évènements
Exemples: automatisation d’usine, pilotage automatique
Systèmes distribués
Coordination de différentes composantes
Exemples: messagerie électronique, Teams
Systèmes embarques
Combinaison de matériel et logiciel spécifiques
Exemples: GAB,
11/11/2022 11
Historique du Génie logiciel
Le GL est apparu à la fin des années 60 pour
répondre à la "la crise du logiciel".
Symptôme de cette crise :
Le logiciel livré ne satisfait pas les besoins de
l’utilisateur,
il consomme plus de ressources que prévu et il est à
l’origine de pannes.
Temps de réponse trop lents.
Non respect des délais et des coûts
Maintenance difficile, coûteuse et souvent à
l’origine de nouvelles erreurs.
11/11/2022 12
Erreurs célèbres . . .
Entre 1985 et 1987, le problème du Therac-25 (un appareil d’irradiation
thérapeutique) : 2 morts, 4 irradiés.
En 1994, Le bug du Pentium. Coût : 500 millions de dollars.
le4 juin 1996, l’explosion du premier vol d’Ariane 5, le bug informatique le
plus coûteux de l’histoire.
En 1962, la mission Mariner 1 a connu un incident similaire
TAURUS, un projet d’informatisation de la bourse londonienne :
définitivement abandonné après 4 années de travail et 100 millions de dollars
de pertes.
Le bug de l’an 2000 : dysfonctionnements lorsque les dates sont postérieures
au 31 décembre 1999.
11/11/2022 13
11/11/2022 14
Étude du DoD 1995
Étude du Department of Defense des États-Unis sur les logiciels produits dans
le cadre de 9 gros projets militaires
11/11/2022 15
Génie Logiciel : Difficultés
Difficultés liées à la nature du logiciel
un logiciel ne s’use pas, sa fiabilité ne dépend que de sa conception
pour rester utilisé un logiciel doit évoluer (changements fréquents)
Les difficultés liées aux personnes
ne savent pas toujours ce qu’elles veulent, ou ne savent pas bien
l’exprimer
communication difficile entre personnes de métiers différents (jargons)
beaucoup d’autodidactes qui croient savoir,
. . .
Les difficultés technologiques
courte durée de vie du matériel,
beaucoup de méthodes et de langages
évolution des outils de développement,
. . .
11/11/2022 16
LES PRINCIPES DU GENIE LOGICIEL (Carlo Ghezzi)
o Modelisation d’un fait
1. La rigueur :
o Vue partielle
o Précision / exactitude
o Modèles mathématiques 6.La construction
2. La Généralisation incrémentale
o généricité et
Click to add text
héritage o Evolutivite
o Réutilisabilité o Reutilisabilite
o maintenabilité
3.La Structuration
o Modele ≪ bottom-up ≫ 7 . LaDocumentation
o Modele ≪ top-down ≫
8.La Vérification
4.La modularité :
5.L’abstraction :
11/11/2022 17
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é ?
11/11/2022 18
Qualité logiciel
11/11/2022 19
Classification des critères de qualités logiciel
Interne externe
concerne le développeur Concerne l’utilisateur
Exemple : Maintenabilité Exemple :Ergonomie
11/11/2022 20
Critères de qualité de (Bertrand Meyer)
Facilité d'utilisation(ergonomie) : prise en main
et robustesse
Performance : temps de réponse, débit, fluidité...
Fiabilité : tolérance aux pannes
Sécurité : intégrité des données et protection des
accès
Maintenabilité : facilité à corriger ou
transformer le logiciel
Portabilité : changement d'environnement
matériel ou logiciel 21
11/11/2022
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
11/11/2022 22
Critère de qualité(validité )
Solutions :
• Emphase sur l’analyse des besoins
•Améliorer la communication (langage commun, démarche participative)
•Travailler avec rigueur
11/11/2022 23
Critère de qualité
Fiabilité ou Robustesse (fiabilité, sureté)
est la capacité qu’offrent des systèmes
logiciels à réagir de manière appropriée à
la présence de conditions anormales (i.e.
rien de catastrophique ne peut survenir,
même en dehors des conditions
d’utilisation prévues).
Solutions :
•Utiliser des méthodes formelles, des langages et des méthodes de
programmation de haut niveau
•Vérifications, tests
11/11/2022 24
Critère de qualité
Facilité d’utilisation(Ergonomie)
La facilité d’utilisation est la facilité avec laquelle des
personnes présentant des formations et des compétences
différentes peuvent apprendre à utiliser les produits
logiciels et s’en servir pour résoudre des problèmes.
◦ Facilité d’apprentissage : comprendre ce que l’on
peut faire avec le logiciel, et savoir comment le faire
◦ Facilité d’utilisation : importance de l’effort
nécessaire pour utiliser le logiciel à des fins données
Solutions :
•Analyse du mode opératoire des utilisateurs
•Adapter l’ergonomie des logiciels aux utilisateurstion
et de contrôle.
11/11/2022 25
Critère de qualité
Compatibilité (Interopérabilité ou coulabilité)
La compatibilité est la facilité avec laquelle des éléments logiciels
peuvent être combinés à d’autres.
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 Resources Planning)
11/11/2022 26
Critère de qualité
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
11/11/2022 27
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
11/11/2022 28
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
11/11/2022 29
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
dedéveloppement (représente 67 % de l’effort de développement) ;
Les coûts de maintenance se jouent très tôt dans le processus
d’élaboration du logiciel
Solution :
Réutilisabilté, modularité
Vérifier, tester
Anticiper les changements à venir.
11/11/2022 30
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é.
Ponctualité
La ponctualité est la capacité d’un système logiciel
à être livré au moment désiré par ses utilisateurs, ou
avant.
11/11/2022 31
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 logiciels,
efficace,
portable,
facile à utiliser,
maintenable,
ponctuel et
extensible
11/11/2022 32
Processus de développement
Cliquez pour ajouter du
logicieltexte
11/11/2022 33
Processus de développement logiciel : c’est quoi ?
Ensemble d'activités successives, organisées
en vue de la production d'un logiciel
11/11/2022 34
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 ?)
11/11/2022 35
Activités du développement logiciel
● Etude de faisabilité
● Analyse des besoins
● Spécification
● Conception
● Programmation
● Validation et vérification
● Livraison
● Maintenance
11/11/2022 36
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 oeuvre ? A-t-on le
budget, le personnel,
le matériel nécessaires ?
11/11/2022 37
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, contradictions) en
listant les exigences fonctionnelles et non fonctionnelles
11/11/2022 38
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
11/11/2022 39
Conception (comment ?)
Conception : Élaborer une solution concrète réalisant la
spécification
● Conception globale :description architecturale en composants
(avec interface et fonctionnalités)
11/11/2022 40
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
11/11/2022 41
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...
11/11/2022 42
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
11/11/2022 43
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.
11/11/2022 44
Modèles de cycle de vie d’un logiciel
11/11/2022 45
Modèles de cycle de vie d’un logiciel
11/11/2022 46
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
Chaque phase ne peut remettre en cause que la phase précédente
11/11/2022 47
Cycle de vie en cascade(Waterfall model)
11/11/2022 48
Cycle de vie en cascade avec retour en
arrière
11/11/2022 49
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
11/11/2022 50
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).
11/11/2022 51
Cycle de vie en « V »
11/11/2022 52
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’est
disponible qu’à la dernière phase
Idéal quand les besoins sont bien connus, quand l’analyse et la
conception sont claires
11/11/2022 53
Prototypage
Principe :
● Développement rapide d'un prototype avec le client
pour valider ses besoins
● Écriture 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
11/11/2022 54
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
11/11/2022 55
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é ?
11/11/2022 56
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
11/11/2022 57
Processus de développement logicel
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
11/11/2022 58
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
11/11/2022 59
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
11/11/2022 60
Documents de spécification et conception
Rédaction : le plus souvent 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)
11/11/2022 61
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
11/11/2022 62
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
11/11/2022 63
Modélisation
Modèle : Simplification de la réalité, abstraction, vue
subjective . modèle météorologique, économique,
démographique...
Modéliser un concept ou un objet pour :
● Mieux le comprendre (modélisation en physique)
● Mieux le construire (modélisation en ingénierie)
En génie logiciel :
● Modélisation = spécification + conception
● Aider la réalisation d'un logiciel à partir des besoins du
client
11/11/2022 64
Modélisation graphique
Principe : « Un beau dessin vaut mieux qu'un long
discours »
Seulement s'il est compris par tous de la même manière
11/11/2022 65