Architecture Agile et développement durable FÉLIX-ANTOINE BOURBONNAIS B.ING., M.SC., PSM Agile Tour Québec 2014 5 novembre 2014
http://www.internetlivestats.com/ ^ 2
Je suis formateur et coach Je fournis à mes clients des outils techniques (architecture, tests ) et d équipe (Scrum) pour les aider à développer durablement Félix-Antoine Bourbonnais Elapse Technologies Image de gordonr / Flickr 3
Scrum sans pratiques de développement pour soutenir le rythme 4
Développement logiciel durable Gestion de projets durables + Architecture durable + Pratiques durables Image : http://robcleary photo. blogs pot.ca/2012/ 06/g reen-roof- cookfox.html 5
Nos prochains 75 minutes 6
Le FUTUR DU DÉVELOPPEMENT 7
L informatique est l ADN de nos entreprises 8
Ça bougeait vite Et ça bouge encore plus vite! 9
L infonuagique et «Big-Data» https://twitter.com/schmittma ddy/sta tus/453437767293624320 10
La base de données SQL n est plus la seule On a des entrepôts de données SQL NoSQL Hadoop WebServices Difficile de prédire le futur? Faut-il vraiment faire un choix? 11
Pouvons-nous changer demain? Est-ce que nos architecture permettent de changer et de nous adapter comme si de rien n était en maintenant notre vélocité? 12
Le défi moderne La maintenabilité! 13
Mais il ne faut surtout pas ralentir pour autant! Il faut livrer vite, sans compromis sur la qualité Il faut un code malléable! 14
Le développement logiciel est désormais un flot perpétuel Évitez de laisser la graisse s accumuler dans le tuyau! 15
Comment augmenter ma maintenabilité alors? Les principes d architecture durable existent! 16
L ARCHITECTURE LOGICIELLE DURABLE 17
Architecture durable On veut une architecture durable, modulaire et la plus indépendante que possible de la technologie On veut concilier l environnement avec l économie pour que la croissance perdure Hum 18
Mais Ceci n est pas une invitation au BDUF! (Big Design Up Front) 19
«A good architect maximizes the number of decisions not made» -- Robert C. Martin 20
OK Et concrètement? Décollage Notre petite abeille aura besoin d une bonne carte pour repérer toutes les fleurs offrant les divers nutriments pour faire le meilleur miel. 21
Architecture durable 2 e partie QUELQUES PISTES 22
Avertissement Rien n est noir ou blanc Tout est une question de connaître pour appliquer ou non les concepts selon le contexte 23
Le constat Les bases de l orientation objet ne sont peut-être pas aussi solides qu on le pense 24
Résultat 25
Le problème Faire une architecture durable, distribuée, découplée, etc. demande de faire des choix Mais sans maîtrise des modèles? 26
Quelques pistes LES BLOCS LÉGOS 27
Le POLYMORPHISME et les DÉPENDANCES 28
Inversion des dépendances La grande contribution de l OO est la capacité à inverser la dépendance par rapport au flot d exécution 29
L abstraction Le paradigme OO implique l utilisation d abstractions et d interfaces Chaque abstraction est un point d inflexion qui permet de réduire le couplage et de développer durablement! 30
Les dépendances Le polymorphisme est à la base même de l OO C est un «briseur de dépendances» puissant! On veut brancher les dépendances, pas les souder! 31
Briser les dépendances X SQLDb MapDb if( dbtype == SQL )... sqldb.query("select id..." else... mapdb.get(id) X Repository repository.findbyid(id) SqlRepo MapRepo 32
TELL DON T ASK 33
Le «Tell don t Ask» Image: sheelamohan et jscreationzs / FreeDigitalPhotos.net 34
Les PRINCIPES «SOLID» 35
Principes S.O.L.I.D. SRP Single Responsibility OCP Open Closed LSP Liskov Substitution ISP Interface Segregation DIP Dependency Inversion Image http://lostechies.com/derickbailey/2009/02/11/s olid- development-principles -in- motivational-pictures/ 36
Patrons «REPOSITORY» ET «FACTORY» 37
La Factory Factory = Usine 38
Le «Repository» Repository = Un entrepôt Son but est de déshydrater et réhydrater des objets Image de toolstop 39
Pourquoi? Trop souvent, la création est mélangée avec l entreposage ou la logique d affaires 40
Concepts associés Créer Utiliser Persister Transporter Factory Objets du domaine Repository DTO Image Bob Jagendorf, Yutaka Tsutano, SteelCityHobbies, Team 19 41
Astuce Ces concepts servent également pour attaquer le code patrimonial 42
Quelques pistes LES GRANDS MODÈLES ET CHOIX ARCHITECTURAUX 43
Avoir un DOMAINE ANÉMIQUE ou PEUT-ÊTRE PAS 44
Domaine anémique Domaine où les objets ont des données mais pas de comportements. Les comportements sont uniquement dans des objets «Managers» qui gèrent le domaine 45
«[ ] recommend putting a layer of procedural services on top of a domain model, to form a Service Layer. But this isn't an argument to make the domain model void of behavior [ ]» -- Martin Fowler http://www.martinfowler.com/bliki/a nemicdomainmodel.html 46
Conséquences courantes Duplication de la logique (DRY) Les «contrôleurs» et «Managers» deviennent gros. On voit la «God Class» approcher Une modification demande de modifier plusieurs «services» Prévoir les effets des modifications devient difficile (fragilité d un système) Difficile d étendre le système facilement sans avoir à modifier plusieurs classes 47
Est-ce mauvais? Non pas forcément (ex.: Rails) Mais est-ce un choix conscient ou par défaut? Avez-vous mesuré les désavantages en fonction de votre contexte?? 48
Active Record? Mêmes questions! Est-ce un choix conscient? Quel type d application (CRUD )? Micro-services? 49
Alternatives s.v.p.?!? Domaine riche DDD Repository 50
Les modèles HEXAGONAL, DDD et CLEAN ARCHITECTURE 51
Modèles architecturaux Hexagonal et Port & Adapter Le domaine d affaires est au centre Les préoccupations bas-niveau sont des «plugins» Ce qui nous ramène à l utilisation astucieuse de l abstraction http://www.duncannisbet.co. uk/hexag ona l-architecture-for- testers- part-1 52
Remarque Architecture hurlante de Bob Martin Les plans architecturaux d une maison doivent crier: «Ceci est une maison» Source: Robert C. Martin 53
Modèles architecturaux DDD Destiné à résoudre des problèmes (logique) complexes de design Centré sur le domaine «client» * Diagramme non officiel. Retenir l idée générale. http://www.zankavtaskin.com/2013/09/applied-domain- driven-design-ddd- part-1.html 54
Modèles architecturaux Clean Architecture http://blog.8thlight.com/ uncle- bob/2012/ 08/13/the-clean-architecture.html 55
Architecture durable CONCLUSION 56
Savez-vous ce que sera votre produit et la technologie dans 5 ans? Il n est pas nécessaire de deviner. Il faut simplement s outiller pour évoluer avec eux! 57
Mais l architecture durable n est pas suffisante Il reste les pratiques durables Tests, code propre 58
Resté sur sa faim? Contribuez à écrire la suite! Envoyez-moi vos questions et sujets par courriel ou Twitter. 59
Merci Mon nom Félix-Antoine Bourbonnais Mon courriel fbourbonnais@elapsetech.com Notre blogue developpementagile.com Nos Twitter @fbourbonnais @elapsetech Mon LinkedIn linkedin.com/in/fbourbonnais/fr 60
Vous voulez approfondir le sujet? Le contenu de cette présentation est couvert dans notre formation: Conception OO avancée Elapse Besoin de conseils personnalisés? Demandez à notre professionnel d aller vous visiter pour une journée ou deux! Elapse Accompagnement et diagnostics 61
Diapositives Ces diapositives sont disponibles sur notre blogue: http://developpementagile.com/ www.elapsetech.com 62