Structuring fault-tolerant object-oriented systems using inheritance and delegation

Many entities in the real world that a software system has to interact with, e.g., for controlling or monitoring purposes, exhibit different behaviour phases in their lifetime, in particular depending on whether or not they are functioning correctly. That is, these entities exhibit not only a normal behaviour phase but also one or more abnormal behaviour phases associated with the various faults which occur in the environment. These faults are referred to as environmental faults. In the object-oriented software, real-world entities are modeled as objects. In a classbased object-oriented language, such as C++, all objects of a given class must follow the same external behaviour, i.e., they have the same interface and associated implementation. However this requires that each object permanently belong to a particular class, imposing constraints on the mutability of the behaviour for an individual object. This thesis proposes solutions to the problem of finding means whereby objects representing real-world entities which exhibit various behaviour phases can make corresponding changes in their own behaviour in a clear and explicit way, rather than through status-checking code which is normally embedded in the implementation of various methods. Our proposed solution is (i) to define a hierarchy of different subclasses related to an object which corresponds to an external entity, each subclass implementing a different behaviour phase that the external entity can exhibit, and (ii) to arrange that each object forward the execution of its operations to the currently appropriate instance of this hierarchy of subclasses. We thus propose an object-oriented approach for the provision of environmental fault tolerance, which encapsulates the abnormal behaviour of "faulty" entities as objects (instances of the above mentioned subclasses). These abnormal behaviour variants are defined statically, and runtime access to them is implemented through a delegation mechanism which depends on the current phase of behaviour. Thus specific reconfiguration changes at the level of objects can be easily incorporated to a software system for tolerating environmental faults.

[1]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[2]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[3]  Paul Bassett,et al.  Frame-Based Software Engineering , 1987, IEEE Software.

[4]  Roy H. Campbell,et al.  A technique for documenting the framework of an object-oriented system , 1992, [1992] Proceedings of the Second International Workshop on Object Orientation in Operating Systems.

[5]  Algirdas Avizienis,et al.  The N-Version Approach to Fault-Tolerant Software , 1985, IEEE Transactions on Software Engineering.

[6]  Luca Cardelli,et al.  Modula-3 Report (revised) , 1992 .

[7]  Renzo Orsini,et al.  An Object Data Model with Roles , 1993, VLDB.

[8]  Roy H. Campbell,et al.  Choices, frameworks and refinement revisited , 1992 .

[9]  Luiz Fernando Capretz Object-oriented design methodologies for software systems , 1991 .

[10]  Pierre America,et al.  A parallel object-oriented language with inheritance and subtyping , 1990, OOPSLA/ECOOP '90.

[11]  Luca Cardelli,et al.  On understanding types, data abstraction, and polymorphism , 1985, CSUR.

[12]  Mario Wolczko Encapsulation, delegation and inheritance in object-oriented languages , 1992, Softw. Eng. J..

[13]  Thomas Anderson Fault tolerant computing , 1986 .

[14]  Renzo Orsini,et al.  An Introduction to the Database Programming Language Fibonacci , 1993, SEBD.

[15]  Michel Bidoit,et al.  SPOKE: an object-oriented programming environment , 1991 .

[16]  Yasuhiko Yokote,et al.  The Apertos reflective operating system: the concept and its implementation , 1992, OOPSLA '92.

[17]  Christopher Alexander Notes on the Synthesis of Form , 1964 .

[18]  Pierre America,et al.  Inheritance and Subtyping in a Parallel Object-Oriented Language , 1987, ECOOP.

[19]  Ralph E. Johnson,et al.  Patterns Generate Architectures , 1994, ECOOP.

[20]  Norman Wilde,et al.  Maintenance Support for Object-Oriented Programs , 1992, IEEE Trans. Software Eng..

[21]  Tsvi Bar-David Object-oriented design for C++ , 1992 .

[22]  Jens Palsberg,et al.  Type inference of SELF: Analysis of objects with dynamic and multiple inheritance , 1995, Softw. Pract. Exp..

[23]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

[24]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[25]  Jitendra Malik,et al.  Genericity vs inheritance vs delegation vs conformance vs , 1989 .

[26]  Terry Winograd,et al.  Understanding computers and cognition - a new foundation for design , 1987 .

[27]  Daniel G. Bobrow,et al.  CommonLoops: Merging Lisp and Object-Oriented Programming , 1986, OOPSLA.