Owf2013 developper-projet-fonctionnellement-riches
-
Upload
halleck45 -
Category
Technology
-
view
121 -
download
0
description
Transcript of Owf2013 developper-projet-fonctionnellement-riches
![Page 1: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/1.jpg)
Développer un projet fonctionnellement complexe
![Page 2: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/2.jpg)
En face de vous
● Jean-François Lépine
● Consultant technique chez Alter Way
● @Halleck45
● http://blog.lepine.pro
![Page 3: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/3.jpg)
Jeu concours : qui a déjà entendu ...
“Techniquement et fonctionnellement, c'est super ! On est même largement en avance...”
“Génial ! C'est une chance que vous soyez télépathe ; c'est exactement ce à quoi je pensais, il n'y a rien à reprendre.
“Ah oui, je me souviens bien : c'est en page 28 de l'annexe 2 des spécifications fonctionnelles détaillées”
![Page 4: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/4.jpg)
Il était une fois...
● “J'ai besoin d'une voiture pour des petits trajets, aller au travail et transporter ma famille”
![Page 5: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/5.jpg)
Il était une fois...
● “J'ai besoin d'une voiture pour des petits trajets, aller au travail et transporter ma famille”
● Et en plus il a perdu de l'argent● Le client n'a pas eu ce qu'il voulait
![Page 6: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/6.jpg)
Communiquez
![Page 7: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/7.jpg)
Une langue commune
● Éviter les ambiguïtés
● Est élaborée en commun
● Est parlée par tous
● Glossaire du projet
UBIQUITOUS LANGAGE
![Page 8: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/8.jpg)
Une grammaire commune
Fonctionnalité: acheter un chiot
En tant que client du magasin
Je peux acheter un chiot
Afin de avoir un compagnon tout mignon (ou pas ^^)
![Page 9: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/9.jpg)
Gherkin
Fonctionnalité: acheter un chiot
(…)
Scénario: acheter un chiot trop jeune Etant donné qu'un chiot est trop jeune pour être vendu
Quand j'essaye de l'acheter
Alors je suis informé que c'est impossible
![Page 10: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/10.jpg)
Développement piloté par le comportement
● Exercice agile quotidien
● Les scénarios sont établis en commun
● Tests automatisés ! (Behat, Cucumber, Jbehave...)
● Suivi en temps réel de l'avancée des scénarios
![Page 11: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/11.jpg)
Accepter le changement
![Page 12: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/12.jpg)
Domain Driven Design
● Le code source est le reflet du besoin fonctionnel
● Le code source adopte le vocabulaire fonctionnel
● Le code source facilite :
– Le changement
– La gestion des règles métiers
– La maintenabilité
– La testabilité
● Appliquer à la lettre les principes de la programmation orientée objets
![Page 13: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/13.jpg)
Isolation
![Page 14: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/14.jpg)
Spécialisation
![Page 15: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/15.jpg)
Testabilité
![Page 16: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/16.jpg)
Testabilité
![Page 17: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/17.jpg)
Keep It Simple and Stupid !
● Un objet simple par règle métier
● La complexité se fait par l'assemblage de composants simples et réutilisables
![Page 18: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/18.jpg)
Complexité vs performance
![Page 19: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/19.jpg)
Web = Schizophrène
● Effectuer un traitement métier
● Complexe
● Lent
● Intégrité et cohérence
● A intégrer dans un système global
● Fournir une information
● Immédiat
● Spécifique
![Page 20: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/20.jpg)
Commands / Query
● Séparer la logique de traitement (Commands) de la logique de lecture (Query)
● Command Query Responsibility Segregation (CQRS)
![Page 21: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/21.jpg)
Performance
● Alléger la lecture
![Page 22: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/22.jpg)
Consolidation
● Les données sont consolidées
● La consolidation est asynchrone
● Event sourcing
![Page 23: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/23.jpg)
Conclusion
![Page 24: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/24.jpg)
Bilan● Les solutions pour gérer de la complexité métier dans un projet existent :
● Communication (agile)
● Développement piloté par le comportement
● Domain Driven Design
● Command query responsibility segregation
● Certaines pratiques peuvent mises en place facilement, même si elles ne sont pas des recettes miracles
![Page 25: Owf2013 developper-projet-fonctionnellement-riches](https://reader033.fdocuments.fr/reader033/viewer/2022060120/559338c81a28ab950f8b4642/html5/thumbnails/25.jpg)
Questions ?
● Twitter : @Halleck45
● http://communiquez.lepine.pro
● Merci !