0% ont trouvé ce document utile (0 vote)
257 vues65 pages

Cours 1 GL

Transféré par

hanane bennaceur
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
257 vues65 pages

Cours 1 GL

Transféré par

hanane bennaceur
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi