Vous êtes sur la page 1sur 51

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

Pr. Siham BAKKOURI Email: s.bakkouri@usms.ma


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

Vous aimerez peut-être aussi