Article Preview
TopIntroduction
A distributed system is a collection of electronic devices that appear to the user to be a single coherent system. The devices run autonomously or in cooperation to satisfy user needs in a safe and transparent manner. Among distributed systems, the use of domestic automation systems is rapidly increasing.
Domestic systems are designed to facilitate everyday life and ensure the user’s comfort by monitoring and managing home equipment in smart ways. For this purpose, some applications, platforms and products can be found in (Riazul et al., 2015; Jara, Zamora-Izquierdo, & Skarmeta, 2013; Silva et al, 2015) as examples: the products proposed by LiftMaster, the HYDRA platform, ALADDIN project, and so forth. A domestic system is a multiple component system. Each component is viewed as an individual system, and these may have different compositions and implementations. Various problems must be considered in connection with domestic systems, such as malicious attacks (Kumar & Lee, 2012; Silva et al, 2015), interoperability and scalability issues (Riazul et al., 2015), heterogeneous communication issues, communication interference, dependable execution, and so forth (Mahapatro & Khilar, 2012; Jara, Zamora-Izquierdo, & Skarmeta, 2013).
Domestic systems may cease to function due to hardware or software failures, and this may have unacceptable consequences ranging from simple output errors to catastrophic situations. Also, domestic systems have specific characteristics that distinguish them from other systems, especially in the case of medical domestic systems. Reliable data rate management is crucial when telemonitoring a patient (Riazul et al., 2015), and such systems require nonclassical tools to ensure their correct execution. Generally, all system failures are caused by faults which are propagated as errors; the faults can occur at different levels of the system and can propagate from one level to another. The specific characteristics of domestic systems include the open character of the house and its sensitive context: the components of a domestic system can be added or removed during runtime. In the fault detection and diagnosis domain, this openness makes it impossible to predetermine exactly when a device in the system will be active or inactive. Furthermore, these systems are sensitive and reactive, which creates some difficulties for devising a fault tolerance solution (Haibin, Chao, & Yue, 2012).
The computer science literature has proposed two types of techniques for ensuring dependability (Lamport, Robert, & Marshall, 1982; Narasimhan et al., 2005; Kolbeck, Högqvist, Stender, & Hupfeld, 2011; Kavila et al, 2013; Verma, Guleria & Lakhanpal, 2014; Karimi et al, 2015; Mittal, & Vetter, 2016; Blanke, Kinnaert, Lunze, Staroswiecki, 2016):
- 1.
Fault prevention, which is based on the use of high-quality control techniques for hardware construction and software specification—i.e., very reliable computer components are used; and
- 2.
Fault tolerance, which ensures that the system will continue to function even in the presence of faults.
Fault prevention requires specific staff and methods such as design reviews, component screening, and testing for building the hardware (Tumer, 2005), along with structural programming, modularization, and formal verification techniques (Yu, 1998) for software reliability. Thus, fault prevention is very expensive to realize.