Slide 1

Slide 1 text

FÉLIX-ANTOINE BOURBONNAIS B.ING., M.SC., PSM Version 2.0 – Mai 2016 Architecture Agile durable

Slide 2

Slide 2 text

2

Slide 3

Slide 3 text

public class MonTraitement } {

Slide 4

Slide 4 text

4 Félix-Antoine Bourbonnais B.ing., PSM, M.Sc.

Slide 5

Slide 5 text

5 Formations Accompagnement Diagnostics Conférences Félix-Antoine Bourbonnais [email protected]

Slide 6

Slide 6 text

6 Coach Mentor Formateur Félix-Antoine Bourbonnais [email protected] TECH ÉQUIPE AGILE

Slide 7

Slide 7 text

7 7 Expert en… / Tests automatisés / Pratiques de développement / Architecture évolutive / Spécification par l’exemple et BDD / Agilité et Scrum Félix-Antoine Bourbonnais

Slide 8

Slide 8 text

8 Image de Eyesplash http://commons.wikimedia.org/wiki/File:Welkom_willkommen_Welcome_Bienvenue_Benvenuto.jpg

Slide 9

Slide 9 text

9 Le défi moderne: la maintenabilité !

Slide 10

Slide 10 text

10 Ce n’est pas une course courte piste!

Slide 11

Slide 11 text

11 C’est un marathon … sans fin !

Slide 12

Slide 12 text

12 Pour gagner, il faut une vélocité stable…

Slide 13

Slide 13 text

13 Pour cela il faut s’outiller pour garder le rythme!

Slide 14

Slide 14 text

Gestion de projets durable + Architecture durable + Pratiques durables Image : http://robclearyphoto.blogspot.ca/2012/06/green-roof-cookfox.html Développement logiciel durable 14

Slide 15

Slide 15 text

1. They want to use an agile process, and pick Scrum 2. They adopt the Scrum practices, and maybe even the principles 3. After a while progress is slow because the code base is a mess -- Martin Fowler Flacid Scrum

Slide 16

Slide 16 text

17 Nos prochains 90 minutes… 17

Slide 17

Slide 17 text

DÉFIS DU DÉVELOPPEMENT MODERNE Les 18

Slide 18

Slide 18 text

19 L’informatique est l’ADN de nos entreprises

Slide 19

Slide 19 text

20 Ça bougeait vite… Et ça bouge encore plus vite !

Slide 20

Slide 20 text

Le futur technologique est incertain et il faut livrer de plus en plus vite… La réalité 21 Cloud Big-Data NoSQL Distribué Mobile

Slide 21

Slide 21 text

22 L’architecture doit donc évoluer avec l’entreprise… et donc être flexible !

Slide 22

Slide 22 text

23 Est-ce que nos architectures sont Agiles ? Mais…

Slide 23

Slide 23 text

24 Mais il ne faut surtout pas ralentir…

Slide 24

Slide 24 text

25 Le développement logiciel est désormais un flot perpétuel…

Slide 25

Slide 25 text

26 … sans compromettre la qualité!

Slide 26

Slide 26 text

Les principes d’architecture durable existent! Comment augmenter ma maintenabilité alors ? 27

Slide 27

Slide 27 text

28 On veut une architecture durable, modulaire et flexible !

Slide 28

Slide 28 text

Pour s’adapter aux nouvelles réalités, il faut revisiter l’OO à la lumière de ces défis.. Notre objectif 29

Slide 29

Slide 29 text

LES FONDEMENTS D’UNE ARCHITECTURE DURABLE Partie 2 31 Architecture durable

Slide 30

Slide 30 text

Rien n’est noir ou blanc… Tout est une question de connaître pour appliquer ou non les concepts selon le contexte Avertissement 32

Slide 31

Slide 31 text

Tout est à propos de casser les vagues de modifications! Architecture évolutive 33

Slide 32

Slide 32 text

A good architect maximizes the number of decisions not made -- Robert C. Martin 34

Slide 33

Slide 33 text

LES 5 PIÈGES QUI FONT UNE ARCHITECTURE ÉPHÉMÈRE... Partie 2 35 Architecture durable

Slide 34

Slide 34 text

LE MANQUE D’ABSTRACTION… 36 Piège 1

Slide 35

Slide 35 text

Qu’est-ce que l’OO a apporté de nouveau ? 37

Slide 36

Slide 36 text

38 La gestion des dépendances ! Orientation objet

Slide 37

Slide 37 text

La grande contribution de l’OO est la capacité à inverser la dépendance par rapport au flot d’exécution Inversion des dépendances 39

Slide 38

Slide 38 text

L’abstraction Le paradigme OO implique l’utilisation d’abstractions 40

Slide 39

Slide 39 text

Les dépendances Le polymorphisme est à la base même de l’OO 41 On veut brancher les dépendances, pas les souder!

Slide 40

Slide 40 text

L’effet d’avalanche ! Votre pire risque... 42 Image Andre Charland / Flickr

Slide 41

Slide 41 text

Notre objectif… Contenir les vagues causées par les modifications !

Slide 42

Slide 42 text

Briser les dépendances 44 X SQLDb MapDb if( dbType == SQL ) ... sqlDb.query("SELECT id ..." else ... mapDb.get(id) X MapRepo SqlRepo repository.findById(id) Repository

Slide 43

Slide 43 text

L’ANÉMIE ET L’OBSESSION DES “GET” 45 Piège 2

Slide 44

Slide 44 text

Le « Tell don’t Ask » Image: sheelamohan et jscreationzs / FreeDigitalPhotos.net 46

Slide 45

Slide 45 text

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 Domaine anémique 47

Slide 46

Slide 46 text

Non pas forcément (ex.: Rails) Mais est-ce un choix conscient ou par défaut? Est-ce mauvais ? 48

Slide 47

Slide 47 text

L’UTILISATION D’UNE ARCHITECTURE UNIQUE… 49 Piège 3

Slide 48

Slide 48 text

50 2 grands contextes

Slide 49

Slide 49 text

51 Un projet peut avoir plusieurs architectures ! De nos jours…

Slide 50

Slide 50 text

52 Chaque style, pattern, etc. a des effets secondaires ! Rien n’est parfait…

Slide 51

Slide 51 text

Le drame…. Les organisations reproduisent toujours le même modèle architectural sans se poser de questions ! 53

Slide 52

Slide 52 text

MÉCONNAISSANCE DES « PATTERNS » ET « PRINCIPES » 54 Piège 4

Slide 53

Slide 53 text

• SRP Single Responsibility • OCP Open Closed • LSP Liskov Substitution • ISP Interface Segregation • DIP Dependency Inversion Principes S.O.L.I.D. 55

Slide 54

Slide 54 text

56 Les Design Pattern 56 Factories

Slide 55

Slide 55 text

57 Les Patrons pour entreprises 57 Domain Layer

Slide 56

Slide 56 text

Il faut comprendre les effets secondaires des patrons de conception… Les prendre quand vous n’avez pas la maladie peut vous tuer! Attention!

Slide 57

Slide 57 text

LA MAUVAISE COMPRÉHENSION DES « COUCHES » 59 Piège 5

Slide 58

Slide 58 text

60 Le modèle en “couches” 60 Présentation : GUI, WS … Domaine d’affaires Persistance et services externes Problème…

Slide 59

Slide 59 text

61 Image tiré de: http://www.dossier-andreas.net/software_architecture/ports_and_adapters.html Et si les couches étaient des « plugins » ? 61

Slide 60

Slide 60 text

Modèles architecturaux Hexagonal / Port&Adapter http://www.duncannisbet.co.uk/hexagonal-architecture-for-testers-part-1 62

Slide 61

Slide 61 text

Modèles architecturaux Clean Architecture http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html 63

Slide 62

Slide 62 text

Il faut savoir les utiliser au bon moment! Tackling Complexity in the Heart of Software Domain Driven Design (DDD)

Slide 63

Slide 63 text

CONCLUSION 65 Architecture durable

Slide 64

Slide 64 text

Ceci n’est pas une invitation au BDUF ! (Big Design Up Front) Mais… 66

Slide 65

Slide 65 text

67 Savez-vous ce que sera votre produit et la technologie dans 5 ans ?

Slide 66

Slide 66 text

68 Il n’est pas nécessaire de deviner. Il faut simplement s’outiller pour évoluer avec eux!

Slide 67

Slide 67 text

69 Mais l’architecture durable n’est pas suffisante… Il reste les pratiques durables…

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

71 http://lostechies.com/derickbailey/2009/02/11/solid-development-principles-in-motivational-pictures/ 71 Le développement logiciel n’est pas un jeu de Jenga !

Slide 70

Slide 70 text

Merci.

Slide 71

Slide 71 text

73 Merci Notre site elapsetech.com Notre blogue developpementagile.com Twitter @fbourbonnais | @elapsetech Mon courriel [email protected] Mon LinkedIn linkedin.com/in/fbourbonnais/fr conferences.elapsetech.com Diapositives Nos présentations, chez vous!