# A Cooja-Based Tool for Coverage and Lifetime Evaluation in an In-Building Sensor Network+
## 7 Related Work
In this framework, users are allowed to define the coherency requirements of the states of protocols, specify the maintenance/repair policy (_i.e._, when to self-heal the system and who invokes the maintenance service) and define which set of protocols need maintenance services in order to satisfy a system performance requirement and the dependency constraints among the services, according to the system specification and constraints. For example, time synchronisation repair is performed once per day; sensing coverage repair is performed locally if the coverage \(<\) 100%; while communication repair is performed at the base station if the connectivity \(<\) 100%. During the communication repair, the base station computes the connectivity graph based on the connectivity information reported from the nodes. Different from the original VigilNet system [31], where all of the protocols are reinitialised once per day without considering if a protocol needs the reinitialisation, the proposed framework allows different maintenance periods for different maintenance services and, thus, saves up to 5% of a node's battery capacity. [PERSON] _et al._[32] propose a dependency constraint-directed self-healing framework to allow users to compose self-healing services. The framework includes three components: health monitoring, self-healing policy and self-healing engine. The health monitor is implemented to collect the health state information at system execution time, such as battery level, link quality and end-to-end delay. The self-healing policy, which is usually specified by the application designer, is not discussed in this paper. The self-healing engine includes a set of run-time invocation routines embedded in the main loop of the application. When an automated reconfiguration cannot heal the network, physical maintenance is required. In [33], [PERSON] _et al._ propose node-replacement policies to maintain a minimum threshold coverage and maximise the network lifetime using a fixed amount of replacement nodes. The policies determine if a failed node in the network is important enough to be replaced by calculating the weight of the failed node based on a specific parameter. If the weight of a failed node is greater than the policy threshold, the failed node is replaced. Otherwise, it is ignored. The parameters are the cumulative reduction in area of sensing coverage, the energy increase per node, the local reduction in area of the sensing coverage and the hybrid of the three parameters with different weights. With up to 10% coverage degradation, the results show that the hybrid policy improves the network lifetime by up to 90% compared to the no-replacement policy and up to 23% compared to the simple first-fail-first-replace policy. The betweenness centrality of a node is the sum of the probability that the node falls on a randomly-selected shortest path between all pairs of nodes in a network. According to [PERSON] _et al._ in [34], when nodes with high betweenness centrality die, the number of hops between any two nodes in a network becomes greater. This happens because the high betweenness nodes are on a high fraction of shortest paths among other nodes in the network. The concept of betweenness centrality can be used for routing purposes, where routing paths can bypass nodes with high centrality to preserve their energy. For the maintenance point of view, the locations of nodes with high centrality can be used to deploy redundant nodes as backups. Therefore, when nodes with high centrality die, the redundant nodes can be activated to replace the dead nodes. The use of centrality to analyse network robustness and deploy relay nodes has been proposed in [25].