ABSTRACT

A robust collection of domain classes is fundamental to a sound software system. Whether debugging, refactoring, adding new features to a class, or adding an entirely new class, the developer must always begin by understanding the current system's documentation and code base. The domain classes are at the heart of a software architecture. Above them

sit the user interface modules and below them sit the database modules. All three of these levels utilize the namespace and properties that are initially defined by the domain classes and drawn from the application domain itself. In this chapter, we explore the principles and practice of reading and un-

derstanding the code base, working with the domain classes while adding new features, and developing appropriate unit tests and refactorings.1