So we thought we knew money

In Custom House's financial system, money, rate, currency and markup are among the key concepts to describe the domain. Without explicit modeling, those concepts appear in the code, but only in variable names of primitive types and sometime in method names for operations whose arguments and return types are all primitives. In this paper we present the experience gained when Custom House development team applies Domain-Driven Design to explicitly model fundamental domain concepts and abstract them into value objects. Using code snippets, we show how those concepts are discovered, how we refactor the existing code base to apply the value objects, what difference the value objects make and how they evolve over time. We also report the pitfalls and stumbles during the process, which are not uncommon for projects that undergo ongoing development work. We show that, with all the incompleteness and imperfection, Domain-Driven Design is gradually accepted into real development process, making a continuous and crucial transformation.

[1]  Evans,et al.  Domain-driven design , 2003 .