基于软件开发过程数据的可视化产品质量监控工具

作者:潘森;林云;彭鑫;赵文耘 刊名:计算机应用与软件 上传者:刘英胜

【摘要】软件产品的不断演化常常导致其质量的退化,从而增加后续维护和测试的难度。软件开发过程中实时的数据(比如,代码度量值以及bug数量等)反映了软件产品的状态变化趋势,通过这些数据可以了解软件质量的变化。然而,这些数据本身太过细节(比如,每个文件的某个代码度量值),仅仅反映这些细节数据并不能满足项目管理人员把握产品宏观变化趋势的要求。因此,提出一个基于软件开发过程数据的可视化质量监控工具,该工具不但能够基于版本库和bug库来计算每个版本的度量值以反映一个产品质量的实时变化趋势,同时,还建立缺陷预测模型,并提供数据间多维度的整合、关联、对比,来方便项目管理人员宏观地认识软件变化的各个方面。通过对一个大型开源项目的案例研究,验证了工具的有效性。结果表明,可视化产品质量监控工具能够有效地帮助项目管理人员及时发现潜在的隐患并定位问题原因。

全文阅读

0引言由于软件需求变化等原因引起的持续的软件演化经常会导致软件代码质量发生退化[1]。代码质量的退化体现在软件开发的各个方面,例如软件的可理解性变差、代码过于复杂使得修改代码变得困难以及耦合度过高使得代码变得难以测试。软件的退化使得开发人员在软件开发和维护时需要花更多的时间和精力,而完成的代码却更易出错。因此,为了减少软件维护过程中的成本,实时监控项目中软件代码质量的变化,并且快速定位导致软件退化的原因,对项目管理人员具有重大意义。在软件开发团队中,如果软件项目的规模比较大、复杂性比较高,仅仅依靠项目管理人员的经验来评估软件质量将变得不可行。因此,人们常常使用自动化的代码度量值分析工具来评估软件的质量。代码度量工具提供了一系列代码的静态度量指标(比如软件的内聚度、耦合度、方法长度等),可以从多个角度来客观地评价软件的内部质量。另一方面,通过使用版本库和bug库,项目管理人员可以通过软件开发过程中的历史数据(比如某一个文件的在历史上的更改频率、或者与某一个文件相关的开发人员信息)和项目出现的bug来了解开发活跃程度、代码责任人变更以及代码缺陷等信息。然而,仅仅依靠上述工具并不能很好地帮助项目管理人员在宏观上把握软件质量变化的趋势,也难以帮助他们快速定位引起软件退化的原因。首先,上述工具难以做到数据之间的关联和对比。历史上的版本变更往往需要关联到静态度量值之间的变化,同时,项目管理人员需要对比各代码度量值之间变化趋势分析软件中存在的问题。其次,项目管理人员难以从原始的、细节的信息中获取软件变化趋势的宏观信息。无论是代码度量值分析工具提供的度量值还是历史信息,过于庞杂的细节信息使得项目管理人员很难直接得到有意义的结论。因此,这些信息需要汇总、提炼和进一步抽象。最后,一些有意义的信息需要深度挖掘和分析。比如,通过对历史上bug出现的情况进行缺陷预测可以让开发人员关注更容易出错的代码,从而有助于测试工作。本文提出了一个基于软件开发过程数据的可视化产品监控工具,结合了历史信息和静态度量指标来帮助项目管理人员实时监控并发现软件代码质量的变化。同时,工具进一步对原始数据进行关联、整合和对比,从版本、开发者、模块等多维度展现软件产品的当前状态,由此能够帮助相应人员及时分析变化的原因。最后,该工具还展现了一些数据深度分析的结果(比如缺陷预测的结果),为软件的维护和测试工作的决策提供依据。1相关工作软件演化软件演化一直是软件工程领域比较重要的课题。文献[16]提出了一个结合需求实现与软件演化的可视化工具,用于发现演化模式。文献[14]提出了基于软件架构演化的一套度量值,并根据度量值研究了软件价格的连续演化和非连续演化的情况。文献[17]基于类级别和包级别的软件度量值变化研究了软件演化的可视性,和本文工作不同的是,文献[17]仅仅研究了度量值的变化,没有度量值以及bug的关联分析,以及bug的预测。文献[5]研究了4个开源项目,分析了它们的软件演化过程,提出开源项目的演化可以分为研究导向、实用导向和服务导向。文献[19]提出了一种基于版本间模块化差别分析的方法,监控软件产品设计的退化,并为软件决策提供有用的反馈。软件度量值软件产品度量值包括代码度量值和设计度量值。文献[9]验证了产品度量值与代码缺陷存在相关性。文献[10]提出了6个面向对象度量值(内聚度、耦合度等),文献[2,11]验证了这6个面向对象度量值不仅适用于开发项目,也在工业项目中有很好的表现。一些研究人员也提出了其他度量值,例如变更信息文献[13],从他们的结论中可以得知,这些过程度量值能够更好地建立更加适

参考文献

引证文献

问答

我要提问