GL Ch 1
GL Ch 1
GL Ch 1
Académique
Filière: Informatique Spécialité:
systèmes informatiques
Semestre: 5
Module : Génie
logiciel
Année :
2022/2023
Objectif du cours
Comprendre comment sont
construits les logiciels ;
Etre en mesure d'exprimer des
besoins et de suivre un
développement de logiciel.
Vous donner envie de devenir
développeur de logiciels !
Où se trouve le logiciel ?
Impacts Positifs
Le logiciel accélère les traitements
Le logiciel ne « se lasse » pas
Le logiciel résout des problèmes
complexes rapidement
Capacité de calcul, de stockage et de
traitement incroyables
Le logiciel a introduit de nouveaux
loisirs
Le logiciel introduit une nouvelle
dimension sociale
Impacts d’un logiciel
de Mauvaise Qualité
Plusieurs désastres plus ou moins importants ont été
causés par des
« erreurs » dans des logiciels :
Le bug du Mariner-1 en 1962 : Une fusée spatiale
a dérouté de sa trajectoire à cause d’une formule
mathématique qui a été mal transcrite en code
source
Therac-25 accélérateur médical (1985) : La
machine était destinée à soigner des malades. À
cause d’un bug sur le déclenchement des radiations,
au moins cinq personnes ont trouvés mort.
En 1983, la troisième guerre mondiale a failli
éclater : En pleine guerre froide, un logiciel de
surveillance soviétique a détecté de faux missiles
balistiques envoyés des USA.
Génie logiciel
Idée : appliquer les méthodes classiques
d'ingénierie au domaine du logiciel
Ingénierie (ou génie) : Ensemble des fonctions allant
de la conception et des études à la responsabilité de
la construction et au contrôle des équipements
d'une installation technique ou industrielle
Génie civil, naval, aéronautique, mécanique,
chimique...
Génie logiciel
Définition : Ensemble des méthodes, des
techniques et des outils dédiés à la conception,
au développement et à la maintenance des
systèmes informatiques
Adéquation entre :
Le besoin effectif de l'utilisateur
Les fonctions offertes par le logiciel
Critère de qualité
L’efficacité (performance)
L'efficacité est la capacité d'un système logiciel à
utiliser le minimum de ressources matérielles. que
ce soit le temps machine, l'espace occupé en
mémoire externe et
interne, ou la bande passante des moyens de
communication.
Les logiciels doivent satisfaire aux contraintes de
temps d'exécution
Solutions:
logiciels plus simples
Veiller à la complexité des algorithmes
Machines plus performantes
Critère de qualité
La compatibilité (Interopérabilité ou
coulabilité)
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 Ressources Planning)
Critère de qualité
Portabilité
La portabilité est la facilité avec
laquelle des produits logiciels
peuvent être transférés d'un
environnement logiciel ou matériel à
l'autre.
Un même logiciel doit pouvoir
fonctionner sur plusieurs machines
Solutions :
Rendre le logiciel indépendant de son environnement
d’exécution (voir interopérabilité)
Machines virtuelles
Critère de qualité
Extensibilité
L’extensibilité est la facilité d'adaptation des
produits logiciels aux changements de
spécifications.
Intégrité
Aptitude d’un logiciel à protéger son code et
Ses données contre des accès non autorisé.
La ponctualité
La ponctualité est la capacité d'un système
logiciel à être livré au moment désire par ses
utilisateurs, ou avant.
Critère de qualité
Réutilisabilité
La réutilisabilité est la capacité des éléments logiciels à
servir à la construction de plusieurs applications
différentes.
On peut espérer des gains considérables car dans la
Solutions :
Abstraction, généricité
Construire un logiciel à partir de composants prêts à
l’emploi
Design Patterns
Critère de qualité
Maintenabilité
La maintenabilité est le degré de facilité de la
maintenance d’un produit logiciel.
Un logiciel ne s’use pas
Pourtant, la maintenance absorbe une très grosse
partie des efforts de développement (représente
67% de l’effort de développement)
Les couts de maintenance se jouent très tôt dans
le processus d’élaboration du logiciel
Solution :
Réutilisabilité, modularité
Vérifier, tester
Anticiper les changements à venir
C'est quoi un bon logiciel bien
fait ?
Un bon logiciel bien fait est un logiciel
correct (valide),
fiable (robuste),
avec un code réutilisable,
compatible avec d’autres logiciel,
efficace,
portable,
facile à utiliser
maintenable,
ponctuel et extensible
Processus de développement
d’un logiciel
Questions
Pourquoi développer le logiciel ?
Y a-t-il de meilleures alternatives ?
Comment procéder pour faire ce
développement ?
Y a-t-il un marché pour le logiciel ?
Quels moyens faut-il mettre en œuvre? A-t-on le
budget, le personnel,
le matériel nécessaires ?
Spécification (quoi ?)
Analyse des besoins :
Comprendre les besoins du client
• Objectifs généraux, environnement du futur
système,
ressources disponibles, contraintes de
performance . ..
• Fournie par le client (expert du domaine
d'application, futur utilisateur . . . )
Spécification :
• Établir une description claire de ce que doit faire
le logiciel
(fonctionnalités détaillées, exigences de qualité,
interface ... )
• Clarifier le cahier des charges (ambiguïtés,
Exigences fonctionnelles et non
fonctionnelles
Exigences fonctionnelles
Décrivent les fonctionnalités du système ,ce qu'un
système doit faire .
1. Séquentielle
2. Phases
3. Documents
Limites
• Les vrais projets suivent rarement un
développement séquentiel
• Établir tous les besoins au début d’un projet est
difficile
• Sensibilité à l’arrivée de nouvelles exigences :
refaire toutes les étapes
• Bien adapté lorsque les besoins sont clairement
identifiés et stables
Cycle de vie en <<V >>
A ce jour, le cycle en V reste le cycle de vie le
plus utilisé. C'est un cycle de vie orienté test :
Inconvénients
Construit-on le bon logiciel ? Le logiciel est utilisé très
(trop) tard.
• Il faut attendre longtemps pour savoir si on a construit le
bon logiciel.
• Difficile d' impliquer les utilisateurs lorsque qu'un logiciel
utilisable n'es t
disponible qu'à la dernière phase
Prototypage
Principe:
Développement rapide d'un prototype avec le
client pour valider ses besoins
Ecriture de la spécification à partir du prototype,
puis processus de développement linéaire