软件系统网络化建模、质量度量与保证
软件开发活动中,质量问题层出不穷。例如软件功能没有满足用户的需求,软件 不健壮,由于低可靠性而引起的经常性失效,交付有缺陷的软件产品,需求不完整 亦或概念模糊等。多数情况下,软件产品问题发生原因是质量监控人员没有及时发 现问题并且修正,包括未对设计与需求进行评审或者评审方案不具备有效性,导致 开发过程中常常带着问题进入下一阶段的研发。因此需要花费更多的人力物力和时 间来纠正问题。因而,软件质量保证是解决上述问题的有效手段之一。
经过长期的研究和实际案例分析,虽然现有软件质量度量方法的有效性已经在 实践中得到了检验,它们依然存在着许多不足之处,如传统的方法侧重于微观层面 的统计,使得开发人员难以在较高层次分析和度量软件体系结构的全局特性;现有 的质量模型企图以单一模型广泛地应用于软件和信息系统的开发过程,但这与质量 本身的特征多样性相背离;软件质量模型设计的初衷没有考虑其在软件开发过程中 的应用场景,并未对软件开发中的特定活动提供相应支持。因此开发出一个操作性 强,具有较高应用价值且能够高效地发现质量隐患的模型仍是一个开发性的课题。本文围绕着软件质量模型构建、质量保证及质量改善开展工作,主要的研究内容包括:
(1) 针对现有的软件质量模型均以静态视角描述软件某单一维度结构特征的局 限性,本文从多粒度、多类型依赖关系及多功能剖面等角度出发,提出了多维度软 件网络模型。并结合概率风险分析理论评估软件设计的缺陷及软件模块的风险,借 助于多维度网络模型将软件系统映射为多功能剖面,使用故障树模型分析不同功能 剖面上节点的组合失效因果链,给出了一种基于故障树分析的可靠性度量方法。通 过实验分析,验证了上述方法可以有效检测软件高风险的关键节点,诠释了软件系 统拓扑结构因素与系统可靠性的相关性,可作为软件设计早期阶段确保软件设计质 量的指导准则。
(2) 在软件集成测试的场景之中,基于多维度软件网络模型,结合软件风险分析 方法提出了一种兼顾测试成本与测试效率的集成测试序列生成算法。利用成本收益。分析方法,在生成测试用例的过程中保证两条原则:一是为高风险的类赋予较高权 重,二是最小化测试桩复杂度。在此基础上,我们从构造测试桩的成本和测试序列 对软件系统运行风险的影响两个方面,提出了评估测试序列优劣的度量方案及针对 集成测试序列合理分配测试资源的方法。通过与现有算法的实验对比分析,证明了 所提出算法生成的类级集成测试序列,既能够保证风险因子高的节点优先被测试, 又降低了构造测试桩的总复杂度,有效地降低了测试代价。
(3) 将本文提出的软件质量模型应用于软件回归测试的场景之中,以保障软件产 品质量。在多维度软件网络模型基础上,结合可靠性度量方法提出了一种基于动态 反馈机制的自适应测试用例优先级排序技术。在计算测试用例优先级的过程中,利 用已经执行的测试用例对软件可靠性变化信息进行动态反馈,以不断更新系统的可 靠性数值,进而高效地定位到软件缺陷,提高故障检测效率。通过在不同的软件系 统的实验分析,验证了所提出的自适应优先级排序技术具有较高的稳定性,尤其对 于严重故障具有较强的检测能力,同时可以兼顾最大化软件系统的可靠性。
(4) 为了从软件体系结构的角度得到最佳的功能分布,基于多维度软件网络模型 提出了一种系统级别的自动化重构技术。将软件系统映射成多依赖关系类型网络和 方法级加权依赖网络,借助于前者我们完成了重构预处理操作,借助于后者我们利 用加权聚类算法,根据“高内聚、低耦合”原则对系统的模块进行重新划分。为了移除 非继承体系和继承体系内部由内聚和耦合性引起的代码坏味道,提出三种不同类型 的重构建议(包括搬移函数、搬移方法和提炼类重构的操作)。经过世界知名软件公司 软件质量评估专家的评估和验证,证明了自动化重构算法的有效性。