FOSD 2014 Meeting

This last week I was in Schloß Dagstuhl, Germany for the annual Feature-Oriented Software Development (FOSD) 2014 Meeting. This meeting is an event to help young and aspiring research to exchange their work, ideas, and learn about others in the FOSD community.

For me, as the submission of my PhD thesis draws closer, I wanted to present the work that I have been carrying out since the Conference on Generative Programming: Concepts and Experiences (GPCE) 2013, in Indianapolis. This work included information on our extension to allow for runtime GUI adaptation, and also scalability data of the approach.

Schloß Dagstuhl

Schloß Dagstuhl

Schloß Dagstuhl is a wonderful centre for Computer Science, close to the small town of Wadern. It provides a unique atmosphere for Computer Science and Informatics researchers to present and discuss their research in seminars. Only a 5 minute walk away is the remains of the old Dagstuhl Fort. This fort provides a absolutely stunning view of the surrounding area as it exists on the top of hill. What also makes the complex unique is its reliance on trust. For example, none of the accommodation rooms have keys, and can only be locked from the inside. Also, the general available of food/alcohol, with the only requirement that you keep track of what you have, which you then pay for at the end of your stay.

FOSD 2014 Group Photo

FOSD 2014 Group Photo (myself in the middle)

The different talks from everyone at the event were fascinating. There were a range of different FOSD work being presented from testing and verification, analysis of current large SPLs e.g. the Linux Kernel, best practices in FOSD software engineering (Code Smells) etc. For me, it was interesting to be presenting my work on handling the Graphical User Interface in Dynamic Software Product Lines, and see what the community thought of my approach. During the event, I also had the time to discuss other research ideas in the field I’ve had for a while, and I was given some great ideas from people about where I can look for related work. It was just great to be able to discuss my ideas with Christian Kästner, Sven Apel, Martin Erwig, and Norbert Siegmund to just name a few. These conversations were often not during the actual sessions but during dinner, and social events in the evenings. To be honest, I expected I would spend some time alone at night doing work, but there was really never any time, which made the event even more special.

Lastly, as part of the FOSD meetings, there is a competition for the Coolest Tool Name. This was inspired by the Top Gear Cool Wall, and gives us researchers a reason to think of a really cool name for our tools. For the competition I entered my DSPL middleware, which I have named FeatureDroid. The reason why I have called it FeatureDroid is that it fits with two common naming conventions. The first is that often in FOSD tools, the tool names often start with the prefix “Feature”. Also, software designed for the Android mobile platform often end with the suffix “Droid”. So, for me, it seemed a nobrainer to call my middleware “FeatureDroid”. At least from the votes I saw before I left the event it looked like many people thought it was a cool name. Sadly, I didn’t win, but Tassio Vale from Brazil with his tool name SPLice (Software Product Line Integrated Construction Environment) won, justifiably (I voted for it also).

One of the best things I feel I got from FOSD is the increased ties with all the great researchers in my field. I hope this will in time lead to more research cooperation, and hopefully a greater involvement with the FOSD community. I thank the event organisers (Sandro Schulze, Christian Kästner, and Sven Apel) for inviting me, and I look forward to hopefully going to FOSD 2015!

An Openssource Context Engine for Android : The Concepts

Smart phones in recent years have seen high proliferation, allowing more users to stay productive while away from the desktop. This proliferation has seen the increasing amount of mobile applications being developed and becoming available to consumers through centralised application repositories. It has become highly predictable for these devices to have an array of sensors including GPS, accelerometers, digital compass, proximity sensors, sound etc.

Using these sensors with other equipment already found in phones, a wide set of contextual information can be acquired. This contextual information is consumed by context-aware mobile applications. Context aware applications have been described to be intelligent applications that can monitor the user’s context and, in case of changes in this context, consequently adapt their behaviour in order to satisfy the user’s current needs or anticipate the user’s intentions.

Within this article, I will introduce an openssource engine for context acquisition and composition for Android. This engine is primarily intended to be used in two cases:

  1. Packaged with your application, adding your own context components
  2. Packages outside your application, using the engine with your application(s)
Engine Usage

Engine Usage

Ideally, we hope this engine can turn-into a globally used engine that is used by several applications on the device, leading to more efficient resource handling, preserving precious battery power.

Essentially within the engine context types are contained within their own Component. A Component can be seen as an encapsulation of constants, and methods for acquiring & reasoning that context value from the sensor/data resource.

Component Class

Component Class

Where this gets interesting is, in many situations a context wont be based on a single point or single component, but more based on the composition of many contexts. Because of this, its quickly foreseeable that many contexts will be used in more than one Composite context. With this, and the increasing interest to incorporate context-awareness into mobile applications, its important to manage this carefully to prevent wasteful use of resources.

How our engine attempts to help this issue is to work with context tree structures, in which context changes for individual contexts are broadcasted up the tree to the level above for reasoning and so on. These contexts should not need to know who is listening/requesting the context changes, but just broadcast its state on context change and carry on. Using this approach we aim to make contexts completely self contained and generic.

To help explain this tree structure, we can consider the following Composite context:

Example Context

Example Context

In the Connection Composite, there is a Data Sync Composite, which uses the Wifi and 3G context, and the Battery Context. If there is a change in the Wifi or 3G contexts, the Data Sync context receives the broadcast and then checks its own state. If its state has changed, then it then broadcasts its state, which is then received by the Connection context.

These contexts are then listened to by the application, which then can define its different adaptation logic.

Because of this approach, we need not implement Composite Components for each composition, but instead just define this context composition and let the engine do the work, allowing the engine to be more dynamic in its use.

For more details, please see our paper:

Kramer, D., Kocurova, A., Oussena, S., Clark, T., Komisarczuk, P. (2011) An extensible, self contained, layered approach to context acquisitionIn the Proceedings of the 3nd International Workshop on Middleware for Pervasive Mobile and Embedded Computing.

This software is licensed using the Apache License. Please see for upto date information of where the source is hosted.

Ready for summer

I would like to firstly start by apologising for the extended silence, as I have been very busy, involved in many different activities and procrastinating like normal. Baring this in mind, I thought that perhaps the beginning of summer holidays (for most of us) may be an appropriate time for such an update.

I guess it is probably good to start on an academic front. Right….Well since March I completed the compulsory PGCert in Research, which I completed with merit. The main purpose of the course is to prepare you for research with the main assignments consisting of literature reviews and a PhD project proposal. With the feedback I receive back, I hope to adjust and polish my PhD proposal ready for the university research council this fall.

To help try and get feedback from the wider community of experts, I’ve submitted for two doctoral symposiums. The first is at Models ’10, which I’m not overly confident about as I found out rather last minute ending in a slightly rushed piece. The second is at SLE (Software Language Engineering) ’10, which I am more confident about as I had more time to add more content and polish the paper.If I am lucky enough to attend one/both symposiums I will put up the paper (aslong as I’m not breaching some sort of copyright issue).

Other work that I’ve been upto lately also include setting a new server we bought for our research group! This server is a beast, touting two quad core Xeon processor and 64 GB of ram! My current task is start consolidating some of our existing servers into this machine using virtualisation. By the use of virtualisation, you can run many “virtual machines” which work almost as independent machines. This has many benefits including much better equipment (processing, memory and storage) utilisation and lower cost of ownership and running.

Now non-work related stuff, my life has been slightly up and down. Recently, my mother was diagnosed with ovarian cancer. I’m happy to say that currently she has undergone a big operation to hopefully remove the tumour and any tissue which it may directly spread to, and hope she is lucky enough for it to have not spread to other parts of her body. This information though wont get to us for a few weeks. I do thank people (family and close friends) for the support and lovely messages

Hope in a week I will update you on more development stuff that I’ve been involved in

Until next time!

Close to beginning the PhD

Hi guys! Lately I’ve been working on the mobsventures Slenky project still, which is progressing as expected. I’m beginning to work on a Videos module for Elgg which will hopefully be able to integrate with the British Telecom MOSAIC Platform. This I think will be a difficult task, but hey if it was easy to do, why do it?

Anyhow for the minute I’m aiming to get the Elgg part of it working hopefully within the next few weeks. The plan is to be able to simulate what MOSAIC will do and get it working to our assumption, as I’ve yet to receive an APi document from them, which as you could imagine doesn’t help me out much…

Though over than that, I’m nearly closer to beginning my PhD, which I’m really having mixed feels about, mostly excitement but also feeling nervous about my ability to complete it in the typical 3 year time scale which I have funding for. Probably when I start doing the PhD I will be blogging more about my findings, readings and any discussion in the area that I eventually chose to take. I do suspect that the area that I will be focusing on will be Domain Specific Modeling Languages and accessibility with the visual impaired and/or deaf. I’ve already started talking with my preliminary supervisor Prof. Tony Clark about the direction I could take and about supervising my MSc project which I will have to undertake next year (part time, concurrently). For my MSc project Tony suggested I look into working with DSLs in the context of web and accessibility which could be a good start for looking into mobile accessibility for the PhD.

Anyhow for my Research Methods lessons I have a critical review of a research paper which I have to complete for next friday, which I will be reviewing:

Karsai, G., Krahn, H., Pinkernell, C., Rumpe, B., Schindler, M., Völkel, S. (2009) ‘Design Guidelines for Domain Specific Languages’, The 9th OOPSLA Workshop on Domain-Specific Modeling, Orlando Florida, USA 25-26 October 2009

So for now at least just need to start doing some background reading on the area, then probably a good start to research on the credentials of the authors. Anyhow until next time!