SlideShare une entreprise Scribd logo
1  sur  46
Définition logiciel
Un logiciel (software) est l’ensemble des programmes,
des procédures et des documentations nécessaires au
fonctionnement d’un système informatique
1
Caractéristiques du logiciel
 le logiciel est facile à reproduire
 tout le coût se trouve dans le développement
 le logiciel est immatériel et invisible
 on ne peut l’observer qu’en l’utilisant
 la qualité n’est pas vraiment apparente
 difficile d’estimer l’effort de développement
 développement difficile à automatiser
 beaucoup de main-d’œuvre nécessaire …
2
Caractéristiques du logiciel
 le logiciel ne s’use pas, mais il vieillit
Détérioration suite aux changements :
 complexification indue
 duplication de code
 introduction d’erreurs
Mal conçu au départ :
 inflexibilité
 manque de modularité
 documentation insuffisante
Evolution du matériel
3
Différentes catégories de logiciels
 sur mesure : pour un client spécifique
 générique : vendu sur un marché
4
Différents types de logiciels
 système d’information et d’aide à la décision
 logiciel temps-réel
 logiciel embarqué
 logiciel distribué
5
LA CRISE DU LOGICIEL
 Le GL est apparu dans les années 70 pour répondre à la
‘crise du logiciel’
 Cette crise est apparue lorsque l’on a pris conscience que le
coût du logiciel dépassait le coût du matériel.
 la non qualité des systèmes produits:
 arrêt de Transpac pour 7.000 entreprises et 1.000.000 d'abonnés : surcharge
du réseau.
 TAURUS, un projet d'informatisation de la bourse londonienne :
définitivement abandonné après 4 années de travail et 100 millions de £ de pertes,
 non différenciation entre avion civil et avion militaire : guerre du Golfe -
Airbus iranien abattu : 280 morts
6
La crise du logiciel
 Délais et exigences non satisfait
en retard, dépassement mémoire et prix, erreurs
aéroport de Denver (système de livraison des bagages)
1 an de retard
SNCF (système socrate)
 difficultés importantes
OS 360 d’IBM
7
La crise du logiciel
 abandon
bourse de Londres (projet d’informatisation)
abandon : 4 années de travail + 100 ML perdus
 La non rencontre des exigences et les dépassements de
délais sont fréquents : 300 à 400 %
8
Les causes de la crise
 La complexité des logiciels à développer est de plus en plus
croissante et difficile à maîtriser, elle est dû principalement à:
 La taille du logiciel de plus en plus croissante
 L'utilisateur de plus en plus exigent
 La diversification et l'hétérogénéité des données et de leurs sources:
Bases et entrepôts de données, fichiers dans différents formats: XML, XDF,
etc.
 La nature du logiciel: Répartis, temps réel, Web, intelligents, etc
 L'absence d’un cadre méthodologique standard de développement. Les méthodes de
développement de logiciel existantes, si elles sont utilisées, n'étaient pas suffisamment
bonnes et adaptées.
9
Les causes de la crise
 L'absence d'outils de gestion du développement. Les méthodes
d'estimation des coûts et des délais sont inexistantes, les
techniques de planification et de suivi de projets n'étaient pas
utilisées.
 L'absence de métrologie de la qualité des processus et des
produits logiciels. Il n'y avait pas de moyens pour mesurer la qualité
d'un logiciel telles que la fiabilité et aussi la qualité de la démarche
méthodologique utilisée.
10
Réponse à la crise du logiciel
Naissance d’une nouvelle discipline
 Problématique apparue dès les années 1960
 Conférence parrainée par l’OTAN (1968)
 Naissance du « Génie Logiciel » (software engineering)
11
Réponse a la crise du logiciel
Objectif
 Démarche de développement ingénierique
 Principes, méthodes, outils
 Techniques de fabrication assurant :
 respect des exigences
 respect de la qualité
 respect des délais et des coûts
12
Génie logiciel
 Le Génie Logiciel est donc l'art de spécifier, de
concevoir, de réaliser et de faire évoluer, avec des
moyens et dans des délais raisonnables, des
programmes, des documentations et des procédures de
qualité en vue d'utiliser un ordinateur pour résoudre
certains problèmes définis.
13
Un bon logiciel
Facteurs de qualité:
 Correction:
La correction est la capacité que possède un produit logiciel de
mener à bien sa tâche, telle qu’elle a été définie par sa
spécification
 Robustesse:
La robustesse est la capacité qu’offrent des systèmes logiciels à
réagir de manière appropriée à la présence de conditions
anormales.
 Extensibilité:
L’extensibilité est la facilité d’adaptation des produits logiciels
aux changements de Spécifications
 14
Un bon logiciel
Réutilisabilité:
La réutilisabilité est la capacité des éléments logiciels à servir à
la construction de plusieurs applications différentes
 Compatibilité:
La compatibilité est la facilité avec laquelle des éléments
logiciels peuvent être combinés à d’autres.
 Efficacité:
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.
15
Un bon logiciel
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.
 Facilité d’utilisation:
La facilité d’utilisation est la facilité avec laquelle des personnes
présentant des formations et des compétences différentes peuvent
apprendre à utiliser les produits logiciels et s’en servir pour
résoudre des problèmes. Elle recouvre également la facilité
d’installation, d’opération et de contrôle.
Ponctualité:
La ponctualité est la capacité d’un système logiciel à être livré au
moment désiré par ses utilisateurs, ou avant.
16
Qualité d’un logiciel
17
Qualité d’un logiciel
Qualité externe:
complétude fonctionnelle
 réalise toutes les tâches attendues
ergonomie / convivialité
 facile d’utilisation
 apprentissage aisé
fiabilité / robustesse
 tâches effectuées sans problème
 fonctionne même dans des cas atypiques
18
Qualité logiciel
Qualité interne:
 adaptabilité
 facile à modifier, à faire évoluer
réutilisabilité
 des parties peuvent être réutilisées facilement
traçabilité / compréhension
 le fonctionnement du logiciel est facile à comprendre
19
Qualité logiciel
efficacité / performance
 bonne utilisation des ressources (mémoire, cpu, …)
portabilité
 capacité à marcher dans un autre contexte ou env.
20
Les principes du GL
 la Rigueur: c'est un principe qui constitue le chemin vers la formalité. Il s’appuie sur des
notations, des modèles, des schémas et des lois mathématiques.
 la Séparation : c’est une règle de bons sens qui consiste à considérer séparément
différents aspects d’un problème afin d’en maîtriser la complexité. C’est un aspect de la
stratégie générale du « diviser pour régner ». Elle prend une multitude de formes :
•Séparation dans le temps (les différents aspects sont abordés
successivement),Cas du cycle de vie.
•Séparation du système en parties (architecture).
 la Modularité: c'est le principe qui consiste à découper le logiciel en plusieurs modules
simples. Ce principe considère séparément le contenu du module et les relations entre
modules (ce qui rejoint l’idée de séparation des questions). Un bon découpage modulaire se
caractérise par une forte cohésion interne des modules et un faible couplage entre les
modules (relations inter modulaires en nombre limité et clairement décrites).
21
Les principes du GL
 Généricité : c'est le principe qui permet de ramener la résolution d'un problème
à celle d'un problème plus général. Il s'agit de regrouper les entités semblables
(structure ou comportement) par des solutions paramétrables ou adaptables. C'est
le cas des applications paramétrables.
 la Construction incrémental: c'est un principe qui consiste à procéder
progressivement dans la construction d’un produit logiciel. C'est à dire aller de
l’essentiel vers le secondaire, cela revient à construire un noyau avec les
fonctions essentiels, puis ajouter progressivement les fonctions secondaires.
22
Processus de développement
logiciel
Ensemble d'activités successives, organisées en vue de la
production d'un logiciel.
En pratique:
•Pas de processus idéal
•Choix du processus en fonction des contraintes (taille des
équipes, temps, qualité...).
•Adaptation de « processus types » aux besoins réels,
23
Processus de développement
logiciel
Activités du développement logiciel
•Analyse des besoins
•Spécification
•Conception
•Programmation
•Validation et vérification
•Livraison
•Maintenance
Pour chaque activité : Utilisation et production de documents
24
Processus de développement
logiciel
Analyse des besoin:
Objectif : Comprendre les besoins du client
•Objectifs généraux, environnement du futur système, ressources
disponibles, contraintes de performance...
Entrée : Fournies par le client
•Expert du domaine d'application, futur utilisateur
Document produit : Cahier des charges (+ manuel d'utilisation préliminaire)
25
Processus de développement
logiciel
Spécifications
Objectifs
•É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, contradictions)
Entrée : Cahier des charges + considérations de faisabilité ?
Document produit : Cahier des charges fonctionnel
26
Processus de développement
logiciel
Conception:
Objectifs : Élaborer une solution concrète réalisant la spécification
• Description architecturale en composants (avec interface et
fonctionnalités)
• Réalisation des fonctionnalités par les composants (algorithmes,
organisation des données)
• Réalisation des exigences non-fonctionnelles (performance,
sécurité...)
Entrée : Cahier des charges fonctionnel
Document produit : Dossier de conception
27
Processus de développement
logiciel
programmation
Objectif : Implantation de la solution conçue
•Choix de l'environnement de développement, du/des langage(s)
de programmation, de normes de développement...
Entrée : Dossier de conception
Document produit : Code documenté + manuel d'utilisation
28
Processus de développement
logiciel
Validation et vérification
Objectifs :
•Validation : assurer que les besoins du client sont satisfaits (au niveau de la
spécification, du produit fini...)
•Vérification : assurer que le logiciel satisfait sa spécification
29
Processus de développement
logiciel
Maintenance:
Types de maintenance:
•Correction : identifier et corriger des erreurs trouvées après la
livraison.
•Adaptation : adapter le logiciel aux changements dans
l'environnement (format des données, environnement d'exécution...)
•Perfection : améliorer la performance, ajouter des fonctionnalités,
améliorer la maintenabilité du logiciel
30
Composantes du cycle de vie d’un
logiciel
Faisabilité.
Spécifications.
Organisation du projet:
déterminer la manière dont développer le logiciel.
analyse des couts: établir une estimation du prix du projet.
planification: établir un calendrier pour le développement.
Assurance qualité du logiciel: déterminer les actions qui permettront de s’assurer de
la qualité du produit fini.
Conception
Implémentation
 Tests unitaires: faire tester le logiciel par ses développeurs
Test d’intégration: tester pendant l’intégration du logiciel
 Tests système: tester le logiciel dans un environnement similaire à l’environnement de
production.
31
Composantes du cycle de vie d’un
logiciel
Tests alpha: faire tester le logiciel par le client sur le site de
développement.
Tests beta :faire tester le logiciel par le client sur son propre site
Tests d’acceptation : faire tester le produit par l’acheteur pour savoir
s’il le satisfait.
Tests de régression : enregistrer les résultats des tests et les comparer
avec ceux des anciennes versions pour déterminer si la nouvelle n’a pas
apporté de dégradation des performances.
Livraison:
Fournir au client une solution logicielle qui fonctionne correctement.
Installation: rendre le logiciel opérationnel sur le site du client.
Formation: enseigner aux utilisateurs à se servir du logiciel.
Assistance : répondre aux questions des utilisateurs.
32
Composantes du cycle de vie d’un
logiciel
Maintenance:
Mettre à jour et améliorer le logiciel pour assurer sa pérennité.
33
Documents courants
Cahier des charges:
Description initiale des fonctionnalités désirées, généralement écrite par
l’utilisateur.
Spécifications:
Décrit précisément les conditions que doit remplir le logiciel.
Modèle objet: indique les classes et objets principaux.
Scénarios des cas d’utilisation : indique les différents enchainements possible du point
de vue de l’utilisateur.
Calendrier du projet:
Décrit l’ordre des différentes taches ainsi que les délais et les ressources qu’elles
demandent.
Plan de test du logiciel:
Décrit les procédures de test appliquées au logiciel pour assurer son bon
fonctionnement.
Test d’acceptation : tests choisis par le client pour déterminer s’il peut accepter le
logiciel.
34
Documents courants
Conception du logiciel:
Décrit la structure du logiciel.
Conception architecturale: décrit la structure de haut niveau .
Conception détaillée : décrit la conception des modules de bas niveau et des objets
Plan d’assurances qualité du logiciel:
Décrit les activités mises en œuvre pour garantir la qualité du logiciel.
Manuel utilisateur:
Mode d’emploi pour le logiciel dans sa version finale.
Code source:
Code complet du produit fini
Rapport des tests:
Décrit les tests effectués et les réactions du système.
Rapport des défauts
Décrit les comportements du système qui n’ont pas satisfait le client , il s’agit le plus souvent
de défaillances du logiciel ou d’erreurs.
35
Modèle de développement logiciel
 modèle en cascade (fin des années 1960)
 modèle en V (années 1980)
 modèle en spirale (Boehm, 1988)
36
Modèle de développement logiciel
Modèle en cascade
37
Modèle de développement logiciel
 principe : le développement se divise en étapes
 une étape se termine à une certaine date
 des docs ou prog. sont produits à la fin de chaque étape
 on passe à l’étape suivante ssi l’examen est satisfaisant
 une étape ne remet en cause que la précédente
 remarque :
 modèle séduisant car simple
 moyennement réaliste (trop séquentiel)
Modèle en cascade:
38
Modèle de développement logiciel
Modèle en V
39
Modèle de développement logiciel
 principe : les premières étapes préparent les dernières
 interprétation : 2 sortes de dépendances entre étapes
 en V, enchaînement séquentiel (modèle en cascade)
 de gauche à droite, les résultats des étapes de départ
sont utilisés par les étapes d’arrivée
 remarque :
 vérification objective des spécifications
 modèle plus élaboré et réaliste
 éprouvé pour de grands projets, le plus utilisé
Modèle en V
40
Modèle de développement logiciel
Le prototypage:
 Ce modèle consiste à produire une version d’essai du logiciel (un prototype).
 ce prototype est utilisé pour tester les différents concepts et exigences.
 il sert à montrer aux clients les fonctionnements que l’on se propose de mettre
en œuvre.
 après que le client a donné son accord, le développement du logiciel suit
généralement les phases du modèle en cascade.
 les efforts consacrés à la réalisation du prototype sont le plus souvent
compensés par ceux gagnés à ne pas développer de fonctions inutiles.
41
Modèle de développement logiciel
Le modèle incrémental:
 Son principe est de concevoir et de livrer au client un sous-
ensemble minimal du système global qui soit fonctionnel.
 le processus se répète durant l’ensemble du cycle de vie par
l’ajout d’incréments minimaux.
 ce système présente l’avantage de fournir rapidement au client un
système utilisable.
42
Modèle de développement logiciel
Modèle en spirale
43
Modèle de développement logiciel
 principe : développement itératif (prototypes)
 interprétation : chaque mini-cycle se déroule en 4 phases
1. Analyse des besoins, Spécification
2. Analyse des risques, Alternatives, Maquettage
3. Conception et Implémentation de la solution retenue
4. Vérification, Validation, Planification du cycle suivant
 commentaire :
 nouveau : analyse de risques, maquettes, prototypage
 modèle complet, complexe et général
 effort important de mise en œuvre
 utilisé pour projets innovants ou à risques
44
Modèle de développement logiciel
 modèles : enchaînements et interactions entre étapes
 passage d’une étape à la suivante :
 documents, tests
 vérifiés et validés
 3 modèles : cascade, V, spirale (séquentiels et itératif)
 cascade : simple mais pas très réaliste
 spirale : nouvelles notions, très complet mais lourd
 V : assez réaliste, le plus éprouvé et utilisé
Résumé
45
Questions de révisions
 En quoi un modèle de cycle de vie divisé en phase aide-t-à la gestion du
développement d’un projet logiciel?
Quelles sont les deux caractéristiques obligatoires d’un jalons?
Indiquez la ou les phases du cycle de vie d’un logiciel où est produit chacun des
documents suivants: manuel utilisateur final, conception architecturale, plan d’assurance
qualité,spécifications des modules,code source,cahier de charges,plan de test,manuel
utilisateur préliminaire,conception détaillée,estimation des couts,calendrier du
projet,rapport des tests,documentation.
Classez les taches suivantes selon le modèle en cascade:tests d’acceptation,organisation
du projet,test unitaires,synthèse des éxigences,estimation des couts,conception de haut
niveau,étude de marché,conception de bas niveau,test système,synthèse sur la
conception,iplémentation,spécification des exigences.
46

Contenu connexe

Similaire à introduction génie logiciel-1.ppt

Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptxLatifaBen6
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Erradi Mohamed
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxssuserec8501
 
RA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxRA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxtestuser715939
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...Sid Ahmed Benkraoua
 
Analyse des besoins et gestion des projets besoin.pdf
Analyse des besoins et gestion des projets besoin.pdfAnalyse des besoins et gestion des projets besoin.pdf
Analyse des besoins et gestion des projets besoin.pdfJordaniMike
 
coursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdfcoursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdfHervKoya
 
Chp2 - Cahier des Charges
Chp2 - Cahier des ChargesChp2 - Cahier des Charges
Chp2 - Cahier des ChargesLilia Sfaxi
 
Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logicielMohamed Diallo
 
les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitésoregh
 
491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdf491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdfHalimaDOUIBI
 
Prototype rapport
Prototype rapportPrototype rapport
Prototype rapportInes Ouaz
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logicielMajid CHADAD
 
Livret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematicLivret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematicPascal Flamand
 
Disaster Recovery Plan (DRP) & Business Continuity Plan 2012 - Computerland
Disaster Recovery Plan (DRP) & Business Continuity Plan 2012 - ComputerlandDisaster Recovery Plan (DRP) & Business Continuity Plan 2012 - Computerland
Disaster Recovery Plan (DRP) & Business Continuity Plan 2012 - ComputerlandPatricia NENZI
 

Similaire à introduction génie logiciel-1.ppt (20)

Génie Logiciel.pptx
Génie Logiciel.pptxGénie Logiciel.pptx
Génie Logiciel.pptx
 
Cours Génie Logiciel 2016
Cours Génie Logiciel 2016Cours Génie Logiciel 2016
Cours Génie Logiciel 2016
 
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptxChapitre 1 - Introcution & cycles de développement - Etudiant.pptx
Chapitre 1 - Introcution & cycles de développement - Etudiant.pptx
 
RA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptxRA et CCDS - Séance 1.pptx
RA et CCDS - Séance 1.pptx
 
conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...conception et réalisation plateforme collaboratif basant sur la methode agile...
conception et réalisation plateforme collaboratif basant sur la methode agile...
 
Ihm introduction
Ihm introductionIhm introduction
Ihm introduction
 
Analyse des besoins et gestion des projets besoin.pdf
Analyse des besoins et gestion des projets besoin.pdfAnalyse des besoins et gestion des projets besoin.pdf
Analyse des besoins et gestion des projets besoin.pdf
 
coursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdfcoursABGP-miage-1112-4p1.pdf
coursABGP-miage-1112-4p1.pdf
 
Gl rappels ac
Gl rappels acGl rappels ac
Gl rappels ac
 
Method XP
Method XP Method XP
Method XP
 
Chp2 - Cahier des Charges
Chp2 - Cahier des ChargesChp2 - Cahier des Charges
Chp2 - Cahier des Charges
 
Introduction au génie logiciel
Introduction au génie logicielIntroduction au génie logiciel
Introduction au génie logiciel
 
les metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualitéles metriques de processus, de produit et de qualité
les metriques de processus, de produit et de qualité
 
Assurance qualité
Assurance qualitéAssurance qualité
Assurance qualité
 
491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdf491723007-Assurance-Qualite-de-Logiciel-1.pdf
491723007-Assurance-Qualite-de-Logiciel-1.pdf
 
Prototype rapport
Prototype rapportPrototype rapport
Prototype rapport
 
Xtreme Programming
Xtreme ProgrammingXtreme Programming
Xtreme Programming
 
Cycle de développement du logiciel
Cycle de développement du logicielCycle de développement du logiciel
Cycle de développement du logiciel
 
Livret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematicLivret bleu qualitelogicielle_gt-logiciellibre_systematic
Livret bleu qualitelogicielle_gt-logiciellibre_systematic
 
Disaster Recovery Plan (DRP) & Business Continuity Plan 2012 - Computerland
Disaster Recovery Plan (DRP) & Business Continuity Plan 2012 - ComputerlandDisaster Recovery Plan (DRP) & Business Continuity Plan 2012 - Computerland
Disaster Recovery Plan (DRP) & Business Continuity Plan 2012 - Computerland
 

introduction génie logiciel-1.ppt

  • 1. Définition logiciel Un logiciel (software) est l’ensemble des programmes, des procédures et des documentations nécessaires au fonctionnement d’un système informatique 1
  • 2. Caractéristiques du logiciel  le logiciel est facile à reproduire  tout le coût se trouve dans le développement  le logiciel est immatériel et invisible  on ne peut l’observer qu’en l’utilisant  la qualité n’est pas vraiment apparente  difficile d’estimer l’effort de développement  développement difficile à automatiser  beaucoup de main-d’œuvre nécessaire … 2
  • 3. Caractéristiques du logiciel  le logiciel ne s’use pas, mais il vieillit Détérioration suite aux changements :  complexification indue  duplication de code  introduction d’erreurs Mal conçu au départ :  inflexibilité  manque de modularité  documentation insuffisante Evolution du matériel 3
  • 4. Différentes catégories de logiciels  sur mesure : pour un client spécifique  générique : vendu sur un marché 4
  • 5. Différents types de logiciels  système d’information et d’aide à la décision  logiciel temps-réel  logiciel embarqué  logiciel distribué 5
  • 6. LA CRISE DU LOGICIEL  Le GL est apparu dans les années 70 pour répondre à la ‘crise du logiciel’  Cette crise est apparue lorsque l’on a pris conscience que le coût du logiciel dépassait le coût du matériel.  la non qualité des systèmes produits:  arrêt de Transpac pour 7.000 entreprises et 1.000.000 d'abonnés : surcharge du réseau.  TAURUS, un projet d'informatisation de la bourse londonienne : définitivement abandonné après 4 années de travail et 100 millions de £ de pertes,  non différenciation entre avion civil et avion militaire : guerre du Golfe - Airbus iranien abattu : 280 morts 6
  • 7. La crise du logiciel  Délais et exigences non satisfait en retard, dépassement mémoire et prix, erreurs aéroport de Denver (système de livraison des bagages) 1 an de retard SNCF (système socrate)  difficultés importantes OS 360 d’IBM 7
  • 8. La crise du logiciel  abandon bourse de Londres (projet d’informatisation) abandon : 4 années de travail + 100 ML perdus  La non rencontre des exigences et les dépassements de délais sont fréquents : 300 à 400 % 8
  • 9. Les causes de la crise  La complexité des logiciels à développer est de plus en plus croissante et difficile à maîtriser, elle est dû principalement à:  La taille du logiciel de plus en plus croissante  L'utilisateur de plus en plus exigent  La diversification et l'hétérogénéité des données et de leurs sources: Bases et entrepôts de données, fichiers dans différents formats: XML, XDF, etc.  La nature du logiciel: Répartis, temps réel, Web, intelligents, etc  L'absence d’un cadre méthodologique standard de développement. Les méthodes de développement de logiciel existantes, si elles sont utilisées, n'étaient pas suffisamment bonnes et adaptées. 9
  • 10. Les causes de la crise  L'absence d'outils de gestion du développement. Les méthodes d'estimation des coûts et des délais sont inexistantes, les techniques de planification et de suivi de projets n'étaient pas utilisées.  L'absence de métrologie de la qualité des processus et des produits logiciels. Il n'y avait pas de moyens pour mesurer la qualité d'un logiciel telles que la fiabilité et aussi la qualité de la démarche méthodologique utilisée. 10
  • 11. Réponse à la crise du logiciel Naissance d’une nouvelle discipline  Problématique apparue dès les années 1960  Conférence parrainée par l’OTAN (1968)  Naissance du « Génie Logiciel » (software engineering) 11
  • 12. Réponse a la crise du logiciel Objectif  Démarche de développement ingénierique  Principes, méthodes, outils  Techniques de fabrication assurant :  respect des exigences  respect de la qualité  respect des délais et des coûts 12
  • 13. Génie logiciel  Le Génie Logiciel est donc l'art de spécifier, de concevoir, de réaliser et de faire évoluer, avec des moyens et dans des délais raisonnables, des programmes, des documentations et des procédures de qualité en vue d'utiliser un ordinateur pour résoudre certains problèmes définis. 13
  • 14. Un bon logiciel Facteurs de qualité:  Correction: La correction est la capacité que possède un produit logiciel de mener à bien sa tâche, telle qu’elle a été définie par sa spécification  Robustesse: La robustesse est la capacité qu’offrent des systèmes logiciels à réagir de manière appropriée à la présence de conditions anormales.  Extensibilité: L’extensibilité est la facilité d’adaptation des produits logiciels aux changements de Spécifications  14
  • 15. Un bon logiciel Réutilisabilité: La réutilisabilité est la capacité des éléments logiciels à servir à la construction de plusieurs applications différentes  Compatibilité: La compatibilité est la facilité avec laquelle des éléments logiciels peuvent être combinés à d’autres.  Efficacité: 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. 15
  • 16. Un bon logiciel 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.  Facilité d’utilisation: La facilité d’utilisation est la facilité avec laquelle des personnes présentant des formations et des compétences différentes peuvent apprendre à utiliser les produits logiciels et s’en servir pour résoudre des problèmes. Elle recouvre également la facilité d’installation, d’opération et de contrôle. Ponctualité: La ponctualité est la capacité d’un système logiciel à être livré au moment désiré par ses utilisateurs, ou avant. 16
  • 18. Qualité d’un logiciel Qualité externe: complétude fonctionnelle  réalise toutes les tâches attendues ergonomie / convivialité  facile d’utilisation  apprentissage aisé fiabilité / robustesse  tâches effectuées sans problème  fonctionne même dans des cas atypiques 18
  • 19. Qualité logiciel Qualité interne:  adaptabilité  facile à modifier, à faire évoluer réutilisabilité  des parties peuvent être réutilisées facilement traçabilité / compréhension  le fonctionnement du logiciel est facile à comprendre 19
  • 20. Qualité logiciel efficacité / performance  bonne utilisation des ressources (mémoire, cpu, …) portabilité  capacité à marcher dans un autre contexte ou env. 20
  • 21. Les principes du GL  la Rigueur: c'est un principe qui constitue le chemin vers la formalité. Il s’appuie sur des notations, des modèles, des schémas et des lois mathématiques.  la Séparation : c’est une règle de bons sens qui consiste à considérer séparément différents aspects d’un problème afin d’en maîtriser la complexité. C’est un aspect de la stratégie générale du « diviser pour régner ». Elle prend une multitude de formes : •Séparation dans le temps (les différents aspects sont abordés successivement),Cas du cycle de vie. •Séparation du système en parties (architecture).  la Modularité: c'est le principe qui consiste à découper le logiciel en plusieurs modules simples. Ce principe considère séparément le contenu du module et les relations entre modules (ce qui rejoint l’idée de séparation des questions). Un bon découpage modulaire se caractérise par une forte cohésion interne des modules et un faible couplage entre les modules (relations inter modulaires en nombre limité et clairement décrites). 21
  • 22. Les principes du GL  Généricité : c'est le principe qui permet de ramener la résolution d'un problème à celle d'un problème plus général. Il s'agit de regrouper les entités semblables (structure ou comportement) par des solutions paramétrables ou adaptables. C'est le cas des applications paramétrables.  la Construction incrémental: c'est un principe qui consiste à procéder progressivement dans la construction d’un produit logiciel. C'est à dire aller de l’essentiel vers le secondaire, cela revient à construire un noyau avec les fonctions essentiels, puis ajouter progressivement les fonctions secondaires. 22
  • 23. Processus de développement logiciel Ensemble d'activités successives, organisées en vue de la production d'un logiciel. En pratique: •Pas de processus idéal •Choix du processus en fonction des contraintes (taille des équipes, temps, qualité...). •Adaptation de « processus types » aux besoins réels, 23
  • 24. Processus de développement logiciel Activités du développement logiciel •Analyse des besoins •Spécification •Conception •Programmation •Validation et vérification •Livraison •Maintenance Pour chaque activité : Utilisation et production de documents 24
  • 25. Processus de développement logiciel Analyse des besoin: Objectif : Comprendre les besoins du client •Objectifs généraux, environnement du futur système, ressources disponibles, contraintes de performance... Entrée : Fournies par le client •Expert du domaine d'application, futur utilisateur Document produit : Cahier des charges (+ manuel d'utilisation préliminaire) 25
  • 26. Processus de développement logiciel Spécifications Objectifs •É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, contradictions) Entrée : Cahier des charges + considérations de faisabilité ? Document produit : Cahier des charges fonctionnel 26
  • 27. Processus de développement logiciel Conception: Objectifs : Élaborer une solution concrète réalisant la spécification • Description architecturale en composants (avec interface et fonctionnalités) • Réalisation des fonctionnalités par les composants (algorithmes, organisation des données) • Réalisation des exigences non-fonctionnelles (performance, sécurité...) Entrée : Cahier des charges fonctionnel Document produit : Dossier de conception 27
  • 28. Processus de développement logiciel programmation Objectif : Implantation de la solution conçue •Choix de l'environnement de développement, du/des langage(s) de programmation, de normes de développement... Entrée : Dossier de conception Document produit : Code documenté + manuel d'utilisation 28
  • 29. Processus de développement logiciel Validation et vérification Objectifs : •Validation : assurer que les besoins du client sont satisfaits (au niveau de la spécification, du produit fini...) •Vérification : assurer que le logiciel satisfait sa spécification 29
  • 30. Processus de développement logiciel Maintenance: Types de maintenance: •Correction : identifier et corriger des erreurs trouvées après la livraison. •Adaptation : adapter le logiciel aux changements dans l'environnement (format des données, environnement d'exécution...) •Perfection : améliorer la performance, ajouter des fonctionnalités, améliorer la maintenabilité du logiciel 30
  • 31. Composantes du cycle de vie d’un logiciel Faisabilité. Spécifications. Organisation du projet: déterminer la manière dont développer le logiciel. analyse des couts: établir une estimation du prix du projet. planification: établir un calendrier pour le développement. Assurance qualité du logiciel: déterminer les actions qui permettront de s’assurer de la qualité du produit fini. Conception Implémentation  Tests unitaires: faire tester le logiciel par ses développeurs Test d’intégration: tester pendant l’intégration du logiciel  Tests système: tester le logiciel dans un environnement similaire à l’environnement de production. 31
  • 32. Composantes du cycle de vie d’un logiciel Tests alpha: faire tester le logiciel par le client sur le site de développement. Tests beta :faire tester le logiciel par le client sur son propre site Tests d’acceptation : faire tester le produit par l’acheteur pour savoir s’il le satisfait. Tests de régression : enregistrer les résultats des tests et les comparer avec ceux des anciennes versions pour déterminer si la nouvelle n’a pas apporté de dégradation des performances. Livraison: Fournir au client une solution logicielle qui fonctionne correctement. Installation: rendre le logiciel opérationnel sur le site du client. Formation: enseigner aux utilisateurs à se servir du logiciel. Assistance : répondre aux questions des utilisateurs. 32
  • 33. Composantes du cycle de vie d’un logiciel Maintenance: Mettre à jour et améliorer le logiciel pour assurer sa pérennité. 33
  • 34. Documents courants Cahier des charges: Description initiale des fonctionnalités désirées, généralement écrite par l’utilisateur. Spécifications: Décrit précisément les conditions que doit remplir le logiciel. Modèle objet: indique les classes et objets principaux. Scénarios des cas d’utilisation : indique les différents enchainements possible du point de vue de l’utilisateur. Calendrier du projet: Décrit l’ordre des différentes taches ainsi que les délais et les ressources qu’elles demandent. Plan de test du logiciel: Décrit les procédures de test appliquées au logiciel pour assurer son bon fonctionnement. Test d’acceptation : tests choisis par le client pour déterminer s’il peut accepter le logiciel. 34
  • 35. Documents courants Conception du logiciel: Décrit la structure du logiciel. Conception architecturale: décrit la structure de haut niveau . Conception détaillée : décrit la conception des modules de bas niveau et des objets Plan d’assurances qualité du logiciel: Décrit les activités mises en œuvre pour garantir la qualité du logiciel. Manuel utilisateur: Mode d’emploi pour le logiciel dans sa version finale. Code source: Code complet du produit fini Rapport des tests: Décrit les tests effectués et les réactions du système. Rapport des défauts Décrit les comportements du système qui n’ont pas satisfait le client , il s’agit le plus souvent de défaillances du logiciel ou d’erreurs. 35
  • 36. Modèle de développement logiciel  modèle en cascade (fin des années 1960)  modèle en V (années 1980)  modèle en spirale (Boehm, 1988) 36
  • 37. Modèle de développement logiciel Modèle en cascade 37
  • 38. Modèle de développement logiciel  principe : le développement se divise en étapes  une étape se termine à une certaine date  des docs ou prog. sont produits à la fin de chaque étape  on passe à l’étape suivante ssi l’examen est satisfaisant  une étape ne remet en cause que la précédente  remarque :  modèle séduisant car simple  moyennement réaliste (trop séquentiel) Modèle en cascade: 38
  • 39. Modèle de développement logiciel Modèle en V 39
  • 40. Modèle de développement logiciel  principe : les premières étapes préparent les dernières  interprétation : 2 sortes de dépendances entre étapes  en V, enchaînement séquentiel (modèle en cascade)  de gauche à droite, les résultats des étapes de départ sont utilisés par les étapes d’arrivée  remarque :  vérification objective des spécifications  modèle plus élaboré et réaliste  éprouvé pour de grands projets, le plus utilisé Modèle en V 40
  • 41. Modèle de développement logiciel Le prototypage:  Ce modèle consiste à produire une version d’essai du logiciel (un prototype).  ce prototype est utilisé pour tester les différents concepts et exigences.  il sert à montrer aux clients les fonctionnements que l’on se propose de mettre en œuvre.  après que le client a donné son accord, le développement du logiciel suit généralement les phases du modèle en cascade.  les efforts consacrés à la réalisation du prototype sont le plus souvent compensés par ceux gagnés à ne pas développer de fonctions inutiles. 41
  • 42. Modèle de développement logiciel Le modèle incrémental:  Son principe est de concevoir et de livrer au client un sous- ensemble minimal du système global qui soit fonctionnel.  le processus se répète durant l’ensemble du cycle de vie par l’ajout d’incréments minimaux.  ce système présente l’avantage de fournir rapidement au client un système utilisable. 42
  • 43. Modèle de développement logiciel Modèle en spirale 43
  • 44. Modèle de développement logiciel  principe : développement itératif (prototypes)  interprétation : chaque mini-cycle se déroule en 4 phases 1. Analyse des besoins, Spécification 2. Analyse des risques, Alternatives, Maquettage 3. Conception et Implémentation de la solution retenue 4. Vérification, Validation, Planification du cycle suivant  commentaire :  nouveau : analyse de risques, maquettes, prototypage  modèle complet, complexe et général  effort important de mise en œuvre  utilisé pour projets innovants ou à risques 44
  • 45. Modèle de développement logiciel  modèles : enchaînements et interactions entre étapes  passage d’une étape à la suivante :  documents, tests  vérifiés et validés  3 modèles : cascade, V, spirale (séquentiels et itératif)  cascade : simple mais pas très réaliste  spirale : nouvelles notions, très complet mais lourd  V : assez réaliste, le plus éprouvé et utilisé Résumé 45
  • 46. Questions de révisions  En quoi un modèle de cycle de vie divisé en phase aide-t-à la gestion du développement d’un projet logiciel? Quelles sont les deux caractéristiques obligatoires d’un jalons? Indiquez la ou les phases du cycle de vie d’un logiciel où est produit chacun des documents suivants: manuel utilisateur final, conception architecturale, plan d’assurance qualité,spécifications des modules,code source,cahier de charges,plan de test,manuel utilisateur préliminaire,conception détaillée,estimation des couts,calendrier du projet,rapport des tests,documentation. Classez les taches suivantes selon le modèle en cascade:tests d’acceptation,organisation du projet,test unitaires,synthèse des éxigences,estimation des couts,conception de haut niveau,étude de marché,conception de bas niveau,test système,synthèse sur la conception,iplémentation,spécification des exigences. 46