The design process extends the modeling effort beyond the business
concerns and into the solutions space.
It is during this effort that you decide whether you are going to use
Java, C++, J2EE, CORBA, SOAP, Dial up line, internet connection
dedicated line, XML, etc.
Many of these decisions will impact directly the PSM model, others
may only be reflected in the documents produced.
6.1.1. Class, Responsibilities, and Collaborators (CRC) Cards
Strength of CRC cards during Design
Spreading Objet-Oriented Design Expertise
Framework for Implementation
Choice of supporting software components
In this phase developers replace some of the domain experts
in the group, but there should always be at least one domain
expert in the group.
The focus of the group moves from what is to be done to
how to do it.
The classes from the solution domain are added to
those defined in the analysis phase.
Think about what classes are needed to make the system work.
Do you need a List class to hold objects?
Do you need classes to handle exceptions?
Do you need wrapper classes for other subsystems?
New classes that are looked for in this part, are classes
that support the implementation of the system.
During the design phase the distinction between class and object
Think about the objects in your scenarios.
Who creates the objects?
What happens when it is created and destroyed?
What is the lifetime of the object vs. the lifetime of the
information held be the object?
Now is the time to look at what information the objects hold
compared to what is requested from other classes or computed
on the fly.
Use the back of the card to record the attributes found for
Break you responsibilities into subresponsibilities and list the
subresponsibilities indented under the main responsibilities.
Move the collaborators next to the subresponsibilities
that use them.
After the Collaborator class on your card list the responsibility
of the used class that is used in the collaboration.
After the collaborating responsibilities on your cards, list the
data passed back by the collaborating object in parenthesis.
Redo the scenarios you did in the analysis phase, but know take
into consideration all of the design heuristics discussed.
Make up your own scenarios and try them.