DSLs for Ambient Assisted Living

The aging of our societies, due to the increasing life expectancy, poses a major challenge to their financial sustainability. Ambient assisted living (AAL) is one possible solution to this issue, by helping people to live longer independently, at home.

In spite of this enormous potential, the deployment of AAL services in real homes is still in its infancy. One of the reasons for that is that developing effective AAL services is difficult, because for each kind of service there is a great variety of needs to be addressed, depending on: the configuration of the home (ranging from small flats to houses on several floors), the user profile, their specific way to perform a routine, etc. It has been shown that closely matching each particular case is a key condition to achieve both acceptance of the technology by its users, and effectiveness.

For addressing this development difficulty, we are exploring domain-specific languages for defining AAL services. As a complement to the DiaSuite project, which targets infrastructure concerns, we target here the logic of the services, and in particular the context detection logic, which is the crucial part of any AAL service. These DSLs take into account our experience of implementing real ubiquitous applications in the HomeAssist500 large-scale deployment, using various existing technologies such as general programming languages (e.g. Java), automata and timed automata, complex event processing (CEP), and log scripting languages (Perl).

By translating this experience in a domain analysis, we were able to develop two DSLs for defining AAL services:

  • Maloya
  • Allen (see more)
These two language dramatically simplified the development of the second-generation AAL services in HomeAssist, by allowing them to be much more concise and easier to understand, as shown by several comparisons.
We continue research on these languages in several directions:
  • extensions: driven by practice, we will continue to add new operators for increasing the expressiveness of these languages, where needed
  • correctness: to improve the reliability of AAL services, we will attempt to prove the correctness of their implementations or parts thereof; this will also open the way to target safety-critical ambient services
  • usability: we will perform user evaluations to assess the readability of these languages by stakeholders other than developers, such as professional caregivers
  • tools: we will explore what kind of complementary tools may be helpful for easing even more the development of services, including helps for debugging or checking program properties.