SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
Agile development and Domain Driven Design



Jacopo Romei
http://www.sviluppoagile.it/
Ego sliding
 Jacopo Romei
 PHP since 1999
 IT CEO in the past
 Freelance agile coach
 http://www.sviluppoagile.it/




         Jacopo Romei, http://www.sviluppoagile.it/
Agile development




    A family of empirical methodologies




    Jacopo Romei, http://www.sviluppoagile.it/
Agile Manifesto
 Individuals over tools
 Working software over documentation
 Customer collaboration over contract deals
 Accept change over following plans




         Jacopo Romei, http://www.sviluppoagile.it/
Domain




    What does inspire our solutions?




   Jacopo Romei, http://www.sviluppoagile.it/
Driven




     Where do we find our solutions?




    Jacopo Romei, http://www.sviluppoagile.it/
Design




   What does provide us with solutions?




    Jacopo Romei, http://www.sviluppoagile.it/
Design vs. Process
 Design principles
 Messy reality
 DDD is a way to cope with the mess
 Agile Dev is a way to cope with the mess




         Jacopo Romei, http://www.sviluppoagile.it/
Manouvrability




        Agility means manouvrability




    Jacopo Romei, http://www.sviluppoagile.it/
Shared values
 Courage
 Respect




        Jacopo Romei, http://www.sviluppoagile.it/
Shared values
 Courage                               Simplicity is the art of 
                                         maximizing the amount 
 Respect
                                         of work not done
 Simplicity




        Jacopo Romei, http://www.sviluppoagile.it/
Shared values
 Courage
 Respect
 Simplicity
 Communication
 Feedback




        Jacopo Romei, http://www.sviluppoagile.it/
Shared values
 Courage                               Who
 Respect                               Which
 Simplicity                            How
                                        Why
 Communication
 Feedback




        Jacopo Romei, http://www.sviluppoagile.it/
XP and good design
 Refactoring tries to avoid overengineering
 Refactoring can develop underengineering
 XP works best with good designers
 DDD helps developers being good designers




         Jacopo Romei, http://www.sviluppoagile.it/
Don't ossify, please




      Supple, knowledge­rich design




    Jacopo Romei, http://www.sviluppoagile.it/
Orthogonality
•Orthogonality is a system design property facilitating 
feasibility and compactness of complex designs.
• Orthogonality guarantees that modifying the technical 
effect produced by a component of a system neither 
creates nor propagates side effects to other components of 
the system. 
•Emergent behavior of a system should be controlled strictly 
by formal definitions of its logic and not by side effects 
resulting from poor integratio
•Orthogonality reduces testing and development time

           Jacopo Romei, http://www.sviluppoagile.it/
Shared required practices
 Iterative and incremental development
 Close relationship with domain experts
 Refactoring




         Jacopo Romei, http://www.sviluppoagile.it/
UX & Agile




    Methodology to write user stories




    Jacopo Romei, http://www.sviluppoagile.it/
DDD & Agile




    Methodology to (let emerge) design




    Jacopo Romei, http://www.sviluppoagile.it/
Ubiquitous language




          One jargon to rule them all




    Jacopo Romei, http://www.sviluppoagile.it/
Ubiquitous language
 Model as backbone of language in
   Code
   Diagrams
   Writings
   Speech




         Jacopo Romei, http://www.sviluppoagile.it/
Ubiquitous language
 Refactor
   Classes
   Methods
   Modules
 Reflect
   Real world entities
   Confusion resolution in conversations
   Changes in language as changes in model

        Jacopo Romei, http://www.sviluppoagile.it/
Example




    Jacopo Romei, http://www.sviluppoagile.it/
Short example
 “If we give the Routing Service an origin, 
  destination and arrival time, it can look up the 
  stops the cargo will have to make and well... stick 
  them in the database”
 “The origin, destination and so on... it all feeds into 
  Routing Service and we get back an Itinerary 
  that has everything we need it”
 “A Routing Service finds an Itinerary that satisfies 
  a Route Specification”


          Jacopo Romei, http://www.sviluppoagile.it/
Documentation



Agile methodologies value working software over 
         comprehensive documentation




       Jacopo Romei, http://www.sviluppoagile.it/
UML is not enough
UML doesn't convoy the concepts behind a model
UML doesn't convoy what objects are meant to do




        Jacopo Romei, http://www.sviluppoagile.it/
Ubiquitous documentation
UML provides some documentation
Code provides some documentation
Ubiquitous language provides some documentation




        Jacopo Romei, http://www.sviluppoagile.it/
Hands-on modelers



Everyone who writes code must feel responsible for 
                   the model.




        Jacopo Romei, http://www.sviluppoagile.it/
Hands-on modelers


Everyone who writes code must feel responsible for 
                   the model.
Everyone contributing to the model must touch the 
                      code.




        Jacopo Romei, http://www.sviluppoagile.it/
Hands-on modelers


Everyone who writes code must feel responsible for 
                   the model.
Everyone contributing to the model must touch the 
                      code.
     That's a DDD team. That's an agile team.



        Jacopo Romei, http://www.sviluppoagile.it/
Modeling paradigm


Object oriented programming is good to model the 
   way we think about things. OO community 
 developed lots of critically meaningful concepts.
            PHP community: WAKE UP!




        Jacopo Romei, http://www.sviluppoagile.it/
Deadly divide
 Model can be absent (brrr...)
 Model can be overdesigned
 Model can be detached from the domain
   Suspect correctness
   Hard to maintain
   Difficult to understand




         Jacopo Romei, http://www.sviluppoagile.it/
Reflection




    Software must reflect domain model




     Jacopo Romei, http://www.sviluppoagile.it/
Ubiquity




  Software must reflect ubiquitous language




     Jacopo Romei, http://www.sviluppoagile.it/
Building blocks
 Layered architecture
 Services
 Entities
 Value Objects
 Factories
 Aggregates
 Repositories


             Jacopo Romei, http://www.sviluppoagile.it/
Layers
 User interface
   Smart UI vs. Model Driven Design




         Jacopo Romei, http://www.sviluppoagile.it/
Layers
 User interface
   Smart UI vs. Model Driven Design
 Application
   a.k.a. Controller




         Jacopo Romei, http://www.sviluppoagile.it/
Layers
 User interface
   Smart UI vs. Model Driven Design
 Application
   a.k.a. Controller
 Domain/Model layer




         Jacopo Romei, http://www.sviluppoagile.it/
Layers
 User interface
   Smart UI vs. Model Driven Design
 Application
   a.k.a. Controller
 Domain/Model layer
 Infrastructure




         Jacopo Romei, http://www.sviluppoagile.it/
Frameworks




Free choice, but domain layer must be preserved.




       Jacopo Romei, http://www.sviluppoagile.it/
The end, the beginning



          No one said agile was easy.
  No one said it was a standalone concept.




     Jacopo Romei, http://www.sviluppoagile.it/
What's next




                    Agile Day 2009




    Jacopo Romei, http://www.sviluppoagile.it/
Jacopo Romei
       jacopo [at] sviluppoagile.it
            skype: jacoporomei


            www.sviluppoagile.it



Jacopo Romei, http://www.sviluppoagile.it/

Contenu connexe

En vedette

Why Domain-Driven Design Matters
Why Domain-Driven Design MattersWhy Domain-Driven Design Matters
Why Domain-Driven Design Matters
Mathias Verraes
 

En vedette (15)

Introduction to Domain Driven Design
Introduction to Domain Driven DesignIntroduction to Domain Driven Design
Introduction to Domain Driven Design
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
Modelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven DesignModelling a complex domain with Domain-Driven Design
Modelling a complex domain with Domain-Driven Design
 
Code & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven DesignCode & Cannoli - Domain Driven Design
Code & Cannoli - Domain Driven Design
 
Domain-driven design
Domain-driven designDomain-driven design
Domain-driven design
 
A visual introduction to Event Sourcing and CQRS
A visual introduction to Event Sourcing and CQRSA visual introduction to Event Sourcing and CQRS
A visual introduction to Event Sourcing and CQRS
 
5-beamer: Creación de presentaciones con LaTeX Imprimible
5-beamer: Creación de presentaciones con LaTeX Imprimible5-beamer: Creación de presentaciones con LaTeX Imprimible
5-beamer: Creación de presentaciones con LaTeX Imprimible
 
Domain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with RailsDomain Driven Design and Hexagonal Architecture with Rails
Domain Driven Design and Hexagonal Architecture with Rails
 
Refactoring for Domain Driven Design
Refactoring for Domain Driven DesignRefactoring for Domain Driven Design
Refactoring for Domain Driven Design
 
Why Domain-Driven Design Matters
Why Domain-Driven Design MattersWhy Domain-Driven Design Matters
Why Domain-Driven Design Matters
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Domain Driven Design Introduction
Domain Driven Design IntroductionDomain Driven Design Introduction
Domain Driven Design Introduction
 
Domain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVCDomain-Driven Design with ASP.NET MVC
Domain-Driven Design with ASP.NET MVC
 
Implementing DDD with C#
Implementing DDD with C#Implementing DDD with C#
Implementing DDD with C#
 
Hermitage - The Palace, St Petersburg
Hermitage - The Palace, St PetersburgHermitage - The Palace, St Petersburg
Hermitage - The Palace, St Petersburg
 

Similaire à Agile development and domain driven design

Are Agile Projects Doomed To Halfbaked Design
Are Agile Projects Doomed To Halfbaked DesignAre Agile Projects Doomed To Halfbaked Design
Are Agile Projects Doomed To Halfbaked Design
eraz
 
Wetelo_Inc_Presentation
Wetelo_Inc_PresentationWetelo_Inc_Presentation
Wetelo_Inc_Presentation
Svitlana Luts
 
Wetelo_Inc_Presentation
Wetelo_Inc_PresentationWetelo_Inc_Presentation
Wetelo_Inc_Presentation
Kate Grygola
 

Similaire à Agile development and domain driven design (20)

M.M.H.Masud
M.M.H.MasudM.M.H.Masud
M.M.H.Masud
 
Are Agile Projects Doomed To Halfbaked Design
Are Agile Projects Doomed To Halfbaked DesignAre Agile Projects Doomed To Halfbaked Design
Are Agile Projects Doomed To Halfbaked Design
 
Ecms By Roofimon
Ecms By RoofimonEcms By Roofimon
Ecms By Roofimon
 
7 Ways To Leverage SP for PM Success
7 Ways To Leverage SP for PM Success7 Ways To Leverage SP for PM Success
7 Ways To Leverage SP for PM Success
 
"7 Ways To Leverage SharePoint for Project Management Sucess" SPS VA Beach
"7 Ways To Leverage SharePoint for Project Management Sucess" SPS VA Beach"7 Ways To Leverage SharePoint for Project Management Sucess" SPS VA Beach
"7 Ways To Leverage SharePoint for Project Management Sucess" SPS VA Beach
 
"7 Ways To Leverage SP For PM Success" for PMI-WDC Skyline
"7 Ways To Leverage SP For PM Success" for PMI-WDC Skyline"7 Ways To Leverage SP For PM Success" for PMI-WDC Skyline
"7 Ways To Leverage SP For PM Success" for PMI-WDC Skyline
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?Legacy Code: Evolve or Rewrite?
Legacy Code: Evolve or Rewrite?
 
7 Ways To Leverage SP for PM Success PMI NYC
7 Ways To Leverage SP for PM Success PMI NYC7 Ways To Leverage SP for PM Success PMI NYC
7 Ways To Leverage SP for PM Success PMI NYC
 
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...ItalianSkin: an improvement in the accessibility of the Plone interface in or...
ItalianSkin: an improvement in the accessibility of the Plone interface in or...
 
Netwise Strategies Profile
Netwise Strategies ProfileNetwise Strategies Profile
Netwise Strategies Profile
 
Prototyping Adobe AIR Applications with Fireworks CS4
Prototyping Adobe AIR Applications with Fireworks CS4Prototyping Adobe AIR Applications with Fireworks CS4
Prototyping Adobe AIR Applications with Fireworks CS4
 
Managing Communication Barriers in Geographically Dispersed Teams
Managing Communication Barriers in Geographically Dispersed TeamsManaging Communication Barriers in Geographically Dispersed Teams
Managing Communication Barriers in Geographically Dispersed Teams
 
Using Wordpress 2009 04 29
Using Wordpress 2009 04 29Using Wordpress 2009 04 29
Using Wordpress 2009 04 29
 
Axance Le Mobile 2.0 Edition 2009
Axance Le Mobile 2.0 Edition 2009Axance Le Mobile 2.0 Edition 2009
Axance Le Mobile 2.0 Edition 2009
 
Programming for Non-programmers PFNP @ Razorfish
Programming for Non-programmers PFNP @ Razorfish Programming for Non-programmers PFNP @ Razorfish
Programming for Non-programmers PFNP @ Razorfish
 
Pwa, separating the features from the solutions
Pwa, separating the features from the solutions Pwa, separating the features from the solutions
Pwa, separating the features from the solutions
 
Wetelo_Inc_Presentation
Wetelo_Inc_PresentationWetelo_Inc_Presentation
Wetelo_Inc_Presentation
 
Wetelo_Inc_Presentation
Wetelo_Inc_PresentationWetelo_Inc_Presentation
Wetelo_Inc_Presentation
 
Happy Coding with Ruby on Rails
Happy Coding with Ruby on RailsHappy Coding with Ruby on Rails
Happy Coding with Ruby on Rails
 

Plus de Jacopo Romei

If you know where it will end up, it's not innovative enough - CloudConf 2017
If you know where it will end up, it's not innovative enough - CloudConf 2017If you know where it will end up, it's not innovative enough - CloudConf 2017
If you know where it will end up, it's not innovative enough - CloudConf 2017
Jacopo Romei
 
Looking for the right swan - LESS2012
Looking for the right swan - LESS2012Looking for the right swan - LESS2012
Looking for the right swan - LESS2012
Jacopo Romei
 
Test Driven Development with Symfony2
Test Driven Development with Symfony2Test Driven Development with Symfony2
Test Driven Development with Symfony2
Jacopo Romei
 
Let it flow, let it flow, let it flow!
Let it flow, let it flow, let it flow!Let it flow, let it flow, let it flow!
Let it flow, let it flow, let it flow!
Jacopo Romei
 
Project manager e sviluppo agile: separati in casa?
Project manager e sviluppo agile: separati in casa?Project manager e sviluppo agile: separati in casa?
Project manager e sviluppo agile: separati in casa?
Jacopo Romei
 

Plus de Jacopo Romei (20)

Silicon doesn’t sweat
Silicon doesn’t sweatSilicon doesn’t sweat
Silicon doesn’t sweat
 
WebDeLDN - The outsourcing Veil of Maya
WebDeLDN - The outsourcing Veil of MayaWebDeLDN - The outsourcing Veil of Maya
WebDeLDN - The outsourcing Veil of Maya
 
If you know where it will end up, it's not innovative enough - CloudConf 2017
If you know where it will end up, it's not innovative enough - CloudConf 2017If you know where it will end up, it's not innovative enough - CloudConf 2017
If you know where it will end up, it's not innovative enough - CloudConf 2017
 
Negotiating contracts as user experiences - WIAD Rome 2016
Negotiating contracts as user experiences - WIAD Rome 2016Negotiating contracts as user experiences - WIAD Rome 2016
Negotiating contracts as user experiences - WIAD Rome 2016
 
LiquidO - No management from the trenches - Agile Saturday - October 2014, Ta...
LiquidO - No management from the trenches - Agile Saturday - October 2014, Ta...LiquidO - No management from the trenches - Agile Saturday - October 2014, Ta...
LiquidO - No management from the trenches - Agile Saturday - October 2014, Ta...
 
LiquidO™ - Mini IAD Trento
LiquidO™ - Mini IAD TrentoLiquidO™ - Mini IAD Trento
LiquidO™ - Mini IAD Trento
 
Agile Saturday #10 - Liquid Organization: Anti-Fragility Beyond Design
Agile Saturday #10 - Liquid Organization: Anti-Fragility Beyond DesignAgile Saturday #10 - Liquid Organization: Anti-Fragility Beyond Design
Agile Saturday #10 - Liquid Organization: Anti-Fragility Beyond Design
 
Capitalismo distribuito: tutto quello che sfuggì a zio Karl e che non deve sf...
Capitalismo distribuito: tutto quello che sfuggì a zio Karl e che non deve sf...Capitalismo distribuito: tutto quello che sfuggì a zio Karl e che non deve sf...
Capitalismo distribuito: tutto quello che sfuggì a zio Karl e che non deve sf...
 
Grab yourself an alibi - PHPDay 2013
Grab yourself an alibi - PHPDay 2013Grab yourself an alibi - PHPDay 2013
Grab yourself an alibi - PHPDay 2013
 
Looking for the right swan - LESS2012
Looking for the right swan - LESS2012Looking for the right swan - LESS2012
Looking for the right swan - LESS2012
 
Cercando il cigno giusto - AgileDay 2012
Cercando il cigno giusto - AgileDay 2012Cercando il cigno giusto - AgileDay 2012
Cercando il cigno giusto - AgileDay 2012
 
Cercando il cigno giusto
Cercando il cigno giustoCercando il cigno giusto
Cercando il cigno giusto
 
Debito Tecnico
Debito TecnicoDebito Tecnico
Debito Tecnico
 
Refactoring
RefactoringRefactoring
Refactoring
 
Symfony CMF - PHP Conference Brazil 2011
Symfony CMF - PHP Conference Brazil 2011Symfony CMF - PHP Conference Brazil 2011
Symfony CMF - PHP Conference Brazil 2011
 
Test Driven Development with Symfony2
Test Driven Development with Symfony2Test Driven Development with Symfony2
Test Driven Development with Symfony2
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an island
 
Many to many: no man is an island
Many to many: no man is an islandMany to many: no man is an island
Many to many: no man is an island
 
Let it flow, let it flow, let it flow!
Let it flow, let it flow, let it flow!Let it flow, let it flow, let it flow!
Let it flow, let it flow, let it flow!
 
Project manager e sviluppo agile: separati in casa?
Project manager e sviluppo agile: separati in casa?Project manager e sviluppo agile: separati in casa?
Project manager e sviluppo agile: separati in casa?
 

Dernier

Dernier (20)

Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 

Agile development and domain driven design