Abstract:
Context Awareness which is an area of Pervasive Computing that enables a person to accomplish his day-to-day tasks by seamlessly interacting with the “smart” devices that embedded in the environment (smart space). In contrast to how a user interacts with a desktop computer or a mobile device using various input/output devices, Pervasive Computing paradigm acquires user’s context using sensors embedded in the surrounding environment, and identifies the actions the user would need to perform in a specific context. The Pervasive Computing application would then perform the required action on behalf of the user or it would give recommendations on the action the user would need to perform. are Because the number of smart devices are being produced and increased rapidly the demand for context awareness applications also increase, software developers can exploit the new computing paradigm to provide more innovative user-centered software solutions. However, the biggest obstacle for Context Awareness application development is its high complexity due to its broad technical areas (i.e. handling sensor imperfections, modelling smart environments, inferencing context, integrating with heterogenous systems or sensors, etc.) Hence software developers fail to provide quality context awareness applications that meet end-user requirements or fail to accurately identify context. Additionally, such software development increases project schedules, and could increase its bug rate. This research project addressed the above problems by developing a software framework that enables the software developers to develop their applications using the fundamental features of Context Awareness such as Context Acquisition, Context Processing and Context Presentation. Apart from its functionality this research project focused on enhancing the quality of the framework by introducing quality attributes such as extensibility (which enables the developers to address the problem of heterogeneity), portability (which enables toe developers to use the framework in various devices and platforms), and usability (which enables the framework more usable by the developers). From the technical perspective, the framework is based on the architecture of Sentient Object which this project aims to implement the architecture using a JavaScript technology stack. JavaScript enables to mitigate the problem of heterogeneity because the technology stack that will be used to develop the framework consist of Apache Cordova which enables to implement sensing mechanisms in a broad range of smart devices, and Node.js which enables to execute the context server in multiple platforms. One of the most prominent aspect of the framework is that when the framework is embedded in a JavaScript application, the framework can transform the application into a Sentient Object. A Sentient Object can acquire contextual information using sensors, model and processes the context using an inferencing engine, and to respond to context changes using actuators. Scalability can also be achieved through Sentient Objects which can separate contextual information capture from context processing using a context server approach.