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.