论文部分内容阅读
随着软件系统的演化,系统的模块化结构会逐渐偏离其最初设计,并且这种偏离的不断积累通常会降低软件的可维护性,损害软件的整体质量,甚至使软件更容易引入缺陷或错误,进而导致严重的软件灾难。因此,如何客观地评价软件系统的模块化质量,以及如何发现和改正软件模块化结构中可能存在的问题,已经成为一个非常重要的研究课题。本文讨论了持续监控软件系统模块化质量演化状况的方法,帮助项目管理者更及时、全面地掌握软件系统的演化现状,同时还探讨了分析软件模块重构风险的方法,该方法可以帮助维护者更具针对性地进行系统维护。观察软件模块结构的角度有很多,每个角度所关注的内容各不相同。不同模块化视图之间的一致性越高,往往预示软件的可维护性也更高。因此,软件演化过程中各种模块化视图之间的偏离程度,是估计软件模块化质量的重要线索。本文中我们考虑了三种模块化视图,即:包结构视图、语义聚类视图、以及结构聚类视图,并尝试通过比较各种模块化视图之间的差异,对软件模块化质量进行评估。通过采用基于分散度的方法可以分析系统中各个模块的重构风险。对演化中的软件系统进行持续的模块化质量评估,还可以尽早发现软件演化过程中可能存在的模块化质量问题,甚至预测软件模块化质量的演化趋势。为了验证本文方法的有效性,我们在三个开源软件项目的124个演化版本上进行了实验。通过与传统的模块度量方法进行比较,表明采用本文方法获得的重构风险预测结果与实际重构活动有较好的吻合度,从而证实了该方法的有效性。另外,我们通过使用历史演化数据重现软件的演化过程,以实际发生的演化行为和相关记录作为预测结果的评判标准,最终也证实了本文所提模块化质量监控方法和演化模式的合理性。