Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1
Chapitre 1
Introduction au génie logiciel
2
Qu’est-ce que le logiciel?
• Dans le langage courant par « logiciel » on entend
un programme (malheureusement, souvent, les
étudiants en informatique aussi considèrent que le
logiciel n’est que le programme).
• Dans notre cours nous adopterons la définition de
IEEE Std. 610.12 : un logiciel est un ensemble de
« programmes, procédures, documentation et
données qui concernent le fonctionnement d’un
système informatique. »
3
Caractéristiques du logiciel
• Conceptuelle: une structure d’information
• Physique: programmes, documents, données
• Technique: il est développé et non manufacturé
• Temporelle: il ne s'use pas, mais se détériore
• Structurelle: il est personnalisé, plutôt qu’assemblé
• Économique: il peut être une opportunité d'affaires
4
Configuration du logiciel
5
Catégories de logiciels
• Logiciels de système • Logiciels temps réel
– systèmes d’exploitation – systèmes d’exploitation temps
– pilotes de dispositifs réel
– utilitaires (compilateurs, – contrôleurs de machines
éditeurs, éditeurs de liens, • Logiciels embarqués
interpréteurs de commandes) – contrôleurs d'appareils (e.g. four
• Logiciels d’affaires à micro-ondes, machine à
– gestionnaires de bases de laver, etc.)
données • Logiciels pour ordinateurs
– terminaux point-de-vente personnels
• Logiciels pour ingénierie et – bureautique, jeux
science • Intelligence artificielle
– simulation – systèmes experts
– calcul numérique intensif – réseaux neuronaux
6
Conférence NATO 1968 : la crise
du logiciel
7
Qu’est-ce que le génie logiciel?
• Le génie logiciel est une discipline informatique
qui vise à optimiser le développement de
logiciels. Il comporte des méthodes et des
procédures spécifiques et des outils qui
supportent les méthodes et les procédures.
• Définition IEEE Std. 610.12:
– « L’application d’une approche systématique,
maîtrisée, quantifiable au développement, à
l’exploitation et à la maintenance du logiciel : C’est-à-
dire l’application de l’ingénierie au logiciel »
8
Génie logiciel
Méthodes Procédures
• Analyse • Gestion de projets
• Conception • Assurance qualité du
• Programmation logiciel
(Codage) • Gestion des versions
• Tests du logiciel
• Intégration
• Maintenance
9
Objectifs du génie logiciel
• Aider à réaliser les logiciels correspondant aux
besoins des utilisateurs
• Diminuer les coûts, les retards et les risques des
projets de développement de logiciels
• Augmenter la qualité des logiciels et implicitement,
diminuer leurs coûts de maintenance
• Rendre l’activité de développement de logiciels une
activité d’ingénierie au même titre que le génie
mécanique, le génie civil, …
10
Problèmes actuels du génie logiciel
11
Problèmes actuels du
développement de logiciels
• Souvent, les logiciels n’ont pas la qualité que les
produits d’une discipline de génie devraient avoir
– Les clients sont souvent insatisfaits de la qualité
des produits logiciels qu'ils obtiennent.
• La qualité du logiciel est difficile à définir et à
mesurer.
– Les logiciels existants sont souvent difficiles à
maintenir.
12
… et leurs causes
• La qualité du logiciel est un problème humain.
• Les chefs de projets n'ont souvent aucune expérience
de développement
– ils fixent des échéances irréalistes
• Les développeurs ont souvent peu d’expérience dans
l'ingénierie du développement de produits logiciels.
– La résistance au changement de l'art de programmer à une
tâche d'ingénierie peut être significative.
• La maintenance du logiciel s’avère plus difficile que
la maintenance du matériel (pas de pièces de
rechange).
13
Coûts du logiciel par phase
14
Qu’est-ce que le cycle de vie du
logiciel?
• Le logiciel est un produit doté d’un cycle de vie
allant de l’idée initiale (naissance) au retrait
(mort).
• Le cycle de vie du logiciel est composé de phases
(étapes).
• Le découpage du cycle de vie du logiciel en
phases et l’organisation de ces phases varient
selon le modèle du cycle de vie utilisé
15
Cycle de vie du logiciel
Maintenance
Tests et Intégration
Programmation
Conception
Analyse
16
Phases du cycle de vie du logiciel
• Analyse : étude et description du problème à
résoudre
• Conception : création d’une solution au problème à
résoudre
• Programmation (Codage) : écriture du code
• Tests : vérification des résultats par rapport aux
attentes
• Intégration : mise en place du logiciel (intégration à
son environnement réel)
• Maintenance : modification du logiciel pour
l’adapter aux changements
17
Protagonistes du cycle de vie du
logiciel
• Analyste
• Architecte de logiciel
• Concepteur
• Programmeur
• Testeur
• Gestionnaire (chargé ou chef) de projet
• Spécialiste en assurance qualité
• Utilisateurs
• Client
18
Différents modèles de cycle de vie
du logiciel
• Modèle en cascade (« waterfall model »)
• Modèles itératifs:
o Modèle de prototypage
o Modèle RAD (Rapid Application Development)
o Modèle en spirale
• Modèle incrémental et itératif
o Unified Process
19
Le choix du cycle de vie
Dépend de divers facteurs:
• Taille du projet
• Durée du projet :
– essayez de briser un gros projet en sous projets d’un an
au plus
• Expertise de l’équipe
• Connaissance du domaine
20
Modèle en cascade
Analyse
Conception
Programmation
Tests
Utilisation
Maintenance
21
Caractéristiques (1)
• Un modèle linéaire (ou séquentiel), correspondant
au cycle de vie classique d’un logiciel
• Avantages:
o Simple
o Performant lorsque les besoins sont bien identifiés
• Inconvénients:
o Une étape de développement commence si et
seulement si l’étape antérieure a été
complètement terminée
o Temps d’attente longs, diminution de la productivité
o L’utilisateur n’a pas l’occasion d’exprimer son
opinion sur le logiciel en cours de
développement; on lui présente le logiciel tard,
lors de la livraison (son «feedback» est tardif )
22
Caractéristiques (2)
• Inconvénients (suite)
o Si une erreur est détectée dans une étape de
développement, il faut reprendre les étapes
antérieures
o Coût d’un changement élevé
o Incapacité à prendre en charge des systèmes
complexes comportant un grand nombre de
modules
o Gel des spécifications, alors que l’environnement
change
23
Modèles itératifs
24
Modèle de prototypage
25
Caractéristiques (1)
• Utilisé dans le cas où le client et les utilisateurs ne
sont pas capables à bien exprimer leurs besoins au
début du projet
• Basé sur un prototype d’analyse qui est raffiné en
fonction des suggestions des utilisateurs
o Plusieurs itérations pourraient être effectuées sur ce
prototype
• Une fois le prototype accepté par le client, le
développement proprement dit du logiciel peut
démarrer (c.à.d l’ingénierie du produit: conception,
codage, tests, intégration et livraison)
26
Caractéristiques (2)
• Il est fortement conseillé que le prototype soit jeté
après usage, parce qu’il n’est pas, en général, de
qualité opérationnelle (trop lent, trop grand,…)
• Modèle applicable aux projets de complexité
moyenne à élevée
• Inconvénients:
o Difficile à convaincre le client que le prototype doit être
rejeté et qu’il faut recommencer le développement du
logiciel
o Même le développeur peut être tenté à conserver le
prototype, en oubliant que, faute du temps, il n’a pas
pensé à développer un produit de qualité
27
Modèle RAD
(Rapid Application Development)
28
Caractéristiques (1)
• Approche de développement itératif, provenant du
modèle en cascade
• Appliqué dans le cas où:
o les besoins peuvent être bien identifiés
o le temps de développement est court (1 à 3 mois)
• Développement à base de composants réutilisables
(classes, fonctions et données de bibliothèque)
• Pour le codage, l’on utilise des outils de 4e
génération (outils CASE contenant des générateurs
automatiques de code)
• La durée des tests est courte
29
Caractéristiques (2)
• Avantages:
o Temps de développement court
• Inconvénients:
o L’application doit pouvoir être divisée en modules
o Si le projet est complexe, il faut disposer de plusieurs
équipes pouvant travailler en parallèle
o Cette approche ne mène pas, en général, à des produits de
haute qualité
o Elle n’est pas la plus appropriée pour les systèmes à
haute sécurité
30
31
Caractéristiques (1)
• Approche de développement itératif
32
Caractéristiques (2)
• Avantages (suite):
o Approche cyclique permettant la validation
concrète et sûre par les utilisateurs
o Découverte des anomalies au plus tôt
o Forte implication des utilisateurs et maintien de
leur motivation
o Intégration du développement technique et de
l’analyse des risques (risque d’avoir mal compris
les besoins, risque que le système ne soit pas
techniquement faisable, risque qu’on dépasse les
délais et le budget du projet)
33
Caractéristiques (3)
• Avantages (suite):
o L’analyse des risques est intrinsèque (chaque
cycle se termine par la question: « faut-il
continuer ? »)
• Inconvénients:
o Temps et coûts de développement élevés
o Moins testé que le modèle en cascade ou le
modèle de prototypage
34
Modèle incrémental
35
Caractéristiques
• Ajout de fonctions par plusieurs cycles de
livraison
• Avantages:
o Facilite les relations avec les utilisateurs
o Modèle applicable aux projets de complexité élevée
o Le plus représentatif : Unified Process (UP)
o Modèle incrémental et itératif
o Supporte le langage standard de modélisation
orientée objet UML
• Inconvénients:
o Temps et coûts de développement élevés
36
Exercice : Projet de développement du
logiciel GameForge
• Objectif du projet:
– Développer un logiciel d’aide à la création des jeux
vidéo
• Justification du projet:
o Un programmeur ayant des connaissances
sommaires de programmation C++ serait capable à
construire un jeu vidéo 2D ou 3D, en utilisant le
logiciel GameForge
o GameForge permettra aussi aux programmeurs
expérimentés qu’ils développent plus rapidement leurs
jeux vidéo.
37
Composants principaux du logiciel
GameForge (1)
• Interface en VB:
o L’interface est le composant avec lequel interagit le
programmeur
o Elle lui permet de créer un espace de travail contenant
tous les fichiers du projet et de créer et mettre à jour la
base de données des personnages (« sprites ») du jeu
39
Composants principaux du logiciel
GameForge (3)
• Éditeur du jeu en C++
o C’est l’interface principale qui affiche une
représentation graphique du jeu que le programmeur
développe
o Elle affiche aussi un arbre de tous les objets créés
o Tous les assistants peuvent être accédés à partir de
cette interface.
40
Composants principaux du logiciel
GameForge (4)
• Fichiers d’aide et tutorial
o Ces fichiers incluent une multitude d’informations,
telles que : FAQ’s, Tutorial, moteur de recherche pour
retrouver toute information nécessaire.
• Base de données
o GameForge utilise une base de données Microsoft
Access pour stocker les bibliothèques de sons et
d’images ainsi que les personnages déjà conçus
o La base de données est accédée via l’interface VB.
41
Contraintes techniques et de gestion
du projet GameForge
• Date de début du projet: 24 août 2020
• Date prévue de livraison du projet: 6 novembre 2020
• Équipe de 6 personnes assignées au projet
• Complexité du logiciel: Moyenne
• Question:
o Proposez le modèle de cycle de vie le plus approprié
pour le développement du logiciel GameForge
o Justifiez votre choix
42