Thursday, February 3, 2011

Context Aware Computing

Imagine a mobile device which tells you nearest restaurant when you feel hungry, which tells you who are the friends nearby when you travel, which tells you latest sport news of your interest, which tell you great places to visit when you are on a trip, which tells you about good shopping places nearby, which shows a parking lot when you are looking for parking slot.

Imagine a conference room which sends reminders to participants about meeting, which download the slides for the presenter, which turn on the projector on time, which find external information about the topic being discussed.

Imagine a vehicle which alarm driver when they about to pass dangerous area, which alarm when driver feel sleepy, which warn when driver is drunk.

Imagine a world where systems being proactively behave according to the CONTEXT. This is the ultimate goal of context aware computing research.

I recently read about context aware computing, its application and its challenges. This is a summarization of my recent study. I would like to decompose my discussion into few sub topics, namely definition, factors, applications, modeling and reasoning.

Definition


What is the definition of context?
Following are some of definitions I found:
• The interrelated conditions in which something exists or occurs
• Information that can be used to characterize the situation of an entity. An entity is a person, place or object that is considered relevant to the interaction between a user and an application, including the user and application themselves.
• Context is any information that can be used to characterize the situation of person or computing entity.

I rather like to introduce context as identified status about environment/occasion/event depending on the known facts.

What is context aware computing?
Context aware computing is a relatively old computing paradigm where people try to invent computing systems which adapts/responds according to situation.

Factors
There are several major factors that help to understand certain environment/occasion/event. Some of them are,
• Location
• Time
• Nearby resources
• Motion
• Noise
• Identity
• Activity
• Connectivity/bandwidth
• Vibration
• Gestures

Even though we see these are the major factors that we use to understand certain situation, we always use our knowledge about these situations implicitly to understand what is going on.

Applications
Before talking about the technical aspects of the context aware computing, I would like to discuss about some interesting applications. Following are some application that researches developed as prototypes.

Easymeeting room : A meeting room that understands meeting and remind its participants, provide resources to the meeting proactively.
University navigation system : A navigation system which assist new students to explore the university(students will be provided with information about the location they passby).
Context aware mobile phone : A mobile phone which provide location based services and user profile based services.
Shopping assistant: Guide user to shopping places where he/she find interesting stuff.
Software Engineering environment : Assign task according to the complexity, skills of engineers and availability.
Parking lot: Assist user to find free parking lot when user looking for parking slot

Apart from these there are vast number of context aware applications we can think of.

Now let’s talk about the technology behind these applications.
Context Modeling

We should be able to represent the knowledge about context in a manner in which an automated system can understand. This is a major challenge in context aware computing as well as many other computing paradigms. People use different strategies represent context, namely,
• Key/value pairs
• Tagged encoding
• XML
• Object oriented
• Logic based model
• Entity relationship model
• Ontology

But none of these are totally successful in general. Each of this modeling technique has its own advantages and disadvantages. Most interesting and successful applications were used ontology as context modeling technique.

Context Reasoning
Finally in order to provide context based services, automated system should be able to understand the situation by using provided facts. So reasoning is the core functionality in context aware systems. People use rule based systems and inference engines to reason about certain situation. But still with the limitation or the resources in the environment (context aware systems are highly deployed in mobile devices where processing power is very limited) these are not scale well. So scalability is main challenge in context reasoning.

Apart from these major technical areas people talk about hardware components which are capable of sensing the changes in environment, architectural issues in context aware computing and finally security and privacy issues. Although context aware computing is relatively old research area, still there is no ‘killer application’ which realizes the context aware computing.


References:
Merriam-Webster’s Collegiate Dictionary
Towards better understanding of context and context awareness (Anind K. Dey, Gregory D. Abword)
A Survey of Context-Aware Mobile Computing Research (Guanling chen, David Kotz)
Semantic web in a pervasive context-aware architecture(Harry Chen, Tim Finin, Anupam Joshi)
Ontology based context modeling and reasoning using OWL(Xiao Hang Wang, Tao Gu, Da Qing Zhang, Hung Keng Pung)
Context-Aware Computing: A Test Case (Jenna Burrell, Geri K Gay, Kiyo Kubo, Nick Farina)
Leveraging Semantic web computing for Context-Aware software engineering environments (Roy Oberhauser)