topical media & game development

talk show tell print

object-oriented programming

This chapter presented an overview of the issues involved in the design and software engineering 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.

Development methods


slide: Section 3.1: Development methods

In section 1, we discussed perspectives of modeling and requirements engineering. We looked at the second-generation development method Fusion and made a comparative study of analysis and design methods. We then discussed the differences between functional and object-oriented development approaches.

Identifying objects


  • {\em 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 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.



  • 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 the refinement of contractual obligations.

Towards a formal approach


  • contracts -- formal specification
  • verification -- as a design methodology
  • runtime consistency -- invariance

slide: Section 3.4: Towards a formal approach

Finally, in section 4, we reflected on the possible contribution of formal methods to the software engineering of object-oriented systems, and concluded that the notion of contracts may play an invaluable role, both as a design methodology and as a means to establish the runtime consistency of a system.

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