Top Banner
Paul Rayner AGILITY. CRAFT. ARCHITECTURE. Keeping Architectures Relevant Using Domain-Driven Design and Emergent Architecture Brandon Satrom
27

Keeping Architectures Relevant - 4 Feb 2010

Oct 30, 2014

Download

Technology

Paul Rayner

Too many systems seem to become legacy upon release, while some never even have a chance to move into production before they are undermined by the calcification of unmet expectations and mismatched domain needs. Regardless of the design effort early in the lifecycle, neglect of the domain model and inflexible design results in the increasing irrelevance of the initial architecture of a system.

Sustainable and successful software development is all about managing complexity and enabling change, and successful architects create designs that clearly address both. As an architecture is allowed to emerge, evolve, and mature, it becomes a true reflection of the deep understanding of both domain experts and developers. Architects who expect their initial design to evolve, and who design with evolution in mind, create architectures that deliver a strong competitive advantage to the business.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Keeping Architectures Relevant - 4 Feb 2010

Paul Rayner

AGILITY. CRAFT. ARCHITECTURE.

Keeping Architectures RelevantUsing Domain-Driven Design and Emergent Architecture

Brandon Satrom

Page 2: Keeping Architectures Relevant - 4 Feb 2010

Challenges

SoftwareArchitecturePerspective

EnterpriseArchitecturePerspective Irrelevant

Architectures

Creeping Complexity

Page 3: Keeping Architectures Relevant - 4 Feb 2010

DDD & Emergent Architecture

Page 4: Keeping Architectures Relevant - 4 Feb 2010

Domain-Driven Design (DDD) is a pattern language for strategic design and architecture.*

* not an architecture framework

Page 5: Keeping Architectures Relevant - 4 Feb 2010

A Virtuous Cycle

Relevant Modeling

Emergent Architecture

Ubiquitous Language

Page 6: Keeping Architectures Relevant - 4 Feb 2010

Ubiquitous Language

Relevant Modeling

Emergent Architecture

Ubiquitous Language

Page 7: Keeping Architectures Relevant - 4 Feb 2010

Jargon

Domain Expert

Technical Expert

Jargon

Translate

Refine

Agree

Communication vsJargon

Page 8: Keeping Architectures Relevant - 4 Feb 2010

Domain Expert

Technical Expert

Ubiquitous Language

Bounded Context

Bounded Context

Bounded Context

Bounded Context

A New Shared Language

Page 9: Keeping Architectures Relevant - 4 Feb 2010

Don’t Translate,Advocate

Page 10: Keeping Architectures Relevant - 4 Feb 2010

Relevant Modeling

Relevant Modeling

Emergent Architecture

Ubiquitous Language

Page 11: Keeping Architectures Relevant - 4 Feb 2010

Design Artifacts

Page 12: Keeping Architectures Relevant - 4 Feb 2010

Final source code is the real software design

— Jack Reeves

“”

Page 13: Keeping Architectures Relevant - 4 Feb 2010

Storytesting

Page 14: Keeping Architectures Relevant - 4 Feb 2010

Abstractions

Page 15: Keeping Architectures Relevant - 4 Feb 2010

Amplification through Simplification

Page 16: Keeping Architectures Relevant - 4 Feb 2010

Emergent Architecture

Relevant Modeling

Emergent Architecture

Ubiquitous Language

Page 17: Keeping Architectures Relevant - 4 Feb 2010

EncapsulateDon’t Coddle

Page 18: Keeping Architectures Relevant - 4 Feb 2010

Developers don’t own the code they create…

… so do architects own the designs they craft?

Page 19: Keeping Architectures Relevant - 4 Feb 2010

Architecture is a Shared

Hallucination

Page 20: Keeping Architectures Relevant - 4 Feb 2010

Distillation

Ol’ Core DomainWhiskey

Page 21: Keeping Architectures Relevant - 4 Feb 2010

Domain Complexity

Anemic Domain Models

Page 22: Keeping Architectures Relevant - 4 Feb 2010

And the Architect Returns with the System Design…

Page 23: Keeping Architectures Relevant - 4 Feb 2010

Relevant Modeling

Emergent Architecture

Ubiquitous Language

Page 24: Keeping Architectures Relevant - 4 Feb 2010

“All that’s needed is the desire to be heard. The will to learn. And the ability to see.”

- Scott McCloud, Understanding Comics

Page 25: Keeping Architectures Relevant - 4 Feb 2010

Questions

Page 27: Keeping Architectures Relevant - 4 Feb 2010

References• Fonts:

– Euphemia, Leelawadee– BoBsFrAnTiC True Type http://www.searchfreefonts.com/free/bobsfrantic.htm– BigMisterC : http://www.urbanfonts.com/fonts/BigMisterC.htm

• Butterfly metamorphasis: http://www.ninibambini.com/pics/Metamorphasis.jpg • Garlic emerging: http://tinyfarmblog.com/tag/oats• Sticky Note: http://www.istockphoto.com/file_closeup.php?id=5602918• Domain-Driven Design book cover: http://domaindrivendesign.org/books/about_the_cover• Russian dolls: http://janti2008.wordpress.com/2009/04/22/nesting-with-the-dolls• Understanding Comics: http://www.harpercollins.com/book/index.aspx?isbn=9780060976255• Ruby on Rails: http://rubyonrails.org• Grady Booch: http://

domino.research.ibm.com/library/cyberdig.nsf/papers/964EFC48D32D5B2D852576A9004F5289/$File/rc24924.pdf

• Butterfly chryslis: http://animals.howstuffworks.com/insects/butterfly4.htm• Surfing baby: http://www.dailystoke.com/surfing-pop-culture/rip-surf-guide-magazine-

satirical-fables-and-surfing-babies• S#arp ARchitecture: http://www.sharparchitecture.net• Cucumber: http://wiki.github.com/aslakhellesoy/cucumber • UML class diagram: http://yuml.me/diagram/scruffy/class/samples• UML sequence diagram: http://www.websequencediagrams.com• Astronaut: http://www.flickr.com/photos/nasa_hsf/3874968663/in/photostream/