论文部分内容阅读
软件版本演化在软件系统的整个生命周期占有重要地位,帮助软件开发维护人员全面理解和把握整个软件产品的演化过程,辅助进行软件维护决策及维护活动实施,对于大规模、复杂软件系统具有重要意义。特别是对于一些文档缺失、维护过程管理不规范的软件产品,维护人员所面临的工作量繁杂,信息量往往很大,无条理且难于把握。那么,软件演化分析与信息抽取归纳就显得更为重要了。另外,软件维护过程中也存在着不一致演化问题。大部分软件包括服务提供方都会由于功能更新、错误修复等在不断的演化过程中,而服务使用方在自身的演化过程中也需要适应服务提供方的演化更新。使用方需要花费很大的代价进行同步演化,因此理解软件演化以及不一致演化等问题,可以为大规模、复杂软件维护及同步演化提供支持。针对软件演化分析问题,本文首先对不同版本的软件系统代码抽取抽象语法树信息,建立实现模型,使用语法语义相结合的方式对静态实现模型映射并比较差异得到变更信息。已有的实现模型比较方法往往忽略了代码内部的控制流代码块等信息,而本文对这些信息做了抽取,并在进行演化分析和归纳时体现出了控制流代码块变更信息的优势。然后基于对同一软件不同版本的静态模型恢复与比较所得到的变更信息,使用抽象聚合分析的方法对版本演化时发生的变更作进一步分析与归纳,得到抽象的规则和聚合的关联关系,减少展示给开发人员的信息量,提供可以在宏观上帮助软件开发维护人员理解软件演化的信息。其次,现有的同步演化工作通常将应用程序演化与数据库演化分开,本文提出一个处理应用程序与数据库同步演化的方法,基于模型恢复与比较的信息,使用一个在应用程序与数据库之间的适配层来处理可能出现失配的一些情况,减少开发人员在应用程序与数据库同步演化过程中的重复劳动,提供自动适配。由于方法框架内各模块之间松耦合,采用数据流交互,未来可以通过对各模块的功能上进行优化和扩展,使该方法的功能更加完善。最后,为了验证本文方法的有效性和实际意义,分别做了演化分析实验和同步演化实验,最终的实验结果表明本文的演化分析方法的确可以通过对大量变更信息的抽象归纳,形成抽象更有意义的规则信息,提供给相关人员额外的关联信息帮助人理解版本演化,另外同步演化实验表明本文提出的同步演化方法在适用性和效率上都可以很好的满足用户的需求,具有实际意义。