Chapter 9. Evolutionary Design

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 its business domain.

Even the most sophisticated and thoughtful design will turn into a big ball of mud if it isn’t evolved on par with the changes in its business domain.

In this chapter, we will discuss how changes in the business domain can affect both strategic and tactical design decisions and how to react to such changes. We will examine three specific vectors of change: changes in subdomains, organizational changes, and evolution of domain knowledge.

Changes in Subdomains

In Chapter 2, you saw that you have to identify a company’s subdomains to comprehend its business domain. DDD distinguishes three types of subdomains:


Activities that the company is performing differently from its competitors to gain competitive advantage


Things that the company is doing differently from its competitors, but they do not provide a competitive edge


Things that all companies do in the same way

During a company’s lifetime, it’s not unusual for some of its subdomains to change from one type to another. Let’s look at some examples of such changes.

Core to Generic

Suppose an online retail company—say, “Azamon”—has been ...

Get What Is Domain-Driven Design? now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.