Context-awareness Development Framework
As part of the project activities we have refined and created a set of methods and tools to support the creation of context-aware systems. These are complex systems which so far do not have specific support, see Alegre et al. (2016). Amongst the benefits of adopting these guidelines are that we can ease the creation of more reliable context-aware systems, reduce the implementation time of context-aware features in the long term and they cover most common development stages.
The overall strategy for developing systems which was applied to POSEIDON is the User-centred Intelligent Environments Development Process (pictured below). The generic process was explained in Augusto (2014) and its application to POSEIDON was explained in Augusto et al. (2017).
Each stage can have its own specific methodologies and tools which can be combined and complemented in any way. We also refined specific methods and tools for requirements and design explained below.
Requirements Gathering Approach
This helps understanding and agreeing what is expected from the final product. Our method follows several stages outlined in Evans et al. (2014) and then extended by Alegre et al. (2016). The following picture captures the main steps of the process:
The forest of this section illustrates the process of identifying the contexts that matter and how to implement them. Stakeholders are identified and listed in the following table:
The following activity diagram shows typical activities involved in a bus journey:
The following table identifies different expected services by different stakeholders:
Then situation of interest are identified:
Then we need to identify what is required to detect those Situations of Interest when the real system is deployed and operative:
The methodological framework facilitates a more systematic analysis on all the contexts needed in a system, it support developers on thinking about contexts, encourages co-creation from early stages. This process is supported with tools which ease the information management and help tracing the relations between contexts at different stages of the development process:
We also used a methodological framework to guide developers into creating diagrammatic views of the system to help them visualize a solution and explore options. Again this was supported by tools which, as a side effect also facilitate the inclusion of other. The structural models created allows to define more specific elements like context variables, and to configure code generation: