SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Architecture & AgilitéRéconcilier les frères ennemis Jean-Philippe Gouigoux 13 Octobre 2011
search://gouigoux www.agiletour.com 13/10/2011 pôle Architecture / Formation / Innovation
Architecture = Abstraire Structurer Prévoir Pourquoi « frères ennemis » ? www.agiletour.com 13/10/2011 Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) ≠
Buts de la session Détruire des mythes Donner des pistes Principes SOLID Remaniement (refactoring) www.agiletour.com 13/10/2011
L’architecture est partout ! www.agiletour.com 13/10/2011 Pur codage Système Application Conception Code Tests unitaires Compilation
« Architecture logicielle » www.agiletour.com 13/10/2011 Mythe !
Architecture de construction www.agiletour.com 13/10/2011
« Architecture » logicielle ? www.agiletour.com 13/10/2011
Pourquoi ? www.agiletour.com 13/10/2011
Abstraction www.agiletour.com 13/10/2011
Pareil en info ? www.agiletour.com 13/10/2011
Oui, mais… www.agiletour.com 13/10/2011 Trois occasions de se planter !
Le vrai métier d’architecte logiciel ? Reconnaître ses erreurs : SOAP utilisé pour SaaS Flash pour applis LOB S’adapter… vite => Agilité www.agiletour.com 13/10/2011
≠ Pas si incompatibles ? www.agiletour.com 13/10/2011 Architecture = Abstraire Structurer Prévoir S’adapter Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) ≠
Exemple : TP de formation .NET www.agiletour.com 13/10/2011
Approche Agile www.agiletour.com 13/10/2011
Deux retours immédiats « On va commencer par une classe Outils avec toutes les fonctions dont on a besoin » Non ! (YAGNI) « C’est lequel le post-it avec la structure du projet? » Solution et projets Visual Studio Création de la fenêtre, du service, de la structure BD www.agiletour.com 13/10/2011
Un post-it pour la structure initiale ? www.agiletour.com 13/10/2011 Architecture ?Structuration ? 4h p1
YAGNI encore une fois www.agiletour.com 13/10/2011 Conséquences Pas de BD Pas de service Pas de persistance ! 1 solution avec 1 projet
≈ Vraiment peu incompatibles… www.agiletour.com 13/10/2011 Architecture = Abstraire Structurer S’adapter Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) ≠
Prévalence Objet Persistance transparente sur le modèle POO du métier (logs et snapshots, mais pas de BD) Performance par la simplicité Exécution : tout en RAM (« limite » de 192 Go) Maintenance : modification sur métier, plus d’O/RM Concurrence et CQRS simples ADO.NET pour Bamboo, benchmarks, etc. sur http://gouigoux.com www.agiletour.com 13/10/2011 DIGRESSION
« Si on n’inclut pas cette fonctionnalité tout de suite, on aura du mal à la rajouter » Faux, car plus tard, la fonctionnalité voulue sera mieux comprise Faux, car plus tard, on aura acquis plus de maîtrise du code existant Faux, car si l’architecture ne permet pas cette modification, elle était de toute façon trop rigide www.agiletour.com 13/10/2011 Mythe !
Concept d’ « architecture émergente » www.agiletour.com 13/10/2011 Cycle en V Architecture Développement t Architecture Agilité Développement
« Le coût d’une modification augmente exponentiellement avec la progression dans le projet » Faux en mode agile : l’intégration continue garantit une livraison rapide (même si coût en amont) 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.com 13/10/2011 Mythe ! (*)
Corollaire sur le temps total d’un projet www.agiletour.com 13/10/2011 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. Temps
Le résultat en code : Fibonacci www.agiletour.com 13/10/2011
Facile ≠ simple www.agiletour.com 13/10/2011
« XP a pour principe que le code ne doit pas faire plus que ce qui est nécessaire pour que les tests passent » Faux : XP exige que le code soit le plus simple possible pour que les tests passent 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.com 13/10/2011 Mythe !
Code élégant… www.agiletour.com 13/10/2011
Code élégant… performances catastrophiques www.agiletour.com 13/10/2011
Code élégant et performant ? www.agiletour.com 13/10/2011
« Un code plus élégant sera plus performant et maintenable » Faux: il ne faut pas confondre élégance et simplicité Faux : d’expérience, le code mort provient souvent d’une sur-architecture jamais utilisée www.agiletour.com 13/10/2011 Mythe !
L’heure du choix Performance plus importante qu’élégance Connaître précisément le besoin : « une fonction qui calcule tous les nombres de Fibonacci » « une fonction qui calcule des nombres de Fibonacci nécessaires à une estimation de temps » Cas particulier d’une API publique www.agiletour.com 13/10/2011
« Créer des APIs réutilisables fait gagner du temps » Faux: la non-redondance doit être sur la fonctionnalité, et pas sur le code Faux : un code gardé en commun alors que les fonctionnalités divergent fait perdre du temps www.agiletour.com 13/10/2011 Mythe !
Critères de choix Pas de pire ennemi que la sur-architecture Coût élevé Rend l’application rigide Induit une compréhension figée du métier www.agiletour.com 13/10/2011
« Une architecture monolithique a de grands avantages (maintenance, connaissance partagée, etc.) » Faux: les avantages sont souvent inférieurs à ce qu’on imagine Faux : les inconvénients existent : inertie, manque de motivation des équipes, adaptation toujours moyenne aux besoins www.agiletour.com 13/10/2011 Mythe !
YAGNI > DTSTTCPW Do The SimplestThing That CouldPossiblyWork Dangereux car qualitatif Simple pour qui ? You Aren’tGoing to Need It Binaire Doute => ne pas faire www.agiletour.com 13/10/2011
OOP isyourfriend Interfaces > héritage Héritage = surarchitecture dans 90% des cas « IFacturable » plutôt que « ITunnelisable » (DDD) Améliore la testabilité (mocks, stubs) SOLID = réduire, simplifier (SRP, encapsulation, etc.) www.agiletour.com 13/10/2011 SOLID : Top investissement !!!
Critères supplémentaires Critères sur le code Complexité cyclomatique Couplage afférant / efférent Outillez-vous (NDepend) Sous-architecture aussi un problème: API pas assez contraignante Usages hétérogènes Evolution difficile www.agiletour.com 13/10/2011
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.com 13/10/2011
On commence par les tests www.agiletour.com 13/10/2011
Etape 1 www.agiletour.com 13/10/2011
Etape 2 www.agiletour.com 13/10/2011
Etape 3 www.agiletour.com 13/10/2011
Etape 4 www.agiletour.com 13/10/2011
Etape 5 www.agiletour.com 13/10/2011
Etape 6 www.agiletour.com 13/10/2011
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.com 13/10/2011
Atteindre l’étape « architecture » www.agiletour.com 13/10/2011 DLL API Notion complexe / Architecture simple DLL Métier Nous sommes retombés de nous-mêmes sur la notion de délégué anonyme :
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.com 13/10/2011
Récursion code simple / remaniement simple www.agiletour.com 13/10/2011
Code complexe : bon courage ! www.agiletour.com 13/10/2011
Exemple vécu www.agiletour.com 13/10/2011 65 étapes ! 3 heures Baby step 92% couverture ROI : immédiat !
Baby steps ? www.agiletour.com 13/10/2011 Tout petits pas itératifs Correction simpliste Tests unitaires Retours sur erreurs Tests unitaires
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.com 13/10/2011
≈ Pas incompatibles du tout ! www.agiletour.com 13/10/2011 Architecture = Abstraire S’adapter Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) Abstraction progressive (remaniement, architecture émergente) =
Just Do It Ne vous arrêtez pas à : Pas le temps : remaniement = ROI rapide Qualité de code suffisante : sustainable pace Dette technique trop lourde : retours multiples (motivation, qualité) dès le premier pas www.agiletour.com 13/10/2011
Questions… et peut-être même réponses ! www.agiletour.com 13/10/2011

Weitere ähnliche Inhalte

Andere mochten auch

Folleto jubileo
Folleto jubileoFolleto jubileo
Folleto jubileoRita Patri
 
Oracion co creacion
Oracion co creacion Oracion co creacion
Oracion co creacion LUZ M.
 
Les expositions canines
Les expositions caninesLes expositions canines
Les expositions canineselyaneforet
 
LA ETIQUETA SOCIAL - MIGUEL DEL AMO
LA ETIQUETA SOCIAL - MIGUEL DEL AMOLA ETIQUETA SOCIAL - MIGUEL DEL AMO
LA ETIQUETA SOCIAL - MIGUEL DEL AMOASPM
 
Estructura de un cd
Estructura de un cdEstructura de un cd
Estructura de un cdrocanela
 
ecdp email bulletin 32
ecdp email bulletin 32ecdp email bulletin 32
ecdp email bulletin 32ecdp
 
Standard fci chien de saint hubert
Standard fci chien de saint hubertStandard fci chien de saint hubert
Standard fci chien de saint hubertelyaneforet
 
Presentació Bcn Nord
Presentació Bcn NordPresentació Bcn Nord
Presentació Bcn Nordbcntalks
 
La mecatronica
La mecatronicaLa mecatronica
La mecatronicasarism5
 
Mandala2008 5 Básico
Mandala2008 5 BásicoMandala2008 5 Básico
Mandala2008 5 Básiconvigorenar
 
Gestion de la réputation en ligne
Gestion de la réputation en ligneGestion de la réputation en ligne
Gestion de la réputation en lignefckotraparis
 
Support de formation aout 2011 outils web 2.0
Support de formation aout 2011   outils web 2.0Support de formation aout 2011   outils web 2.0
Support de formation aout 2011 outils web 2.0vedelipac
 
Sigo en pie
Sigo en pieSigo en pie
Sigo en piegsabre
 
Standard fci anglo français de petite vénerie
Standard fci anglo français de petite vénerieStandard fci anglo français de petite vénerie
Standard fci anglo français de petite vénerieelyaneforet
 
Vivir en el_espiritu
Vivir en el_espirituVivir en el_espiritu
Vivir en el_espirituLUZ M.
 

Andere mochten auch (20)

Folleto jubileo
Folleto jubileoFolleto jubileo
Folleto jubileo
 
Oracion co creacion
Oracion co creacion Oracion co creacion
Oracion co creacion
 
Les expositions canines
Les expositions caninesLes expositions canines
Les expositions canines
 
LA ETIQUETA SOCIAL - MIGUEL DEL AMO
LA ETIQUETA SOCIAL - MIGUEL DEL AMOLA ETIQUETA SOCIAL - MIGUEL DEL AMO
LA ETIQUETA SOCIAL - MIGUEL DEL AMO
 
Estructura de un cd
Estructura de un cdEstructura de un cd
Estructura de un cd
 
ecdp email bulletin 32
ecdp email bulletin 32ecdp email bulletin 32
ecdp email bulletin 32
 
Standard fci chien de saint hubert
Standard fci chien de saint hubertStandard fci chien de saint hubert
Standard fci chien de saint hubert
 
Projet RETCETEC «Coopération transfrontalière entre centres techniques pour l...
Projet RETCETEC «Coopération transfrontalière entre centres techniques pour l...Projet RETCETEC «Coopération transfrontalière entre centres techniques pour l...
Projet RETCETEC «Coopération transfrontalière entre centres techniques pour l...
 
Presentació Bcn Nord
Presentació Bcn NordPresentació Bcn Nord
Presentació Bcn Nord
 
La mecatronica
La mecatronicaLa mecatronica
La mecatronica
 
SWADroid. Pasar lista. Manual de usuario
SWADroid. Pasar lista. Manual de usuarioSWADroid. Pasar lista. Manual de usuario
SWADroid. Pasar lista. Manual de usuario
 
Mandala2008 5 Básico
Mandala2008 5 BásicoMandala2008 5 Básico
Mandala2008 5 Básico
 
Gestion de la réputation en ligne
Gestion de la réputation en ligneGestion de la réputation en ligne
Gestion de la réputation en ligne
 
Tarea tic caja 16
Tarea tic caja 16Tarea tic caja 16
Tarea tic caja 16
 
Support de formation aout 2011 outils web 2.0
Support de formation aout 2011   outils web 2.0Support de formation aout 2011   outils web 2.0
Support de formation aout 2011 outils web 2.0
 
Ale es 4
Ale es 4Ale es 4
Ale es 4
 
Les Chir de la 4L
Les Chir de la 4LLes Chir de la 4L
Les Chir de la 4L
 
Sigo en pie
Sigo en pieSigo en pie
Sigo en pie
 
Standard fci anglo français de petite vénerie
Standard fci anglo français de petite vénerieStandard fci anglo français de petite vénerie
Standard fci anglo français de petite vénerie
 
Vivir en el_espiritu
Vivir en el_espirituVivir en el_espiritu
Vivir en el_espiritu
 

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

20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
Une application sans framework en 2019
Une application sans framework en 2019Une application sans framework en 2019
Une application sans framework en 2019Rodrigue Villetard
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesHervé Leclerc
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkMicrosoft
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiquesJohan Moreau
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...
GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...
GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...AZUG FR
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clicFabernovel
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System SARL
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanneDidier Durand
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogySacha Leprêtre
 

Ähnlich wie Agile Tour Nantes 2011 - Jean philippe gouigoux - architecture et agilité, réconcilier les frères ennemis (20)

20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Une application sans framework en 2019
Une application sans framework en 2019Une application sans framework en 2019
Une application sans framework en 2019
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 EurositesPetit DéJeuner Industrialisation 13 10 2011 Eurosites
Petit DéJeuner Industrialisation 13 10 2011 Eurosites
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Entity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity FrameworkEntity Framework 7 : nouvelle version majeure d’Entity Framework
Entity Framework 7 : nouvelle version majeure d’Entity Framework
 
Production logicielle, outils et pratiques
Production logicielle, outils et pratiquesProduction logicielle, outils et pratiques
Production logicielle, outils et pratiques
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...
GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...
GAB 2017 PARIS - Analyser les #tweet sans effort avec #azure quelles solution...
 
Publier une application mobile en un clic
Publier une application mobile en un clicPublier une application mobile en un clic
Publier une application mobile en un clic
 
Calculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stackCalculus System Academy:Devenez un développeur Full stack
Calculus System Academy:Devenez un développeur Full stack
 
2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne2012 02-09-eranea-presentation-jug-lausanne
2012 02-09-eranea-presentation-jug-lausanne
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
Objectif fluid<fab />
Objectif fluid<fab />Objectif fluid<fab />
Objectif fluid<fab />
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 

Mehr von Association Agile Nantes

Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?Association Agile Nantes
 
Le projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc DuguéLe projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc DuguéAssociation Agile Nantes
 
Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017Association Agile Nantes
 
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...Association Agile Nantes
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
Et si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produitEt si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produitAssociation Agile Nantes
 
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...Association Agile Nantes
 
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...Association Agile Nantes
 
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTINAgile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTINAssociation Agile Nantes
 
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...Association Agile Nantes
 
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.resterAgt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.resterAssociation Agile Nantes
 
Agt nantes 2013 rémy génin - l'agilité peut changer le monde
Agt nantes 2013   rémy génin - l'agilité peut changer le mondeAgt nantes 2013   rémy génin - l'agilité peut changer le monde
Agt nantes 2013 rémy génin - l'agilité peut changer le mondeAssociation Agile Nantes
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelleAssociation Agile Nantes
 

Mehr von Association Agile Nantes (20)

PI Planning-Vos échanges!.pdf
PI Planning-Vos échanges!.pdfPI Planning-Vos échanges!.pdf
PI Planning-Vos échanges!.pdf
 
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
Agile Tour Nantes 2014 - Comment impliquer vos clients dans leurs projets ?
 
Le projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc DuguéLe projet Aristote / Steeve Evers & Marc Dugué
Le projet Aristote / Steeve Evers & Marc Dugué
 
Tous en scène - Arnaud Garnier
Tous en scène - Arnaud GarnierTous en scène - Arnaud Garnier
Tous en scène - Arnaud Garnier
 
Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017Initiation à l'agilité - Agile Tour 2017
Initiation à l'agilité - Agile Tour 2017
 
Agile nantes leanstartup_20160323
Agile nantes leanstartup_20160323Agile nantes leanstartup_20160323
Agile nantes leanstartup_20160323
 
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
Agile Tour Nantes 2014 - 10 ans d'agile, c'est chouette ! La rétro des points...
 
Agile Tour Nantes 2014 - Sois autonome !
Agile Tour Nantes 2014 - Sois autonome !Agile Tour Nantes 2014 - Sois autonome !
Agile Tour Nantes 2014 - Sois autonome !
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Et si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produitEt si on maîtrisait vraiment notre produit
Et si on maîtrisait vraiment notre produit
 
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
Agile Tour Nantes 2013 - L'EPOPEE DU CHEVALIER AGILE FILS DU ROI PRAGMATIQUE ...
 
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
Agile Tour Nantes 2013 - Urbanisation des services : Pour changer le monde du...
 
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTINAgile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
Agile Tour Nantes 2013 - Scrum ou kanban - Alexandre BOUTIN
 
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
Agile Tour Nantes 2013 - Introduction aux méthodes agiles - Grégoire ROBIN - ...
 
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.resterAgt nantes 2013   aurélien morvant - agiletour.comment.etre.agile.et.le.rester
Agt nantes 2013 aurélien morvant - agiletour.comment.etre.agile.et.le.rester
 
Agt nantes 2013 rémy génin - l'agilité peut changer le monde
Agt nantes 2013   rémy génin - l'agilité peut changer le mondeAgt nantes 2013   rémy génin - l'agilité peut changer le monde
Agt nantes 2013 rémy génin - l'agilité peut changer le monde
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelle
 
Des mots, des maux ? Démo !
Des mots, des maux ? Démo !Des mots, des maux ? Démo !
Des mots, des maux ? Démo !
 
REX Scrum mature
REX Scrum matureREX Scrum mature
REX Scrum mature
 
L'agilité dans la mobilité
L'agilité dans la mobilitéL'agilité dans la mobilité
L'agilité dans la mobilité
 

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

  • 1. Architecture & AgilitéRéconcilier les frères ennemis Jean-Philippe Gouigoux 13 Octobre 2011
  • 2. search://gouigoux www.agiletour.com 13/10/2011 pôle Architecture / Formation / Innovation
  • 3. Architecture = Abstraire Structurer Prévoir Pourquoi « frères ennemis » ? www.agiletour.com 13/10/2011 Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) ≠
  • 4. Buts de la session Détruire des mythes Donner des pistes Principes SOLID Remaniement (refactoring) www.agiletour.com 13/10/2011
  • 5. L’architecture est partout ! www.agiletour.com 13/10/2011 Pur codage Système Application Conception Code Tests unitaires Compilation
  • 7. Architecture de construction www.agiletour.com 13/10/2011
  • 8. « Architecture » logicielle ? www.agiletour.com 13/10/2011
  • 11. Pareil en info ? www.agiletour.com 13/10/2011
  • 12. Oui, mais… www.agiletour.com 13/10/2011 Trois occasions de se planter !
  • 13. Le vrai métier d’architecte logiciel ? Reconnaître ses erreurs : SOAP utilisé pour SaaS Flash pour applis LOB S’adapter… vite => Agilité www.agiletour.com 13/10/2011
  • 14. ≠ Pas si incompatibles ? www.agiletour.com 13/10/2011 Architecture = Abstraire Structurer Prévoir S’adapter Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) ≠
  • 15. Exemple : TP de formation .NET www.agiletour.com 13/10/2011
  • 17. Deux retours immédiats « On va commencer par une classe Outils avec toutes les fonctions dont on a besoin » Non ! (YAGNI) « C’est lequel le post-it avec la structure du projet? » Solution et projets Visual Studio Création de la fenêtre, du service, de la structure BD www.agiletour.com 13/10/2011
  • 18. Un post-it pour la structure initiale ? www.agiletour.com 13/10/2011 Architecture ?Structuration ? 4h p1
  • 19. YAGNI encore une fois www.agiletour.com 13/10/2011 Conséquences Pas de BD Pas de service Pas de persistance ! 1 solution avec 1 projet
  • 20. ≈ Vraiment peu incompatibles… www.agiletour.com 13/10/2011 Architecture = Abstraire Structurer S’adapter Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) ≠
  • 21. Prévalence Objet Persistance transparente sur le modèle POO du métier (logs et snapshots, mais pas de BD) Performance par la simplicité Exécution : tout en RAM (« limite » de 192 Go) Maintenance : modification sur métier, plus d’O/RM Concurrence et CQRS simples ADO.NET pour Bamboo, benchmarks, etc. sur http://gouigoux.com www.agiletour.com 13/10/2011 DIGRESSION
  • 22. « Si on n’inclut pas cette fonctionnalité tout de suite, on aura du mal à la rajouter » Faux, car plus tard, la fonctionnalité voulue sera mieux comprise Faux, car plus tard, on aura acquis plus de maîtrise du code existant Faux, car si l’architecture ne permet pas cette modification, elle était de toute façon trop rigide www.agiletour.com 13/10/2011 Mythe !
  • 23. Concept d’ « architecture émergente » www.agiletour.com 13/10/2011 Cycle en V Architecture Développement t Architecture Agilité Développement
  • 24. « Le coût d’une modification augmente exponentiellement avec la progression dans le projet » Faux en mode agile : l’intégration continue garantit une livraison rapide (même si coût en amont) 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.com 13/10/2011 Mythe ! (*)
  • 25. Corollaire sur le temps total d’un projet www.agiletour.com 13/10/2011 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. Temps
  • 26. Le résultat en code : Fibonacci www.agiletour.com 13/10/2011
  • 27. Facile ≠ simple www.agiletour.com 13/10/2011
  • 28. « XP a pour principe que le code ne doit pas faire plus que ce qui est nécessaire pour que les tests passent » Faux : XP exige que le code soit le plus simple possible pour que les tests passent 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.com 13/10/2011 Mythe !
  • 30. Code élégant… performances catastrophiques www.agiletour.com 13/10/2011
  • 31. Code élégant et performant ? www.agiletour.com 13/10/2011
  • 32. « Un code plus élégant sera plus performant et maintenable » Faux: il ne faut pas confondre élégance et simplicité Faux : d’expérience, le code mort provient souvent d’une sur-architecture jamais utilisée www.agiletour.com 13/10/2011 Mythe !
  • 33. L’heure du choix Performance plus importante qu’élégance Connaître précisément le besoin : « une fonction qui calcule tous les nombres de Fibonacci » « une fonction qui calcule des nombres de Fibonacci nécessaires à une estimation de temps » Cas particulier d’une API publique www.agiletour.com 13/10/2011
  • 34. « Créer des APIs réutilisables fait gagner du temps » Faux: la non-redondance doit être sur la fonctionnalité, et pas sur le code Faux : un code gardé en commun alors que les fonctionnalités divergent fait perdre du temps www.agiletour.com 13/10/2011 Mythe !
  • 35. Critères de choix Pas de pire ennemi que la sur-architecture Coût élevé Rend l’application rigide Induit une compréhension figée du métier www.agiletour.com 13/10/2011
  • 36. « Une architecture monolithique a de grands avantages (maintenance, connaissance partagée, etc.) » Faux: les avantages sont souvent inférieurs à ce qu’on imagine Faux : les inconvénients existent : inertie, manque de motivation des équipes, adaptation toujours moyenne aux besoins www.agiletour.com 13/10/2011 Mythe !
  • 37. YAGNI > DTSTTCPW Do The SimplestThing That CouldPossiblyWork Dangereux car qualitatif Simple pour qui ? You Aren’tGoing to Need It Binaire Doute => ne pas faire www.agiletour.com 13/10/2011
  • 38. OOP isyourfriend Interfaces > héritage Héritage = surarchitecture dans 90% des cas « IFacturable » plutôt que « ITunnelisable » (DDD) Améliore la testabilité (mocks, stubs) SOLID = réduire, simplifier (SRP, encapsulation, etc.) www.agiletour.com 13/10/2011 SOLID : Top investissement !!!
  • 39. Critères supplémentaires Critères sur le code Complexité cyclomatique Couplage afférant / efférent Outillez-vous (NDepend) Sous-architecture aussi un problème: API pas assez contraignante Usages hétérogènes Evolution difficile www.agiletour.com 13/10/2011
  • 40. 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.com 13/10/2011
  • 41. On commence par les tests www.agiletour.com 13/10/2011
  • 48. 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.com 13/10/2011
  • 49. Atteindre l’étape « architecture » www.agiletour.com 13/10/2011 DLL API Notion complexe / Architecture simple DLL Métier Nous sommes retombés de nous-mêmes sur la notion de délégué anonyme :
  • 50. 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.com 13/10/2011
  • 51. Récursion code simple / remaniement simple www.agiletour.com 13/10/2011
  • 52. Code complexe : bon courage ! www.agiletour.com 13/10/2011
  • 53. Exemple vécu www.agiletour.com 13/10/2011 65 étapes ! 3 heures Baby step 92% couverture ROI : immédiat !
  • 54. Baby steps ? www.agiletour.com 13/10/2011 Tout petits pas itératifs Correction simpliste Tests unitaires Retours sur erreurs Tests unitaires
  • 55. 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.com 13/10/2011
  • 56. ≈ Pas incompatibles du tout ! www.agiletour.com 13/10/2011 Architecture = Abstraire S’adapter Agilité = Simplicité (XP, Lean) Prééminence des tests (TDD) Besoins immédiats (YAGNI) Abstraction progressive (remaniement, architecture émergente) =
  • 57. Just Do It Ne vous arrêtez pas à : Pas le temps : remaniement = ROI rapide Qualité de code suffisante : sustainable pace Dette technique trop lourde : retours multiples (motivation, qualité) dès le premier pas www.agiletour.com 13/10/2011
  • 58. Questions… et peut-être même réponses ! www.agiletour.com 13/10/2011