58
Architecture & Agilité Réconcilier les frères ennemis Jean-Philippe Gouigoux 13 Octobre 2011

Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Embed Size (px)

DESCRIPTION

L'architecture et l'agilité sont souvent vues comme opposées : l'architecture encourage l'abstraction, la structuration pour le futur, alors que l'agilité met l'accent sur le réalisme et la simplicité. Cette conférence tente de jeter un éclairage sur cette apparente incompatibilité, en commençant par détruire quelques mythes sur l'architecture. Ensuite, elle donne des critères pour positionner correctement le curseur entre abstraction et pragmatisme. Enfin, elle montre l'apport essentiel des techniques de refactoring dans une approche agile de l'architecture logicielle, avec une démonstration sur du code.

Citation preview

Page 1: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Architecture & AgilitéRéconcilier les frères ennemis

Jean-Philippe Gouigoux

13 Octobre 2011

Page 3: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• Architecture =o Abstraireo Structurero Prévoir

Pourquoi « frères ennemis » ?

www.agiletour.com13/10/2011

• Agilité =o Simplicité (XP, Lean)o Prééminence des tests

(TDD)o Besoins immédiats

(YAGNI)

Page 4: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Buts de la session

• Détruire des mythes• Donner des pistes

o Principes SOLIDo Remaniement (refactoring)

www.agiletour.com13/10/2011

Page 5: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

L’architecture est partout !

www.agiletour.com13/10/2011

Pur codage

Conception

Système

Application

Code

Compilation

Tests unitaires

Page 6: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• « Architecture logicielle »

www.agiletour.com13/10/2011

MYTHE !

Page 7: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Architecture de construction

www.agiletour.com13/10/2011

Page 8: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

« Architecture » logicielle ?

www.agiletour.com13/10/2011

Page 13: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Le vrai métier d’architecte logiciel ?

• Reconnaître ses erreurs :o SOAP utilisé pour SaaSo Flash pour applis LOB

• S’adapter… vite• => Agilité

www.agiletour.com13/10/2011

Page 14: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Pas si incompatibles ?

www.agiletour.com13/10/2011

• Architecture =o Abstraireo Structurero Prévoiro S’adapter

• Agilité =o Simplicité (XP, Lean)o Prééminence des tests

(TDD)o Besoins immédiats

(YAGNI)

Page 15: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Exemple : TP de formation .NET

www.agiletour.com13/10/2011

Page 16: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Approche Agile

www.agiletour.com13/10/2011

Page 17: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Deux retours immédiats

• « On va commencer par une classe Outils avec toutes les fonctions dont on a besoin »o Non ! (YAGNI)

• « C’est lequel le post-it avec la structure du projet? »o Solution et projets Visual Studioo Création de la fenêtre, du service, de la

structure BDwww.agiletour.com13/10/2011

Page 18: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Un post-it pour la structure initiale ?

www.agiletour.com13/10/2011

Architecture ?Structuration ?

4h

p1

Page 19: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

YAGNI encore une fois

www.agiletour.com13/10/2011

• Conséquenceso Pas de BDo Pas de serviceo Pas de persistance !o 1 solution avec 1

projet

Page 20: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Vraiment peu incompatibles…

www.agiletour.com13/10/2011

≠• Architecture

=o Abstraireo Structurero S’adapter

• Agilité =o Simplicité (XP, Lean)o Prééminence des tests

(TDD)o Besoins immédiats

(YAGNI)

Page 21: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Prévalence Objet

• Persistance transparente sur le modèle POO du métier (logs et snapshots, mais pas de BD)

• Performance par la simplicitéo Exécution : tout en RAM (« limite » de 192

Go)o Maintenance : modification sur métier, plus

d’O/RMo Concurrence et CQRS simples

• ADO.NET pour Bamboo, benchmarks, etc. sur http://gouigoux.com

www.agiletour.com13/10/2011

DIGRESSION

Page 22: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• « Si on n’inclut pas cette fonctionnalité tout de suite, on aura du mal à la rajouter »o Faux, car plus tard, la fonctionnalité voulue

sera mieux compriseo Faux, car plus tard, on aura acquis plus de

maîtrise du code existanto Faux, car si l’architecture ne permet pas

cette modification, elle était de toute façon trop rigide

www.agiletour.com13/10/2011

MYTHE !

Page 23: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Concept d’ « architecture émergente »

www.agiletour.com13/10/2011

Architecture

Développement

Architecture

Développement

t

Cyc

le e

n V

Agi

lité

Page 24: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• « Le coût d’une modification augmente exponentiellement avec la progression dans le projet »o Faux en mode agile : l’intégration continue

garantit une livraison rapide (même si coût en amont)

o Faux en mode agile : le remaniement constant de l’application (XP) fait qu’un changement d’architecture ne prendra pas plus de temps sur un sprint que sur un autre www.agiletour.com13/10/2011

MYTHE ! (*)

Page 25: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Corollaire sur le temps total d’un projet

www.agiletour.com13/10/2011

Temps

Complétion

Mode agile : les changements d’architecture sont plus nombreux mais rapidement absorbés

Cycle en V : un oubli sur l’architecture peut nécessiter de repartir quasiment du début du cycle.

Page 26: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Le résultat en code : Fibonacci

www.agiletour.com13/10/2011

Page 27: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Facile ≠ simple

www.agiletour.com13/10/2011

Page 28: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• « XP a pour principe que le code ne doit pas faire plus que ce qui est nécessaire pour que les tests passent »o Faux : XP exige que le code soit le plus

simple possible pour que les tests passento Faux : XP considère que la programmation

est une activité de conception (la réalisation associée est la compilation), et une architecture simple sera donc toujours préférée à un code simple

www.agiletour.com13/10/2011

MYTHE !

Page 29: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Code élégant…

www.agiletour.com13/10/2011

Page 30: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Code élégant… performances catastrophiques

www.agiletour.com13/10/2011

Page 31: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Code élégant et performant ?

www.agiletour.com13/10/2011

Page 32: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• « Un code plus élégant sera plus performant et maintenable »o Faux : il ne faut pas confondre élégance et

simplicitéo Faux : d’expérience, le code mort provient

souvent d’une sur-architecture jamais utilisée

www.agiletour.com13/10/2011

MYTHE !

Page 33: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

L’heure du choix

• Performance plus importante qu’élégance

• Connaître précisément le besoin :o « une fonction qui calcule tous les nombres

de Fibonacci »o « une fonction qui calcule des nombres de

Fibonacci nécessaires à une estimation de temps »

• Cas particulier d’une API publiquewww.agiletour.com13/10/2011

Page 34: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• « Créer des APIs réutilisables fait gagner du temps »o Faux : la non-redondance doit être sur la

fonctionnalité, et pas sur le codeo Faux : un code gardé en commun alors que

les fonctionnalités divergent fait perdre du temps

www.agiletour.com13/10/2011

MYTHE !

Page 35: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Critères de choix

• Pas de pire ennemi que la sur-architectureo Coût élevéo Rend l’application rigideo Induit une compréhension figée du métier

www.agiletour.com13/10/2011

Page 36: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

• « Une architecture monolithique a de grands avantages (maintenance, connaissance partagée, etc.) »o Faux : les avantages sont souvent

inférieurs à ce qu’on imagineo Faux : les inconvénients existent : inertie,

manque de motivation des équipes, adaptation toujours moyenne aux besoins

www.agiletour.com13/10/2011

MYTHE !

Page 37: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

YAGNI > DTSTTCPW

• Do The Simplest Thing That Could Possibly Worko Dangereux car qualitatifo Simple pour qui ?

• You Aren’t Going to Need Ito Binaireo Doute => ne pas faire

www.agiletour.com13/10/2011

Page 38: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

OOP is your friend

• Interfaces > héritageo Héritage = surarchitecture dans 90% des

caso « IFacturable » plutôt que « ITunnelisable »

(DDD)o Améliore la testabilité (mocks, stubs)

• SOLID = réduire, simplifier (SRP, encapsulation, etc.)

www.agiletour.com13/10/2011

SOLID : Top investissement !!!

Page 39: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Critères supplémentaires

• Critères sur le codeo Complexité cyclomatiqueo Couplage afférant / efférento Outillez-vous (NDepend)

• Sous-architecture aussi un problème:o API pas assez contraignanteo Usages hétérogèneso Evolution difficile

www.agiletour.com13/10/2011

Page 40: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

L’importance capitale du remaniement

• Remaniement nécessaire pour supprimer le mythe « Coût de la modification augmentant exponentiellement avec l’avancée du projet »

• Le principe : modifier la structure d’un module sans modifier son fonctionnement

• Possible grâce au filet de sécurité des tests automatisés (importance du taux de couverture)

www.agiletour.com13/10/2011

Page 41: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

On commence par les tests

www.agiletour.com13/10/2011

Page 42: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Etape 1

www.agiletour.com13/10/2011

Page 43: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Etape 2

www.agiletour.com13/10/2011

Page 44: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Etape 3

www.agiletour.com13/10/2011

Page 45: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Etape 4

www.agiletour.com13/10/2011

Page 46: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Etape 5

www.agiletour.com13/10/2011

Page 47: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Etape 6

www.agiletour.com13/10/2011

Page 48: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Plus simple ou pas ?

• Plus long au début, puis plus court• Plus dur à lire pour un débutant• On a fait apparaître des

« caractéristiques désirables du code » (SRP, en particulier)

www.agiletour.com13/10/2011

Page 49: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Atteindre l’étape « architecture »

www.agiletour.com13/10/2011

DLL API

DLL Métier

Nous sommes retombés de nous-mêmes sur la notion de délégué anonyme :

Notion complexe / Architecture simple

Page 50: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Maîtriser la dette technique

• Le remaniement doit faire partie de l’itération

• Concept de dette architecturelle• Gaspillage au sens Lean (pas de valeur

au client)

www.agiletour.com13/10/2011

Page 51: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Récursion code simple / remaniement simple

www.agiletour.com13/10/2011

Page 52: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Code complexe : bon courage !

www.agiletour.com13/10/2011

Page 53: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Exemple vécu

www.agiletour.com13/10/2011

65 étapes !

3 heuresBaby step92% couverture

ROI : immédiat !

Page 54: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Baby steps ?

www.agiletour.com13/10/2011

• Tout petits pas itératifso Correction simplisteo Tests unitaireso Retours sur erreurs

Tests unitaires

Page 55: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Du bon usage de la couverture de code

• Pareto ou Murphy ?• Retour d’expérience : un cas de bug

suite à non-couverture de code sur 8 ans

• Détection de code mort : attention à la réflexion

www.agiletour.com13/10/2011

Page 56: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Pas incompatibles du tout !

www.agiletour.com13/10/2011

• Architecture =o Abstraireo S’adapter

• Agilité =o Simplicité (XP, Lean)o Prééminence des tests

(TDD)o Besoins immédiats

(YAGNI)o Abstraction progressive

(remaniement, architecture émergente)

=

Page 57: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Just Do It

• Ne vous arrêtez pas à :o Pas le temps : remaniement = ROI rapideo Qualité de code suffisante : sustainable

paceo Dette technique trop lourde : retours

multiples (motivation, qualité) dès le premier pas

www.agiletour.com13/10/2011

Page 58: Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis

Questions… et peut-être même réponses !

www.agiletour.com13/10/2011