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