This chapter describes some hybrid approaches for application-level software fault-tolerance. All the approaches reported in the rest of this chapter exploit the recovery language approach introduced in Chapter VI and couple it with other tools and paradigms described in other parts of this book. The objective of this chapter is to demonstrate how ReL can serve as a tool to further enhance some of the application- level fault-tolerance paradigms introduced in previous chapters. But why hybrid approaches in the first place? The main reason is that joining two or more concepts and their “system structures” (Randell, 1975), that is, the conceptual and syntactical axioms used in disparate application-level software fault-tolerance provisions, one comes up with a tool with better Syntactical Adequacy (the SA attribute introduced in Chapter II). As already mentioned, a wider syntactical structure can facilitate the expression of our codes, while on the contrary awkward structures often lead to clumsy, buggy applications. Hybrid approaches are often more versatile and can also inspire brand new designs. A drawback of hybrid approaches is that they are modifications of existing designs. The extra design complexity must be carefully added to prevent the introduction if design faults in the architecture.
A Dependable Parallel Processing Model Based On Generative Communication And Recovery Languages
As already remarked, redundancy is an important ingredient at the basis of both parallel computing and dependable computing. In other words, the availability of redundancy and a proper management of the available redundancy can be exploited to reach both functional objectives, such as high performance, and non-functional goals such as the ones at the core of this book, for instance high availability and data integrity.
Indeed, the truly extended use of parallel computing technologies asks for effective software engineering techniques to design, develop and maintain dependable parallel software—that is, it requires expressive programming models capable to make effective use of the available redundancy for capturing both the above classes of goals. This happens because any computing service based on parallel computing technologies must be designed in such a way as (1) to face and counterbalance the inherently lower level of dependability that characterizes any parallel hardware, due to the considerably higher probability for events such as a node’s permanent or temporary failure in any such highly redundant system; and (2) to match the involved algorithms to the target hardware platform, so as to exploit optimally the available redundancy and reach, e.g., the expected performance.