Chapter 11. Evolving Design Decisions

In the modern, fast-paced world we inhabit, companies cannot afford to be lethargic. To keep up with the competition, they have to continually change, evolve, and even reinvent themselves over time. We cannot ignore this fact when designing systems, especially if we intend to design software that’s well adapted to the requirements of its business domain. When changes are not managed properly, even the most sophisticated and thoughtful design will eventually become a nightmare to maintain and evolve. This chapter discusses how changes in a software project’s environment can affect design decisions and how to evolve the design accordingly. We will examine the four most common vectors of change: business domain, organizational structure, domain knowledge, and growth.

Changes in Domains

In Chapter 2, you’ve learned the three types of business subdomains and how they are different from one another:

Core
Activities the company is performing differently from its competitors to gain a competitive advantage
Supporting
Things the company is doing differently from its competitors, but that do not provide a competitive edge
Generic
Things all companies do in the same way

In the previous chapters, you saw that the type of subdomain at play affects strategic and tactical design decisions:

  • How to design the bounded contexts’ boundaries

  • How to orchestrate integration between the contexts

  • Which design patterns to use to accommodate the complexity of ...

Get Learning Domain-Driven Design now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.