Modelisation agile 03122011

60
Modélisation Agile & UML TogoJUG 3 décembre 2011 Agnès CREPET @agnes_crepet

description

Présenation faite pour le TogoJUG le 3 décembre 2011

Transcript of Modelisation agile 03122011

Page 1: Modelisation agile  03122011

Modélisation Agile & UML

TogoJUG3 décembre 2011

Agnès CREPET@agnes_crepet

Page 2: Modelisation agile  03122011

Objectifs de la session

Pas un cour UML!Pré-requis : connaître les principaux diagrammes UML

Pas d’expertise requise!

Plutôt un retour d’expérience de modélisation dans un contexte de projet « agile »Bonnes pratiques de modélisation. Quand utiliser quel diagramme?

Comprendre comment formulation des exigences, analyse, conception, implémentation et tests s’intègrent dans un processus de développement logiciel itératif

Perspective sur d’autres vecteurs de réussiteUML n’est pas la réponse à tous les problèmes de modélisation!

Page 3: Modelisation agile  03122011

Qui suis-je?

Agnès CREPET

Java/JEE Architect

hooked on Agile

@duchessfr & @LyonJUG Leader

Curator of @mixIT_lyon conf & @cast_it podcast

Curator of www.avataria.org

Page 4: Modelisation agile  03122011

Quelques rappels sur l'agilité

Modéliser et concevoir

Vers une modélisation agile

UML pragmatique & Retour d'expériences

Sommaire

Page 5: Modelisation agile  03122011

Le manifeste des méthodes agiles

Page 6: Modelisation agile  03122011

Le manifeste des méthodes agiles

En rupture avec les méthodes classiques (cascade, cycle en V, etc.) de gestion de projet logiciel

Août 2001, publication du manifeste des méthodes agiles

Par 17 personnalités éminentes du développement

Ward Cunningham (Wiki), Kent Beck (eXtreme Programming), Ken Schwaber, Jeff Sutherland (SCRUM), Alistair Cockburn, Martin Fowler

Page 7: Modelisation agile  03122011

Les valeurs de l'agilité

Page 8: Modelisation agile  03122011

Quelques rappels sur l'agilité

Modéliser et concevoir

Vers une modélisation agile

UML pragmatique & Retour d'expériences

Sommaire

Page 9: Modelisation agile  03122011

Préambule

Personne n’est parfait = tout le monde est imparfait

L’erreur peut venir du développeur, mais pas uniquement.

Tous les acteurs du projet peuvent se tromper ... à leur manière

"Une erreur de spécification est une forme de bug. Un utilisateur, un décideur et un responsable métier ont aussi le droit de se tromper." (Responsable métier chez Boiron)

"Il n’existe pas de bug qui ne soit issu du cerveau humain. La conception c’est tout ce qui permet de prévenir ou contourner les bugs du cerveau (outil, méthode, design pattern, modélisation, schéma, doc, wiki, commentaire dans le code, …)" (Mix-IT 2011) Laurent Bossavit

@MorendilResponsable de l'institut-agile.fr

Page 10: Modelisation agile  03122011

Préambule

Les besoins métier évoluent dans le temps, même pendant la vie d'un projet

On doit savoir et pouvoir s’adapter au changement...

Page 11: Modelisation agile  03122011

Itératif, incrémental, adaptatif

Modélisation selon Jeff Patton

Page 12: Modelisation agile  03122011

Itératif, incrémental, adaptatif

Les besoins se précisent voire évoluent continuellement

pendant le projet, même quand on croit toucher au but

Page 13: Modelisation agile  03122011

Quelques rappels sur l'agilité

Modéliser et concevoir

Vers une modélisation agile

UML pragmatique & Retour d'expériences

Sommaire

Page 14: Modelisation agile  03122011

Quelques fausses idées sur la modélisation

Modèle = Documentation

Processus lourd

Les modèles sont figés

Les Outils sont complexes et onéreux!

Modéliser c’est facile!

Modéliser est une perte de temps ...

Page 15: Modelisation agile  03122011

Vers une modélisation agile

Comment documenter / modéliser un besoin ?

2 approches semblent opposées :

l'approche Model-Driven, préconisée par l'OMG, s'appuyant sur une modélisation UML très poussée visant à une génération automatique de code quasi-complète,

certaines méthodes agiles mettent plus l'accent sur la production rapide de code opérationnel que sur la documentation et minimisant donc la modélisation en amont

Page 16: Modelisation agile  03122011

Vers une modélisation agile

Trouver le juste milieu entre :

Pas de modélisation du tout

Trop de modélisation

Deux objectifs :

Comprendre le système à faire

Communiquer en interne et externe

Page 17: Modelisation agile  03122011

Agilité et UML

L'agilité se passe de plus en plus d'UML mais possible de privilégier une modélisation UML pragmatique!

Pas trop de doc… Un peu d’UML!

Page 18: Modelisation agile  03122011

UML

Unified Modeling Language

Notation standard de l’industrie pour les modèles d’analyse et de conception orientées objet

UML propose de nombreux diagrammes (Diagramme de classes, Diagramme de séquence, …)

C’est un langage et non une méthode ou un processus de développement!

Page 19: Modelisation agile  03122011

Les digrammes UML

UML 2.3 propose 13 types de diagrammes (9 en UML 1.3)

leur utilisation est laissée à l'appréciation de chacun

Page 20: Modelisation agile  03122011

Quelques rappels sur l'agilité

Modéliser et concevoir

Vers une modélisation agile

UML pragmatique & Retour d'expériences

Sommaire

Page 21: Modelisation agile  03122011

Contexte retour d’expérience

Laboratoire pharmaceutique (homéopathie) : Boiron

Contexte de refonte du Système d’Information

Nouvelles technos (stack Java, Spring, Hibernate, etc.)

Application de production (pharmaciens, etc.)

1500 utilisateurs

10000 jours/hommes

2 ans et demi

J’étais architecte logiciel de ce projet

Page 22: Modelisation agile  03122011

Nous avons utiliser Enterprise Architect (EA)Sparx Systems : http://www.sparxsystems.com

Un outil opensource intéressant : Modeliohttp://www.modeliosoft.com/

Non utilisé dans le projet

Ces deux outils assurent:Gestion des exigences

Modélisation UML 2.x

Nice features (Intégration SCM, reverse-forward engineering, etc.)

L’analyse et la conception UMLavec quel outil ?

Page 23: Modelisation agile  03122011

Tout n’est pas à modéliser!

Modélisation UML pour l’analyse, très peu pour la conception

Modélisation en mode reverse pour la conception

Génération des modèles à partir du code

Modélisation progressive

Activité d’analyse et donc de modélisation à chaque itération, donc tout au long du projet!

Démarche d’analyse et de conception (1/3)

Page 24: Modelisation agile  03122011

Temps

Analyse affinage

Déploiement Maintenance

Recette DSI

Recette métier

Développement & test

unitaires

Test dev

Conception technique ExigenceExigence

s initialess initiales

Itérations1.0 1.1 2.0

Analyse Reformulation des besoins

1.2

Enrichissement des modèles à chaque itération!

Nous allons voir quels modèles utilisés sur ces disciplines

Démarche d’analyse et de conception (2/3)

Page 25: Modelisation agile  03122011

Démarche d’analyse et de conception (3/3)

ExigencesExigences

Diagrammes d’étatsDiagrammes d’états

Diagrammes d’activitéDiagrammes d’activité

(si nécessaire)…(si nécessaire)…

Cas d’utilisationCas d’utilisation

Maquette IHM (powerpoint ou Pencil)Maquette IHM (powerpoint ou Pencil)

Modèle du domaineModèle du domaine

(Diagramme de classe d’analyse)(Diagramme de classe d’analyse)

Diagrammes Diagrammes

de séquencesde séquences

(si nécessaire)…(si nécessaire)…

AnalystesAnalystes ConcepteursConcepteursCahier des chargesCahier des charges

InterviewsInterviews

Outil UMLOutil UML

Diag. de classe conceptionDiag. de classe conception

Cas d’utilisationCas d’utilisation

Page 26: Modelisation agile  03122011

Les diagrammes UML que l’on a utilisé

Les diagrammes structurels ou statiques (Structure Diagram) :

Diagramme de classes (2 niveaux) : il représente les classes intervenant dans le système.

Les diagrammes comportementaux (Behavior Diagram) :

Diagramme des cas d'utilisation (use-cases) : toutes les fonctionnalités que doit fournir le système.

Diagramme états-transitions (State Machine Diagram) : permet de décrire sous forme de machine à états finis le comportement du système

Diagramme d'activité (Activity Diagram) : permet de décrire sous forme de flux ou d'enchaînement d'activités le comportement du système ou de ses composants.

Les diagrammes d'interaction ou dynamiques (Interaction Diagram) :

Diagramme de séquence (Sequence Diagram) : représentation séquentielle du déroulement des traitements et des interactions entre les éléments du système

Page 27: Modelisation agile  03122011

Par où commencer?

Les exigences (pas UML!)

Pas obligatoire mais conseillé!

Les exigences commencent à être rédigées dès l’écriture du cahier de charges

On pourra lier les exigcnes à tous les diagrammes UML

Pour faciliter l’analyse d’impact

Pour faciliter l’écriture des exigences : possibilité de réaliser des diagrammes d’activité

Reformulation des besoinsReformulation des besoins

Page 28: Modelisation agile  03122011

Modélisation des exigences : retour d’expériences

Saisie des exigences dans EA

Page 29: Modelisation agile  03122011

Exigences dans Modelio

Page 30: Modelisation agile  03122011

Diagramme de cas d’utilisation (obligatoire)

UC = Use Cases = Cas d'utilisation

Première phase de projet

Cette phase va conditionner toutes les autres

Les cas d'utilisation sont à la fois le concept le plus simple d'UML, le moins technique, mais aussi souvent le plus mal utilisé

Reformulation des besoins

Analyse

Reformulation des besoins

Analyse

Page 31: Modelisation agile  03122011

UC et User Story

User Story (Scrum) : description textuelle (sans diagramme) haut niveau du besoin

« En tant que ... Je veux ... Pour ..."

UC : très similaire mais un peu plus détaillé

Ajoute les pré et post-contions dans la description

Plusieurs scénarios (nominal, alternatifs)

Un UC référence plusieurs stories

Ex : Le UC « Planifier une itération » référence les stories : créer une itération, définir le but, identifier les tâches, estimer les tâches, démarrer l’ itération...

Page 32: Modelisation agile  03122011

Retour d’expériences : les UC

Page 33: Modelisation agile  03122011

Conseils pour les UC

Un cas d’utilisation

Doit être simple: Utiliser le vocabulaire des utilisateurs

Ne pas spécifier comment (quoi!=comment) un système doit être réalisé, mais le service qu'il rend à l'utilisateur

Faire exprimer les besoins, pas des solution (analyse != conception)

Accompagner ce diagramme de texte descriptif

En règle générale un seul acteur principal par cas d’utilisation

Faire valider par le client

Page 34: Modelisation agile  03122011

Les cas d’utilisation : le point d’entrée!

Fil conducteur du projet : définition des itérations par UC classés par priorité.

Les UC étaient les unités du Backlog (SCRUM)

Page 35: Modelisation agile  03122011

Les cas d’utilisation : priorisation

Classement (Analyse de la valeur)

Par degré de priorité pour le client

Par activité/domaine fonctionnel

Par les risques encourus durant l’implémentation

Par risques technique, organisationnel, fonctionnel

Page 36: Modelisation agile  03122011

Traçabilité des exigences (conseillée)

On lie ensuite les exigences aux Use case

Pour obtenir une matrice de couverture des exigences / UC

Intérêt : assurer la traçabilité des exigences par rapport à l’analyse

Page 37: Modelisation agile  03122011

Enjeu: traçabilité des exigences dans le code

Idéal pour l’analyse d’impact d’une demande changement

Solutions :

Dans les commentaires ? Pas top !

Ecrire ses propres annotations (Java) ? Mieux

En place sur 2 projets chez Boiron depuis début 2011

Une annotation = une exigence, un UC, une règle de gestion

Facilite l’analyse d’impact outillée

Page 38: Modelisation agile  03122011

Synthèse : les livrables de l’analyse (1/4)

Evidemment les UC!Reformulation des besoins AnalyseReformulation des besoins Analyse

Page 39: Modelisation agile  03122011

Synthèse : les livrables de l’analyse (2/4)

Diagrammes d’activité si nécessaire mais conseillé!

Reformulation des besoins AnalyseReformulation des besoins Analyse

Page 40: Modelisation agile  03122011

Le comportement d’un système

2 possibilités pour modéliser le comportement d’un système

Description de la succession des activités (ayant une durée)

Utiliser des diagrammes d’activités (diag. comportemental)

Plutôt de haut niveau : appréhension du besoin métier

Description de collections de scénarios d’interaction entre objets

On s’intéresse aux objets qui échangent des messages.

Utiliser des diagrammes de séquence

Plutôt dédiés aux concepteurs/développeurs

On les utilise, à tort, souvent en lieu et place des diag. d’activités

Page 41: Modelisation agile  03122011

Synthèse : les livrables de l’analyse (3/4)

Eventuellement : diagramme d’état/ transition (facultatif)

Pour cerner les traitements métier (transition)

Diagramme d’état/transition (facultatif)Diagramme d’état/transition (facultatif)

Reformulation des besoins Analyse

Eventuellement : diagramme d’état/ transition (facultatif)

Pour cerner les traitements métier (transition)

Reformulation des besoins Analyse

Eventuellement : diagramme d’état/ transition (facultatif)

Pour cerner les traitements métier (transition)

Reformulation des besoins

Page 42: Modelisation agile  03122011

Synthèse : les livrables de l’analyse (4/4)

Vision statique du système

Ex. de diagramme de classe d’analyse :

Analyse

Page 43: Modelisation agile  03122011

Diagramme de classe d’analyse

Regroupe les concepts (entités) métiersIl s’agit du modèle du domaine

Avant de faire des choix de solutions (conception logicielle), il faut bâtir un modèle du problème (analyse)Pour mieux comprendre le problème à résoudrePour obtenir un modèle aussi indépendant que possible des choix

technologiques

Remarque : le mapping 1 à 1 des objets métier et des objets logiciels ne sera pas systématique

Il comporte:les concepts du monde réel (entités métier)leurs attributs leurs associations logiques

Analyse

Page 44: Modelisation agile  03122011

Du diagramme de classe d’analyse au diagramme de classe de conception (1/2)

Le modèle de conception est déduit du modèle d’analyse (de domaine)

Les classes métier existantes sont détaillées, parfois divisées

De nouvelles classes sont créées à caractère purement informatique (IHM, persistance des données,…)

Ajout de Design Pattern (Facory, Builder, etc.)

L’élaboration du modèle de conception compte deux tâches clés:

Attribuer des responsabilités aux objets

Concevoir des interactions entre les objets

Page 45: Modelisation agile  03122011

Du diagramme de classe d’analyse au diagramme de classe de conception (2/2)

Le modèle de conception permet de:

Ajouter des méthodes au diagramme

Rendre compte de la visibilité

Définir et faire ressortir les attributs de référence et les attributs simples

Le modèle de conception représente vos classes java réelles de votre projet

Page 46: Modelisation agile  03122011

Synthèse : les livrables de la conception

Vision statique du système

Diagramme de classe de conception (obligatoire)

Stratgéie d’implémentation

Commencez par la classe la moins connectée pour aller vers la + connectée

Implémentez et testez chaque classe de façon complète avant de passer à la suite

Conception

Développement

PreparationLancer(()

Souche

Driver

PersistanceMgrmettreAJourPrep()

Classe de conception

Page 47: Modelisation agile  03122011

Diagramme de classe de conception et code!

Modèle de domaineUn pour l’analyste, un pour le concepteur

Il est important que le diagramme de classe de conception soit toujours cohérent avec le code.

A cet effet : « forward » ou « reverse » engineering »

Page 48: Modelisation agile  03122011

Forward et Reverse Engineering

L’opération de « forward engineering »

Consiste à générer du code à partir d’un modèle de classes.

N’a de sens que si les classes sont suffisamment concrètes

On connaît tous les attributs et toutes les méthodes publiques avec leur signature.

L’opération de « reverse engineering »

Consister à analyser du code (un ensemble de classes) et à construire un diagramme de classes.

Produit souvent beaucoup d’informations de bas niveau « inutiles » qu’il faudra masquer dans l’outil UML.

Page 49: Modelisation agile  03122011

Synthèse : les livrables de la conception

Le diagramme de séquence (facultatif)

Vision dynamique du système Développement

Conception

Page 50: Modelisation agile  03122011

Diagrammes d'interaction ou dynamiques

Rendent compte des messages et des interactions entre objets

Support pour concevoir la collaboration entre objetsLes messages vont permettre de déduire les méthodes des objets

UML en fournit deux types:Le diagramme de communication reflétant à la fois les échanges de

messages et les relations entre objets

Le diagramme de séquence qui proposent un déroulement chronologique facile à suivre

Nous privilégierons les diag. de séquence, plus intuitifs, mais ils restent facultatifs (coding direct possible!)

ConceptionDéveloppement ConceptionDéveloppement ConceptionDéveloppement

Page 51: Modelisation agile  03122011

Pas que UML!Possibilité de remplacer les Use Cases par de simples User

Stories

Les spécifications restent importantes:

Format texte

Format Test d’acceptance (Behavior Driven Development): mieux!

Les maquettes autant voire plus importantes que le diagramme en lui-même!

Page 52: Modelisation agile  03122011

Modélisation en mode itératif

Modéliser par incréments!

Un modèle de domaine (classe) s’enrichit à chaque itération

Ne pas attendre d’avoir fini un diagramme avant de coder

Coder c’est modéliser, modéliser c’est coder!

En mode peer-review : participatif

Comme la gestion du code source, il est important;

que toute l’équipe partage un seul référentiel de modèles

de versionner les modèles

D’utiliser des outils SCM dédiés : SVN, GIT

Page 53: Modelisation agile  03122011

Modelio et le support SVN

Page 54: Modelisation agile  03122011

Cas concret : Je suis développeur!

Je travaille en mode itératif

Mon itération commence et j’ai un UC à développer

De quoi je dispose pour commencer mon développement?

Comment je travaille avec les modèles?

Qu’est-ce que je livre?

Page 55: Modelisation agile  03122011

En entrée je dispose (dans SVN ou Git!) :

Du diagramme de classe d’analyse à jour vis-à-vis de mon UC (analysé dans l’itération précédente)

Du diagramme de classe de conception non à jour vis-à-vis de mon UC

De manière facultative d’autres diagrammes d’analyse :

Diagrammes d’activité, d’état-transition

De mon UC et de la spec de mon UC

De la maquette

Page 56: Modelisation agile  03122011

Pendant mon développement

Je peux faire quelques diagrammes de séquence

En itératif:

Je peux mettre à jour à la main le diagramme de classe de conception et faire du forward engineering sur ce que j’ai modifié

Je code

Je teste

En mode reverse, je met à jour le diagramme de classe de conception

Je commite dans SVN ou Git mon code ET les diagrammes modifiés

Page 57: Modelisation agile  03122011

ConclusionUML est :

Un langage intuitif, homogène et cohérent pour visualiser, spécifier, construire et documenter un système informatique.

UML n’est pas :Un processus de développement ni une méthode de gestion de

projet

D’où l’importance de la méthodologie associée : l'agilité!

UML est le standard, mais adoptez juste le sous-ensemble nécessaire et suffisant ! (Règle des 80 / 20)

La valeur ajoutée principale est dans l’activité de modélisation elle-même, non dans le modèle obtenu!

Every model is wrong! and that’s OK (Larman)

Page 58: Modelisation agile  03122011
Page 59: Modelisation agile  03122011

Livres : Les agilistes et UML

Martin Fowler “UML Distilled: A Brief Guide to the Standard Object Modeling Language”

Alistair Cockburn “Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and the Unified Process”

Page 60: Modelisation agile  03122011

Livres : Les agilistes et UML

Alistair Cockburn “Writing Effective Use Cases”

Le livre et le site de Scott Ambler www.agilemodeling.com