J'ai mis du DDD et du BDD
dans ma marmite
Présentation
●

Florent Chardonnereau

●

Ingénieur Logiciel depuis 12 ans

●

Agile depuis 6 ans

●

DDD depuis 1,5 ans

...
Domain Driven Design
●

Orienté sur le domaine

●

Ubuquitus Language

●

Entity = Identité + Etat + Comportement

●

Valu...
Domain Driven Design :
Architecture en Oignon
Service

Domain

Test

e
ur
ct
ru
st
fra
In

Web
Domain Driven Design
Exemple : Projet eBiblio
●

User Stories :
–

●

En tant qu'adhérent, je veux louer un livre.

Identi...
Domain Driven Design
Exemple : Entity
public class Adherent implements Entity {
private String nom;
private String prenom;...
Domain Driven Design
Exemple : ValueObject
// Le NoAdherent doit être du format [0-9]{3}
public class NoAdherent implement...
Oui et maintenant !
Comment rendre mes spécifications
exécutables ?
Behavior Driven Developement
●

TDD Orienté sur le comportement

●

Utilis...
BDD avec JBehave
Story :
Louer_un_livre.story
Story launcher :
eBiblioStoryEmbedder.java
Step :
GererLivreSteps.java
BDD :
Projet eBiblio
●

User Story :
–

●

En tant qu'adhérent, je veux louer un livre

Louer_un_livre.story
–
–
–
–
–

Et...
public class GererLivreSteps {

BDD et JBehave
Projet eBiblio

@Given("mon adhérent %noAdherent existe.")
@Pending
public ...
DDD et BDD
Retour d'expérience
●

Les plus
●
●

Prise de conscience du métier de la complexité

●

Rapproche les devs du m...
Références
●

Site
●
●

●

DDDSample : http://dddsample.sourceforge.net/
Projet eBiblio : https://github.com/fchardon/eBib...
Et maintenant y a plus qu'a...
Prochain SlideShare
Chargement dans…5
×

J'ai mis du DDD et du BDD dans ma marmite.

512 vues

Publié le

Présentation pour les Human Talks de Geneve sur le Behaviour Driven Development et Domain Driven Design.

Publié dans : Formation
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
512
Sur SlideShare
0
Issues des intégrations
0
Intégrations
177
Actions
Partages
0
Téléchargements
11
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

J'ai mis du DDD et du BDD dans ma marmite.

  1. 1. J'ai mis du DDD et du BDD dans ma marmite
  2. 2. Présentation ● Florent Chardonnereau ● Ingénieur Logiciel depuis 12 ans ● Agile depuis 6 ans ● DDD depuis 1,5 ans ● Twitter : @fchardon
  3. 3. Domain Driven Design ● Orienté sur le domaine ● Ubuquitus Language ● Entity = Identité + Etat + Comportement ● Value Object = Immutable
  4. 4. Domain Driven Design : Architecture en Oignon Service Domain Test e ur ct ru st fra In Web
  5. 5. Domain Driven Design Exemple : Projet eBiblio ● User Stories : – ● En tant qu'adhérent, je veux louer un livre. Identification des concepts – – Adhérent, nom, prenom, numéroAdherent Livre, auteur, titre, référence,etat
  6. 6. Domain Driven Design Exemple : Entity public class Adherent implements Entity { private String nom; private String prenom; private NoAdherent noAdherent; public Adherent(String nom, String prenom, NoAdherent noAdherent) { super(); this.nom = nom; this.prenom = prenom; this.noAdherent = noAdherent; }
  7. 7. Domain Driven Design Exemple : ValueObject // Le NoAdherent doit être du format [0-9]{3} public class NoAdherent implements ValueObject { private String numero; public NoAdherent(String numero) { if (new RegleValidationNoAdherent(numero).valider()) { this.numero = numero; } } }
  8. 8. Oui et maintenant !
  9. 9. Comment rendre mes spécifications exécutables ? Behavior Driven Developement ● TDD Orienté sur le comportement ● Utilise le DDD ● Basé sur le principe du Given, When Then
  10. 10. BDD avec JBehave Story : Louer_un_livre.story Story launcher : eBiblioStoryEmbedder.java Step : GererLivreSteps.java
  11. 11. BDD : Projet eBiblio ● User Story : – ● En tant qu'adhérent, je veux louer un livre Louer_un_livre.story – – – – – Etant donné que l'adhérent 123 existe. Etant donné que le livre aaa est disponible. Quand l'adhérent 123 loue le livre aaa Alors le livre est en état LOUE. Alors l'adhérent à loué 1 livre.
  12. 12. public class GererLivreSteps { BDD et JBehave Projet eBiblio @Given("mon adhérent %noAdherent existe.") @Pending public void givenMonAdherentExiste(String noAdherent) { } @Given("mon livre référence %reference est disponible.") @Pending public void givenMonLivreReferenceEstDisponible(String reference) { } @When("l'adhérent loue le livre.") @Pending public void whenLadherentLoueLeLivre() { } @Then("le livre est loué.") public void thenLeLivreEstLoue() { } } @Then("l'adhérent a loué %nombre livre.") public void thenLadherentALoueLivres(int nombre) { }
  13. 13. DDD et BDD Retour d'expérience ● Les plus ● ● Prise de conscience du métier de la complexité ● Rapproche les devs du métiers ● Test d'acceptance (test fonctionnels) ● Robustesse vis à vis du changement ● ● Facilité de mise en œuvre d'un métier complexe Facilité du code à prendre en main Les moins ● Change la manière de coder (finit le CRUD) ● Besoin de bons développeurs ● On peut lâcher facilement ● Besoin d'une organisation « Agile »
  14. 14. Références ● Site ● ● ● DDDSample : http://dddsample.sourceforge.net/ Projet eBiblio : https://github.com/fchardon/eBiblio Livre ● ● ● Domain Driven Design Quickly Domain Driven Design : Tackling Complexity in the Heart of Software (Eric Evans) Implementing Domain-Driven Design (Vaughn Veron)
  15. 15. Et maintenant y a plus qu'a...

×