论文部分内容阅读
与传统软件系统所处的环境不同,Internet这一新的计算环境具有开放、动态、难控的特点。其上的软件在运行过程中经常面临用户需求和运行环境等要素的变化。要在这样的一种环境下良好工作,软件系统需能够在不中断运行的情况下进行动态演化,以适应运行时刻计算环境中网络、硬件设备、软件资源等的变化和用户需求的改变,尽可能地提高用户满意度。这种动态演化的需求使得基本的软件构造模型需从以“隐式为主的环境和静态为主的应变”为特征的经典模型逐步转变为以“显式化环境与动态化应变”为特征的网构软件环境驱动模型。如何构造这样一种开放的环境驱动软件模型,并在此模型下提供有效的动态演化支撑方法和保障机制已成为软件新技术所面临的一项重要挑战。本文在分析了经典软件演化机制和支撑方法的基础上,以软件体系结构为研究的切入点,提出面向开放环境的动态软件演化的模型和方法。首先,不同于传统软件力求稳定的体系结构设计,此类软件需要采用动态体系结构,支持在运行时刻规范地修改其体系结构配置以及时有效地应对变化;其次,这种新型软件系统需要具备实时收集用户的需求和环境的变化,尤其是非预期的变化的能力,并能迅速做出反应,通过可复用的驱动机制实施相应的演化策略;同时,软件系统的动态演化不能破坏系统的完整性和一致性,需要相应机制保障。针对这些问题,本文的主要工作如下:
⑴提出一个面向开放环境的动态软件演化的总体框架。该框架着眼于此类软件的“开放性”和“动态性”,对传统的构件/服务模型进行了扩展,通过引入显式的体系结构实体将构件/服务之间的协同交互解耦;为构件/服务增加上下文感知“方面”,提高构件/服务对环境的敏感性,以及根据环境变化而演化的敏捷程度。该抽象框架为下一步研究开放环境中运行时刻的软件演化奠定了基础。
⑵基于上述框架研究一种面向软件体系结构的动态演化方法,给出内置式软件体系结构的定义和实现。内置式软件体系结构使得原本隐含在系统实现中的软件体系结构在运行时刻成为可以操纵的实体,它和实现系统之间保持因果关联,通过反射计算实现软件系统预设和非预设的演化。此外,通过动态加载演化规则,可以进一步实现软件系统的自适应演化。内置式的软件体系结构实体能够充分利用面向对象语言中的类型、继承、多态等机制,为动态软件演化提供一种规范的方式。
⑶针对环境驱动的自适应演化,进一步给出环境上下文的定义、分类及描述方法和上下文感知应用的编程方法。给出用户需求和与软件运行、演化相关的各类环境上下文的描述方法,并将这些描述方法统一到RDF框架中,通过扩展的RDF元组为上下文冲突的消解提供额外信息并且给出相应的算法。在实现层,提出适合上下文感知应用的软件设计模式和体系结构风格以使上下文感知应用能够利用可复用的驱动机制进行动态演化,并且能够动态添加非预设的上下文信息及相关的自适应行为。
⑷对基于π演算的内置式软件体系结构的形式模型进行了探讨。首先基于π演算定义内置式软件体系结构中各组成元素的语义,通过实例介绍面向软件体系结构的动态演化方法的形式语义模型。同时对面向开放环境的软件系统的自适应演化进行形式化描述。
⑸设计并实现了面向软件体系结构的动态软件演化支撑环境ARTEMIS-ARC系统。该系统基于工业界广泛采用的Eclipse,Apache Axis和Jboss等平台,支持基于Web Service,EJB等规范的软件设计、开发和组装,并提供了包括图形化的开发界面、基于属性图文法的体系结构检查、代码生成、上下文监控等工具集以及设计运行时刻体系结构类的APIs。通过该支撑系统可以实现开放环境中软件的面向体系结构的动态演化。
⑹探讨面向软件体系结构的动态演化方法在开放环境中软件上的具体应用。通过两个具体的实例展示了面向软件体系结构的协同和动态演化方法、上下文感知等技术及其支撑系统在现实世界中的应用。针对这两个应用实例,分别展现了如何应用前述技术和平台进行Internet上增值服务的快速开发,以及由非功能性需求、功能性需求的变化和上下文变化所驱动的动态演化。通过这些应用的实践在一定程度上表明了面向软件体系结构的软件服务集成和动态演化方法及其支撑机制的可行性和有效性。