Third party software is now increasingly used in systems with high dependability requirements. This evolution of system development raises new challenges, in particular regarding the implementation of fault-tolerance. As systems are often built of black-box components, some crucial aspects of their behavior regarding replication cannot be handled. This is also true to some extent for open-source components as mastering their internal behavior is sometimes very tricky (e.g. OS and ORBs). During the last decade reflection has emerged as a very fruitful paradigm for the disciplined management of non-functional aspects, among which fault-tolerance. In this paper we discuss how to apply reflection to multi-layer systems for implementing fault-tolerance in an independent and principled manner. We analyze the connections between the underlying assumptions of fault-tolerance strategies and the different layers of a system. Based on this multi-layer analysis we show how the requirements of a family of replication algorithms can be addressed on a concrete architecture, resulting in what we name Multi-Layer Reflection.
Copyright Notice: This material is presented to ensure timely dissemination of scholarly and technical work.Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.
IEEE Copyright Notice: © 2001-2020 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE.complete document