Méthodologie Agile en Développement Logiciel
Méthodologie Agile en Développement Logiciel
Christine Solnon
1/82
Contexte
En 3IF : En 4IF :
Programmation OO / C++ PLD Agile
Algorithmique Qualité logicielle
Génie logiciel Grammaires et langages
2/82
Référentiel des compétences (1/2)
Utiliser des diagrammes UML pour modéliser un objet d’étude
Interpréter un diagramme UML donné
; IF3-GL, IF4-Agile
Concevoir un diagramme UML modélisant un objet d’étude
; IF3-GL, IF4-Agile
Vérifier la cohérence de différents diagrammes modélisant un même
objet d’étude
; IF3-GL, IF4-Agile
3/82
Référentiel des compétences (2/2)
4/82
Organisation
Cours
CM1 et CM2 : Développement logiciel itératif et agile (C. Solnon)
CM3 et CM4 : Design Patterns (C. Solnon)
CM5 : Retour d’expérience sur le développement agile (Esker)
CM6 et CM7 : Qualité logicielle (P.-E. Portier)
CM8 : Présentation du PLD (C. Solnon)
Evaluation
Note de projet
5/82
Quelques livres à emprunter à DOC’INSA
6/82
Introduction Motivations
Plan du cours
1 Introduction
Motivations
Quelques rappels (rapides) sur le contexte
7/82
Introduction Motivations
Philippe Kruchten :
Programming is fun, but developing quality software is hard. In between the
nice ideas, the requirements or the "vision", and a working software product,
there is much more than programming. Analysis and design, defining how to
solve the problem, what to program, capturing this design in ways that are
easy to communicate, to review, to implement, and to evolve is what... (you
will learn in this course ?)
Craig Larman :
The proverb "owning a hammer doesn’t make one an architect" is especially
true with respect to object technology. Knowing an object-oriented language
(such as Java) is a necessary but insufficient first step to create object
systems. Knowing how to "think in objects" is also critical.
8/82
Introduction Motivations
Crise du logiciel ?
1968 : NATO Software Engineering Conference
Premières mentions de la "crise du logiciel" et du "génie logiciel"
11/82
Introduction Motivations
Plan du cours
1 Introduction
Motivations
Quelques rappels (rapides) sur le contexte
14/82
Introduction Quelques rappels (rapides) sur le contexte
Ensemble d’artefacts
Codes : Sources, Binaires, Tests, ...
Documentation pour l’utilisateur : Manuel utilisateur, manuel de
référence, tutoriels, ...
Documentation interne : Cas d’utilisation, Modèle du domaine,
Diagrammes d’interaction, Diagrammes de classes, ...
...
15/82
Introduction Quelques rappels (rapides) sur le contexte
16/82
Introduction Quelques rappels (rapides) sur le contexte
17/82
Introduction Quelques rappels (rapides) sur le contexte
Modèles linéaires
Cycle en cascade
Cycle en V
Modèle incrémental
3 premières activités exécutées en séquence
; Spécification et architecture figées
Réalisation, intégration et tests effectués incrémentalement
Problème :
Ces modèles supposent que
l’analyse est capable de spécifier correctement les besoins
ces besoins sont stables
Or, 90% des dépenses concernent la maintenance et l’évolution !
18/82
Introduction Quelques rappels (rapides) sur le contexte
Maintenance et évolution
Utilisation des fonctionnalités spécifiées / cycle en cascade [C. Larman] :
Jamais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45%
Rarement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19%
Parfois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16%
Souvent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13%
Toujours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7%
Plan du cours
1 Introduction
22/82
Présentation générale d’un processus de dév. itératif Vue d’ensemble du processus
24/82
Présentation générale d’un processus de dév. itératif Les phases d’un cycle
Plan du cours
1 Introduction
25/82
Présentation générale d’un processus de dév. itératif Les phases d’un cycle
; Accepter le projet ?
26/82
Présentation générale d’un processus de dév. itératif Les phases d’un cycle
Phase 2 : Elaboration
27/82
Présentation générale d’un processus de dév. itératif Les phases d’un cycle
Phase 3 : Construction
28/82
Présentation générale d’un processus de dév. itératif Les phases d’un cycle
Phase 4 : Transition
29/82
Présentation générale d’un processus de dév. itératif Caractéristiques marquantes de la méthode
Plan du cours
1 Introduction
30/82
Présentation générale d’un processus de dév. itératif Caractéristiques marquantes de la méthode
31/82
Présentation générale d’un processus de dév. itératif Caractéristiques marquantes de la méthode
32/82
Présentation générale d’un processus de dév. itératif Caractéristiques marquantes de la méthode
Architecture :
Vue des aspects les plus significatifs du système
; Abstraction des principaux modèles du système
Conçue et stabilisée lors des premières itérations
; Traiter en premier les cas d’utilisation “pertinents" :
les plus risqués / critiques
les plus importants pour le client
les plus représentatifs du système
33/82
Présentation générale d’un processus de dév. itératif Caractéristiques marquantes de la méthode
Avantages :
Gestion des risques importants lors des premières itérations
; Construire et stabiliser le noyau architectural rapidement
Feed-back régulier des utilisateurs
; Adaptation permanente du système aux besoins réels
Feed-back régulier des développeurs et des tests
; Affiner la conception et les modèles
Complexité mieux gérée
; Eviter la paralysie par l’analyse
; Etapes plus courtes et moins complexes
Exploitation des erreurs des itérations précédentes
; Amélioration du processus d’une itération sur l’autre
34/82
Description détaillée des activités d’une itération générique
Plan du cours
1 Introduction
35/82
Description détaillée des activités d’une itération générique
Plan du cours
1 Introduction
38/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
Buts et Artefacts
40/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
Modèle du domaine
Qu’est-ce qu’un modèle du domaine ?
Diagramme de classes conceptuelles (objets du monde réel)
; Peu d’attributs, pas d’opérations, pas de classes logicielles
42/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
43/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
Glossaire
Définit le vocabulaire lié à l’application et au métier
; Evite les ambiguités
Chaque terme apparaissant dans les cas d’utilisation, modèles du
domaine et du métier, ... doit être défini dans le glossaire
44/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
Buts et Artefacts
45/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
47/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
<<actor>>
Client Service
Traiter une vente d’autorisation
des paiements
Gérer la sécurité
cas d’utilisation
Administrateur système
48/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
49/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
50/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
Description abrégée :
Le technicien saisit les coordonnées des deux angles opposés du rectangle.
Le rectangle est ajouté dans le plan.
Description structurée :
Précondition : un plan est chargé
Scénario principal :
1 Le système demande de saisir les coord. d’un coin du rectangle
2 Le technicien saisit les coordonnées d’un point p1
3 Le système demande de saisir les coordonnées du coin opposé
4 Le technicien saisit les coordonnées d’un point p2
5 Le système ajoute le rectangle correspondant dans le plan
6 Le système affiche le plan avec le rectangle ajouté
52/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
53/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
54/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
User story :
Courte description d’une utilisation du logiciel
Potentiellement incomplète ou imprécise
56/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
Buts et Artefacts
Buts Artefacts
Comprendre le contexte du Modèles du domaine et
système du métier
Glossaire
57/82
Description détaillée des activités d’une itération générique Activité “Capture et analyse des besoins"
Vision
Vue globale synthétique du projet
; Résumé des cas d’utilisation et exigences supplémentaires
Maquette de l’IHM
Uniquement si IHM complexe
; Validation du client
Plan du cours
1 Introduction
60/82
Description détaillée des activités d’une itération générique Activité “Conception"
Conception
Pourquoi faire des modèles pendant la conception ?
Pour comprendre et communiquer :
Quelles sont les responsabilités des objets ?
Quelles sont les collaborations entre objets ?
Quels design patterns peut-on utiliser ?
; La doc. peut être générée à partir du code (reverse engineering)
Modélisation Agile
Modéliser en groupe
Créer plusieurs modèles en parallèle
; Diagrammes dynamiques (interactions)
; Diagrammes statiques (classes, packages et déploiement)
Concevoir avec les programmeurs et non pour eux !
61/82
Description détaillée des activités d’une itération générique Activité “Conception"
Buts et Artefacts
62/82
Description détaillée des activités d’une itération générique Activité “Conception"
Diagrammes de séquence
; Point de vue temporel sur les interactions
64/82
Description détaillée des activités d’une itération générique Activité “Conception"
Buts et Artefacts
65/82
Description détaillée des activités d’une itération générique Activité “Conception"
Diagrammes de classes
Pendant la capture des besoins : Modèle du domaine
Classes = objets du mondes réels
Peu d’attributs, pas de méthodes, pas de visibilité
66/82
Description détaillée des activités d’une itération générique Activité “Conception"
67/82
Description détaillée des activités d’une itération générique Activité “Conception"
Diagrammes de packages
68/82
Description détaillée des activités d’une itération générique Activité “Conception"
69/82
Description détaillée des activités d’une itération générique Activité “Conception"
Architecture de déploiement
Objectif
Décrire :
la distribution des éléments logiciels sur les composants physiques
la communication entre les composants physiques (réseau)
71/82
Description détaillée des activités d’une itération générique Activité “Conception"
Craig Larman :
Drawing UML diagrams is a reflection of making decisions about the object
design. The object design skills are what really matter, rather than knowing
how to draw UML diagrams.
72/82
Description détaillée des activités d’une itération générique Activité “Réalisation et Tests"
Plan du cours
1 Introduction
73/82
Description détaillée des activités d’une itération générique Activité “Réalisation et Tests"
De la conception à la réalisation
Objectifs :
Ecrire le code implémentant les cas d’utilisation ciblés
Vérifier que ce code répond bien aux besoins ; Tests
74/82
Description détaillée des activités d’une itération générique Activité “Réalisation et Tests"
Cycle de TDD :
Ecrire le code de tests unitaires
Exécuter les tests ; Echec !
Compléter le code jusqu’à ce que les tests réussissent
; Implémentation la plus simple possible par rapport aux tests
Retravailler le code (refactoring), et re-tester
Avantages :
Les tests unitaires sont réellement écrits ( !)
Satisfaction du programmeur : Objectif clair... défi à relever !
Spécification du comportement des méthodes
Assurance lors des modifications (tests de non régression)
Automatisation et répétabilité du processus de test
; Utilisation d’outils (JUnit, CTest, ...)
Refactoring régulier
Objectif :
Transformer/restructurer du code sans en modifier le comportement
; Supprimer les “code smells"
Attention : re-exécuter les tests après chaque étape
Exemples :
Eliminer la duplication de code ; Créer de nouvelles procédures
Améliorer la lisibilité ; Renommer
Assurer le principe de responsabilité unique (single responsability)
Raccourcir les méthodes trop longues
Supprimer l’emploi des constantes codées en dur
Réduire le nombre de variables d’instance d’une classe
Renforcer l’encapsulation
...
cf [Link]
77/82
Description détaillée des activités d’une itération générique Activité “Réalisation et Tests"
78/82
Description détaillée des activités d’une itération générique Gestion de projet
Plan du cours
1 Introduction
79/82
Description détaillée des activités d’une itération générique Gestion de projet
Gestion de projet
Gestion des versions
Utiliser un outil de gestion de versions / travail collaboratif (Git, SVN, ...)
; Créer un point de contrôle à la fin de chaque itération
Plan d’itération
En fin d’itér. n, planifier l’itér. n+1 avec toutes les parties prenantes :
; Clients, Developpeurs, Architecte, Chef de projet, ...
Déterminer la durée de l’itération (en général de 2 à 4 semaines)
Lister les objectifs potentiels :
nouvelles fonctionnalités / cas d’utilisation / scénarios de cas
d’utilisation, traitement d’anomalies, ...
Classer les objectifs par ordre de priorité :
; Obj. commerciaux du client / Obj. techniques de l’architecte
Pour chaque objectif pris par ordre de priorité :
Etudier rapidement l’objectif
Estimer les tâches à faire pour l’atteindre
Quantifier temps nécessaire / ressources humaines disponibles
; Planning poker (http ://[Link]/)
Jusqu’à ce que volume de travail total = durée de l’itération
Impliquer toute l’équipe dans le processus de planification, et non juste
le chef de projet
81/82
Description détaillée des activités d’une itération générique Gestion de projet
82/82