Responsibility Driven Design (RDD)
Developed by Rebecca Wirfs-Brock, et al., Responsibility
Driven Design (RDD) is a software development method that, like
XP, has its origins in the Smalltalk community. Compared to
data driven and use case driven design methods, RDD promotes
the production of pure object-oriented designs that:
Maximize Abstraction, Cohesion, and
Understandability
Minimize Coupling and Maintenance
Where RDD fits into object modeling (in rough order of
occurance, assuming iteration):
Name the role (class/interface) on diagram during
whiteboarding
Define the role in Project Glossary
Stereotype the role in class comment (RDD)
Capture the responsibilties on CRC card during
whiteboarding, in class comment during coding (RDD)
Capture the public interface during coding
Specify the public interface with assertions and
exceptions during coding (DBC)
Develop the unit tests during coding (XP)
Develop the implementation during coding
Run the unit tests
The following documents where RDD fits into the OPEN Process
Framework:
It is one of the major sources (along with RUP, XP,
DBC).
OPF incorporates the following aspects of RDD:
Roles
Responsibilities
Stereotypes
Architecture Guidelines
Initiation Phase:
Requirements Engineering Activity:
Responsibilities of Actors in the Use Case Modeling
section of the System Requirements Specification
Stereotypes, responsibilities, and OO architecture
guidelines of essential types in the Domain Model
Document
System Architecture:
Responsibilities of essential system components
Software Design:
Stereotypes, responsibilities, and OO architecture
guidelines of classes and interfaces in the design
documents
Software Implementation:
Stereotypes and responsibilities documented in the
class comments
Construction Phase:
Requirements Engineering Activity:
Responsibilities of Actors in the Use Case Modeling
section of the System Requirements Specification
Stereotypes, responsibilities, and OO architecture
guidelines of essential roles in the Domain Model
Document
System Architecture:
Responsibilities of essential system components
Software Design:
Stereotypes, responsibilities, and OO architecture
guidelines of classes and interfaces in the design
documents
Software Implementation:
Stereotypes and responsibilities documented in the
class comments