{'fraction_non_alphanumeric': 0.02069950035688794, 'fraction_numerical': 0.0, 'mean_word_length': 6.08080808080808, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Classification of Hierarchical Fault-Tolerant Design Patterns

Fault tolerance plays a significant role in the safety-critical system design. Redundancy is the key underlying approach, which enables a system to continue operation under the presence of faults and improves its dependability properties such as reliability and safety. Various fault-tolerant designs, which have been proved consistently effective, have been proposed over the past decades. In existing literature, common hardware and software dependability-oriented architectures are discussed and classified according to their distinctive features, such as passive/active/hybrid hardware redundancy or single/multi-version programming. However, internal conceptualsimilarities are usually ignored. In contrast, this paper proposes a new classification thatorganizes existing fault tolerance techniques into a structured pattern system that supports the choice of an appropriate mechanism. More specifically, this paper defines fundamental and implementation-independent patterns and demonstrates that the well-known fault-tolerant designs follow these patterns. Three basic and four combined design patterns are presented, along with the evaluation examples of their reliability properties and common hardware and software implementations. Thepaper shows also how more complex hierarchical combinations can be built in a similar manner.