agile development and domain driven design

Post on 08-May-2015

4.380 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Agile development is getting every year more popular around the world while a less known methodology is the Domain Driven Design (DDD) which defines a few rules to be followed to empower the agile team to raise communication effectiveness. Agile methods and DDD are perfectly matching and used together can solve many problems we are all too sadly used to.

TRANSCRIPT

Jacopo Romeihttp://www.sviluppoagile.it/

Agile development and Domain Driven Design

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

J

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/

J

Agile development

A family of empirical methodologies

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

J

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/

J

Domain

What does inspire our solutions?

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

J

Driven

Where do we find our solutions?

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

J

Design

What does provide us with solutions?

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

J

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/

J

Manouvrability

Agility means manouvrability

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

J

Shared values Courage

Respect

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

J

Shared values Courage

Respect

Simplicity

Simplicity is the art of maximizing the amount of work not done

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

J

Shared values Courage

Respect

Simplicity Communication Feedback

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

J

Shared values Courage

Respect

Simplicity Communication Feedback

Who

Which

How

Why

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

J

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/

J

Don't ossify, please

Supple, knowledge­rich design

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

J

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/

J

Shared required practices Iterative and incremental development

Close relationship with domain experts

Refactoring

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

J

UX & Agile

Methodology to write user stories

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

J

DDD & Agile

Methodology to (let emerge) design

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

J

Ubiquitous language

One jargon to rule them all

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

J

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/

J

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/

J

Documentation

Agile methodologies value working software over comprehensive documentation

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

UML is not enoughUML 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 documentationUML provides some documentation

Code provides some documentation

Ubiquitous language provides some documentation

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

J

Hands-on modelers

Everyone who writes code must feel responsible for the model.

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

J

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/

J

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/

J

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/

J

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/

J

Reflection

Software must reflect domain model

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

J

Ubiquity

Software must reflect ubiquitous language

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

J

Building blocks Layered architecture

Services

Entities

Value Objects

Factories

Aggregates

Repositories

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

J

Layers User interface

Smart UI vs. Model Driven Design

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

J

Layers User interface

Smart UI vs. Model Driven Design

Application

a.k.a. Controller

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

J

Layers User interface

Smart UI vs. Model Driven Design

Application

a.k.a. Controller

Domain/Model layer

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

J

Layers User interface

Smart UI vs. Model Driven Design

Application

a.k.a. Controller

Domain/Model layer Infrastructure

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

J

Frameworks

Free choice, but domain layer must be preserved.

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

J

The end, the beginning

No one said agile was easy.

No one said it was a standalone concept.

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

J

What's next

Agile Day 2009

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

J

Jacopo Romei

jacopo [at] sviluppoagile.it

skype: jacoporomei

www.sviluppoagile.it

top related