## 3 Autonomous System
### Modular Approach to Fault Propagation in Wireless Sensor Networks  
In order to integrate autonomous self-aware and adaptive mechanisms into fault tolerant routing for sensor networks, it is essential to explain the basic difference between faults, errors, and failure [10; 11; 12]. In sensor networks, a fault is any type of sensor node defect that leads to error, for instance, a loose sensor node connection in the network. An error is an undefined state of the node condition such that the condition or state leads to a node failure, _i.e._, the state of the system when transmitting and retransmitting sensor data. In a sensor network, sensor node failure implies the manifestation of error. This occurs when a sensor node cannot perform its functions and violates the network design specification, which happens when sensor nodes cannot transmit their data within a specified time interval. To integrate self-awareness functionalities into sensor networks in order to provide resiliency against faulty conditions, fault detection and recovery measures are required. In fault detection, some design techniques need to be incorporated into the routing algorithm in order to detect that a specific functionality of the sensor nodes is or will be faulty. On the other hand, after a fault is detected, the routing algorithm should be able to prevent or recover from it. This ensures smooth and steady packet routing from sources to destinations [13; 14; 15; 16; 17; 18; 19; 20; 21; 22; 23; 24; 25; 26; 27; 28; 29; 30; 31; 32; 33; 34; 35; 36; 37; 38; 39; 40; 41; 42; 43; 44; 45; 46; 47; 48; 49]. The emergence of wireless sensor networks presents a challenging issue because of its deployment in harsh and inhospitable dynamic environments. Sensor nodes are subjected to a fault that occurs in many components of the sensor network. In order to illustrate how a fault is propagated in different sections of the sensor network system, we propose a modular architecture in contrast to the layered architecture presented in [12]. As illustrated in Figure 1, a fault in each module cannot be propagated to other modules in the system. For instance, when the node battery power is down, this causes only the node to be down without affecting other modules. In layered approach, the failed node affects the operation of other nodes. If this node is in the critical path of the network, the packets of other nodes that depend on the critical path will not reach their destination until the path is recovered or restored. In addition, if the application module components, _i.e._, data, and users suffer a faulty software bug or hardware failure for the sensor node, the overall system is considered to be faulty as well. With the modular approach to fault propagation in sensor networks, fault occurrences are limited within their module without affecting other module functionalities. Below are the fault explanations in different modules of the sensor network:  
**Sensor network node faults:** The sensor node module is comprised of several hardware and software components that can cause the system to malfunction. For example, the battery power can go down, which can cause the system to fail. Similarly, the casing or system enclosure can suffer from environmental effects, thereby exposing the hardware components of the sensor node to harsh environments. This can cause problems such as short-circuiting, and then sensor readings would be incorrect. Furthermore, the data acquisition readings may be subjected to errors if the underlying sensors provide incorrect sensor measurements. Another important issue that software bugs can also cause errors in wireless sensor networks [10; 11; 12; 13; 14; 15; 16; 17; 18; 19; 20; 21]. **Sensor network faults:** Network faults are the result of routing, which is the most essential building block of sensor networks. The presence of faults in the routing function can result in massive network packet drops or too much network delay [10; 11; 12].