ABSTRACT

This chapter provides descriptions of several architectural patterns based on replication and diversification, the distinction being that replication deploys two or more identical copies of a system, whereas diversification incorporates different implementations of the same function. The drive for replication often stems from the view that, if a single system cannot meet the necessary dependability requirements, then by replicating it, a much higher level of dependability can be obtained. The strength of replication is that it allows the design to be focused cleanly on either availability or reliability. The idea behind “coded processors” is an extension of the concept of program diversity, whereby a code is stored with each variable and used to detect computational errors caused by incorrect compilers, hardware errors, and incorrect task cycling. Virtual synchrony, also called group synchrony, group synchrony is a form of replication that can be very powerful in certain architectures.