Cours de Génie Logiciel Avancé chapitre 1 : Introduction

Download Report

Transcript Cours de Génie Logiciel Avancé chapitre 1 : Introduction

Cours Qualité et Tests
Chapitre 2 : Modèles de cycle de
Vie et Test
Responsables du cours :
Héla Hachicha
Hatem Ben Sta
Inès Ben Jaâfar
Année Universitaire : 2012 - 2013
2
Sommaire
• Modèles de processus de développement du logiciel
• Les activités de ces processus
3
Les facteurs clés en génie logiciel
• Trois facteurs clés en génie logiciel
▫ Personnel : nombre, habiletés, moral
▫ Processus: procédures d’accomplissement de
travail
▫ Technologie: plateforme et domaine
• Les bons processus aident le personnel à
appliquer la technologie
▫ De façon efficiente : sans perte de temps, ni effort,
ni ressources
▫ De façon efficace : tout en obtenant le résultat
désiré
4
Qu’est-ce qu’un processus?
• Un processus est une suite d’étapes impliquant
des activités, des acteurs, des ressources, et des
contraintes pour produire un résultat escompté
5
Le processus de développement
de logiciel
• Un ensemble structuré d’activités nécessaires pour
développer un logiciel
• Un modèle de développement de logiciel est une
représentation abstraite d’un processus
• De nombreux modèles différents mais pour tous :
▫ Spécification : on définit ce que le système devra faire
▫ Conception et implémentation : on définit l’organisation du
système et on l’implémente
▫ Validation : on vérifie que le système fait bien ce que veut le
client
▫ Evolution : on modifie le système en réponse aux
changements des besoins du client
6
Modèles de processus de développement
logiciel
• 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.
7
Les modèles de processus
• Chaque élément d'un modèle de processus a
▫ Inputs nécessaires
▫ Procédures pour l'accomplissement du processus
▫ Produits de travail à produire
▫ Critères d'acceptation pour les produits des
travaux de sortie
8
Quelques terminologies
• Un processus est une description de la façon
d'accomplir une activité de travail
• Une procédure est un ensemble d'étapes pour
l'accomplissement des tâches d'un processus
• Une technique est la manière dont un individu
accomplit une procédure
 Un processus inclut les procédures pour
conduire les activités de travail
9
Un Exemple
-- Procédures de réparation de défautCorrection d'un défaut signalés par les clients implique les
procédures suivantes :
•
•
•
•
•
•
•
•
•
•
1. reproduire la défaillance
2. trouver le défaut
3. corriger l'erreur
4. modifier la suite de tests
5. accomplir le test de régression
6. documenter le correctif
7. mettre à jour d'autres produits de travail, si nécessaires
8. vérifier le code modifié et les documents
9. distribuer le code modifié
10. clôturer le rapport de problème
10
Problèmes techniques dans les projets
logiciels
• Le développement de produits comprend :
▫
▫
▫
▫
▫
▫
L'ingénierie du système
L'ingénierie des exigences logicielles
Le design du logiciel
L’implantation du logiciel
La vérification et la validation du logiciel
L'intégration et la validation du système
11
Quelques terminologie
• La vérification du cycle de vie est le processus de détermination qu'un
produit de travail satisfait aux conditions imposées par d'autres
produits de travail et processus de travail
▫ i.e., est-ce que le produit de travail est complété, correct et cohérent avec
les autres produits de travail et processus de travail ?
☛ Sommes-nous en train de faire le bon produit ?
• La validation du cycle de vie est le processus de détermination qu'un
produit de travail satisfait aux besoins prévus de son utilisation
lorsqu'il est utilisé par ses utilisateurs dans l'environnement prévu
▫ i.e., est-ce que le produit de travail est approprié pour son utilisation ?
☛ Est-ce que nous faisons le produit correctement ?
En pratique
• souvent confondus, ou pris l'un pour l'autre
• on parle de « V&V » (validation et vérification)
12
Techniques de vérification
• Les techniques de vérification incluent :
▫
▫
▫
▫
▫
La traçabilité,
les révisions,
le prototypage,
l’analyse, et
les tests fonctionnels.
13
Techniques de validation
• Les techniques de validation incluent:
▫
▫
▫
▫
Les révisons,
le test du système,
les tests opérationnels, et
les démonstrations.
14
Cycle de vie et Tests
Différents modèles de développement logiciel :
•
•
•
•
•
•
•
•
Le modèle en cascade
Modèle en V
Développement incrémental (prototypage)
Le modèle évolutif
Modèle orienté réutilisation
Le modèle en spirale
Méthode Agile : Extreme Programming (XP)
...
15
Cycle de vie - Modèle en cascade
16
Caractéristiques du modèle
en cascade
(date des années 70)
(mais reste pertinent)
• Séquentiel
• Importance du contrôle du processus
▫ rétro-actions
▫ validation, vérification, tests
• Vérification : Le système est conforme à la spécification
• Validation : Le système répond aux exigences du client
 Inspections et tests
• Tests
• On exécute le système avec des cas de tests issus de la
spécification de données réelles du système futur
17
Les phases de test
• Tests unitaires
▫ Les composants sont testés individuellement
• Tests d’intégration
▫ Test du système global
• Tests de recette
▫ Test avec des données clients pour vérifier que le
système répond aux exigences du client
18
Critique du modèle en cascade
que peut-on lui reprocher ?
• Modèle trop séquentiel
– dure trop longtemps
• Validation trop tardive : les tests sont prévus
tardivement
et remise en question coûteuse des phases
précédentes
• Sensibilité à l'arrivée de nouvelles exigences
– refaire toutes les étapes
19
Le modèle linéaire en Cascade avec
des révisions de jalons
20
Avantages de l’approche en Cascade
• Le modèle en Cascade nécessite :
▫
▫
▫
▫
▫
Le développement des exigences avant le design
Le design avant l'écriture du code
L’écriture du code avant de l'intégrer
Le test des programmes après leur intégration
Les révisions de jalons
21
Cycle de vie - modèle en V
22
Caractéristiques du modèle en V
• Tâches effectuées en parallèle
– horizontalement : préparation de la vérification
▫ Ex. : dès que la spécification fonctionnelle est faite
: (↑)
 plan de tests de qualification
 plan d'évaluation des performances
 documentation utilisateur
– verticalement : développement des modules
▫ Ex. : dès que la conception globale est validée : (↑)
 conception détaillée des modules
 programmation et tests unitaires
23
Cycle de vie - modèle en V
24
Le modèle en V
Le modèle en V illustre un problème du modèle en Cascade : Si l’on
se base sur les tests en cascade seuls, les défauts créés en premier seront
détectés en dernier lieu
25
Les coûts relatifs à la correction d’un défaut
logiciel
26
Certaines réalités sur le développement logiciel
• 1. Les exigences changent toujours en raison de:
▫ Changement des attentes des clients et des besoins des
utilisateurs
▫ Analyse initiale inadéquate des exigences
▫ Compréhension et aperçu deviennent plus clairs par l'expérience
▫ Évolution de la technologie
▫ Évolution de la situation compétitive
▫ Rotation du personnel : ingénierie, gestion, marketing, clientèle
• 2. Le design n'est jamais correct dès le premier coup
▫ Le design est un processus créatif, de résolution de problèmes
• 3. Les démonstrations fréquentes de la progression et
d'alerte précoce des problèmes sont souhaitables
27
Développement itératif
• L'itération est le processus par lequel le résultat
souhaité est développé par des cycles répétés
• En génie logiciel, une approche itérative permet la
révision et l’ajout, étape par étape, des produits de
travail
• Différents types de modèles itératifs supportent :
▫
▫
▫
▫
▫
La révision et l’ajout des exigences
La révision et l’ajout de design
La révision et l’ajout du code
Le test d’une partie du système
et ainsi de suite
28
Développement itératif
• Les objectifs de développement itératif sont les
suivants :
▫ fréquentes démonstrations de la progression
▫ alerte précoce des problèmes
▫ capacité d’intégrer les changements de façon élégante
• Quatre types de modèles de développement itératif :
▫ 1. Construction-incrémentale : code-test-demo itératif
▫ 2. agile : satisfaire aux exigences opérationnelles
itérativement
▫ 3. évolutif : le développement exploratoire
▫ 4. spirale : la gestion des risques
29
Le processus de construction-incrémentale
30
L’approche de construction-incrémentale
• Le design est partitionné en une série de
construits par priorité
▫ chaque construit ajoute des capacités à la base
existante par ordre de priorité
▫ chaque construit produit une version
démontrables
 généralement sur une base hebdomadaire
• Les parties les plus critiques sont construites en
premier
▫ et, testées/démontrées le plus souvent
31
Critères de partitionnement
• Critique-de-sûreté: caractéristiques de sûreté en
premier lieu
• Critique-de-sécurité : les couches de sécurité en
premier lieu
• Usage intensif des données: schéma des
données en premier lieu
• Usage intensif de l'utilisateur : interface
utilisateur en premier lieu
• Autres?
32
33
Techniques de validation
•
•
•
•
Révision par les pairs
Test
Démonstration
Analyse
34
Directives pour le développement incrémental
des construits
• Construire une version "officielle" de démonstration chaque semaine
▫ les développeurs peuvent réaliser des construits "sandbox" le plus
fréquemment
• Construire des versions du produit en fonction de la priorité des
exigences
▫ construire et tester les parties les plus critiques en premier
• Accomplir des révisions et des tests indépendants de chaque version
• Intégrer les changements des exigences dans des construits
subséquents
• Reconcevoir si le travail à refaire dépasse 20% de l'effort lorsqu’on
développe deux construits successifs du produit
▫ Re-travail évolutif excessif : changement des exigences
▫ Re-travail rétrospectif excessif : partitionnement mauvais de design
▫ Re-travail correctifs excessif : mauvais codage
35
Exemple d’un construit incrémental
Implanter un compilateur
36
Avantages de développement incrémental des
construits
• Permettre des démonstrations précoces et continues de la
progression
• Les composants construits en premier sont les plus testés
• Possibilité d’intégrer certains changements aux exigences dans des
versions ultérieures
• Fournir un avertissement précoce des problèmes
▫ calendrier, techniques, etc.
• Permettre des compromis sur les caractéristiques et le calendrier
▫ pendant le développement
▫ au moment de la livraison
• Autoriser une meilleure allocation des ressources en personnel que
la cascade
• Fournir des livraisons par incrément aux clients, s’il est souhaitable
37
Livraison incrémentale des construits
• Livrer des versions au début nous permet d’obtenir
très tôt un feedback des utilisateurs
• Permet de livrer le produit dans les délais
▫ avec la plupart des fonctionnalités
▫ avec une planification systématique pour les versions
ultérieures
• Au moment de la livraison, il est préférable d'être
▫ à 100% complété avec 80% de la plupart des
fonctionnalités importantes du produit
que d'être
▫ à 80% complété avec 100% des fonctionnalités
et ne rien offrir
38
Gérer le développement incrémental des
construits
• La gestion est plus complexe que celle dans l'approche
en cascade:
• Plus de « parties » à diverses étapes de développement
• Plus de communication et de coordination
• Un système automatisé de contrôle de versions est
essentiel
• Décision de façon au quelle la validation incrémentale
va être traitée
39
Le modèle évolutif
• Utilisé dans la cas où il est (presque) impossible
• de spécifier à l’avance une première version
stable des exigences
• Détails de chaque cycle:
40
Directives pour le développement évolutif
• Utilisé lorsque les exigences ne peuvent pas être
spécifiées à l'avance la plupart du temps
• Cycles évolutifs se termine lorsque
▫ Le projet est converti en une approche
incrémentale
▫ ou, le projet est annulé parce qu'il est infaisable
▫ ou, le produit est livré
• Utiliser une approche évolutive indique que le
projet a un risque très élevé
41
L’approche spirale
• Le processus de développement en spirale est un modèle de
méta-niveau pour les modèles de développement itératif
▫ Des activités antérieures sont revisitées, révisées, et raffinées à chaque
passage de la spirale
• Chaque cycle d'un modèle en spirale comporte quatre étapes:
▫ Etape 1 - déterminer les objectifs, les alternatives, et des contraintes
▫ Étape 2 - identifier les risques pour chaque alternative et choisir l'une
des alternatives
▫ Étape 3 - mettre en œuvre la solution (l’alternative) choisie
▫ Étape 4 - évaluer les résultats et le plan pour le prochain cycle de la
spirale
• Les cycles continuent jusqu’à ce que les objectifs souhaités
soient atteints (ou jusqu'à ce que le temps et les ressources
sont utilisées)
42
Un modèle évolutif en spirale
43
Un modèle incrémental en spirale
44
Leçons apprises
• Un cadre du processus de développement est un modèle de processus
générique qui peut être ajusté et adapté pour répondre aux besoins des
différents projets.
• Le processus de développement pour chaque projet logiciel doivent être
conçus avec le même soin utilisé pour la conception du produit.
• Le design du processus se fait mieux en ajustant et en adaptant des
modèles de processus de développement et des cadres de processus bienconnus , tout comme le design des produits qui se fait mieux en ajustant et
en adaptant des styles architecturaux et des cadres architecturaux bien
connus.
• Il ya plusieurs modèles de processus de développement de logiciels bien
connus et largement utilisés, incluant le modèle en cascade, incrémental,
évolutif, agile, et le modèle spiral.
• Il ya différentes façons d'obtenir les composants logiciels nécessaires;
différentes façons pour obtenir les composants logiciels nécessitent un
mécanisme différent de la planification, de mesure et de contrôle.
• Les phases de développement d'un projet logiciel peuvent être entrelacées
et réitérées de diverses manières.
45
Leçons apprises
• Les processus de développement itératif offrent les avantages
• suivants:
▫
▫
▫
▫
▫
▫
L'intégration continue,
La vérification et la validation itérative d’un produit évolutif,
Des démonstrations fréquentes de la progression,
La détection précoce des défauts,
L'alerte précoce des problèmes de processus,
L’incorporation systématique d’un travail inévitable qui se
produit dans le développement du logiciel, et
▫ La livraison anticipée des sous-ensembles de capacités (si
désiré).
• Selon le processus de développement itératif utilisé, la durée
de l’itération s’étend de 1 jour à 1 mois.
• Le prototypage est une technique pour acquérir des
connaissances, ce n'est pas un processus de développement.