Context awareness is a key issue to take into account in modern applications; even more regarding ubiquitous computing environments that are gradually being more and more popular, These systems are characterized by human and environmental factors that should be kept in mind by developers.
Although there have been some advances in this field, they are based on software artefacts instead of context aware applications features. This thesis proposes the development of context aware systems based on their particular characteristics improving the analysis of this type of applications. Besides, based on these characteristics, this approach provides automatic code generation according to software features specification.
In order to describe these characteristics we propose an MDA based approach that defines a double layer set of models that provide developers with the ability to describe applications at different abstraction levels.
The first layer, known as the Analysis layer, describes system features apart from how they will be represented in terms of software characteristics. The second layer, which is known as the Information layer, describes the system characteristics exposed in the previous layer in terms of software features, providing information about how the system processes the information.
The development process begins with the description of the system characteristics and ends with the generation of a set of classes that represent the basic structure of the system implementation. To carry out this process, the description of the system in terms of its characteristics is defined by three DSLs in the Analysis layer. Each one provides the social, the space and behavioural complementary views of the system that are turned into models of the information layer through a model to model transformation process. On the other hand, to describe the software aspects of the system we add information to the models generated in the previous layer based on three new DSLs defined in the Information layer. Thus, each one provides the information flow, referential space and entity context complementary views of the system, from the software point of view.
Finally, these models are then turned into source code through a model to text transformation process that generates the basic structure of the system implementation. To perform this transformation we use a mapping that is generated through a new metamodel, and this way we go from the Platform Independent Model (PIM) to the Platform Specific Model (PSM). This thesis defines seven metamodels (three on each layer and the remaining one to describe the model to text transformation), two transformations (a model to model one, to feed the second layer with the information generated on the first layer; and a model to text transformation to generate the source code). Besides, it includes the implementation of a CASE tool to support the defined process. This tool is composed by a set of editing tools that allows the creation of the different models according to the metamodels defined before, and the transformations needed to go from one layer to the next throughout the development process.