Understanding the Different Domains in Software Solutions
This chapter is dedicated to a modern software development technique called domain-driven design (DDD), which was first proposed by Eric Evans (see Domain-Driven Design: https://www.amazon.com/exec/obidos/ASIN/0321125215/domainlanguag-20). While DDD has existed for more than 15 years, it has achieved great success in the last few years because of its ability to cope with two important problems.
The main problem is modeling complex systems that involve several domains of knowledge. No single expert has in-depth knowledge of the whole domain; this knowledge is instead split among several people. The second problem is that each expert speaks a language that is specific to his domain of expertise, so for effective communication between the experts and the development team, objects, interfaces, and methods must mimic the language of the domain experts. This means that the different modules that compose an application must use...