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.
}
1
- software development process -- components, aspects
- modeling reality -- perspectives of modeling
- design model -- as a justification
- dimensions of modeling -- object, dynamic, functional
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.
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.
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.
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.
- Characterize the nature of object-oriented development.
Discuss what aspects or components are involved.
- Describe the modeling activities that may occur in each
of the various phases of the software life-cycle.
- What dimensions of modeling are distinguished
in the OMT method? Give a short characterization.
- How would you characterize the differences between
functional and object-oriented development methods?
- Give an outline of the steps required in object-oriented
design.
- What heuristics can you think of for identifying objects?
- What criteria may be used to eliminate spurious classes
from an initial object model?
- Explain the methods of CRC cards. Give an example.
- Explain how you may characterize the behavior of an
object by means of a contract.
- What benefits may design by contract
have for system developers? And for users?
- What are partial types? How may they be employed?
- Give a detailed account of the issues that
arise in refining a contract.
- Characterize the differences between semantic
modeling and object-oriented modeling.
- How would you characterize the notion of
abstract systems?
- Explain how events may be employed to
maintain system integrity.
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].