0% ont trouvé ce document utile (0 vote)
88 vues43 pages

Introduction au Génie Logiciel 2015/2016

Transféré par

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

Introduction au Génie Logiciel 2015/2016

Transféré par

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

INL52 : Génie

Logiciel et projets
Année académique : 2015/2016
Génie Logiciel et projets
Année Académique : 2015/2016

Etablissement : ENS de Maroua

Niveau : Licence, troisième Année

Enseignant : HAYATOU OUMAROU


[email protected]
Informations générales
 Types de cours :
◦ Cours magistral
◦ Travaux dirigés
◦ Travail Personnel Encadré

 Organisation des évaluations :


◦ Contrôle continu
◦ TPE
◦ Examen
◦ Session de rattrapage

 Durée : 36h

ENS C1A3 GL Hayatou Oumarou 3


Génie Logiciel et Projets

Chapitre 1 : Introduction générale.

Chapitre 2 : Cycle de vie d'un logiciel.

Chapitre 3 : Modélisation semi-formelle et formelle

Chapitre 4 : Planification et Gestion de projets.

Chapitre 5 : Métriques et gestion des risques.


Chapitre 1 :
Introduction générale

ENS C1A3 GL Hayatou Oumarou 5


Introduction générale

Matériel et logiciel
Systèmes informatiques
 80 % de logiciel
 20 % de matériel
Constat :
 Le matériel est relativement fiable
 Le marché est standardisé
Les problèmes liés à l'informatique sont
essentiellement des problèmes de Logiciel
Bugs

 Apollo 11, premier alunissage du module lunaire (1969)


◦ Données absurdes et alarmes
◦ logicielles intempestives lors de l’alunissage (calcul de la trajectoire)
◦ Amstrong atterrit manuellement, sans aucune marge de sécurité
 panne, en 1990, du réseau téléphonique de la cote Est des USA
suite à un changement de version d’un des modules du système de
gestion du réseau
◦ Des millions dabonnés mécontents
◦ Trois (3 !) lignes de code modifiées sur plusieurs millions, pas la peine de
tester, n’est-ce pas ? D’autant plus que la première phase de test avait duré 13
semaines et que le client n’est pas disposé à attendre une seconde fois…
Bugs
 échec d’ARIANE 5 suite à un bug logiciel
◦ Auto-destruction après 40 s de vol car le lanceur quitte sa
trajectoire nominale
◦ Perte du lanceur et de sa charge utile
◦ Retard du programme
◦ Doute sur la fiabilité d'Ariane
◦ Cause : Une erreur de conversion (overflow) 64 bits → 16
bits dans un module (IRS) chargé d’estimer l’accélération et la
vitesse provoque une exception Ada pour laquelle il n’est
prévue aucun « handler »
Bugs
 Appareil de radio-thérapie Therac-25, USA et Canada
(1986)
◦ L’appareil permettait deux niveaux d’irradiation, l’un faible,
l’autre 100 fois plus puissant. Le second nécessitait
l’interposition d’un bouclier de tungstène entre le patient et la
source.
◦ Plusieurs patients furent irradiés à la puissance maximale sans
bouclier
◦ Six accidents, plusieurs morts
◦ L’opérateur commence avec la dose maximale et le bouclier, puis
s’aperçoit qu’il doit en fait administrer la faible dose. Il réinitialise l’appareil,
le bouclier se retire avant que la source ne réduise sa puissance.
Bugs
 Système de manipulation automatique des bagages de
l’aéroport de Denver (1993-1995)
◦ Système « pharaonique » :
 4000 véhicules (telecars),
 3 terminaux,
 plus de 30 km de circuit,
 300 ordinateurs
◦ Chaos total lors des tests
◦ Bagages détruits (même « mâchés » !)
◦ Crashes, collisions, détérioration des rails…
◦ Blocage des telecars par les bagages qu’ils détruisaient…
La crise du logiciel
 Etude du gouvernement américain en 1979
 Payés mais jamais livrés $3.2M 47%
 Livrés mais jamais utilisés $2.0M 29%
 Abandonnés ou refaits $1.3M 19%
 Utilisés après modification $0.2M 3%
 Utilisés tel quel $0.1M 2%

BTS IRIS 2 GL 11
Crise du logiciel
 Conférence de l'OTAN à Garmish,
Allemagne (1968)
◦ L'informatique ne répond pas aux attentes qu'elle
suscite
◦ L'informatique coûte très cher et désorganise les
entreprises ou organisations
 Introduction de l'expression < Génie
Logiciel > (Software Engineering)
◦ Comment faire des logiciels de qualité ?
◦ Qu'attend-on d'un logiciel ? Quels sont les
critères de qualité pour un logiciel ?

ENS C1A3 GL Hayatou Oumarou 12


Génie Logiciel
Quels sont les buts d’un ingénieur ?
Le but principal est de créer des produits.
En ce qui nous concerne, en Ingénierie des
logiciels et de la connaissance, on apprend
à créer des logiciels.
Qu’appelle t’on génie ?
Il s’agit de l’ensemble des méthodes,
techniques et outils pour créer des
produits.
ENS C1A3 GL Hayatou Oumarou 13
Qu’est-ce que le génie logiciel ?

 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.
 Boehm (1976) : «the practical application
of scientific knowledge to the design and
construction of computer programs and
the associated documentation required to
develop, operate, and maintain them ».

ENS C1A3 GL Hayatou Oumarou 14


Qu’est-ce que le génie logiciel ?

 Le génie logiciel est une discipline


technologique basée sur les fondements
de l’informatique, de la gestion, de
l’économie, des techniques de
communication et de l’approche
d’ingénierie pour la solution des
problèmes. Le génie logiciel est fondé sur
l’informatique pour y puiser les bases
scientifiques tout comme le génie électrique
ou le génie chimique sont fondés sur la
physique ou la chimie.

ENS C1A3 GL Hayatou Oumarou 15


Définition génie logiciel ?

 « On appelle Génie Logiciel l’application


des méthodes scientifiques au développement
de théories, méthodes, techniques, langages
et outils favorisant la production de logiciel de
qualité ». Bertrand Meyer
 En resume le genie logiciel est un :
◦ Ensemble
 de méthodologies
 de méthodes
 de techniques
 D’outils
◦ pour produire, utiliser et maintenir du logiciel de
qualité industrielle

ENS C1A3 GL Hayatou Oumarou 16


Le génie logiciel
Comme toute discipline d’ingénierie, le génie
logiciel n’est pas purement technique
 Aspect humains
◦ Sélection, constitution, et gestion des équipes
◦ Formation des personnels
◦ Relation avec les clients prescripteurs
 Aspects financiers
◦ Estimation des coûts
◦ Suivi de projet
◦ Gestion budgétaire

ENS C1A3 GL Hayatou Oumarou 17


Pourquoi le GL?
Si l'on veut maîtriser le développement de systèmes
complexes, il faut :
 rédiger de façon claire les spécifications du système (ce que
l'on attend)
=> comment être sûrs que ces spécifications sont complètes ?
=> comment être sûrs que ces spécification sont cohérentes ?
 valider/vérifier toutes les étapes du développements
=> a-t-on des moyens de validation/vérification (mathématiques) ?
 de réutiliser des sous-systèmes déjà réalisés (mais pas
n'importe comment)
=> a-t-on des règles, des outils pour aider à la réutilisation ?
 nécessité d’une base théorique et d’une
approche ingénierie (science de l’ingénieur) du
logiciel

18
Qu’est-ce qu’un logiciel ?
 « On regroupe sous le terme de logiciel les
différentes formes de programmes qui
permettent de faire fonctionner un
ordinateur et de l’utiliser pour résoudre
des problèmes, les données qu’ils utilisent et les
documents qui servent à concevoir ces
programmes et ces données, à les mettre en
œuvre, à les utiliser et à les modifier ». Bertrand
Meyer
 Parmi ces entités, on trouve par exemple :
◦ des programmes exécutables ;
◦ des documentations d’utilisation ;
◦ des informations de configuration.

ENS C1A3 GL Hayatou Oumarou 19


Qu’est-ce qu’un logiciel ?
 Un logiciel est en général un sous-système d’un système
englobant.
 Il peut interagir avec des clients, qui peuvent être :
◦ des opérateurs humains (des utilisateurs, des administrateurs, ... ) ;
◦ d’autres logiciels ;
◦ des contrôleurs matériels.
 Il réalise une spécification : son comportement vérifie un
ensemble de critères qui régissent ses interactions avec son
environnement.
 ⇒ Le génie logiciel vise à garantir que :
◦ 1. la spécification répond aux besoins réels de ses clients ;
◦ 2. le logiciel respecte sa spécification ;
◦ 3. les coûts alloués pour sa réalisation sont respectés ;
◦ 4. les délais de réalisation sont respectés.

ENS C1A3 GL Hayatou Oumarou 20


Spécificités du logiciel

Un produit immatériel, dont l'existence est indépendante du


support physique :
 Semblable a une œuvre d'art (roman, partition...)
Un objet technique fortement contraint
 Fonctionne ou ne fonctionne pas
 Structure complexe
 Relève des modes de travail du domaine technique
Un cycle de production different
 La reproduction pose peu de problèmes, seule la première copie
d'un logiciel a un coût
 Production a l'unité
 Semblable au Génie Civil (ponts, routes...)
Les spécificités du logiciel

 une modification infime peut avoir des conséquences


critiques ;
 les progrès technologiques très rapides peuvent
rendre un logiciel caduque ;
 il est difficile de raisonner sur des programmes ;
 les domaines des entrées des logiciels sont trop grands
pour le test exhaustif ;
 les défaillances des programmes sont en général dues à
des erreurs humaines ;
 on ne sait pas très bien réutiliser les programmes
existants ;
 chaque logiciel a son organisation et sa logique propre ;
 ...

ENS C1A3 GL Hayatou Oumarou 22


Définitions
Le terme computer software ou
logiciel est :
 souvent synonyme de programme ou
de code source.
 Souvent, il est aussi synonyme de
produit.
Ainsi le logiciel inclut :
◦ le code source,
◦ tous les documents associés et
◦ enfin la documentation.
ENS C1A3 GL Hayatou Oumarou 23
Définitions
 La documentation est un ensemble de
documents qui explique les
caractéristiques du logiciel.
◦ La documentation interne du code source
décrit les caractéristiques du code
◦ la documentation externe explique les
propriétés des documents liés au code.

ENS C1A3 GL Hayatou Oumarou 24


Définitions
La documentation comprend:
 Les documents de définition (requirement),
 les spécifications conceptuelles,
 le code source,
 les plans de tests,
 les principes d’opération,
 les procédures d’assurance de la qualité,
 les rapports des problèmes du logiciel,
 les procédures de maintenance,
 les manuels d’utilisateur,
 les instructions d’installation,
 les aides de formation constituent
 ……

ENS C1A3 GL Hayatou Oumarou 25


Historique sur le développement du logiciel
 1945 : projets de petite taille,
programmation en binaire puis en
assembleur. La maintenance est assurée par
le développeur.
 1955 : apparition des langages évolués qui
permettent de développer des projets plus
importants.
 1965 : c(est la crise du logiciel. l’intuition ne
suffit pas pour développer correctement le
logiciel.
 1968 : première conférence sur le sujet.
 1970 : programmation structurée,
structuration hiérarchique du code sans
goto.
ENS C1A3 GL Hayatou Oumarou 26
Historique sur le développement du logiciel
 1972 : développement des méthodes de preuves de
programmes ( peu applicables à grande échelle).
 1975 : développer un projet ne consiste pas
seulement à le coder mais à comprendre, le spécifier,
le concevoir, en des étapes successives. Apparition de
la notion de cycle de vie et essais de développement
de méthodes adaptées à ces phases.
 1980 : après avoir développé des méthodes et des
outils de manière isolée, on les rassemble pour
former des environnements homogènes. On prend
aussi conscience de l’importance des premières
phases dans le coût de développement d’un projet.
 1990 : c’est la décennie de la programmation à objets
avec comme objectif la réutilisation de logiciels et le
passage aisé d’une application à l’autre pour
l’utilisateur.

ENS C1A3 GL Hayatou Oumarou 27


Historique sur le développement du logiciel

ENS C1A3 GL Hayatou Oumarou 28


Définitions
 Le client est utilisé pour désigner un individu ou une
institution qui initie la procuration ou la modification d’un
produit logiciel. Le terme client n’induit pas
nécessairement un rapport financier entre le développeur et
le client.
 Le programmeur : c’est un individu concerné par les
détails de l’implémentation, la modification des
structures de données et des algorithmes écrits dans
un langage de programmation.
 Le développeur ou ingénieurs du logiciel travaille sur
l’analyse, la conception, la vérification et le test, la
documentation, la maintenance du logiciel et la gestion
du projet.
NB: Les ingénieurs du logiciel doivent avoir considérablement
de l’expérience en tant que programmeurs pour bien estimer
les domaines du problème, les buts et objectifs.

ENS C1A3 GL Hayatou Oumarou 29


Les grands principes du génie logiciel

1. La rigueur.
2. La décomposition des problèmes en sous-problèmes
indépendants.
3. La modularité.
4. L’abstraction.
5. L’anticipation des évolutions.
6. La généricité.
7. La construction incrémentale.

ENS C1A3 GL Hayatou Oumarou 30


Les grands principes du génie logiciel

 La rigueur
◦ Les principales sources de défaillances d’un
logiciel sont d’origine humaine.
◦ À tout moment, il faut se questionner sur la
validité de son action.
◦ Des outils de vérification accompagnant le
développement peuvent aider à réduire les
erreurs. Cette famille d’outils s’appelle CASE
(Computer Aided Software Engineering).
Exemples : typeurs, assistants de preuves,
générateurs de code, générateurs de tests. . .
ENS C1A3 GL Hayatou Oumarou 31
Les grands principes du génie logiciel
 La décomposition des problèmes en sous-problèmes
◦ « Separation of concerns » en anglais.
◦ Il s’agit de :
 Décorréler les problèmes pour n’en traiter qu’un seul à la fois.
 Simplifier les problèmes (temporairement) pour aborder leur complexité progressivement.
 La modularité
◦ C’est une instance cruciale du principe de décomposition des problèmes.
◦ Il s’agit de partitionner le logiciel en modules qui :
 ont une cohérence interne (des invariants) ;
 possèdent une interface ne divulgant sur le contenu du module que ce qui est strictement
nécessaire aux modules clients.
◦ L’évolution de l’interface est indépendante de celle de l’implémentation du module.
◦ Les choix d’implémentation sont indépendants de l’utilisation du module.
◦ Ce mécanisme s’appelle le camouflage de l’information (information
◦ hiding).

ENS C1A3 GL Hayatou Oumarou 32


Les grands principes du génie logiciel
 L’abstraction
◦ C’est encore une instance du principe de
décomposition des problèmes.
◦ Il s’agit d’exhiber des concepts généraux regroupant un
certain nombre de cas particuliers et de raisonner sur
ces concepts généraux plutôt que sur chacun des cas
particuliers.
◦ Le fait de fixer la bonne granularité de détails permet :
 de raisonner plus efficacement ;
 de factoriser le travail en instanciant le raisonnement général
sur chaque cas particulier.
◦ Exemples en programmation : les classes abstraites
dans les langages à objets, le polymorphisme de Caml,
les fonctions d’ordre supérieur.

ENS C1A3 GL Hayatou Oumarou 33


LES GRANDS PRINCIPES DU GÉNIE LOGICIEL
L’abstraction
L’abstraction consiste à bien séparer les fonctionnalités
offertes par un objet de la manière dont elles sont
effectivement réalisées.
Cela signifie que l’on se concentre sur ce qu’est un objet
et ce qu’il fait en mettant l’accent sur ses propriétés
essentielles inhérentes au domaine d’application, tout en
ignorant les détails d’implémentation.
Les abstractions doivent être complètes, c’est à dire
renfermer toutes les propriétés essentielles de la chose
décrite.
Les grands principes du génie logiciel
L’encapsulation
 L’encapsulation signifie que les données ainsi que les
méthodes permettant de les manipuler, sont contenues dans
un même emballage (objet) et
 que l’accès aux données associées à cet objet ne peut pas
se faire directement, la seule façon de le faire est de lui
envoyer un message qui déclenche l’exécution de l’une de ses
méthodes.
Les grands principes du génie logiciel
L’anticipation des évolutions
 Un logiciel a un cycle de vie plus complexe que l’habituel
cycle
 « commande-spécification-production-livraison ».
 La maintenance est la gestion des évolutions du logiciel.
 Il est primordial de prévoir les évolutions possibles d’un
logiciel pour que la maintenance soit la plus efficace possible.
Pour cela, il faut s’assurer que les modifications à effectuer
soient le plus locales possibles.
 Ces modifications ne devraient pas être intrusives car les
modifications du produit existant remettent en cause ses
précédentes validations.
 Concevoir un système suffisamment riche pour que l’on
puisse le modifier incrémentalement est l’idéal.

ENS C1A3 GL Hayatou Oumarou 36


Qualités du logiciel
Utilité
 Adéquation entre
◦ Le besoin effectif de l'utilisateur
◦ Les fonctions offertes par le logiciel
 Solutions :
◦ Emphase sur l'analyse des besoins
◦ Améliorer la communication (langage commun,
démarche participative)
◦ Travailler avec rigueur

ENS C1A3 GL Hayatou Oumarou 37


Qualités du logiciel
Utilisabilité
< Effectivité, efficacité et satisfaction avec laquelle des
utilisateurs spécifiés accomplissent des objectifs
spécifés dans un environnement particulier >
 Facilité d'apprentissage : comprendre ce que l'on
peut faire avec le logiciel, et savoir comment le
faire
 Facilité d'utilisation : importance de l'effort
nécessaire pour utiliser le logiciel à des fins
données
 Solutions :
◦ Analyse du mode opératoire des utilisateurs
◦ Adapter l'ergonomie des logiciels aux utilisateurs

ENS C1A3 GL Hayatou Oumarou 38


Qualités du logiciel
Fiabilité
 Correction, justesse, conformité : le logiciel est conforme à
ses spécifications, les résultats sont ceux attendus
 Robustesse, sureté : le logiciel fonctionne raisonnablement en
toutes circonstances, rien de catastrophique ne peut survenir,
même en dehors des conditions d'utilisation prévues
 Mesures :
◦ MTBF : Mean Time Between Failures
◦ Disponibilité (pourcentatge du temps pendant lequel le systême
est utilisable) et Taux d'erreur (nombre d'erreurs par KLOC)
 Solutions :
◦ Utiliser des méthodes formelles, des langages et des méthodes
de programmation de haut niveau
◦ Vérifications, tests
◦ Progiciels

ENS C1A3 GL Hayatou Oumarou 39


Qualités du logiciel

Interopérabilité, couplabilité
 Un logiciel doit pouvoir interagir en synergie
avec d'autres logiciels
 Solutions :
◦ Bases de données (découplage
données/traitements)
◦ < Externaliser > certaines fonctions en utilisant
des < Middleware > avec une API (Application
Program Interface) bien définie
◦ Standardisation des formats de fichiers (XML...)
et des protocoles de communication (CORBA...)
◦ Les ERP (Entreprise Resources Planning)

ENS C1A3 GL Hayatou Oumarou 40


Qualités du logiciel
Performance
 Les logiciels doivent satisfaire aux contraintes
de temps d'exécution
 Solutions :
◦ Logiciels plus simples
◦ Veiller à la complexité des algorithmes
◦ Machines plus performantes
Portabilité
oUn même logiciel doit pouvoir fonctionner sur
plusieurs machines
oSolutions :
oRendre le logiciel indépendant de son
environnement d'exécution
oMachines virtuelles
ENS C1A3 GL Hayatou Oumarou 41
Qualités du logiciel
Réutilisabilté
 On peut espérer des gains considérables car
dans la plupart des logiciels :
◦ 80 % du code est du < tout venant > qu'on retrouve
à peu près partout
◦ 20 % du code est spécfique
 Solutions :
◦ Abstraction, généricité (ex : MCD générique de
réservation)
◦ Construire un logiciel à partir de composants prêts à
l'emploi
◦ < Design Patterns >
ENS C1A3 GL Hayatou Oumarou 42
Qualités du logiciel
Facilité de maintenance
◦ Un logiciel ne s'use pas
◦ Pourtant, la maintenance absorbe un très grosse partie des
efforts de développement
Maintenance corrective, Maintenance adaptative, Maintenance perfective,
d'extension, etc.
 Objectifs
◦ Réduire la quantité de maintenance corrective (zéro défaut)
◦ Rendre moins coûteuses les autres maintenances
 Enjeux
 Les coûts de maintenance se jouent très tôt dans le processus
d'élaboration du logiciel
 Au fur et à mesure de la dégradation de la structure, la maintenance
devient de plus en plus difficile
 Solutions :
◦ Réutilisabilté, modularité
◦ Vérifier, tester
◦ Structures de données complexes et algorithmes simples
◦ Anticiper les changements à venir
◦ Progiciels

ENS C1A3 GL Hayatou Oumarou 43

Vous aimerez peut-être aussi