Summary

This chapter presented an overview of the issues involved in the design of object-oriented software. The approach taken may be characterized as eclectic, in that various methods are referred to when illustrating design issues without commitment to a particular method or approach. }

The process of design

1


slide: Section 3.1: The process of design

In section 1, we discussed the components or aspects of the software development process and characterized the perspectives of modeling associated with the various phases of development. We also looked at the various modeling dimensions distinguished in the OMT method.

Identifying objects

2

  • object-oriented design -- decomposition into objects
  • object model -- objects suffer and require
  • heuristics -- balance between nouns and verbs
  • evaluation -- eliminating spurious classes
  • class design -- class, responsibilities and collaborations

slide: Section 3.2: Identifying objects

In section 2, we then discussed the issues that arise in defining an object model. We looked at heuristics for identifying objects, based on a linguistic analysis of the requirements document, and discussed the evaluation criteria that may be used for eliminating spurious classes. Also, the CRC method, which approaches class design by delineating responsibilities and collaborations, was illustrated with some examples.

Contracts

3

  • types -- as an organizing principle
  • contracts -- obligations and benefits
  • subtyping -- the substitutability requirement
  • partial types -- designed to have subtypes

slide: Section 3.3: Contracts

The object model resulting from an initial exploration may be formalized by employing types. In section 3, we discussed the notion of contracts as a means to characterize the behavioral aspects of types, specifying the restrictions and obligations of an object and its clients. We also looked at the requirements for subtype refinement and discussed the notion of partial types.

From specification to design

4

  • modeling -- structural versus behavioral
  • specification -- state and operations
  • abstract systems -- as a design methodology

slide: Section 3.4: From specification to design

In section 4, we discussed the distinction between structural and behavioral modeling. Also we looked at a model-based specification formalism and and discussed a design methodology employing abstract systems and events to realize the specification of user actions.

Questions

  1. Characterize the nature of object-oriented development. Discuss what aspects or components are involved.
  2. Describe the modeling activities that may occur in each of the various phases of the software life-cycle.
  3. What dimensions of modeling are distinguished in the OMT method? Give a short characterization.
  4. How would you characterize the differences between functional and object-oriented development methods?
  5. Give an outline of the steps required in object-oriented design.
  6. What heuristics can you think of for identifying objects?
  7. What criteria may be used to eliminate spurious classes from an initial object model?
  8. Explain the methods of CRC cards. Give an example.
  9. Explain how you may characterize the behavior of an object by means of a contract.
  10. What benefits may design by contract have for system developers? And for users?
  11. What are partial types? How may they be employed?
  12. Give a detailed account of the issues that arise in refining a contract.
  13. Characterize the differences between semantic modeling and object-oriented modeling.
  14. How would you characterize the notion of abstract systems?
  15. Explain how events may be employed to maintain system integrity.

Further reading

For further study, I recommend  [Booch94],  [WWW90] and  [Rum91]. Also worthwhile are  [Henderson93] and  [Champeaux93]. Additional literature is mentioned in section methods. An overview and comparative study of design representation methods is given in  [Webster].