This chapter presents an overview of the issues involved in the design of object-oriented software. It gives a comparative overview of object-oriented development methods. Also, attention is paid to the process of design, the problem of identifying an object and the formalization of the design in contracts. This chapter stresses the importance of modeling and the need to express the characteristics of the objects that participate in the model in a behavioral contract, specifying the restrictions and obligations of the object and its clients. Some classical examples are used to illustrate these notions. In this chapter we also raise the question of validation, in particular, how we may establish that software is reliable. To what extent can our experience with validating ordinary software be generalized to an object-oriented approach? A framework for testing object-oriented software is introduced, which allows for employing the notion of invariance as a guideline for the design of test cases.
The approach taken in this chapter 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 material contained in this chapter suggests various project assignments, including
Additionally, subjects for papers are
Actual practice, and certainly in academia, shows that validation and testing is an easily overlooked aspect. The most viable approach, to my mind, is one that is closely related to the notion of runtime consistency and hence involves dynamically monitoring the restrictions imposed by a contract. Contracts provide a means to combine a formal approach with pragmatic considerations of empirical validation.
(C) Æliens 04/09/2009You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.