Vous êtes sur la page 1sur 46

Cours de Génie Logiciel

Introduction au Génie logiciel et à la modélisation


(Chapitre 1 & Chapitre 2)
2020- 2021
Dr. Kouah S.
Chapitre 1: Introduction
1. Définitions et objectifs
2. Principes du Génie Logiciel
3. Qualités attendues d’un logiciel
4. Cycle de vie d’un logiciel
5. Modèles de cycle de vie d’un logiciel

Chapitre 2: Modélisation avec UML


1. Introduction: Modélisation, Modèle, Modélisation Orientée Objet, UML en application.
2. Les diagrammes UML
3. Paquetages
1. Définitions et objectifs
• Actuellement, l'informatique est au cœur de toutes les grandes entreprises. Le système
d'information d'une entreprise est composé de matériels et de logiciels.

• Système informatique:
✓ 80 % de logiciel
✓ 20 % de matériel

• Un logiciel (Software) est un ensemble de programmes, de procédés, de règles, de


documents relatifs au fonctionnement d’un ensemble de traitement de l’information.

• Logiciel = ensemble de programmes coopérant ensemble via des interfaces et de


procédures dédiés à la réalisation d’un ensemble de besoins de ses utilisateurs.

• Logiciel : Pas uniquement du code informatique (code+ structures de données +


documentation
25/12/2020
+ jeux de test + informations de configuration…etc.) Dr. Kouah Sofia
Chapitre 1: Introduction 4
1. Définitions et objectifs
• Constat du développement de logiciels en fin des années 60 :
Les techniques hardware ont atteint un degré de maturité relatif:
• Le matériel est relativement fiable
• Le marché est standardisé
La place des logiciels dans les systèmes complexes augmente régulièrement, or,
les producteurs de logiciel ne respectent que rarement les coûts ou les délais de
développement, quand ce ne sont pas les besoins eux même de leurs clients!
• Les problèmes liés à l’informatique sont essentiellement des problèmes de
Logiciel.
Crise de Logiciel !!!
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 5
Crise de Logiciel
Selon une Étude du DoD (Department of
✓ Délais de livraison non respectés
Defense des États-Unis), 70 % des projets
✓ Cout prévu non respectés initiés sont abandonnés avant leur
✓ Ne répond pas aux besoins de l'utilisateur ou du client achèvement.
✓ Difficile à utiliser, à maintenir, et à faire évoluer

Etude DoD en 1995, sur les logiciels produits dans le cadre de 9 gros projets militaires.

Le génie logiciel est né


de ce constat, en 1968
dans une conférence sur
le thème « La crise du
Logiciel »

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 6


Quelques Causes de la crise de logiciel
• Taille et complexité des logiciels.
• Diversification des domaines d’application.
• Absence de cadre méthodologique, de méthodes et d'outils de développement.
• Mauvaise compréhension des besoins.
• Absence de métrologie de la qualité des processus et des produits logiciels.
• Etc Illustration de mauvaise compréhension des besoins et de difficulté de communication
1. Définitions et objectifs
Génie logiciel (GL) = Génie (l’art de spécifier, réaliser, faire évoluer) + Logiciel

1. Ensemble des méthodes, des techniques et d’outils dédiés à la conception, au

développement et à la maintenance des systèmes informatiques.

2. Le génie logiciel est un domaine des sciences de l’ingénieur dont la finalité est la conception,

la fabrication, et la maintenance des systèmes informatiques complexes sûrs et de qualité.

3. Le génie logiciel est donc l’art de spécifier, de concevoir, de réaliser, et de faire évoluer, avec
des moyens et dans des délais raisonnables, des programmes, des documentations et des
procédures de qualité en vue d’utiliser un ordinateur pour résoudre certains problèmes.
(Gaudel, 1996)
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 8
1. Définitions et objectifs
Objectif du Génie logiciel: Le GL se préoccupe des procédés de fabrication des logiciels en
s’assurant que les 4 critères suivants soient satisfaits:
✓ Coût prévu initialement (Cost)
✓ Qualité attendue (Quality)
✓ Répond aux besoins des utilisateurs (correction fonctionnelle) (Functionnality)
✓ Délais prévus initialement (Delay).
Règle de CQFD ( Cost + Quality + Functionnality + Delay)
• Autrement dit:
✓ Avoir une méthodologie bien définie qui tient compte du cycle de vie du
logiciel
✓ Avoir un ensemble d’éléments qui documentent chaque étapes du cycle de vie
et montrent les traces d’une étapes à l’autre.
✓ Un ensemble de jalons (repères) qui peuvent être révisés à des intervalles
réguliers du cycle de vie de logiciel.
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 9
2. Principes du Génie Logiciel
Le GL est basé sur plusieurs grands principes (de bon sens), nous citons à titre
d’exemples les principes suivants:
• Rigueur
• Généralisation
• Structuration
• Abstraction
• Modularité
• Documentation
• Vérification
• Anticipation du changement
• Construction incrémentale (raffinement)
• Pi 25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 10
2. Principes du Génie Logiciel
• Rigueur: le logiciel doit offrir une solution précise → Développement sérieux,
soigné, non approximatif.
• Généralisation : regroupement d'un ensemble de fonctionnalités semblables en une
fonctionnalité paramétrable (généricité, héritage). → Solution pourra être réutilisée.
• Structuration : façon de décomposer un logiciel (utilisation d’une méthode bottom-
up ou top-down)
• Abstraction (séparation des aspects): mécanisme qui permet de présenter un
contexte en exprimant les éléments pertinents et en omettant ceux qui ne le sont
pas (considération des aspects jugés importants d'un système).
• Modularité (séparation des parties logiques): Principe qui consiste à décomposer un
système en sous-systèmes plus simples afin de maîtriser la complexité. Pi

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 11


2. Principes du Génie Logiciel
• Documentation : gestion des documents incluant leur identification, acquisition,
production, stockage et distribution

• Vérification : détermination du respect des spécifications établies sur la base des besoins
identifiés dans la phase précédente de développement.

• Anticipation du changement: Concevoir un système suffisamment riche pour que l’on


puisse le modifier incrémentalement.

• Construction incrémentale (raffinement) : Consiste à construire une solution étape par


étape en s'approchant de plus en plus du but. (Ex.: réaliser les fonctions essentielles d'un
système puis ajouter les aspects secondaires).

• …etc.
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 12
3.Qualités attendues d’un logiciel
• En génie logiciel, divers travaux ont menés à la définition de la qualité du logiciel en
termes de facteurs, qui dépendent, entre autres, du domaine d’application et des
outils utilisés. Parmi ces derniers nous citons:
• Validité : remplir exactement ses fonctions, définies par le cahier des charges et les
spécifications.

• Fiabilité ou robustesse : fonctionner dans des conditions anormales.

• Facilité d’emploi : facilité d’apprentissage, d’utilisation, de préparation des données,


d’interprétation des erreurs et de rattrapage en cas d’erreur d’utilisation.

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 13


3.Qualités attendues d’un logiciel
• Compatibilité : facilité avec laquelle un logiciel peut être combiné avec d’autres logiciels.

• Efficacité : Utilisation optimales des ressources matérielles.

• Portabilité : facilité avec laquelle un logiciel peut être transféré sous différents
environnements matériels et logiciels.

• Extensibilité (maintenance) : facilité avec laquelle un logiciel se prête à sa maintenance,


c-à-d à une modification ou à une extension des fonctions qui lui sont demandées.

• Réutilisabilité : peut être réutilisé, en tout ou en partie, dans de nouvelles applications.

• Vérifiabilité : facilité de préparation des procédures de test.

• Intégrité : protéger son code et ses données contre des accès non autorisés.
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 14
4.cycle de vie d’un logiciel
• Le processus de développement influence la qualité du logiciel. Donc, pour obtenir un
logiciel de qualité, il faut en maîtriser son processus de développement.

• Un processus de développement logiciel est un ensemble structuré d’activités qui


conduisent à la production d’un logiciel. La vie d'un logiciel est composée de
différentes étapes, depuis sa naissance jusqu’à sa mort ou retrait du service. Donc, un
Cycle de vie du logiciel =
• Naissance du système (l’arrive d’une demande d’un client, proposition ou la décision de développer le système).

• Développement (Cycle de développement)

• Utilisation et Maintenance.

• Mort (Démontage : logiciel n’est plus désiré ou ne répond plus aux besoins évolutifs)
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 15
4.cycle de vie d’un logiciel
Il existe de nombreux modèles de cycle de vie, les plus courants comportent les activités
suivantes :
1. Analyse des besoins
2. Spécification Globale
3. Conception
4. Programmation (Codage)
5. Intégration
6. Installation
7. Maintenance
8. Vérification et Validation
9. Test

Pour chaque activité on a Utilisation et production de documents

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 16


1. Analyse des besoins :
- Comprendre les besoins du client (Déterminer les fonctionnalités du système et ses
contraintes d’utilisation)
- Données: Fournies par les experts du domaine d'application et les futurs utilisateurs.
- Résultat = Cahier de charges (ensemble de documents décrivant les aspects pertinents du futur
système, son environnement, son rôle, sa future utilisation, etc. dans un langage
compréhensible par les utilisateurs et les développeurs)
2. Spécification Globale
- Établir une description claire de ce que doit faire le système (exigences fonctionnelles et non
fonctionnelles, …). Décrire le QUOI.
- Données: Cahier de charges + considérations techniques et de faisabilité informatique.
- Résultat: Document de spécification technique des besoins (il couvre toutes les situations,
plus compréhensible que le cahier de charges).
Remarque: Généralement, il est parfois difficile, voire impossible de séparer les activités
d’analyse des besoins et de spécification. Elles apparaissent regroupées.
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 17
3. Conception : Élaborer une solution concrète réalisant la spécification (Description très proche d’un
programme), généralement décomposée en deux phases successives :
a) Conception générale, conception globale, conception préliminaire ou conception architecturale:
Description architecturale en terme de composants (les composants, leurs fonctionnalités les
interfaces, les interactions entre composants, le choix d’une architecture logicielle).
- Données: Document de spécification technique
- Résultat: Document de conception générale
b) Conception détaillée: Raffine la conception générale. Elle commence par décomposer les
composants découvertes lors de la conception générale en composants plus élémentaires. Cette
décomposition doit être poursuivie jusqu’au niveau où les composants sont faciles à implémenter et à
tester (des composants logiciels élémentaires).
- dépend fortement du langage de programmation. Il faut ensuite décrire chaque composant logiciel en
détail : son interface, les algorithmes utilisés, le traitement des erreurs, ses performances, etc.
- Résultat: document de conception détaillée.
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 18
4. Programmation : Lors de cette phase, la conception détaillée est traduite dans un langage
de programmation.

• Choix de l'environnement de développement, du/des langage(s) de programmation, de


normes de développement...

5. Intégration: Assembler tout ou parties des composants pour créer un système exécutable.
Cette activité utilise la gestion de configurations pour assembler des versions cohérentes de
chaque composant.

6. Installation: Après avoir intégré le logiciel, on peut l’installer dans son environnement
d’exploitation, ou dans un environnement qui simule cet environnement d’exploitation, et le
tester pour s’assurer qu’il se comporte comme requis dans la spécification élaborée.
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 19
4.cycle de vie d’un logiciel
7. Maintenance
• Après l’installation suit la phase d’exploitation et de maintenance. Le logiciel est maintenant
employé dans son environnement opérationnel, son comportement est surveillé et, si
nécessaire, il est modifié. Cette dernière activité s’appelle la maintenance du logiciel
(software maintenance).
• Il peut être nécessaire de modifier le logiciel pour corriger des défauts (Maintenance
Corrective), pour améliorer ses performances ou autres caractéristiques (Maintenance
Perfective), pour adapter le logiciel à un nouvel environnement ou pour répondre à des
nouveaux besoins ou à des besoins modifiés (Maintenance adaptative).

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 20


8. Validation et Vérification:
Validation: A t on décrit le bon système ?(Are we Building the right Product?)?
Bon signifie ici qui répond aux attentes des utilisateurs et aux contraintes de
l’environnement.
Vérification: Le développement est-t-il correct paraport à sa spécification?(Are we
Building the product right?).
9. Test: (plusieurs activités de test)
- Test unitaires: Tester les composants isolés.
- Test d’intégration: Tester un ensemble de composants assemblés.
- Test Système: tester le système sur son futur site d’exploitation.
- Test de non régression: Tester le système suite à une modification.
Remarque: le test est utilise pour la validation & vérification

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 21


5. Modèles de cycle de vie d’un logiciel
Il existe différents modèles de processus logiciel qui organisent de façon différente
ces activités, tels que :
• Modèle en cascade
• Modèle en V
• En Spirale
• Par prototypage
• Par incrément
• En Y
• En W
• …Etc

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 22


Le cycle de vie en " Cascade " (waterfall model)

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 23


Le cycle de vie en " Cascade " (Waterfall model)
Le cycle de vie en « cascade » date de 1970, il est l’œuvre de Royce.
- 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 et à chaque phase correspond une
activité principale bien précise produisant un certain nombre de livrables.
- On ne passe à l’étape suivante que si les résultats de l’étape précédente sont jugés
satisfaisants.
- L’activité d’une étape se réalise avec les résultats fournis par l’étape précédente ; ainsi,
chaque étape sert de contrôle du travail effectué lors de l’étape précédente.
- Chaque phase ne peut remettre en cause que la phase précédente ce qui, dans la pratique,
s’avère insuffisant.
- les erreurs de spécifications sont généralement détectées au moment des tests, voire au
moment de la livraison du logiciel à l’utilisateur. Leur correction nécessite alors de reprendre
toutes les phases du processus.
- Ce modèle est mieux adapté aux petits projets ou à ceux dont les spécifications sont bien
connues et fixes.
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 24
Le cycle de vie en " V "

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 25


Le cycle de vie en " V "
– Dérivé du modèle de la cascade.
– le début du processus de développement conditionne ses dernières étapes.
– Adapté aux projets de taille et de complexité moyenne.
– La première branche correspond à un modèle en cascade classique. Toute description d’un
composant est accompagnée de définitions de tests.
Avec les jeux de tests préparés dans la première branche, les étapes de la deuxième branche
peuvent être mieux préparées et planifiées.
– La seconde branche correspond à des tests effectifs effectués sur des composants réalisés.
– L’intégration est ensuite réalisée jusqu’à l’obtention du système logiciel final.
– L’avantage d’un tel modèle est d’éviter d’énoncer une propriété qu’il est impossible de
vérifier objectivement une fois le logiciel réalisé.
– le cycle en V est normalisé, il est largement utilisé, notamment en informatique industrielle
et télécoms
25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 26
Le cycle de vie en spirale

25/12/2020 Chapitre 1: Introduction Dr. Kouah Sofia 27


Chapitre 2: Modélisation avec UML

1. Introduction: Modélisation, Modèle, Modélisation Orientée Objet, UML en application.


2. Les diagrammes UML
3. Paquetages

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 28


1. Modélisation
• Modèle : Simplification de la réalité, abstraction, vue subjective
Exemples: 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.

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 29


Modélisation

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 30


Modèle
• Un Modèle est une abstraction de la réalité.
• c’est une représentation abstraite de tout ou partie du réel.
• Un modèle permet de capturer les aspects pertinents répondant à un objectif défini a
priori.
• Un Outil est un support automatisé ou semi automatisé pour supporter des méthodes
(Formalisme ou langage permettant d’exprimer un modèle).
• Une Méthode est la manière dont on va conduire une activité, elle utilise des modèles
et des outils, et suit une démarche de mise en œuvre.

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 31


Méthodes de conception
• Méthode fonctionnelle
✓Système est décomposé en un ensemble de fonctions
✓État du système (données) centralisé et partagé par les fonctions.
• Méthodes guidée par les données
✓la structure d’un système peut se déduire de la structure des données apparaissant en
entrée et en sortie de ce système.
• Méthodes orientée objets
✓Système = ensemble d’objets
✓Objet = données + méthodes
✓Exemples de méthodes orientées objets :
- OOA (Object-Oriented Analysis), Coad.
- OOD (Object-Oriented Design), Grady Booch.
- OMT (Object Modeling Technique), James Rambaugh.
- OOSE (Object-Oriented Software Engineering), Ivar Jacobson.
25/12/2020 Modélisation avec UML Dr. Kouah Sofia 32
Méthode fonctionnelle

Méthode orientée objets

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 33


Modélisation Orientée Objet
• Principes
✓Concept du domaine d'application = objet
✓Décrit par état (attributs) + comportement (opérations)
✓Liens entre concepts : héritage, agrégation, composition...(seront abordes lors de la
présentation des diagrammes)
• Caractéristiques des objets
✓Identité : objet = entité unique (mêmes attributs ⇏ même objet)
✓Classification : regroupement des objets de même nature (attributs + opérations)
✓Polymorphisme : comportement différent d'une même opération dans différentes
classes
✓Héritage : partage hiérarchique des attributs et opérations

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 34


2. UML: Unified Modeling Language?
• UML est un Langage, ayant :
✓Une Syntaxe et des règles d'écriture (Sémantique)
✓Notations graphiques normalisées
• UML est Langage de modélisation :
✓Abstraction du fonctionnement et de la structure du système
✓Spécification et conception
• UML est un Langage unifié :
✓Fusion de plusieurs notations antérieures : Booch, OMT, OOSE.
✓Standard défini par l'OMG (Object Management Group)
✓Version actuelle : UML 2.5
En résumé : UML est un langage graphique pour visualiser, spécifier, construire et
documenter un logiciel
UML: Unified Modeling Language?

• Langage graphique : Ensemble de diagrammes permettant de


modéliser le logiciel selon différentes vues et à différents niveaux
d'abstraction
• Modélisation orientée objet : modélisation du système comme un
ensemble d'objets interagissant entre eux.
• UML n'est pas une méthode de conception
Pourquoi UML ?
• Besoin de modéliser pour construire un logiciel:
✓ Modélisation des aspects statiques et dynamiques
✓Modélisation à différents niveaux d'abstraction et selon plusieurs vues
• Indépendant du processus de développement
• Besoin de langages normalisés pour la modélisation
✓Langage semi-formel
✓Standard très utilisé
• Conception orientée objet
✓Façon efficace de developper le logiciel
✓Indépendance du langage de programmation (langages non objet)
25/12/2020 Modélisation avec UML Dr. Kouah Sofia 37
Les diagrammes UML
14 diagrammes hiérarchiquement dépendants
Modélisation à tous les niveaux le long du processus de développement
• Diagrammes structurels : • Diagrammes comportementaux :
✓Diagramme de classes ✓Diagramme de cas d'utilisation
✓ Diagramme d'objets ✓ Diagramme états-transitions
✓ Diagramme de composants ✓Diagramme d'activités
✓ Diagramme de déploiement Diagrammes d'interaction :
✓ Diagramme de paquetages ✓Diagramme de séquence
✓ Diagramme de structure composite ✓Diagramme de communication
✓ Diagramme de profils ✓Diagramme global d'interaction
✓Diagramme de temps
25/12/2020 Modélisation avec UML Dr. Kouah Sofia 38
Les diagrammes UML

Diagramme de
profils
Les diagrammes UML

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 40


3. Paquetages
• Il montre l’organisation logique du modèle et les relations entre packages.

• Le package est un mécanisme regroupant plusieurs éléments d’UML (peut regrouper des classes, des cas
d’utilisation, des interfaces, des composants….). Le diagramme de package sert à :

• Avoir une vision globale des différents sous-systèmes du système étudié.


• Représenter l’architecture globale du système et aider à organiser du code (java ou C#) .
• Modulariser les diagrammes (UML) les plus complexes. Le découpage d’un modèle (de classes ou de cas
d’utilisation) est une activité délicate. Il faudra regrouper les classes d’un point de vue sémantique c'est-à-dire :
• Les classes d’un même package doivent rendre des services de même nature aux utilisateurs.
• Minimiser les dépendances entre les packages.
• Les dépendances entre packages doivent refléter des relations internes au système.
• Il ne doit pas y avoir de dépendance cyclique entre des packages.

25/12/2020 Modélisation avec UML Dr. Kouah Sofia 41


Package contient d’autres packages
- Généralisation entre packages
- Possibilité de réutilisation de packages
Dépendance : Une classe d'un
paquetage a parfois besoin
d'utiliser une classe d'un autre
paquetage. Cela crée une
dépendance entre les paquetages :

Si un élément du paquetage A
utilise un élément du paquetage
B alors:
le paquetage A dépend du
paquetage B .
• Les relations d'importation et d'accès peuvent
être utilisées pour modéliser l'importation de
classes dans un espace de noms afin que les
éléments de l'espace de noms effectuant
l'importation puissent faire référence à ceux de
l'espace de noms cible sans employer son nom.
• Le paquetage B importe C et accède à D. B voit
donc les éléments publics de C et de D.
Puisque A importe B, A voit les éléments
publics de B. A voit également les éléments
publics de C car C est importé publiquement dans
B, mais A ne voit pas le contenu de D car D est
accédé privativement dans B.
Références
1. Delphine Longuet. UML: Introduction au génie logiciel et à la modélisation. Notes de
cours de l’université Polytech Paris-Sud. Formation initiale 3e année. Spécialité
Informatique. Année 2017-2018.
2. Pierre Gerard. Génie Logiciel - Principes et Techniques (univ-paris13.fr). Notes de cours
de IUT de Villetaneuse - Université de Paris 13 Licence Pro. FC 2007/2008. Lien:
https://lipn.univ-paris13.fr/~gerard/docs/cours/gl-cours-slides.pdf

3. Ilham Boussaïd. Cours Génie Logiciel. USTHB - Année Universitaire 2009-201.


4. Cours du Pr. Sahnoun Zaidi, 4ième année ingénieurs, Université Mentouri de
Constantine.2001ML 2 ANALYSE ET CONCEPTION
5. Joseph Gabay, David Gabay. UML 2 Analyse et conception: Mise en œuvre guidée avec
études de cas.
6. Stefano Zacchiroli. Génie Logiciel Avancé- Cours 1 — Introduction. Notes de cours.
Laboratoire PPS, Université Paris Diderot - Paris 7. 3 Février 2011.

Vous aimerez peut-être aussi