Académique Documents
Professionnel Documents
Culture Documents
Plan
Définitions
Définition 1 :
Un logiciel est un programme ou un ensemble de programmes qui, quand
il(s) s’exécute(nt) réalise(nt) la (les) fonction(s) demandée(s) dans les
conditions prescrites.
Définition 2 :
Un logiciel est un ensemble des documents qui permettent l’installation,
l’opération, la réparation et l’évolution des programmes.
Définition 3 :
Un logiciel est un ensemble d’entités (des programmes exécutables, des
documentations d’utilisation, des informations de configuration...)
nécessaires au fonctionnement d’un processus de traitement automatique
de l’information.
Année Universitaire : 2018/2019 4
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Qu’est-ce que le génie logiciel ? Motivations
Produits logiciels
Définition :
Conformité à des besoins fonctionnels et de performance explicités, à des
standards professionnels de développement explicitement documentés, à
des caractéristiques implicites attendues de tout logiciel développé de
manière professionnelle.
Plan
Utilité
Le besoin effectif de l’utilisateur = les fonctions offertes par le logiciel.
Fiabilité
Correction, justesse, conformité : le logiciel est conforme à ses
spécifications, les résultats sont ceux attendus.
Robustesse, sûreté : le logiciel fonctionne raisonnablement en toutes
circonstances, rien de catastrophique ne peut survenir, même en
dehors des conditions d’utilisation prévues.
Solutions
Utiliser des méthodes formelles, des langages et des méthodes de
programmation de haut niveau.
Vérifications, tests...
Critères de fiabilité
C’est la probabilité de faire une opération sans panne sur une durée
fixée et pour un contexte donné.
La fiabilité est subjective : elle dépend de l’utilisateur et du contexte
d’utilisation.
Elle donne une mesure du degré de confiance et elle mesure les
conséquences d’une faute.
Exemple
Pour un logiciel de saisie, une faute serait de ne pas vérifier la mauvaise
saisie. Un défaut serait que le logiciel plante suite à la mauvaise saisie.
Taux de panne
C’est la fréquence d’apparition d’un défaut.
Disponibilité
C’est la probabilité que le système soit opérationnel. Elle prend en compte
le temps de réparation éventuel.
Solutions
Bases de données (découplage données/traitements),
Standardisation des formats de fichiers (XML...) et des protocoles de
communication (CORBA...).
Performance
Les logiciels doivent satisfaire aux contraintes de temps d’exécution.
Solutions
Veiller à la complexité des algorithmes.
Utiliser des machines plus performantes.
Année Universitaire : 2018/2019 14
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Qu’est-ce que le génie logiciel ? Les critères de qualité pour un logiciel
Solutions
Rendre le logiciel indépendant de son environnement d’exécution.
Utiliser des machines virtuelles.
Réutilisabilité
On peut espérer des gains considérables, dans la plupart des logiciels :
80% du code est du “tout venant“ qu’on retrouve à peu près partout.
20% du code est spécifique.
Solutions
Abstraction, généricité, et construction d’un logiciel à partir de
composants prêts à l’emploi ”Design Patterns“.
Année Universitaire : 2018/2019 15
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Qu’est-ce que le génie logiciel ? Les critères de qualité pour un logiciel
Facilité de maintenance
La maintenance absorbe une très grosse partie des efforts de
développement.
Solutions
Réutilisabilité, modularité
Vérifier, tester
Structures de données complexes et algorithmes simples
Anticiper les changements à venir
Progiciels
Plan
La rigueur
Les principales sources de défaillances d’un logiciel sont d’origine
humaine.
A 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. .
.
Exemples
Comment acheminer un email de façon sûr à travers un réseau ?
Comment créer dynamiquement une page internet pour visualiser et
modifier le contenu d’une base donnée sans la corrompre ?
La modularité
Il s’agit de partitionner le logiciel en modules qui :
ont une cohérence interne (des invariants) ;
possèdent une interface ne divulguant 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).
L’abstraction
Mécanisme qui permet de présenter un contexte en exprimant les
éléments pertinents et en omettant ceux qui ne le sont pas.
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
Les classes abstraites dans les langages à objets, le polymorphisme, les
fonctions d’ordre supérieur...
Année Universitaire : 2018/2019 22
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Qu’est-ce que le génie logiciel ? Principes généraux en Génie Logiciel
La généricité
Un logiciel réutilisable a beaucoup plus de valeurs qu’un composant
dédié.
Un composant est générique lorsqu’il est adaptable.
regroupement d’un ensemble de fonctionnalités semblables en une
fonctionnalité paramétrable.
La construction incrémentale
Un développement logiciel a plus de chances d’aboutir si il suit une
cheminement incrémental (baby-steps).
Exemple
Laquelle de ses deux méthodes de programmation est la plus efficace ?
Plan
La crise du logiciel
La crise du logiciel
Les échecs de grands projets durant les années 60 et au début des
années 70 ont mis en évidence les problèmes de la gestion de projet.
Ces projets n’ont pas échoué parce que le programmeurs étaient
incompétents.
La faute incombait en fait aux techniques de gestion des projets mises
en œuvre.
Exemple
En 1979, le gouvernement américain estimait que la plupart des
grands projets avaient échoué :
Payés mais jamais livrés 47%,
Livrés mais jamais utilisés 30%,
Abandonnés ou refaits 20%,
Utilisés après modifications 3%,
Utilisés en l’état 2%.
Année Universitaire : 2018/2019 27
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Cycle de vie d’un logiciel Cycle de vie d’un logiciel
Plan
Etude de faisabilité
Déterminer si le développement proposé vaut la peine d’être mis en
œuvre, compte tenu des attentes et de la difficulté de développement.
Etude de marché : déterminer s’il existe un marché potentiel pour le
produit.
Spécification
Déterminer les fonctionnalités que doit posséder le logiciel.
Collecte des exigences : obtenir de l’utilisateur ses exigences pour le
logiciel. Expliquer brièvement ce qu’il doit faire et ne pas faire.
Analyse du domaine : déterminer les tâches et les structures qui se
répètent dans le problème.
Décrire le contexte de l’application dans lequel le produit s’intègre,
incluant les objectifs, les bénéfices et retombées du projet.
Conception
Déterminer les différentes fonctionnalités recherchées.
Conception générale et architecturale : la structure du système.
Conception des interfaces : la façon dont les différentes parties du
système agissent entre elles.
Conception détaillée : les algorithmes pour les différentes parties du
système, description de la banque de données, description des E/S.
Année Universitaire : 2018/2019 31
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Cycle de vie d’un logiciel Cycle de vie d’un logiciel
Implémentation
Ecrire le logiciel
Tests
Test de logiciel
Essayer le logiciel sur des données d’exemple pour s’assurer qu’il
fonctionne correctement.
Tests unitaires : faire tester les parties du logiciel par leurs
développeurs.
Tests d’intégration : tester pendant l’intégration. C’est simplement le
fait d’assembler plusieurs composants logiciels élémentaires pour
réaliser un composant de plus haut niveau.
Tests de validation : pour acceptation par l’acheteur.
Tests système : tester dans un environnement proche de
l’environnement de production.
Tests Alpha : faire tester par le client sur le site de développement.
Tests Bêta : faire tester par le client sur le site de production.
Tests de régression : enregistrer les résultats des tests et les comparer à
ceux des anciennes versions pour vérifier si la nouvelle n’en a pas
dégradé d’autres.
Année Universitaire : 2018/2019 33
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Cycle de vie d’un logiciel Cycle de vie d’un logiciel
Livraison
Fournir au client une solution logicielle qui fonctionne correctement.
Installation : rendre le logiciel opérationnel sur le site du clients.
Formation : enseigner aux utilisateurs à se servir du logicielle.
Assistance : répondre aux questions des utilisateurs.
Maintenance
La Les modifications apportées à un logiciel, après sa mise en œuvre,
pour en corriger les fautes, en améliorer l’efficacité ou autres
caractéristiques, ou encore adapter celui-ci à un environnement
modifié.
Mettre à jour et améliorer le logiciel pour assurer sa pérennité.
Pour limiter le temps et les coûts de maintenance, il faut, porter ses
efforts sur les étapes antérieures.
Plan
Livrables
Livrables
Spécifications
Décrit précisément les conditions que doit remplir le logiciel.
Document de spécification des besoins qui décrit les données, les
fonctions, les performances, les conditions d’opération.
Modèle objet : indique les classes et les documents principaux.
Scénarios des cas d’utilisation : indique les différents enchaînement
Scénarios des cas d’utilisation.
Calendrier du projet
Ordre des différentes tâches, détails et ressources qu’elles demandent.
Livrables
Manuel utilisateur
Mode d’emploi pour le logiciel dans sa version finale.
Livrables
Code source
Code complet du produit fini.
Livrables
Plan
Introduction
Un modèle de processus de développement logiciels met en relief :
les activités de travail à accomplir pour produire le produit logiciel,
l’ordre dans lequel les activités de travail et les tâches doivent être
effectuées,
les façons dont les activités de travail et les tâches peuvent être
superposées et réitérées, et
les produits de travail résultants, et les flux entre diverses activités de
travail.
Différents modèles de développement logiciel :
1 Le modèle en cascade,
2 Le modèle en V,
3 Le développement incrémental (prototypage),
4 Le modèle évolutif,
5 La modèle orienté réutilisation,
6 Le modèle en spirale,
7 Les méthode Agile : Extreme Programming (XP), RUP (Rational
Unified Process),
8 ... Année Universitaire : 2018/2019 43
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Modèles de développement logiciel Modèles de développement logiciel
Plan
Modèle en cascade
Le modèle en cascade
Le modèle en cascade
Avantages
Le SI (Système d’Information) est vu dans sa globalité.
Les utilisateurs et les financeurs ont une vision globale du projet.
Critique du modèle
Modèle trop séquentiel–>dure trop longtemps.
Validation trop tardive et remise en question coûteuse des phases
précédentes.
Sensibilité à l’arrivée de nouvelles exigences—>refaire toutes les
étapes.
Le modèle en V
«V» signifie que le développement du logiciel et le développement des
tests sont directement corrélés.
Le modèle en V
Le modèle en V
Avantages
Limitation des risques en cascade par validation de chaque étape.
Prévention des erreurs : validations des produits à chaque sortie
d’étape descendante.
Validation finale montante : confirmation de la pertinence de
l’analyse descendante.
Limites
Les cycles de vie sont trop longs.
Les relations entre les clients et les fournisseurs ne sont pas
suffisamment formalisées.
L’intégration est trop tardive dans le cycle de vie.
La documentation est réalisée d’abord et le logiciel après.
Année Universitaire : 2018/2019 50
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Modèles de développement logiciel Modèles de développement logiciel
Le modèle incrémentale
Développement itératif
&ĞĞĚͲďĂĐŬ
͙ ͙ ͙
/ƚĠƌĂƚŝŽŶϭ /ƚĠƌĂƚŝŽŶϮ /ƚĠƌĂƚŝŽŶϯ /ƚĠƌĂƚŝŽŶŶ
/ŵƉůĠŵĞŶƚĂƚŝŽŶ
/ŵƉůĠŵĞŶƚĂƚŝŽŶ
/ŵƉůĠŵĞŶƚĂƚŝŽŶ
/ŵƉůĠŵĞŶƚĂƚŝŽŶ
ŽŶĐĞƉƚŝŽŶ
ŽŶĐĞƉƚŝŽŶ
ŽŶĐĞƉƚŝŽŶ
ŽŶĐĞƉƚŝŽŶ
/ŶĐĞƉƚŝŽŶ
ŶĂůLJƐĞ
ŶĂůLJƐĞ
ŶĂůLJƐĞ
ŶĂůLJƐĞ
ĂŚŝĞƌ
dĞƐƚ
dĞƐƚ
dĞƐƚ
dĞƐƚ
ĚĞƐĐŚĂƌŐĞƐ ͙
͙ ͙ ͙ ͙ ͙ dĞŵƉƐ
>ŝǀƌĂŝƐŽŶƐŝŶƚĞƌŵĠĚŝĂŝƌĞƐ
>ŝǀƌĂŝƐŽŶĨŝŶĂůĞ
Développement itératif
Le modèle en spirale
ĠƚĞƌŵŝŶĂƚŝŽŶĚĞƐ
/ĚĞŶƚŝĨŝĐĂƚŝŽŶĞƚ
ŽďũĞĐƚŝĨƐ͕ĚĞƐ
ƌĠƐŽůƵƚŝŽŶĚĞƐ
ĂůƚĞƌŶĂƚŝǀĞƐ͕ĚĞƐ
ƌŝƐƋƵĞƐ
ĐŽŶƚƌĂŝŶƚĞƐ ĂŶĂůLJƐĞ
ĚĞƐƌŝƐƋƵĞƐ
ƐĠƌŝĞĚĞƐƉƌŽƚŽƚLJƉĞƐ
ƉůĂŶĚĞ ĐŽŶĐĞƉƚŝŽŶ ďĞƐŽŝŶƐ ĐŽŶĐĞƉƚŝŽŶ
ĐLJĐůĞĚĞ ĚĠƚĂŝůůĠĞ
ǀŝĞ
ƉůĂŶĚĞ ƚĞƐƚĞƐ
ĚĠǀĞůŽƉƉĞŵĞŶƚ ƵŶŝƚĂŝƌĞƐ
ǀĂůŝĚĂƚŝŽŶ ĐŽŶĐĞƉƚŝŽŶ
ƉůĂŶĚĞƐ
ƚĞƐƚƐĞƚĚĞ ǀĂůŝĚĂƚŝŽŶĞƚ ĐŽĚŝĨŝĐĂƚŝŽŶ
ů͛ŝŶƚĠŐƌĂƚŝŽŶ ǀĠƌŝĨŝĐĂƚŝŽŶ
ŝŶƚĠŐƌĂƚŝŽŶ
ĂĐĐĞƉƚĂƚŝŽŶ
WůĂŶŝĨŝĐĂƚŝŽŶĚĞƐ ĠƉůŽŝĞŵĞŶƚĞƚ
ƉŚĂƐĞƐƐƵŝǀĂŶƚĞƐ ǀĠƌŝĨŝĐĂƚŝŽŶͬǀĂůŝĚĂƚŝŽŶ
^ƉŝƌĂůĞƐƐƵƉƉůĠŵĞŶƚĂŝƌĞƐ
ĠǀĞŶƚƵĞůůĞŵĞŶƚ;ŝŶĐƌĠŵĞŶƚƐͿ
Le modèle en spirale
Le modèle en spirale
Le prototypage
Prototype : version d’essai du logiciel.
Pour tester les différents concepts et exigences.
Pour montrer aux clients les fonctions que l’on veut mettre en œuvre.
Lorsque le client a donné son accord, le développement suit souvent
un cycle de vie linéaire.
Avantages
Les efforts consacrés au développement d’un prototype sont le plus
souvent compensés par ceux gagnés à ne pas développer de fonctions
inutiles.
Le modèle en spirale
Phase d’Identification
Identification des besoins, Détermination des objectifs, Détermination des
alternatives pour atteindre les objectifs, Détermination des contraintes ...
Phase d’évaluation
Analyse des risques, Evaluation des alternatives, Identification et résolution
des risques. ...
Phase de réalisation
Développement et vérification de la solution retenue à l’issue de la phase
précédente, la phase d’évaluation.
Phase de Vérification
Vérification et validation du produit élaboré dans la phase de réalisation.
Planification de la prochaine phase.
Année Universitaire : 2018/2019 57
Prof. Said El Kafhali Chapitre 1 : Introduction au génie logiciel / 59
Modèles de développement logiciel Modèles de développement logiciel
Conclusion
Références