论文部分内容阅读
随着网络和计算机技术的快速发展,用户需求呈现多样性和多变性趋势,软件的规模和复杂度也大幅提高,软件开发的生产率不能满足用户需求的快速增长,伴随而来的是软件成本越来越高,软件维护压力也日益增大,这是软件进化研究逐渐受到重视的一个主要驱动力。软件进化是指在软件生命周期内对软件行为进行变更的活动。从研究的内容和方向来看,软件进化已经走过了两个阶段:1.软件静态进化研究,即对软件进化的过程进行分析,为软件开发提供一定的指导性规律和辅助工具等;2.软件动态进化研究,即通过对软件开发语言和软件实现体系结构进行分析,提供支持软件动态变更的技术。但是,由于软件进化的技术本身往往会导致软件开发过程的复杂度提高,或者软件运行效率的降低,这样就使得技术的可用性降低。为了解决这个方面的问题,很多研究人员开始尝试通过人工智能等相关技术实现软件进化过程的自动化,本文把软件进化的智能化发展看作是软件进化研究的第三个阶段,即软件智能进化。软件智能进化的目标是通过需求工程、人工智能等方法来实现软件进化的自动化。本文构建了软件智能进化概念模型,并研究了该模型在实现过程中的部分关键问题,主要包括:(1)基于多版本冗余的思想,提出了一种支持容错的软件动态进化实现机制。软件动态进化是指在软件运行过程中对其行为进行变更的活动,包括软件系统组成部分的新增、更新和删除等。此外,在软件动态进化的实现过程中还面临着容错、状态冲突等相关问题。本文的动态进化实现机制包含了软件动态更新机制、容错机制,并通过时间戳机制解决了状态冲突问题。多版本共存的思想也为支持多样性需求提供了实现基础。(2)在领域特征模型的研究基础上,提出一种支持特征标注的需求模型。领域工程是为特定领域软件应用的开发建立可复用软件产品的活动,领域特征模型则是一种面向特征的领域需求模型,通过记录领域中相对稳定的特征以及特征之间的关联来反映整个领域的软件需求。本文的需求模型通过特征标注机制和特征调整机制实现了需求模型与应用模型的绑定和同步变化。(3)构建了版本选择组合优化问题的形式化模型,并对其进行求解。软件智能进化模型的智能决策部分主要为不同用户提供最优化的版本组合。在使用遗传算法对其进行求解的过程中,软件组件之间复杂的关联关系使得该问题的求解空间规模巨大,而且随着软件组件数量增加呈指数级增长,表现出严重的基因连锁问题。为了解决这个问题,基于软件系统本身的无标度特性,提出一种组合优化问题的改进算法,使得问题求解空间的规模得到明显下降,并通过实验验证了该方法的有效性。(4)构建了软件变更影响传播模型,为软件变更影响传播范围的预测提供了依据。在软件架构中,软件组件之间存在复杂的关联关系,这种复杂的关系导致软件的变更可能引起不可预知的灾难。软件变更影响分析通过分析软件资源信息为软件进化提供变更影响范围和软件进化的规模。本文对多个Java软件系统类调用关系进行了提取,对软件变更影响传播规律进行分析,并通过仿真实验验证了传播模型的有效性。