Vous êtes sur la page 1sur 57

CHAP 1 :

LE GÉNIE LOGICIEL
Introduction au GL
GI 21 Meriem ZAOUI – Génie Logiciel 2

Qu’est ce que le GÉNIE LOGICIEL?

Définition
Le génie logiciel est un domaine des sciences de
l’ingénieur dont l’objet d’étude est la conception, la
fabrication et la maintenance des systèmes
informatiques complexes.
GI 21 Meriem ZAOUI – Génie Logiciel 3

Qu’est-ce qu’un ingénieur en génie


logiciel?
▪ Un ingénieur logiciel se spécialise dans la conception, la
maintenance et le développement des systèmes et des produits
logiciels.
▪ Il est généralement responsable de l'élaboration et de la gestion
des projets à grande échelle,
▪ où la sécurité du public, ainsi que la maintenance et l'évolution
des systèmes de logiciel, sont d'une importance primordiale
GI 21 Meriem ZAOUI – Génie Logiciel 4

Compétence d’un ingénieur en GL

▪ Compréhension des fondements et principes fondamentaux de


l’informatique.
▪ Maîtrise d’un ensemble de connaissances (polyvalence).
▪ Compréhension et maîtrise des modèles et techniques
standardisés.
▪ Capacité à résoudre des problèmes technologiques souvent
complexes.
▪ Capacité à travailler en équipe, à planifier et à gérer des
projets.
▪ Ouverture, créativité et sens critique.
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 5

Système ?

• Un SYSTÈME est un ensemble d'éléments en interaction


dynamique, organisés en fonction d'un but.

• Un système peut être caractérisé par quatre éléments:


• Son but (les objectifs à atteindre);
• Ses moyens (ses ressources en hommes et ses ressources
matérielles);
• Ses méthodes (les principes qui régissent son
fonctionnement);
• Ses règles opératoires (ses procédures courantes).
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 6

Système informatique?
▪ Le SYSTÈME INFORMATIQUE est l’ensemble des éléments
destinés à traiter automatiquement l’information (acquérir,
stocker, traiter et communiquer des données).

▪ Le système informatique est caractérisé par son but, ses moyens,


ses méthodes et ses règles.
• Le but d’un système informatique est d’assurer le traitement
automatique des informations utiles à l’entreprise.
• Les moyens : matériels, logiciels, humains et financiers
• Les méthodes : planification des étapes, choix de la base de données,
traitement local ou distant, etc.
• Les règles : règles de contrôles, formules de calcul, définition des
responsabilités, etc.
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 7

Système informatique?
▪ Systèmes informatiques =
▪ 80 % de logiciel et 20 % de matériel

▪ La fabrication du matériel est assurée par quelques fabricants


▪ Le matériel est relativement fiable
▪ Le marché est standardisé

▪ Les problèmes liés à l’informatique sont essentiellement des


problèmes de Logiciel
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 8

Le logiciel
▪ 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
▪ Un logiciel est un produit qui couvre un ensemble organisé de :
• Programmes
• Procédés
• Documentation
• Services
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 9

Les logiciels sont partout !


Les logiciels sont omniprésents dans notre quotidien. On les
utilise, entre autres :
• pour contrôler des équipements et des objets interconnectés
dans une maison (l’internet des objets),
• interagir sur les réseaux sociaux,
• créer des environnements virtuels,
• contrôler une voiture autonome,
• traiter massivement des données
• ou assurer la sécurité des systèmes informatiques.
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 10

Caractéristiques du logiciel

▪ Un produit immatériel

▪ Ne s’use pas (mais devient obsolète)


▪ Le logiciel est facile à reproduire (seule la première copie d’un logiciel a
un coût)
▪ Ses fonctionnalités sont difficiles à figer au départ et sont
souvent remises en cause
▪ Un objet technique fortement contraint
• Fonctionne ou ne fonctionne pas
• Structure complexe
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 11

Différentes catégories de logiciels


Sur mesure Générique
Réalisé pour un client spécifique Vendu sur un marché
(majorité des logiciels)
• Logiciels essentiels au
fonctionnement d’une • Il propose des « fonctions
entreprise. Il doit avoir un polyvalentes »
comportement fiable, sûr et • Logiciel sans impact
sécurisé. économique significatif
(logiciels amateurs)
• Logiciels vitaux, c’est-à-dire ceux
dont dépend la vie d’êtres • Logiciel jetable ou
humains (domaines du transport, consommable (par exemple
de l’armement et de la les traitements de texte)
médecine).
GI 21 Meriem ZAOUI – Génie Logiciel 12

Domaines d’application
• Système • Embarqué (Embedded)
• Compilateurs • Programme FPGA (circuit
• Editeurs intégré)
• Gestion de fichiers • Auto-contrôle

• Temps réels (Real-time) • Scientifique


• Contrôle de machine • Simulation
• Conception assisté par
ordinateur
• Affaires (Data processing) • Calcul numérique intensif
• SGBD (Oracle)
• ERP (SAP)
• Intelligence artificielle
• Système expert
GI 21 Meriem ZAOUI – Génie Logiciel 13

Domaines d’application
• Logiciels de gestion • Logiciel d’application
• Gestion comptable (bureautique)
• Gestion commerciale • Les traitements de
• Gestion de stock texte(Microsoft Word..)
• Les tableurs(Lotus , Excel…)
• Logiciel industriel • Logiciels de présentation
• CAO : Conception Assistée par (PowerPoint…)
Ordinateur.
• FAO : Fabrication Assistée par • ……..
Ordinateur.
• MAO: Maintenance Assistée par
Ordinateur.
• DAO : Dessin Assisté par
Ordinateur.
GI 21 Meriem ZAOUI – Génie Logicie – Chap 1l 14

Qualités d’un logiciel

Qualités externes Qualités internes


(côté client/user) (concepteur)

Adéquation, validité Flexibilité, modularité


Ergonomie Réutilisabilité
Facilité d’apprentissage Lisibilité, clarté
Efficacité Facilité de maintenance
Fiabilité Facilité d’extension, évolution
Sureté, robustesse, Portabilité
Sécurité Compatibilité
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 15

Crise du logiciel
• Systèmes
L’évolution du logiciel est liée personnels
à l’évolution du matériel • Orientation
• Systèmes objet
distribués • Systèmes
• Multi-usagers experts
• Temps-Réel • Applications
• Distribution • Base de embarquées Quatrième époque
limitée données
• Logiciel • Progiciel Troisième époque
personnalisé
Deuxième époque

Première époque

1950 1960 1970 1980 1990


GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 16

Crise du logiciel
▪ Il y a eu une prise de conscience dans les années 70, appelée la crise
du logiciel, car à cette époque le coût de construction du logiciel est
devenu plus important que le coût de la construction du matériel.
GI 21 Meriem ZAOUI – Génie Logiciel – Chap 1 17

Crise du logiciel

▪ Trois constatations :
• Le logiciel n’était PAS FIABLE
• Il était difficile de réaliser dans des DÉLAIS prévus des logiciels
satisfaisant leurs cahiers des charges
• Les COÛTS sont largement dépassés
GI 21 Meriem ZAOUI – Génie Logiciel 18

Crise du logiciel : Fiabilité (exemples)


▪ Perte de la première sonde « Mariner 1» vers Venus dans
l’espace à cause d’une erreur dans un programme Fortran (22
juillet 1962)
▪ En 1971, lors d’une expérience météorologique en France, 72
ballons contenant des instruments de mesure furent détruits
tout d’un coup à cause d’un défaut dans le logiciel
▪ Dans la nuit du 15 au 16 décembre 1990, les abonnés de ATT de
la côte est des Etats-Unis furent privés de tout appel longue
distance à cause d’une réaction en chaîne dans le logiciel de
réseau due à un changement de version de ce logiciel
GI 21 Meriem ZAOUI – Génie Logiciel 19

Crise du logiciel : Délai (exemples)


Il était difficile de réaliser dans des délais prévus des logiciels
satisfaisant leurs cahiers des charges
▪ Certains projets n’aboutissent jamais
• Compilateur PL1 chez Control Data dans les années 70

▪ D’autres aboutissent avec des retards importants et des


remises en cause dramatiques
• Dans les années 60, OS-360 d’IBM fut livré avec 2 ans de retard, il
nécessitait plus de mémoire que prévu, son prix de revient dépassait
de beaucoup les estimations, et ses premières versions comportaient
des erreurs
GI 21 Meriem ZAOUI – Génie Logiciel 20

Etude du DOD en 1995


GI 21 Meriem ZAOUI – Génie Logiciel 21

Enquête : Petits ou grands projets


GI 21 Meriem ZAOUI – Génie Logiciel 22

Pourquoi ?
Quelles sont les causes de ces
« défaillances »?
GI 21 Meriem ZAOUI – Génie Logiciel 23

Raisons de la faible qualité du logiciel ?


Tâche complexe
• Taille et complexité des logiciels
• Taille des équipes de conception et de développement

Manque de méthode et de rigueur


• Manque de méthodes de conception
• Manque de méthodes et d’outils de vérification et de
validation

Mauvaise compréhension des besoins


• Négligence de la phase d’analyse des besoins du client
• Client non impliqué dans le processus de développement
GI 21 Meriem ZAOUI – Génie Logiciel 24

Raisons de la faible qualité du logiciel ?


Difficultés spécifiques du logiciel
• Produit invisible et immatériel
• Difficile de mesurer la qualité
• Mise à jour et maintenance dues à l’évolution rapide de la
technologie
• De petites modifications peuvent avoir des conséquences
critiques
GI 21 Meriem ZAOUI – Génie Logiciel 25

Importance de la qualité
▪ Fiabilité + Sureté + Sécurité des logiciels
• Transports automobile, ferroviaire, aéronautique
• Contrôle de processus industriels, nucléaire, armement
• Médical : imagerie, appareillage, télésurveillance
• e-commerce, carte bancaire sans contact, passeport électronique

▪ Raisons économiques : le coût

➔ Le Génie logiciel
GI 21 Meriem ZAOUI – Génie Logiciel 26

Génie logiciel : définition

Discipline (= méthodes, techniques et outils)

▪ basée sur le savoir (théorique)


▪ le savoir-faire (pragmatique)
▪ et le faire savoir (communication)
▪ pour produire (développement)
▪ de façon industrielle (taille, diffusion)
▪ des logiciels (= les produits)
de qualité au meilleur
prix...
GI 21 Meriem ZAOUI – Génie Logiciel 27

Le GÉNIE LOGICIEL?

▪ Le résultat de l'ingénierie logicielle est un produit logiciel efficace


et fiable.
▪ Le terme « génie logiciel » est composé de deux mots :
• le logiciel
• et l'ingénierie,

▪ Le logiciel n’est pas seulement un code de programme.


• Un programme est un code exécutable, qui sert à des fins de calcul.

▪ Le logiciel, est considéré comme une collection de :


• code de programmation exécutable,
• des bibliothèques associées
• et de documentations.
GI 21 Meriem ZAOUI – Génie Logiciel 28

Qu’est ce qu’un logiciel ?


Un logiciel est l’ensemble des programmes, des procédures et des
documentations nécessaires au fonctionnement d’un système
informatique
• il est fait pour des utilisateurs
o dialoguer métier, produire des documents
homme-mois
• il est complexe et de très grande taille nb instructions
o 1/2 M Inst. → exp. physique des particules CERN
o 1 M Inst. → centrale téléphonique
o 50 M Inst. → contrôle sol + vol navette spatiale

• il fait intervenir plusieurs participants/intervenants


o travail en équipe(s), organisation, planification

• il est long et coûteux à développer


o risques nombreux et important : délais, coût
GI 21 Meriem ZAOUI – Génie Logiciel 29

Problèmes actuels du génie logiciel


1. Taille et complexité du logiciel
• Complexité fonctionnelle

• Mutations technologiques perpétuelles

• Complexité des architectures

• Solutions :
• Distinguer analyse et réalisation
• Décomposer le système
• Utiliser une approche de haut niveau
GI 21 Meriem ZAOUI – Génie Logiciel 30

Problèmes actuels du génie logiciel


2. Taille croissante des équipes
• Compétences de + en + variées et pointues

• Applications stratégiques orientées métier

• Délais de + en + courts

• Solutions :
• Technologie unifiant le vocabulaire
• Méthode, démarche de travail
CHAP 2
GÉNIE LOGICIEL : PRINCIPES ET
ACTIVITÉS
GI 21 Meriem ZAOUI – Génie Logiciel 32

Introduction
▪Le logiciel est un produit complexe.
« La qualité du processus de fabrication est garante de la qualité
du produit »

➔ Pour obtenir un logiciel de qualité, il faut en maitriser


le processus de production
▪ Comme pour tout produit complexe :
▪ on décompose la production en phases
▪ l’ensemble des phases constitue un cycle de vie
▪ les phases font apparaître des activités clés
GI 21 Meriem ZAOUI – Génie Logiciel 33

Règle générale

Maitriser la complexité

DÉCOMPOSITION
GI 21 Meriem ZAOUI – Génie Logiciel 34

Introduction
Objectif : avoir des procédures systématiques pour des
logiciels de grande taille afin que
• la spécification corresponde aux besoins réels du client
• le logiciel respecte sa spécification
• les délais et les coûts alloués à la réalisation soient respectés

➔ Améliorer la qualité
Réduire les délais
Optimiser les coûts
GI 21 Meriem ZAOUI – Génie Logiciel 35

Activités du développement de logiciels

◼ Analyse des besoins


◼ Spécification

◼ Conception

◼ Programmation/Codage

◼ Intégration

◼ Vérification et Validation

◼ Maintenance
GI 21 Meriem ZAOUI – Génie Logiciel 36

Quelques chiffres

Répartition générale des efforts : en pourcentage

• Programmation : 10 à 20%
• Spécification et conception : environ 40%
• Validation et vérification : de l’ordre de 40%
GI 21 Meriem ZAOUI – Génie Logiciel 37

• Analyse des besoins

Analyse des besoins •



Spécification
Conception
• Programmation
• Intégration

◼ But : •
Vérification et Validation
Maintenance
→ déterminer ce que doit faire (et ne pas faire) le logiciel
→ déterminer les ressources, les contraintes

◼ Caractéristiques :
→ parler métier (avec client et utilisateurs) et non informatique
→ faire des entretiens, questionnaires
→ observation de l’existant, étude de situations similaires

◼ Résultat : ensemble de documents (cahier des charges)


→ rôle du système
→ future utilisation
→ aspects de l’environnement
→ (parfois) un manuel d’utilisation préliminaire
GI 21 Meriem ZAOUI – Génie Logiciel 38

• Analyse des besoins

Spécification •

Spécification
Conception
• Programmation
• Intégration
• Vérification et Validation
◼ But : • Maintenance

→ établir une 1ère description du futur système qui sera


consignée dans un document qui fait référence

◼ Données :
→ résultats de l’analyse des besoins + faisabilité informatique

◼ Résultat : Spécification Technique de Besoin (STB)


→ ce que fait le logiciel, mais pas comment

◼ Remarques :
→ pas de choix d’implémentation
→ (parfois) un manuel de référence préliminaire
GI 21 39

• Analyse des besoins

Conception •

Spécification
Conception
• Programmation
• Intégration
• Vérification et Validation
◼ But : • Maintenance

→ décrire commentle logiciel est construit


→ décider comment utiliser la technologie pour répondre aux besoins

◼ Travail :
→ enrichir la description de détails d’implémentation
→ pour aboutir à une description très proche d’un programme

◼ 2 étapes :
→ conception architecturale
→ conception détaillée
GI 21 40

• Analyse des besoins

Programmation •

Spécification
Conception
• Programmation
• Intégration
• Vérification et Validation
◼ But : • Maintenance

→ passer des structures de données et algorithmes à un ensemble


de programmes

◼ Résultat :
→ ensemble de programmes
→ ensemble de bibliothèques / modules
→ documentés (ex : commentaires)

◼ Remarque :
→ activité la mieux maîtrisée et outillée (parfois automatisée)
GI 21 Meriem ZAOUI – Génie Logiciel 41
• Analyse des besoins

Intégration (Décomposition => intégration)




Spécification
Conception
• Programmation
• Intégration
• Vérification et Validation
• Maintenance
◼ Intégration :
→ assembler les composants pour obtenir un système
exécutable

◼ Gestion de configurations :
→ gérer les composants logiciels (programmes, bibliothèques, …)
→ maîtriser leur évolution et leurs mises à jour
GI 21 Meriem ZAOUI – Génie Logiciel 42

• Analyse des besoins

V&V •


Spécification
Conception
Programmation
• Intégration
• Vérification et Validation
• Maintenance

Importance du contrôle du processus : rétro-actions, validation,


vérification, tests

• Vérification : Le système est-il conforme à la spécification?


• Validation : Le système répond-t-il aux exigences du client?
GI 21 Meriem ZAOUI – Génie Logiciel 43

Vérification

◼ But : vérifier par rapport aux spécifications


→ vérifier que les descriptions successives
(et le logiciel final) respectent la STB

◼ Moyens : revues de projet, tests


→ test = chercher des erreurs dans un programme
→ exécution sur un sous-ensemble fini de données

◼ Types de tests :
→ test unitaire : composants isolés
→ test d’intégration : composants assemblés
→ test système : système installé sur site
→ test d’acceptation : testé par l’utilisateur
GI 21 Meriem ZAOUI – Génie Logiciel 44

Validation

◼ But :
→A-t-on décrit le bon système ?
→Le logiciel répond t-il à l’attente des utilisateurs et aux exigences
de l’environnement?

◼ Moyens :
→ revues et inspection de spécification
→ prototypage rapide
→+ les tests
GI 21 Meriem ZAOUI – Génie Logiciel 45

Documentation
▪ Tous les documents générés après chaque activité ou phase
+
▪ Les manuels d'utilisation et d'exploitation doivent être prêts
au plus tard lors de l'installation

▪ Différents documents possibles selon la complexité du


logiciel :
• Guide d'installation
• Guide de l'utilisateur
• Guide de l'opérateur
• Manuel de référence
• Documentations des composants logiciels
GI 21 Meriem ZAOUI – Génie Logiciel 46

Documentation : exemples

DOCUMENTS PHASE DE PRODUCTION


Manuel utilisateur final Implémentation
Conception architecturale Conception
Plan de test Spécification
Code source Implémentation
Cahier des charges Faisabilité/Analyse des besoins
Manuel utilisateur préliminaire Spécification
Estimation des coûts Planification
Rapport des tests Tests
GI 21 Meriem ZAOUI – Génie Logiciel 47

Sans oublier : Installation


▪ Dernières étapes avant exploitation
• Installer le logiciel dans son environnement opérationnel
• Vérifier le logiciel dans son environnement opérationnel
• Organiser la formation des utilisateurs
• Planifier la transition

▪ Puis phase de Maintenance …


GI 21 Meriem ZAOUI – Génie Logiciel 48

Activités du Génie logiciel (ANSI/IEEE 1002)

▪Ingénierie du produit (product


engineering)
• Analyse des besoins (requirements analysis)
• Conception (design)
• Codage (coding)
• Intégration (integration)
• Conversion (conversion)
• Débogage (debugging)
• Support du produit (product support)
• Maintenance (maintenance)
GI 21 Meriem ZAOUI – Génie Logiciel 49

Activités du Génie logiciel (ANSI/IEEE 1002)

▪Vérification et validation (verification and


validation)
• Revues et audits (reviews and audits)
• Analyse du produit (product analysis)
• Test (testing)

▪Gestion technique (technical management)


• Gestion du processus (process management)
• Gestion du produit (product management)
• Gestion des ressources (resource management)
GI 21 Meriem ZAOUI – Génie Logiciel 50

Facteurs de qualité d’un logiciel


▪ Qualité externe (client, utilisateur)
• Réalise les tâches attendues (complétude fonctionnelle)
• Est facilement utilisable (utilisabilité)
• Fonctionne même dans les cas atypiques (fiabilité)
• S'adapte à d'autres besoins (adaptabilité)

▪ Qualité interne (développeur)


• Composants réutilisables (réutilisabilité)
• Composants documentés selon standards (traçabilité)
• Bonne utilisation des ressources (efficacité)
• Adaptation à de nouveaux environnements (portabilité)
GI 21 Meriem ZAOUI – Génie Logiciel 51

Principes du génie logiciel


Le GL repose sur un ensemble de principes généraux mis en
œuvre par des méthodes, des techniques et des outils.

Parmi ces principes :

• Rigueur
• Modularité
• Abstraction
• Séparation des préoccupations
GI 21 Meriem ZAOUI – Génie Logiciel 52

Principes : la Rigueur
▪ Ingénieur = rigueur + précision

▪ Les activités logicielles doivent être réalisées rigoureusement


• Suivre des processus adaptés
• Utiliser correctement des techniques adaptées
• Fournir les livrables prévus (documents, modèles, code)
• Valider toutes les livraisons
• Avoir une attitude professionnelle au sein d’une équipe,
• etc.

▪ Deux remarques
• La rigueur ne tue pas la créativité
• Rigueur n’est pas égal à formel (=précision)
GI 21 Meriem ZAOUI – Génie Logiciel 53

Principes : La Modularité

▪ Décomposition => modularité


▪ Le principe est de remplacer le problème initial par des
modules moins complexes (plus simples a réaliser).
• chaque module traite une partie du problème
• les modules sont compréhensibles, homogènes, indépendants
• mais les modules sont reliés entre eux

▪ On recherche
• Faible couplage
• Forte cohésion
GI 21 Meriem ZAOUI – Génie Logiciel 54

Principes : l’Abstraction
▪ Organiser les informations (ou les modules) suivant
différents niveaux d’organisation
• Définition de niveaux de généralisation
• A un niveau donné, on ne considère que les informations
ayant le même « niveau sémantique »
• Exemple : Ne considérer que l’interface ou les données ou la
sécurité
• Un niveau doit être compréhensible, homogène, complet

▪ On recherche
• Des niveaux bien découplés
• Le passage d’un niveau à l’autre doit être facile
GI 21 Meriem ZAOUI – Génie Logiciel 55

Principe : Séparation des préoccupations


▪ Le principe est de se concentrer sur un seul aspect du
problème à la fois et le traiter de façon indépendante

▪ Exemples
• Séparation des rôles des différents acteurs
• Séparation des phases de développement
• Exemple : Se concentrer uniquement sur la sécurité

▪ Il faut choisir des aspects suffisamment indépendants


• Les aspects trop liés doivent être traités ensemble
GI 21 Meriem ZAOUI – Génie Logiciel 56

Principe : Séparation des préoccupations


▪ Séparation des rôles : Identification et définition de rôles
différents au sein d’un développement logiciel
• Chaque acteur a une préoccupation/tâche différente
GI 21 Meriem ZAOUI – Génie Logiciel 57

Relations entre les acteurs

Vous aimerez peut-être aussi