Back in Chapter one I mentioned the idea of an abstract data type. You will recall that an abstract data type is characterized by behavior, by the operations it performs, and not by its representation.
Responsibility-driven design extends this idea to the entire design process. What we have first is a description, even if it is only an informal back-of-the-napkin description, of the behavior for the entire application. Our first task will be for expand on this, and to capture the behavior of the whole application.
Next, we refine this into descriptions of subsystems for the application. Again, these will be characterized simply by the operations they perform, that is, their behavior.
Finally, we refine these behavioral descriptions into actual code. While ultimately will be the final application.
This emphasis on behavior is a hallmark of object-oriented programming.