随着软件工程的规模逐步扩大、复杂程度逐渐提升,以及敏捷开发对效率和协作有了更高的要求,项目干系人如何及时全面发现软件开发过程中的问题,又如何快速高效地处理和反馈呢?
这些疑问对项目管理人员、质量人员以及开发、测试人员都带来了更大的挑战。基于此,对于一款看板工具而言,能否从更加全面的维度对软件质量进行实时客观衡量和趋势分析,并给出相关干系人明确的质量评级、清晰的问题指示和相应的建议方案,将使得管理和决策形成正反馈的闭环、达到流程持续优化的落地。
质量如何把控?
—工欲善其事,必先利其器
Squore是高效的看板管理工具,更是软件分析平台,能够支持众多第三方工具数据的导入并依据自身高效的数据挖掘能力对数据进行分类汇总,形成看板视图。Squore依托其强大的KPI评析引擎,将导入的各类数据(如源代码、需求、票据、动态测试覆盖率信息、静态代码扫描结果等)从克隆代码、代码复杂程度、标准合规性、代码覆盖率、问题密度、测试效率等多个维度中选取关联项进行衡量,最终确定当前软件工程的质量评级(见图2),从而使项目团队可以时刻掌握软件质量状态。
Squore关键绩效指标(KPI)
—海纳百川,有容乃大
1. 可自定义的测试策略
测试策略旨在帮助开发团队提高其软件项目的可靠性信心。Squore充分考虑到随着代码的体量和复杂度的增长,执行详尽的测试活动越来越困难。使用测试策略(见图3),可以降低代码的被测范围,并结合项目实际需求定义代码覆盖率期望。例如,通过圈复杂度 (VG)、嵌套级别 (LEVL)、非循环路径数 (NPAT)、词汇频率 (VOCF)、代码稳定性指数(SI)的阈值来确定被测函数,低于阈值的函数会被排除监测范围并且不影响KPI评级;通过自定义测试策略,可以使项目团队关注重点功能函数。
2. 技术债务评估
技术负债(Technical debt)于1992年由沃德·坎宁安首次提出,是指因为加速当前软件开发效率而忽视可维护性等质量特性,从而造成未来的额外开发负担。Squore依据ISO质量模型从可维护性、可靠性、效率、可测试性、易变性对软件进行度量并依据内置算法,对项目中发现的所有违约的修复成本以时间单位(人日)进行评估(见图4),同时依据迭代版本形成趋势分析图。项目干系人可通过技术债务的发展趋势进行指导干预,避免未来代码复用时出现高额的重构成本。
3. 代码规则合规性评估
规则合规性,表明项目开发团队遵循编码指南的程度。用户可以选用第三方静态代码分析工具(如德国的Axivion,或美国的QAC等),将测试结果导入Squore进行统计和报告。Squore考虑用户实际需求,为用户提供“放宽功能”:在Findings列表(见图5),选择相关违规具体问题进行备注说明、放宽该违规行为,同时该放宽条目将不再影响规则合规性KPI。
4. 代码复杂度评估
复杂度评估,旨在根据代码复杂性指标评估项目的风险。Squore依托HIS指标中如下标准(见图6),进行函数的复杂度判定。如果这些指标中至少有一半不符合预期阈值,则类或函数将被Squore判定是复杂的;同时,Squore也为用户开放HIS指标的阈值配置接口,便于用户根据项目实际情况进行复杂度判读。
在项目层面,Squore通过热点图的方式来区分函数的复杂程度便于用户的高效识别(见图7)。自上而下贯穿软件项目管理至函数代码实现层面,Squore提供该函数复杂程度的检测蛛网图以及函数控制流图,便于发现关键复杂点。
结合ISO 25010质量分解图,Squore还可以提高项目团队对自下而上、从单个函数至整体工程项目质量的把握程度(见图8)。
5. 覆盖率评估
覆盖率评估可以有效监督当前代码的覆盖测试情况。用户可以通过导入动态代码测试工具如VectorCAST覆盖率测试结果获得覆盖率统计视图(见图9),而Squore则会依据覆盖率完成的百分比来进行该项KPI评级。Squore可以给出项目层级的覆盖率统计结果,绿色为实现预期值的有效覆盖测试的函数占比,红色为覆盖率还未达到预期值的函数占比,灰色意味着该函数尚未开启任何类型的覆盖率测试。与此同时,Squore在函数层面根据具体覆盖率类型展示覆盖率测试情况,可有助于用户快速发现不足方面采取相应措施。ISO 26262对不同安全等级提出了不同类型覆盖率的测试要求,因此Squore也提供用户配置接口,可以自定义选择覆盖类型(如Statement、Branch或MCDC覆盖)并设置期望值。
6. 克隆代码评估
该指标旨在关注应该返工的代码,主要涉及架构设计和实现,其计算指标突出显示重复块和类似算法。
Squore的克隆代码评估汇总了有关文本复制和算法克隆的信息(基于控制流分析), 会区分克隆是来自程序代码组件内部还是外部(类似于其他组件)。内部克隆会关注组件本身是否设计良好,外部克隆关注组件之间的相似冗余性。
7. 函数违规密度评估
违规密度旨在突出代码中最违反规则的函数,密度由Squore内置严重性加权算法处理检测到的违规问题而获得。通过该指标可以优先发现具有关键问题的函数,或者有很多次要/主要问题的函数;而对于这些问题函数,项目团队应该重点关注,进行及时补救以提高代码质量。
Squore基于函数技术债务和它们的违规密度(按严重程度加权的问题密度)通过图形化的视图,突出显示所有函数的分布(见图11)。顶部区域的模块具有更高的技术债务,这意味着它们更难以维护;更大的模块意味着函数具有较多的问题,同时问题的严重程度通过颜色进行区分,气泡颜色的深浅显示组件内部问题的严重程度。
总 结
本文对Squore进行质量管理的部分关键绩效指标(KPI引擎)进行了介绍。如前文所述,Squore不仅可以通过强大的API接口与数据挖掘能力实现与众多主流测试、项目管理和需求工具的无缝衔接,呈现多样且直观的视图看板和报告,更能依托自带的KPI评析引擎对软件项目实现多维度的全面质量评估,确保软件在开发过程中能够满足相关质量标准和行业规范,实现产品最终的成功交付。
原文标题:基于KPI评析引擎的Squore软件质量管理
文章出处:【微信公众号:Vector维克多】欢迎添加关注!文章转载请注明出处。
责任编辑:pj
全部0条评论
快来发表一下你的评论吧 !