# Integrated Evaluation of Reliability and Power Consumption of Wireless Sensor Networks
## 5 Tooling  
The tooling EDEN, available at [[https://github.com/sensor2](https://github.com/sensor2) model-group]([https://github.com/sensor2](https://github.com/sensor2) model-group) (_Evaluation and Development Environment for wireless sensor Networks_) was designed and fully implemented to support the methodology presented in Section 3. EDEN is composed by four main components, namely _Editor_, _Translator_, _Evaluator_ and _Manager_. _Editor_ is a Web application used to develop the nesC code and design the network. It has two key features that help developers to improve the power consumption of WSNs: it suggests improvements to the nesC code reduce the power consumption; and it allows the developer to analyse, among many WSN configurations, which is the best configuration of the WSN. _Translator_ generates power consumption and reliability models from the application source code and the defined network design. _Evaluator_ is responsible for assessing the models created by _Translator_. Finally, _Manager_ controls the entire process of the WSN evaluation by coordinating the tools. In other words, the _Editor_, _Translator_ and _Evaluator_ do not communicate directly with each other. They communicate only with the _Manager_. In this way, this strategy makes the architecture scalable and distributed, allowing EDEN to support multiple instances of the same tool simultaneously. Figure 13 shows the architecture of EDEN. The _Editor_ is composed by three components: _File Manger_ is responsible for creating, reading, updating and deleting nesC applications; _Suggestion Proponent_ gives suggestions on how to improve the power consumption of WSN applications (see Table 1); and _Sensitivity Analyser_ is responsible for the sensitive analysis (see Section 2.3). Figure 13: EDEN Architecture. Regarding to _Sensitivity Analyser_, the developer must define which parameters (e.g., energy level, packet size) need to be evaluated. The network design is created and evaluated automatically, using the same sequence presented previously. After evaluating all network designs, the user decides which configuration has the best result (power consumption and/or reliability) according to the WSN planning. For example, the user may prefer that the WSN needs to have better power consumption than reliability. The _Translator_ has a repository (_Repository_) to storage the basic models (see Figure 3) and two components to create the CPN and RBD models, namely _Power Consumption Model Generator_ e _Reliability Model Generator_. The _Evaluator_ has two components (_Power Consumption Evaluator_ and _Reliability Evaluator_) to evaluate the models created by the _Translator_, and one component (_Report Generator_) to generate the reports with the simulation results. Finally, the _Manager_ has the component _Evaluate Manager_ to control the evaluation process; and _Lifecycle Manager_, to control the instances of the tools. Figure 13 also shows a sequence of steps from the design to evaluation of the WSN. The developer only interacts with the _Editor_ which is a Graphical User Interface (GUI). Through this interface, the user designs and creates the WSN applications and network design. While the user develops the WSN (application or network), the _Editor_ proposes suggestions for improving the power consumption of the WSN. After implementing the application and the network design, the user can evaluate the WSN power consumption and reliability using the _Manager_ (Step 1). It receives the WSN project (application and/or network design) and forwards it to the _Translator_ (Step 2), which converts the application and the network into CPN (power consumption) and RBD (reliability) models. When _Translator_ concludes the translation process, it notifies _Manager_ (Step 3) that receives the models created and forwards it to _Evaluator_ (Step 4). Similarly, after concluding its task, _Evaluator_ creates the reports and notifies _Manager_ (Step 5).