李 宁,袁亚南,关俊鹏
(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
GJB5000A四级的目标是将统计过程控制思想应用于软件项目管理中,以实现量化管理软件项目。其中,统计过程控制是基于统计过程,监控项目执行过程中的性能状态,识别项目执行过程中出现的偏差,分析产生偏差的原因,保证项目执行过程中的性能建立并保持在稳定水平,以保证项目质量和过程性能目标得到满足。
组织过程能力的目的是在历史数据的基础上建立组织的过程性能基线和过程性能模型,用于预测后续项目是否能够达到制定的质量目标,并根据过程性能基线和模型开展定量项目管理。过程能力由过程测量值(如工作量、周期时间、缺陷消除的有效性)和产品测量项(如可靠性、缺陷密度、容量、响应时间和成本)两方面来表示其特征。有关的过程能力模型可用于表示过去和现在的过程能力,并预测过程未来的结果。
对已有软件项目开展数据统计分类之前,需基于高成熟度过程实施框架,明确项目的质量和过程性能目标。本方案中,质量和过程性能目标围绕第三方软件测评的首次软件缺陷率开展,力求降低第三方软件测评首次软件缺陷率。
软件测评软件缺陷率由多个关键子过程确定,包括软件需求变更次数、单位规模评审工作量、系统开发人员单位规模工作量、系统开发人员平均技能、合格性测试单位规模用例数、合格性测试单位规模工作量、系统测试单位规模用例数、系统测试单位规模工作量等多类因素。
从产生/移除缺陷的角度来看,关键过程包括方案设计、方案评审、方案实现、需求变更、单元测试、系统测试、三方测评等多个方面。其中,方案设计、方案实现的过程均有缺陷的注入。通过鱼骨图分析找到影响缺陷密度高的主要原因,通过柏拉图进行分析,找出影响缺陷密度的最重要的几个关键原因。影响三方测评缺陷密度的原因有技术方法、资源、项目管理和开发工具等,需确定其中最关键的几个潜在原因。通过潜在失效模式与后果分析(FMEA:Failure Mode and Effects Analysis)方法,在项目方案设计阶段,对构成产品的各子系统、对影响产品质量的各个关键过程逐一进行分析,找出引起潜在失效模式的关键过程,分析这些潜在失效模式可能引起的后果,评估这些后果可能带来的风险,从而可以在找出的关键过程中预先采取解决方法,降低失效模式的发生概率,有效提高产品质量和可靠性。在FMEA分析的基础上,对影响三方测评缺陷密度的风险优先度做柏拉图分析,找出影响缺陷密度的少数最关键的潜在因素,本项目需重点考虑需求变更、软件开发人员技能和系统测试通过率三个方面的因素。
2.3.1 数据处理
本项目基于积累的项目过程数据进行收集,梳理出包含软件开发组成员、系统开发人员平均技能系数、开发周期(人天数)、代码行数、软件类型、软件需求变更次数、项目启动时间、系统测试用例数量、系统测试用例非预期数量、系统测试用例偏差数量、三方测评首轮静态测试软件问题数、三方测评首轮动态测试用例数/执行用例数/通过数/问题数、三方测评回归静态测试软件问题数、三方测评回归动态测试用例数/执行用例数/通过数/问题数等多个数据项目,基于这些数据推导出系统开发人员平均技能系数、系统测试通过率、系统测试首次缺陷率、软件千行缺陷数(静态和动态问题)、软件千行缺陷数(动态问题)等相关数据。其中,软件千行缺陷数由第三方测评首次测试问题数量和软件代码行数确定,依据动态测试中发现的问题数量获取;系统开发人员平均技能系数根据软件开发人员的技术职称与数量确定,高级工程师取1分,工程师取0.5分,助理工程师取0.1分;软件需求变更次数根据软件需求规格说明的版本变更确定;系统测试单位规模用例数由软件代码行数和系统测试用例确定;系统测试首次缺陷率所检开展系统测试时的缺陷率。
系统开发人员平均技能系数=(1.0×高级工程师人数+0.5×工程师人数+0.1×助理工程师人数)/(高级工程师人数+工程师人数+助理工程师人数)
系统测试通过率=(所检首轮测试用例数量-非预期数量-有偏差数量)/所检首轮测试用例数量
系统测试首次缺陷率=1-系统测试通过率
软件千行缺陷数(2类问题)=1000×(三方测评首轮静态测试软件问题数+三方测评首轮动态测试软件问题数)/代码行
软件千行缺陷数(动态问题)=1000×三方测评首轮动态测试软件问题)/代码行
2.3.2 数据分析与建模
利用Minitab工具开展多元线性回归分析,建立过程能力基线和过程能力模型如下。
系统开发人员平均技能系统基线上限为1.256,下限为0,均值为0.578。Ln(软件需求变更次数)基线上限为2.975,下限为0,均值为1.484。系统测试首次缺陷率基线上限为32.05%,下限度为0,均值为10.76%。建立第三方测试软件缺陷率与系统开发人员平均技能系数、软件需求变更次数、系统测试首次缺陷率多个参数之间的回归模型方程为:软件千行缺陷数=0.430-0.266系统开发人员平均技能系数-0.134Ln(软件需求变更次数)+1.06系统测试首次缺陷率。
方差分析结果中,F=98.76,P=0.00,说明系统开发人员平均技能系数、Ln软件需求变更次数、系统测试首次缺陷率与软件千行缺陷数之间有显著相关性,建立的回归模型方程是显著的。各个自变量的P值均小于0.05,说明每个自变量均具有显著意义。R-Sq(调整)=96.7%,说明该模型是合理的。本项目基于的历史数据有限,随着项目的开展、数据的积累,可以在更充分数据的支撑下重新建立过程性能基线和模型,对软件研制过程进行定量项目管理,提高软件质量。
GJB5000A四级中,通过对软件研制过程开展定量项目,确保实现对设定质量目标的控制。基于前期已有的项目数据,确定质量和过程绩效目标为第三方软件测评软件缺陷率,识别得出需求变更、软件开发人员技能和系统测试等关键子过程,对积累的数据进行分析、处理,从而建立了过程能力基线和过程能力模型,相关工作流程对项目量化管理具有一定的参考价值。