Université Sultan Moulay Slimane Ecole Supérieure de Technologie de Béni Mellal
Département: ITG Filière: Génie Informatique -2ème année - S3
Module: Génie Logiciel (M11-E1) Année universitaire: 2023-2024
Elément: Génie Logiciel & Modélisation UML
Support de cours
Génie Logiciel et Modélisation UML
Chapitre I: Introduction au Génie Logiciel 1
Plan
❑ INTRODUCTION
❑ PRINCIPES DU GÉNIE LOGICIEL
• Historique et Évolution du Génie Logiciel
• Définition du Génie Logiciel
❑ DÉMARCHE DE DÉVELOPPEMENT ET CYCLE DE VIE D'UN LOGICIEL
• Démarche de développement logiciel
• Modèles de cycle de vie traditionnels et itératif
• Les méthodes agile de développement
• Diagramme de Gantt dans un contexte agile
❑ QUALITÉ DU LOGICIEL
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 2
Introduction
→ Un système d’information : est l’ensemble des éléments participants à la gestion, au
stockage, au traitement, au transport et à la diffusion de l’information au sein de
l’organisation
→ Un système informatique : est l’ensemble des équipements destinés au traitement
automatique de l’information permettant d’acquérir, de stocker, de traiter et de
communiquer des données.
• Systèmes informatiques
- 80% de logiciel
- 20% de matériel
Depuis quelques années, la fabrication du matériel est assurée par quelques fabricants
seulement
• Le matériel est relativement fiable
• Le marché est standardisé
Les problèmes liés à l'informatique sont essentiellement des problèmes de Logiciel
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 3
Introduction
Un logiciel est un produit qui couvre un ensemble organisé de :
• Programmes
• Procédés
• Documentation
• Services
Logiciel = programme + utilisation
Caractéristiques du logiciel
• Un objet immatériel
• Le logiciel est facile à reproduire
• Ses fonctionnalités sont difficiles à figer au départ et souvent remises en cause
• La plupart des logiciels sont personnalisés
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 4
Introduction
→ Domaines d’application du logiciel
• Système • Scientifique
- Compilateurs (A-0 System) - Simulation
- Editeurs - Conception assisté par ordinateur
- Gestion de fichiers - Calcul numérique intensif
• Temps réels (Real-time) • Bureautique
- Contrôle de machine • Intelligence artificielle
• Affaires (Data processing) - Système expert
- SGBD (Oracle)
- ERP (SAP)
• Embarqué (Embedded)
- Programme FPGA
- Auto-contrôle
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 5
Introduction
→ Un logiciel est un système d’information automatisé
→ Un système d’information automatisé est l’ensemble des moyens et des méthodes qui
se rapporte au traitement automatisé des données.
▪ Il constitue la partie logicielle du système informatique Cours génie logiciel
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 6
État des connaissances en Génie logiciel
→ La 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
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 7
État des connaissances en Génie logiciel
→ La crise du logiciel
• Type 1: Projets réussis à temps dans le
budget prévu et réalisant les fonctionnalités
demandées
• Type 2: Projets terminés mais hors budget,
hors planning et n’offrant pas toutes les
fonctionnalités requises
• Type 3: Projets abandonnés en cours de
réalisation
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 8
État des connaissances en Génie logiciel
→ La crise du logiciel
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 9
État des connaissances en Génie logiciel
→ La crise du logiciel en chiffre
→ Répartition des erreurs → Ténacité des erreurs
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 10
État des connaissances en Génie logiciel
Exemples d’échec de logiciel
• Perte de la première sonde Mariner vers Venus suite à une erreur de programmation dans
un programme Fortran
• Abandon du projet d’informatisation de la bourse londonienne après 4 ans de travail et
100 M£ de pertes
• Retard (2 ans) du premier vol de l’Eurofighter
❑ Les causes
• Difficulté de maîtrise des coûts (200 millions de dollars pour fabriquer OS-360)
• Difficulté de maîtrise des délais de réalisation (2 ans de retard pour les premiers
compilateurs PL/1, Algol 68, ADA) Cours génie logiciel
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 11
État des connaissances en Génie logiciel
Solution: En octobre 1968 lors d’une conférence de l’OTAN à Garmisch-Partenkirchen en
Allemagne.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 12
PRINCIPES DU GÉNIE
LOGICIEL
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 13
Principes du Génie Logiciel
→ Historique et l'évolution de Génie Logiciel
• Le terme Génie Logiciel est né entre le 7 et le 11 octobre 1968 à Garmish-Partenkirchen
sous le nom de software engineering sous le parrainage de l’OTAN
• Défini par un groupe de scientifiques pour répondre à un problème bien défini
s’énonçant en 2 constatations :
o Le logiciel n’était pas fiable
o Il était incroyablement difficile de réaliser dans des délais prévus des logiciels
satisfaisant leur cahier des charges
• Appliquer les méthodes classiques d'ingénierie au domaine du Logiciel
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 14
Principes du Génie Logiciel
→ Définition du Génie Logiciel
• Génie Logiciel ou ingénierie logicielle est une discipline de l'informatique qui se
consacre à l'étude, la création, la gestion et la maintenance de logiciels de manière
systématique, contrôlée et efficace.
• Méthodologie de construction en équipe d’un logiciel complexe et à multiples versions.
• Il englobe l'ensemble des activités liées au développement de logiciels, depuis leur
conception initiale jusqu'à leur mise en production et leur évolution ultérieure.
• Programmation vs. Génie logiciel
- Programmation = Activité personnelle
- Génie logiciel = Activité d’équipe structurée organisée autour d’un projet
• Suivant les projets, la partie programmation (codage) ne représentera qu’entre 10% et
30% du coût total.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 15
DÉMARCHE DE DÉVELOPPEMENT
ET CYCLE DE VIE D'UN LOGICIEL
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 16
Démarche de développement logiciel
→ Une démarche de développement repose sur :
– Un formalisme ( exemple : orientation objet )
– Une méthode ( Merise , SADT , FUSION , OMT , RUP / UML , … )
– Un processus et un cycle de vie
→ Notion de processus de développement :
Un processus de développement représente un ensemble d’étapes ou activités successives
permettant la production d’un système logiciel dans les délais ( et le budget ) fixés par le
client et répondant aux besoins des utilisateurs .
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 17
Démarche de développement logiciel
→ Les étapes d’un processus de développement
▪ Spécification : établissement du cahier des charges et des contraintes du système (
capture des besoins ).
▪ Analyse : Détermination des éléments constituant le système.
▪ Conception : Production d’un modèle du système final tel qu’il doit fonctionner.
▪ Implémentation : réalisation du système ( codage des composants et assemblage ).
▪ Test : Vérification de l’adéquation entre les fonctionnalités du système et la description
des besoins .
▪ Installation : livraison du système au client et vérification de son fonctionnement.
▪ Maintenance : réparation des fautes dans le système au fur et à mesure de leur
découverte.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 18
Cycle de vie d'un logiciel
→ Définition
Le cycle de vie d'un logiciel (ou cycle de développement logiciel) est une séquence
d'étapes et de phases par lesquelles un logiciel passe depuis sa conception initiale jusqu'à
sa mise en service, sa maintenance, et finalement son retrait.
Modèle de cycle de vie :
• Un modèle de cycle de vie débute par une idée et se termine par un logiciel .
• Il permet de gérer l’exécution d’un processus de développement sous forme d’une
seule itération ou par itérations successives dans le cadre d’un projet jusqu’à la
satisfaction des besoins du client .
• Dans le cas de plusieurs itérations , chaque itération représente un processus ou mini-
projet complet ( spécification + analyse + Conception + Implémentation + Test ) .
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 19
Modèles de cycle de vie traditionnels
1. Modèle en cascade ( Waterfall )
• Principe : Chaque activité est relative à l’entièreté du cahier des charges ( cycle de vie
à une seule itération )
• Inconvénients:
- Modèle à structure linéaire bien adapté à certaines disciplines
( exemple : génie civil ) mais pas au génie logiciel .
- Modèle trop rigide: une activité ne peut commencer que si l’activité
précédente est complètement terminée
- Pas de possibilité de travail en parallèle et validation finale tardive
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 20
Modèles de cycle de vie traditionnels
1. Modèle en en cascade ( Waterfall )
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 21
Modèles de cycle de vie traditionnels
2. Modèle en V
• Principe : Similaire au modèle en chute d’eau mais avec une validation rétrograde et
plus longue.
• Inconvénients :
- Modèle à structure linéaire et validation tardive comme le modèle en cascade
( waterfall )
- Mise en œuvre et installation tardives entraînant des erreurs très coûteuses .
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 22
Modèles de cycle de vie traditionnels
2. Modèle en V
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 23
Modèles de cycle de vie traditionnels
→ Les principaux modèles de cycle de vie
3. Modèle par prototypage jetable
• Principe : On effectue une ou plusieurs itérations (prototypes) sous forme de processus
distincts uniquement pour aboutir à une spécification exacte du système ( concertation
avec le client )
Spécification shématique
• Avantages :
Codage du prototype
- On arrive à satisfaire le client après avoir testé
Evaluation du prototype
différents prototypes du système
• Inconvénients : Spécification du système
- Approche très coûteuse en terme de durée de
développement ( elle nécessite des ressources
humaines importantes )
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 24
Modèles de cycle de vie itératif
4. Modèle incrémental ou itératif
• Principe :
- Après l’analyse des besoins ( spécification ) , on effectue plusieurs cycles de
développements successifs ( itérations )
- Chaque cycle conduit à une version utilisable du produit et traite un petit nombre
de besoins
• Avantages :
- A chaque itération , la complexité du système diminue.
- Des implémentations de parties du système sont disponibles très rapidement . On
peut disposer alors d’informations utiles sur le comportement du système ( early
feedback ) et son adéquation aux besoins .
- Ce modèle permet le travail en parallèle des équipes
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 25
Modèles de cycle de vie itératif
4. Modèle incrémental ou itératif
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 26
Modèles de cycle de vie itératif
5. Modèle en spirale
• Principe :
- On effectue plusieurs cycles de développement de manière itérative incluant chacun
une spécification ( analyse ou réanalyse des besoins )
- Chaque cycle conduit à une version utilisable du produit et peut faire appel à un
modèle de développement différent : modèle en cascade, modèle de prototypage
jetable , etc…
• Avantages :
- Ce modèle est plus flexible que le modèle incrémental avec la possibilité de changer de
stratégie à chaque itération ( sous-modèle )
- La spécification est constamment remise en cause ( réexaminée )
- Ce modèle permet le travail en parallèle des équipes comme dans le cas du modèle
incrémental .
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 27
Modèles de cycle de vie itératif
5. Modèle en spirale
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 28
Modèles de cycle de vie
Exercice 1
Indiquer la ou les phases où est produit chacun des documents suivants :
• Manuel d’utilisation • Plan de test
• Conception architecturale • Manuel utilisateur préliminaire
• Plan d’assurance qualité • Conception détaillée
• Spécification des modules • Estimation des couts
• Code source • Calendrier du projet
• Cahier de charges • Rapport des tests, documentation
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 29
Modèles de cycle de vie
Exercice 2
Une entreprise de production logiciel adopte un processus de développement logiciel qui
consiste à enchainer les différentes phases de développement :
• Étude de faisabilité
• Spécification
• Conception
• Implémentation
• Tests et livraison
Les retours en arrière entre ces différentes phases ne sont pas planifiés mais si des erreurs
sont détectées pendant les tests, il est possible que l’équipe de développement réadapte la
conception et/ou l’implémentation du logiciel. Le succès des projets de développement
logiciel de cette entreprise est garanti seulement s’il s’agit de reproduire un projet déjà
réalisé.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 30
L’approche agile de développement
→ Définition
Les méthodes agiles, également appelées approches agiles, sont des méthodologies de
développement de logiciels et de gestion de projets qui mettent l'accent sur la flexibilité, la
collaboration, et la livraison de produits fonctionnels de haute qualité.
→ Le Manifeste agile
Cet état d’esprit s’appuiera bien sûr fortement sur les 4 valeurs et les 12 principes du
Manifeste Agile.
→ Une organisation est Agile lorsque tous ses membres s’appliquent à transmettre
l’information dans un souci de transparence, à se remettre en cause, à investiguer
ensemble pour déterminer les causes de dysfonctionnement éventuel et, enfin, à
s’adapter en permanence pour améliorer le fonctionnement global des équipes du projet.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 31
L’approche agile de développement
→ Les 4 valeurs d’une méthode agile
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 32
Les méthodes agiles de développement
→ Les 12 principes agile
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 33
Les méthodes agiles de développement
→ Les méthodologies Agiles
Travailler en mode agile signifie s’imprégner de la culture agile et bien assimiler le
fonctionnement des méthodes agiles. Voyons quelques méthodes parmi les plus usitées.
1. La méthode Scrum
Scrum est un cadre dans lequel les gens peuvent résoudre des problèmes adaptatifs
complexes, tout en fournissant de manière productive et créative des produits de la plus
haute valeur possible.
• En utilisant Scrum, l’équipe de développement découpe facilement son produit en
tâches. Elle devient plus agile et découvre comment réagir rapidement et répondre aux
imprévus.
• Scrum utilise des artefacts et des cérémonies ou rituels afin d'atteindre les résultats
escomptés
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 34
Les méthodes agiles de développement
→ Les méthodologies Agiles
1. La méthode Scrum
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 35
Les méthodes agiles de développement
→ Les méthodologies Agiles
2. La méthode Kanban
Comme Scrum, Kanban encourage le travail à être décomposé en petites tâches. Mais
plutôt que de planifier le travail dans une itération ou un Sprint, les membres de l’équipe
récupèrent la tâche la plus prioritaire dans le backlog qui est prête à être développée.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 36
Les méthodes agiles de développement
→ Les méthodologies Agiles
2. La méthode SAFe
Le Framework SAFe (Scaled Agile Framework) permet l'implémentation de la méthode
agile à l'échelle de l'organisation. Il est principalement destiné aux équipes de
développement.
• La méthode SAFe se base sur des principes et connaissances pour favoriser
l'alignement, la collaboration et la livraison au sein d'un grand nombre d'équipes agiles.
• SAFe intègre la planification aux niveaux de l'équipe, du programme et du portefeuille,
de sorte que les organisations peuvent élaborer une solution à l'échelle de l'entreprise,
plutôt que pour une seule équipe ou un seul projet.
• Cette méthode est considérée comme l'approche la plus largement utilisée pour l'agilité
à l'échelle (37%), suivie de Scrum (9%).
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 37
Les méthodes agiles de développement
→ Les méthodologies Agiles
❑ Autres méthodes
Bien que les trois méthodologies agiles mentionnées soient parmi les plus populaires en
gestion de projets agiles, il convient de noter l'existence d'autres méthodes, telles que :
• La méthode RAD (Rapide Application Development)
• IAD (Iterative Application Development)
• Extreme programming (XP)
• Dynamic Systems Development Method (DSDM)
• Feature Driven Development (FDD)
Et bien d’autres méthodes … .
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 38
Les méthodes agiles de développement
→ Méthodes Agiles vs. méthodes Classiques
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 39
Les méthodes agiles de développement
→ Méthodes Agiles vs. méthodes Classiques
Méthodes classiques Méthodes agiles
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 40
Les méthodes agiles de développement
→ Cycle de projet: méthodes agiles vs. les méthodes classiques
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 41
Le diagramme de Gantt dans un contexte agile
→ Définitions
❑ Le diagramme de Gantt, couramment utilisé en gestion de projet, est l'un des outils
les plus efficaces pour représenter visuellement l'état d'avancement des différentes
activités (tâches) qui constituent un projet.
• La colonne de gauche du diagramme énumère toutes les tâches à effectuer
• La ligne d'en-tête représente les unités de temps les plus adaptées au projet (jours,
semaines, mois etc.).
• Chaque tâche est matérialisée par une barre horizontale, dont la position et la
longueur représentent la date de début, la durée et la date de fin.
❑ Le chemin critique (en anglais, Critical Path Method ou CPM) est une technique qui
permet d'identifier les tâches nécessaires à l'achèvement d'un projet.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 42
Le diagramme de Gantt dans un contexte agile
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 43
Le diagramme de Gantt dans un contexte agile
Exemple
Ci-dessous se trouve le tableau décrivant les diverses étapes nécessaires à la réalisation
d'un projet, accompagné du diagramme de Gantt correspondant.
• La durée du projet est: 14 jours
• Le chemin critique du projet est: B-C-G
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 44
Le diagramme de Gantt dans un contexte agile
Exercice 3
Soit le tableau d’antériorité d’un projet :
Les tâche Durée (jours) Tâches Pré-requises
A 3 -
B 6 -
C 2 -
D 4 A
E 2 A
F 2 A
G 4 B-D
H 3 C-E
1. Représenter le diagramme de GANTT relatif au projet.
2. Déterminer le temps global du projet
3. Identifiez le chemin critique du projet.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 45
QUALITÉ DU LOGICIEL
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 46
Qualité du logiciel
→ Définitions
La qualité est définie de manière générale par « l’aptitude d’un produit ou d’un service à
satisfaire les besoins des utilisateurs ». Cette définition s’applique aux systèmes
informatiques.
❑ La difficulté principale réside dans la capacité à exprimer ces besoins.
On constate trop souvent que l’utilisateur n’est pas satisfait a posteriori ! Certes le cycle
de vie en spirale, ou des approches par maquettage ou agiles réduisent ces risques, mais, il
est fondamental de permettre à l’utilisateur (et/ou au client) d’exprimer ces exigences; ce
sur quoi il va juger la qualité du système.
❑ La qualité est un processus qui dépasse la notion de logiciel. On peut l’appliquer à tout
processus industriel pour peu qu’on souhaite l’améliorer => Améliorer quoi ?
→ le produit, le service, la façon de développer le produit, les délais, les coûts, … etc.
Peu importe, ce qui compte c’est la volonté de mesurer, observer, contrôler, apprendre
pour améliorer quelque chose.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 47
Qualité du logiciel
→ Les mesures de la qualité d’un logiciel
Les premières études systématique de la qualité des logiciels datent de 1977.
Depuis des modèles de qualités se sont développés, mais on retrouve toujours 3 niveaux :
• Les facteurs qualité: expression des exigences (point de vue externe, client)
• Les critères qualité: caractéristiques du produit (point de vue interne,
technique)
• Les métriques: ce qui permet de mesurer un critère
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 48
Qualité du logiciel
❑ Les facteurs de qualité du logiciel
Conformité Satisfaire aux spécifications - il faut qu’elles existent
Robustesse Capacité à éviter les interruptions de fonctionnement (résistance aux pannes,
capacité de tolérance aux pannes, correction d'erreurs, etc.).
Efficacité Optimisation des ressources (cpu, E/S, mémoire, etc.)
Sécurité Surveiller, contrôler, interdire les accès
Maniabilité Minimiser l’effort d’apprentissage de l’utilisation du système
Maintenabilité Minimiser l’effort pour localiser et corriger les fautes
Testabilité Minimiser, automatiser l’effort de test
Adaptabilité Minimiser l’effort d’évolution du système
Portabilité Minimiser l’effort pour changer de plate-forme
Réutilisabilité Optimiser la conception pour faciliter la réutilisation de parties du système
Interopérabilité Garantir l’ouverture du système à d’autres systèmes ils doivent être
appréciés par le client pour définir les points qu’il juge capitaux ou
secondaires.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 49
Qualité du logiciel
❑ Les principes de qualité du logiciel
Les approches mises en place visent à répondre aux critères de qualité, en intégrant les
principes fondamentaux de programmation tels que:
❑ La modularité
❑ L’auto-descriptivité (les commentaires)
❑ L’indépendance matérielle logiciel
❑ La concision, etc.
Mais aussi des « bons » principes d’organisation tels que:
❑ L’utilisation de standards
❑ La traçabilité: Cette dernière est la capacité à suivre dans le temps l’évolution
d’un produit et de ses plans et de pouvoir associer les éléments de la solutions
aux éléments du problème.
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 50
Qualité du logiciel
❑ Les métriques de qualité logicielle
Pour mesurer la qualité du logiciel, des métriques sont associés aux critères eux même
rattachés aux facteurs. Ces métriques peuvent caractériser les qualités :
❑ Du produit
❑ Du processus de développement
❑ Du service rendu
Elles peuvent se faire par des mesures objectives (comptages) ou par des enquêtes d’opinion
(« pensez-vous que les résultats soient présentés clairement ? - de 0 à 5 »).
Les exemples des métriques concernant le logiciel sont :
❑ Nombre de lignes de code, de fonctions, d’opérateur par fonction,… (concision)
❑ Nombre de lignes de commentaires, … (auto-descriptivité)
❑ Nombre des modules, nombre de liens avec d’autres modules - couplage
(modularité)
❑ Nombre de chemins possibles dans une fonction (simplicité)
❑ Nombre de données en entrées, en sortie, fréquence...(Simplicité)
Pr. S. BAKKOURI Génie Logiciel & Modélisation UML 51