Design Heuristics
“It depends” is the correct answer to almost any question in software engineering, but not really practical. In this chapter, we will explore what “it” depends on.
In Part I of the book, you learned domain-driven design tools for analyzing business domains and making strategic design decisions. In Part II, we explored tactical design patterns: the different ways to implement business logic, organize system architec‐ ture, and establish communication between a system’s components. This chapter bridges Parts I and II. You will learn heuristics for applying analysis tools to drive var‐ ious software design decisions: that is, (business) domain-driven (software) design.
But first, since this chapter is about design heuristics, let’s start by defining the term
heuristic.