Please choose your delivery country and your customer group
During the last decades several mechanisms for tolerating errors caused by software (design) faults have been put forward. Unfortunately only few experimental programming languages have incorporated them, so these schemes are not available in programming languages and systems that are used in developing modern applications. This is why programmers must either implement these mechanisms themselves or follow very complicated guidelines. It is not the case for software mechanisms developed for tolerating hardware faults (site crashes). Many programming languages and development systems provide mechanisms to cope with site failures. For instance, transactions are defined as one of the basic services in CORBA, Enterprise JavaBeans and Jini, the most popular middleware platforms used for developing complex distributed applications. In this paper, the authors demonstrate how to implement recovery blocks and N-version programming, the most popular mechanisms developed for tolerating software errors, on the top of the mechanisms proposed for tolerating hardware errors.