Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Arrow up icon
GO TO TOP
Domain-Driven Design in PHP

You're reading from   Domain-Driven Design in PHP A Highly Practical Guide

Arrow left icon
Product type Paperback
Published in Jun 2017
Publisher
ISBN-13 9781787284944
Length 394 pages
Edition 1st Edition
Languages
Concepts
Arrow right icon
Authors (3):
Arrow left icon
Keyvan Akbary Keyvan Akbary
Author Profile Icon Keyvan Akbary
Keyvan Akbary
Carlos Buenosvinos Carlos Buenosvinos
Author Profile Icon Carlos Buenosvinos
Carlos Buenosvinos
Christian Soronellas Christian Soronellas
Author Profile Icon Christian Soronellas
Christian Soronellas
Arrow right icon
View More author details
Toc

Table of Contents (16) Chapters Close

Preface 1. Getting Started with Domain-Driven Design FREE CHAPTER 2. Architectural Styles 3. Value Objects 4. Entities 5. Services 6. Domain-Events 7. Modules 8. Aggregates 9. Factories 10. Repositories 11. Application 12. Integrating Bounded Contexts 13. Hexagonal Architecture with PHP 14. Bibliography
15. The End

The Three Pillars of Domain-Driven Design

Domain-Driven Design is an approach for delivering software, and it's focused on three pillars:

  1. Ubiquitous Language: Domain Experts and software developers work together to build a common language for the business areas being developed. There's no us versus them; it's always us. Developing software is a business investment and not just a cost. The effort involved in building the Ubiquitous Language helps spread deep Domain insight among all team members.
  2. Strategic Design: Domain-Driven Design addresses the strategy behind the direction of the business and not just the technical aspects. It helps define the internal relationships and early warning feedback systems. On the technical side, strategic design protects each business service by providing the motivation for how an service-oriented architecture should be achieved.
  3. Tactical Design: Domain-Driven Design provides the tools and the building blocks for iterative software deliverable. Tactical design tools produce software that is not only correct, but that is also testable and less error prone.

Ubiquitous Language

Along with  Chapter 12Integrating Bounded Contexts, Ubiquitous Language is one of the main strengths of Domain-Driven Design.

In Terms of Context
For now, consider that a Bounded Context is a conceptual boundary around a system. The Ubiquitous Language inside a boundary has a specific contextual meaning. Concepts outside of this context can have different meanings.

So, how to find, explore and capture this very special language, the following pointers would highlight the same:

  • Identify key business processes, their inputs, and their outputs
  • Create a glossary of terms and definitions
  • Capture important software concepts with some kind of documentation
  • Share and expand upon the collected knowledge with the rest of the team (Developers and Domain Experts)

Since Domain-Driven Design was born, new techniques for improving the process of building the Ubiquitous Language have emerged. The most important one, which is used regularly now, is Event Storming.

Event Storming

Alberto Brandolini explains Event Storming and its advantages in a blog post, and he does it far more succinctly than we could.Event Storming is a workshop format for quickly exploring complex business domains:

  • It is powerful: It has allowed me and many practitioners to come up with a comprehensive model of a complete business flow in hours instead of weeks.
  • It is engaging: The whole idea is to bring people with the questions and people who know the answer in the same room and to build a model together.
  • It is efficient: The resulting model is perfectly aligned with a Domain-Driven Design implementation style (particularly fitting an Event Sourcing approach), and allows for a quick determination of Context and Aggregate boundaries.
  • It is easy: The notation is ultra-simple. No complex UML that might cut off participants from the heart of the discussion.
  • It is fun: I always had a great time leading the workshops, people are energized and deliver more than they expected. The right questions arise, and the atmosphere is the right one.

If you want to know more about Event Storming, check out Brandolini's book, Introducing EventStorming.

Visually different images
CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
Domain-Driven Design in PHP
You have been reading a chapter from
Domain-Driven Design in PHP
Published in: Jun 2017
Publisher:
ISBN-13: 9781787284944
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €18.99/month. Cancel anytime
Modal Close icon
Modal Close icon