Reducing complexity in developing wireless sensor network systems using model-driven development

Abstract

Wireless Sensor Network (WSN) is a collection of small and low-powered gadgets called sensor nodes (motes), which are capable of sensing the environment, collecting and processing the sensed data, and communicating with each other to accomplish a specific task. Moreover, all sensed and processed data are finally handed over to a central gathering point called a base station (sink), where all collected data are stored and can be reviewed by the user. Most of the current methods concerning WSN development are application or platform-dependent; hence it is not a trivial task to reuse developed applications in another environment. Therefore, WSN application development is a challenging and complex task because of the low-level technical details and programming complexity. Furthermore, most WSN development projects are managed by software engineers, not application field experts or WSN end users. Consequently, WSN solutions are considered expensive, due to the amount of effort that has to be put into these projects. This research project aims to reduce the complexity in developing WSN applications, by abstracting the low-level technical and programming details for average developers and domain experts. In this research, we argue that reducing complexity can be achieved by defining a new Domain-Specific Language (DSL) as a new application development and programming abstraction, which supports multi-levels modelling (i.e. network, group, and node-level). The outcome of this work is the definition of a new language called SenNet, which is an open source DSL programming abstraction that enables application developers to concentrate on the high-level application logic rather than the low-level complex details. SenNet was developed using the principles of Model-Driven Development (MDD) and macro-programming. Developers can use SenNet as a high-level programming abstraction to auto-generate a ready-to-deploy single node nesC code for all sensor nodes that comprise the SenNet application. SenNet gives developers the flexibility they need by offering them a broad range of predefined monitoring tasks and activities, enabling developers to develop different application types such as Sense-Forward (SF), and Event-Triggered (ET); besides providing a set of node-level and in-network data processing tasks. The current SenNet version is configured to generate nesC code, yet SenNet can be set up to produce and generate any programming language such as Java, or C++, by reconfiguring the code generator to produce the new language format, without changing the language design and produced semantics. Various tests and user study have been used to evaluate SenNet’s usability and functional suitability. Evaluation results found that SenNet could save 88.45% of the LOC required to be programmed by a developer, and 87.14% of the required vocabularies. Furthermore, results showed that SenNet could save 92.86% and 96.47% of the program length and volume respectively. Most of the user study participants (96%) found SenNet to be usable and helps to achieve the required WSN application with reduced development effort. Moreover, 82% of the participants believe that SenNet is functionally suitable for WSN application development. Two real-world business case studies developed were used to assess SenNet’s appropriateness to develop WSN real applications, and how it can be used to develop applications related to data processing tasks. Based on the final evaluation results, it can be concluded that our research has been successful in introducing SenNet as a new abstraction to reduce complexity in the WSN application development process

    Similar works