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 ...