Rationale

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.

Project assignments

The material contained in this chapter suggests various project assignments, including

Further, you may select any of problems mentioned as programming projects in appendix app-program as

Additionally, subjects for papers are