Pages

Tuesday, January 17, 2006

Context-Aware Services

Barry Briggs (Microsoft) and Ali Arsanjani (IBM) have both offered interesting improvements on the standard example of location-based services

your phone that rings when you walk past a restaurant

AND it is lunchtime

AND this restaurant has submitted the highest bid for the marketing opportunity

But context can get much more personalized than this.

Of course my cellphone knows my current location and the generic time "near lunchtime". (Aside to Ali: I never said it didn't.) But there's a lot of other relevant stuff my cellphone could usefully know. For example, it may know what time I usually have lunch and what I had for lunch yesterday (easy if it links to the way I paid for that lunch); it may know which friends or colleagues I'm with (thanks Bluetooth); and it may know that I've just got off a plane from Hong Kong (affecting both my body clock and my food preferences).

And of course my cellphone has detailed knowledge of my social network. Like a discreet servant, it overhears the word "lunch" in a conversation with my brother-in-law and makes a contextually relevant suggestion.

Context-awareness is not fixed - we should always be open to learning (and exploiting) new fragments of context. When designing context-aware services, we generally try to decouple the context-awareness from the underlying capability, in order to maintain adaptability and openness. (This follows the architectural principle of putting elements with a different pace of change into separate layers.)

Once you arrive in the restaurant, what happens to the context that was used to tempt you inside? Perhaps the waiter or the cook also have some access to this context, which helps them match the experience to your expectations - for example, whether you are in a hurry, whether it's a special occasion, or whatever. (This is another reason for decoupling the context - it may then be reused by other services.)

What about privacy? You might want the waiter to know it's your birthday, but not how old you are. This means we must decouple context from identity, and also decompose context into an appropriate level of granularity. My phone publishes only those aspects of context that I permit; and the restaurant subscribes only to those aspects of context to which it can meaningfully respond.

So this simple example has a lot of architectural implications for SOA.