论文部分内容阅读
随着移动智能设备和嵌入式控制器的广泛应用与普及,开发和设计上下文感知软件变成了日益迫切的需求。面向上下文编程(COP)方法在此背景下被提出,随后支持此类编程方法的编程语言也不断涌现。其中JCOP语言是一种较为典型的支持面向上下文编程的语言,在面向上下文编程方法的实践中发挥了重要的作用。然而,JCOP语言还存在如下主要问题:1)缺乏支持行为变体的组合定义能力,从而难以刻画一些由若干低层行为变化组合而成的高层行为变化;2)在多个行为变体组合激活时会出现行为变体重复编织的问题,从而导致不可预期的应用逻辑错误。为此,本文一方面从COP模型的角度提出了一个支持行为变体组合定义的COP扩展模型,并对JCOP语言进行了扩展实现;另一方面,提出了基于调用关系图适当注入监控语句的方法来避免行为变体组合激活中的重复编织问题。本文的主要贡献如下:1)提出了一个支持行为变体组合定义的COP扩展模型。在原有COP行为变体模型的基础上,提出了组合行为变体的概念,并给出了相应的组合行为层的激活、去活操作语义,从而较为方便地描述由低层行为变体组合而成的高层行为变体。2)提出一个支持组合行为变体的JCOP语言扩展实现。从语法和运行支撑两个方面扩展JCOP语言,增加了组合行为层定义语法并基于JastAdd实现了相应的编译器。另外,也实现了运行时刻的组合行为层激活和去活机制。3)提出了一种避免行为层组合激活时行为变体重复编织的处理方法。基于抽象语法树进行函数调用关系检测,从而判断两个行为变体对应的基本方法(base method)之间是否存在调用关系,并通过在有调用关系的行为变体对应语句中注入监控语句,来有效避免行为变体重复编织问题。4)基于上述改进的JCOP语言,在Lego火车控制原型系统的开发中进行了实践,初步验证了上述方法和技术的合理性与有效性。