There are three primary tasks of object design. To develop your model, you must:
- Define the internal implementation of each problem domain resource. During the problem analysis phase, you defined the resources of the problem domain, each with a purpose and an interface. Object design defines the internal behavior and attributes that support the purpose and interface of these resources.
- Add the classes that enable your software to support the use of the resources.
- Iterate through the model to enhance and refine it. With the addition of each new class, your model evolves. This evolution takes the form of iterative enhancement.
Object design also adds the objects that are unique to a software solution, for example, controllers, user interfaces, and database accessors.
During object design, try not to consider programming specifics. Just as in architectural analysis, maintain a requirements-based approach. Determine the goal and the best design approaches. Then use these criteria to guide your choices during construction.