Springe direkt zu Inhalt

Flow - A Software Factory for Wireless Sensor Networks

Projektlaufzeit:
01.08.2008 — 31.12.2011

Flow is a Software Factory for Wireless Sensors Networks (WSNs). Software Factories are model-driven development environments. Flow allows modeling of applications for WSNs with the help of a visual editor. Flow focuses on data-centric programming. The key component is the concept of a data flow that can be used to describe how data should be processed. Domain experts use a visual Domain-Specific Language (DSL) to define data flows and thus specify the behavior of nodes in the network. With Flow domain experts no longer need to develop or maintain native application code.


 

Current release: 1.5 (19.08.2011

Abstract


Wireless sensor networks (WSNs) are advertised with high sensing accuracy, long runtimes, and easy deployment. However, they are still not widely used in environmental research because of poor tool support and high complexity. A wide use of WSNs in field sciences would enable addressing scientific questions that are infeasible today. We designed and developed Flow – a solution that hides the complexity of embedded development and exposes a visual domain-specific language for describing WSN behavior.

The design of Flow was based on our experience gathered while developing the ScatterWeb WSN platform and from real world WSN deployments. We prototyped Flow for the resource constrained ScatterWeb WSN platform MSB-430 with 55kB flash memory and 5kB RAM.

 

Overview


Flow is a Software Factory for WSNs. Software Factories are model-driven development environments. Flow allows modeling of applications for WSNs with the help of a visual editor. Flow focuses on data-centric programming. The key component is the concept of a data flow that can be used to describe how data should be processed. Domain experts use a visual Domain-Specific Language (DSL) to define data flows and thus specify the behavior of nodes in the network. With Flow domain experts no longer need to develop or maintain native application code.

Data flows are automatically translated into native application code and compiled for the selected hardware platform. Flow generates interfaces to the Wireless Sensor Network for .NET based applications automatically.

Flow uses Microsoft Domain-Specific Language (DSL) Tools to provide custom visual designers and Microsoft Visual Studio 2010 as the Integrated Development Environment.

 

Data Flow
Figure 1: Sample Data Flow (click to enlarge)

 

Figure 1 is a simple data flow. The model could be created, read and modified by domain experts. The Trigger area describes conditions that have to be met for the data flow activation. Here, an event has to be raised by the Radio Frequency Identifiaciton (RFID) reader. The data flow area contains the specification of the data flow. In the presented model, the data from the sensor is stored in a record named RFID. The RFID record is then stored on the SD card and sent to the Logger Node via wireless link.

The blue RFID Tag shape is shown to present one of the features of Flow. The RFID Tag shape represents a .NET event that will be available in the generated extension for ScatterWeb .NET SDK.

The example above illustrates the achieved level of abstraction. Data flows could be easily created, read and modified by researchers with no experience in embedded development. In our opinion, the proposed solution has the potential to shorten the development cycles dramatically during WSNs deployments in field sciences.

 

Software Generation



After the design phase has been completed, Flow creates the native C application code and compiles it for the selected hardware platform.

Flow generates .NET libraries that extend the functionality of the ScatterWeb .NET SDK. The libraries can be used to build custom visualization and management tools. The automatically generated code handles the network discovery, gateway resolution, data communication and marshaling between the sensor network and the end user application running on a PC. Listing 1 shows the way of registering for the .NET RFID event from the example above.

     
(...)
node.RFID +=
  new EventHandler<SkomerIslandBoardNode.RFIDEventArgs> (node_RFID);
(...)
void node_RFID (object sender, SkomerIslandBoardNode.RFIDEventArgs e) {
  //e.Tag contains the detected RFID tag
  Console.WriteLine("RFID Tag detected: " + e.Tag);
}
  Listing 1: Registering for the .NET Event

 

Downloads


 

Flow can be downloaded in one single package. The contents:

  • Flow Platform is the core component of Flow. It needs to be installed prior to installing hardware descriptions.

  • Hardware description for the MSB430H Wireless Sensor Network platform.

  • Simulated Node Support (Hardware description for the simulated MSB430H. The installation contains a simulator. This download can be used if physical hardware can't be used)

 

Click here to download the Flow Installation Files (4MB).

Flow is an extension to Microsoft Visual Studio 2010 Professional.

 

Other downloads:

 

Relevant Publications and Downloads



  • T. Naumowicz, B. Schröter, J. Schiller. Poster Abstract: Prototyping a Software Factory for Wireless Sensor Networks. 7th ACM Conference on Embedded Networked Sensor Systems (SenSys 2009); Berkeley, USA, 4th-6th November, 2009.
  • T. Naumowicz, B. Schröter, J. Schiller. Demo Abstract: Software Factory for Wireless Sensor Networks. 6th European Conference on Wireless Sensor Networks (EWSN 2009); Cork, Ireland, 11th-13th February, 2009.
  • T. Naumowicz, B. Schröter, J. Schiller. Managing Data Flows with Flow: A Software Factory for Wireless Sensor Networks. Poster. Microsoft Academic Days 2008, Berlin, Germany, 19 November 2008.
  • B. Schröter. Software Factories for Embedded Systems: Design and Implementation of a Visual Domain Specific Language for Wireless Sensor Networks. Diploma thesis, Department of Mathematics and Computer Science, Freie Universität Berlin.
  • Flow for Visual Studio: website created as a part of the diploma thesis of Benjamin Schröter http://flow.irgendwie.net/en/home (maintained by Benjamin Schröter)
  • ScatterWeb .NET SDK 1.0


Acknowledgment



This work has been supported by the Computational Science Laboratory at Microsoft Research.



Contact: Tomasz Naumowicz