{'fraction_non_alphanumeric': 0.018645121193287758, 'fraction_numerical': 0.001243008079552517, 'mean_word_length': 5.216216216216216, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A Framework for Developing Context-aware Systems

In ubiquitous computing the environment constraints are often regarded as static and software 
applications are allowed to function in a mobile ecospace. However, in context-aware 
systems the environment attributes of software applications are dynamically changing. This 
dynamism of contexts must be accounted for in order to provide the true intended effect 
on the application of services. Consequently, context-aware software applications should 
perceive their context in a continuous manner and seamlessly adapt to it. 
This thesis investigates the process of constructing context-aware applications and identifies 
the main challenges in this domain. The two principal requirements are (1) formally 
defining what context is and expressing the enclosed semantics, (2) formally defining dynamic 
compositions of adaptations and triggering their responses to changes in the environment 
context. 
This thesis proposes a component-based architecture for a Context-aware Framework 
that would be used to bring awareness capabilities into applications. Two languages are 
formally designed. One is to formally express situations, leading to a context reasoner, and 
another is to formally express workflow, leading to timely triggering of reactions and enforcing 
policies. With these formalisms and a component design that can be formalized, the 
thesis work fulfills a formal approach to construct context-aware applications. A proof-ofconcept 
case study is implemented to examine the expressiveness of the framework design 
and test its implementation.