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
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
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
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