Nowadays, reliability that is fault tolerant is a fully fledged research and engineering aspect of modern computing. It concerns not only equipment and networking, but also software. Software in particular faces many challenges, as the matter is very elusive and achievements in the field are not very impressive, if we consider practical applications. De Florio’s book is an interesting attempt to show how fault tolerance can be embedded into software.
After the preface sketches the problem and shows the book’s structure, chapter 1 covers the most basic reliability concepts and notions, which in fact apply to systems in general. By contrast, the next chapter focuses specifically on software reliability. Chapter 3 presents examples of fault-tolerant software systems, such as the EFTOS, SwIFT, and RAFTNET libraries, as well as principles of multiple-version software programming. Chapter 4 deals with fault tolerance based on intelligent operation of compilers and translators. As in other chapters, the topic is presented mainly through examples--OpenC++, Javassist, MetaC++, and Linda systems. Chapter 5 is an overview of different programming languages’ structures that support fault tolerance, such as compositional filters. The next chapter describes ARIEL, the recovery language that provides built-in resilience. Aspect-oriented programming is briefly dealt with in chapter 7. After giving details on how to prepare a fault-tolerant program, De Florio shows how to detect faults, by surveying different methods and presenting relevant examples, in chapter 8. Next, he presents solutions that apply a combination of approaches. Chapter 10, the last technical chapter, discusses some issues related to the measurement and quantification of software reliability. Chapter 11 concludes the book, followed by an appendix on some details of ARIEL, De Florio’s biography, and an index.
As the author states, the book is based on a course in software dependability for PhD students. Thus, the work will be useful to this group, even though it does not deal with complex theoretical issues such as enhanced reliability modeling. Due to its focus on mechanisms and applications, as well as its presentation via examples and case studies appended with code, it is also suitable for engineers who specialize in the design of software devoted to operations that require high dependability. The book is rather advanced, making it inaccessible to laymen. Another reason why it is inappropriate for a broad audience is the unsatisfactory editing--some figures are hardly legible and the footnotes are cumbersome.