topical media & game development

talk show tell print

object-oriented programming

Instructor's Guide: Software Engineering Perspectives

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.

Hints

In presenting the material to students, I prefer to maintain a certain distance from the particularities of the individual methods. To compensate for this apparent lack of commitment, I invite students to make the method of their choice the subject of their paper project.

The discussion concerning the contribution of formal methods may be seen as a forward reference to the treatment of formal aspects in part III.

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

Comments

In my view, design may be characterized as the effort leading to a rational description and justification of the architectural structure of a software system. Whether design precedes implementation or the other way around is irrelevant from this point of view. Nevertheless, some heuristics are discussed that may be used to arrive at a proper object model. As testified in  [Szyperski], the notion of contracts plays a crucial role when using an object-oriented approach to develop components. See chapter Components.

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.


[] readme course(s) preface I 1 2 II 3 4 III 5 6 7 IV 8 9 10 V 11 12 afterthought(s) appendix reference(s) example(s) resource(s) _

(C) Æliens 04/09/2009

You 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.