Domain-Driven Design Using Naked Objects (The Pragmatic Programmers)