论文摘要
随着Internet的出现及普及、移动信息技术的发展,计算机软件运行的环境也开始从封闭、静态的环境逐步转换成一个开放、动态的环境中。环境对应用程序的影响越来越明显,尤其是在移动计算领域,随着移动计算设备的不断普及,环境信息对移动应用程序在与用户交互的方式和决策上有关键作用,涌现出大量基于地理位置等环境因素的应用。移动设备在移动性、便携性、及时性等方面具有明显的优势,随着移动设备处理能力的增强和传感器应用的增加,利用移动设备随时随地收集情境信息的可能性越来越大,以智能手机、PDA、平板电脑等移动设备为载体的情境感知应用越来越多,但是情境感知应用的开发还存在很多问题。在目前的解决方案中,常常采用传统的建模方法,将这样的环境因素通过分支判断语句分散并隐藏到应用的业务逻辑中,在应用程序中没有对环境因素的显式表达。然而随着越来越多的环境影响因子的产生以及他们之间复杂的逻辑关系,传统的方式已经不能适应当前的越来越复杂的情境感知应用程序的开发。首先,难以规范地对情境进行统一管理;其次,应用程序要频繁地因情境的变化,尤其是新出现的情境而重新修改代码;此外,业务逻辑与情境感知逻辑的紧耦合会导致代码难以复用,因此出现了面向情境的编程,通过将情境(Context)作为显式的编程元件,使得程序能够在运行时刻动态地获取周围的信息,并且根据这些信息作出合理的反应。基于该思想,本文在情境感知的编程方面的主要贡献如下:1)对目前学术界提出的流行的情境感知的定义,解决方案以及他们的原型系统进行比较,总结出面向情境的情境感知编程框架需要的公共模块,抽象出情境感知应用的通用设计模式。2)提出一个新的编程框架来支持情境感知应用程序的开发,支持对情境信息的定义,封装,发布,根据设定的规则以情境信息来驱动和约束应用程序的行为,使得开发情境感知的应用程序更加快捷,并且较易增强既有应用的情境感知能力。在该框架中还提出了解决自适应规则冲突的方法。3)给出了该框架的Java实现,为PC和Android上情境感知应用的运行提供执行环境,并开发了典型应用。通过一个典型的室内智能应用程序的例子来说明这个框架在情境感知应用开发中的使用,验证了框架的可行性、实用性和可移植性。此外,还为该框架实现了一个基于Eclipse集成开发环境的插件,以方便情境和情境感知规则的开发。