Section: Software and Platforms
DiaSuite : a Development Environment for Sense/Compute/Control Applications
Participants : Charles Consel [correspondent] , Damien Martin-Guillerez, Milan Kabac, Paul Van Der Walt, Camille Manano, Adrien Carteron, Alexandre Spriet, Emilie Balland.
Despite much progress, developing a pervasive computing application remains a challenge because of a lack of conceptual frameworks and supporting tools. This challenge involves coping with heterogeneous devices, overcoming the intricacies of distributed systems technologies, working out an architecture for the application, encoding it in a program, writing specific code to test the application, and finally deploying it.
DiaSuite is a suite of tools covering the development life-cycle of a pervasive computing application:
Defining an application area. First, an expert defines a catalog of entities, whether hardware or software, that are specific to a target area. These entities serve as building blocks to develop applications in this area. They are gathered in a taxonomy definition, written in the taxonomy layer of the DiaSpec language.
Designing an application. Given a taxonomy, the architect can design and structure applications. To do so, the DiaSpec language provides an application design layer  . This layer is dedicated to an architectural pattern commonly used in the pervasive computing domain  . Describing the architecture application allows to further model a pervasive computing system, making explicit its functional decomposition.
Implementing an application. We leverage the taxonomy definition and the architecture description to provide dedicated support to both the entity and the application developers. This support takes the form of a Java programming framework, generated by the DiaGen compiler. The generated programming framework precisely guides the developer with respect to the taxonomy definition and the architecture description. It consists of high-level operations to discover entities and interact with both entities and application components. In doing so, it abstracts away from the underlying distributed technologies, providing further separation of concerns.
Testing an application.DiaGen generates a simulation support to test pervasive computing applications before their actual deployment. An application is simulated in the DiaSim tool, without requiring any code modification. DiaSim provides an editor to define simulation scenarios and a 2D-renderer to monitor the simulated application. Furthermore, simulated and actual entities can be mixed. This hybrid simulation enables an application to migrate incrementally to an actual environment.
Deploying a system. Finally, the system administrator deploys the pervasive computing system. To this end, a distributed systems technology is selected. We have developed a back-end that currently targets the following technologies: Web Services, RMI, SIP and OSGI. This targeting is transparent for the application code. The variety of these target technologies demonstrates that our development approach separates concerns into well-defined layers.
This development cycle is summarized in the Figure 2 .
See also the web page http://diasuite.inria.fr .
DiaSpec : a Domain-Specific Language for Networked Entities
The core of the DiaSuite development environment is the domain specific language called DiaSpec and its compiler DiaGen :
The Taxonomy Layer allows the declaration of entities that are relevant to the target application area. An entity consists of sensing capabilities, producing data, and actuating capabilities, providing actions. Accordingly, an entity description declares a data source for each one of its sensing capabilities. As well, an actuating capability corresponds to a set of method declarations. An entity declaration also includes attributes, characterizing properties of entity instances. Entity declarations are organized hierarchically allowing entity classes to inherit attributes, sources and actions. A taxonomy allows separation of concerns in that the expert can focus on the concerns of cataloging area-specific entities. The entity developer is concerned about mapping a taxonomical description into an actual entity, and the application developer concentrates on the application logic.
The Architecture Layer is based on an architectural pattern commonly used in the pervasive computing domain  . It consists of context components fueled by sensing entities. These components process gathered data to make them amenable to the application needs. Context data are then passed to controller components that trigger actions on entities. Using an architecture description enables the key components of an application to be identified, allowing their implementation to evolve with the requirements (e.g., varying light management implementations in a controller component to optimize energy consumption).
DiaGen is the DiaSpec compiler that performs both static and runtime verifications over DiaSpec declarations and produces a dedicated programming framework that guides and eases the implementation of components. The generated framework is independent of the underlying distributed technology. As of today, DiaGen supports multiple targets: Local, RMI, SIP, Web Services and OSGI.
DiaSim : a Parametrized Simulator for Pervasive Computing Applications
Pervasive computing applications involve both software and integration concerns. This situation is problematic for testing pervasive computing applications because it requires acquiring, testing and interfacing a variety of software and hardware entities. This process can rapidly become costly and time-consuming when the target environment involves many entities.
To ease the testing of pervasive applications, we are developing a simulator for pervasive computing applications: DiaSim . To cope with widely heterogeneous entities, DiaSim is parameterized with respect to a DiaSpec specification describing a target pervasive computing environment. This description is used to generate with DiaGen both a programming framework to develop the simulation logic and an emulation layer to execute applications. Furthermore, a simulation renderer is coupled to DiaSim to allow a simulated pervasive system to be visually monitored and debugged. The simulation renderer is illustrated in Figure 3 .