一种基于SPC的软件过程质量分析方法 [1]
一个项目的开发活动是很多软件过程的集合,不同软件过程之间关联性很强,成功分析特定软件过程质量的关键是确保软件过程分析的独立性,剔除来自于其他过程的影响。传统 Shewhart 控制图基于统计假设检验理论,能够区分软件过程中的偶然因素和系统因素,但 Shewhart 控制图是全控图,无法区分过程之间的影响。为解决这种问题,定义软件过程的总质量和分质量,把系统因素细分为外部系统因素和内部系统因素,并总结软件过程质量诊断表,以使用控制图和选控图来帮助诊断导致软件过程质量异常的偏差源。
关键词 统计过程控制;控制图;软件过程
中图分类号  TP311
A Software Process Quality Analysis Method Based On SPC<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Abstract  Software development consists of many related software processes; the key of successfully analyzing the quality factors of a specific software process is to eliminate the effects from other processes. Traditional Shewhart control charts can only distinguish common causes from assignable causes, but it can’t be used to identify assignable causes from other processes. This paper defines Total Quality and Partial Quality of software development processes, divides assignable causes into process-inner assignable causes and process-outer assignable causes, and uses Shewhart control charts and Select Cause control charts to identify variation sources that result in software process variation. This paper summarizes a diagnosis table that helps to resolve every variation scenario of software process quality.
Key words  statistical process control; control charts; software processes

   引言

自从软件工业形成之后,如何确保在成本和时间限制下提交符合规范和客户需求的产品,像诸如制造业,化工产业等实现规模化生产始终是软件工业的重要课题。统计过程控制技术在其它工业的成功应用,使得人们逐渐认识到改善软件过程对改进软件产品质量的作用。软件行业也希望借助于统计过程控制技术实现产品质量管理方法从传统的事后检验和测试向缺陷预防系统的转变,实现对软件开发过程的实时监控,预测软件产品和软件过程的未来特征。
SW-CMM 、 CMMI 和 ISO9001:2000 等都体现出这种“过程控制”和“统计控制”的理念。 CMMI 4 级“定量管理级”要求建立质量和过程性能的定量目标,确定和纠正过程变异的特殊根源(异因,在 SPC 中也称为系统因素),防止未来再次发生这些变异。 CMMI 5 级“优化级”关注在增量和创新技术改进过程中过程性能的持续改进,确定、评估和改进导致过程变异的公共原因(偶因,也就是偶然因素),并规划和实施支持度量的组织过程改进活动 [1,2]
当前关于如何在软件行业中应用 SPC 技术的研究主要集中于如何应用传统的 Shewhart 控制图来控制软件开发过程的稳定性和过程能力 [5,6] 。传统的 Shewhart 控制图是全控图,只能区分偶然因素(软件过程内在的,难以消除的过程因素)和系统因素(软件过程外在的,应该及时消除的过程因素),无法把握和处理过程之间的相互作用,所以在复杂的软件开发全过程管理过程中, Shewhart 控制图只能用于评判软件开发的总体性能,其中涉及到各种子过程的相互作用 [3,4]
一个项目的成功交付涉及到很多复杂子过程,各个子过程之间有着错综复杂的关系,子过程之间相互影响,这种影响可能是正面的,也可能是负面的。在度量和分析具体软件过程的质量和性能指标时,必须注意区分不同类型的过程因素,过程因素对过程性能的影响,以及对不同过程因素的处理方式。在分析整体软件开发过程和具体子过程时,由于处理对象不同,不同过程因素所承担角色也不同,相应的处理方式也不同。

传统 Shewhart 控制图适合于处理和分析整个软件开发过程的性能和稳定性,所涉及到系统因素都是需要开发过程处理和消除的。但是在度量和分析特定一个软件过程时,传统 Shewhart 控制图是不合适的。比如,对于程序评审过程而言,针对缺陷率(缺陷数 /LOC )这个质量指标来说,按照传统 Shewhart 控制图,如果缺陷率单点落在 3 δ之外,就判定程序评审过程异常。但是缺陷率异常这个质量指标也有可能是其他输入过程异

常而引起的,比如单元测试不全面,测试用例覆盖率低等使得错误遗留到评审过程,导致评审过程的缺陷率高,而评审过程本身没有任何问题。
本文基于软件过程的瀑布模型定义软件过程的两种质量:总质量和分质量。把系统因素细分成“外部系统因素”和“内部系统因素”,并借助于张公绪提出的选控图 [3,4] 来实现两种系统因素的分离,提出在不同的过程参数异常情况下进行过程分析的分析表,以期摒弃外部系统因素对特定过程的影响,实现过程质量性能的独立分析和诊断。

   软件过程质量指标

对软件过程质量的改进围绕改善软件质量、提高生产效率和降低成本这三方面展开,在这三大类度量的基础上,又可划分为六类的度量:进度、资源和费用、稳定性、质量、开发性能、技术完备性。这六个方面是互相关联的 [7]
( 1 )进度,项目按照项目计划时间表的实施情况。进度信息既用于表示实际过程与计划过程的偏差,为过程控制提供依据,同时又用于表示过程发展的趋势,为过程可能遇到的问题或是潜在的问题作出预测。
( 2 )资源和费用,包括人力投入、费用和计算机资源。其中资源是表示建立项目开发环境所需资源,如主机、网络、机时等,在进行软件过程管理时关心计划使用资源与实际使用资源的比较,并基于度量数据动态调整项目的资源分配。
( 3 )稳定性,表示项目运作过程中的变更情况,包括程序大小变更、系统功能规模变更和软件过程变更三方面。用户需求变化直接引起系统功能规模的变更,从而使程序大小产生变更。软件过程稳定性表示过程特性的动态变化是在可控的范围之内,提高软件过程稳定性是通过减少造成过程偏差的系统原因,如员工素质低、没有适当的支持工具等。
( 4 )质量,表示软件产品和软件过程的质量因素,如表 1 所示。
( 5 )开发性能,表示组织的软件生产能力。包括组织的软件过程成熟度级别和软件生产能力。
( 6 )技术完备性,表示技术性因素对软件项目实施的影响。包括人员培训、开发的系统对计算机资源占用、新技术的影响及项目中实施新技术的程度。
表1 软件过程质量度量内容
度量类型
度量子类
度量元
进度
里程碑
项目里程碑日期
单元进度
需求的状态及变更请求状态
测试用例和覆盖测试的状态
软件问题报告的状态
迭代效率
每一次迭代形成的系统规模的增加
资源和费用
人员
人员投入的工作时间、人员技术经验和人员变更
花费
各工作单元及总项目的预算花费和实际花费
环境资源
计划资源与实际资源的数量和质量
稳定性
产品规模
程序代码行数、组件个数及数据库大小
功能规模
用户需求的规模及软件系统的功能点
过程稳定性
过程变更请求
质量
缺陷
缺陷数目、缺陷密度及软件失效间隔
复杂度
圈复杂度和算术复杂度
Rework
需进行Rework程序规模及所需投入的人员
SQA审核
过程活动中出现期望值与实际值不一致的频度
评审
分阶段评审结果和同级评审记录
开发性能
过程成熟度
过程所处的成熟度等级
生产力
产品规模和功能规模分别与人员投入的比率
技术完备性
计算机资源占用
CPUI/O内存、存储系统的资源占用和响应时间
技术性能
满足用户的功能需求和技术性能需求的程度
技术影响
可重用部件数目
培训
培训班数目、参加培训员工数及培训过程变更数

   两类变异

从过程偏差对软件过程质量的影响来分, Shewhart 定义两种影响软件过程质量的偏差源:
l         归因于现象的偏差源( common causes ),称作偶然因素。偶然因素对过程来说是自然和内在的,是由于过程分量(人、机器、原料、方法、环境)之间正常的或者内在的交互作用导致的性能偏差,是受控的偏差。这种偏差是随机的,不可能彻底消除,但在预定界限内变化。当过程稳定时,可以看到这种随机偏差都来源于偶然原因的恒定系统。可以对软件过程进行持续改进来尽量减轻这种偏差对过程质量的影响,这其实就是 CMMI 5 级的目标。
l         有可归属原因的偏差源( assignable causes ),称作系统因素。系统因素是可以,而且是应该消除的,是过程本身的一个或者多个分量发生突然或者永久性异常的结果,是非受控的偏差。当排除所有系统因素,并且使之不再发生时,就得到一个稳定的、可预测的过程,这就是 CMMI 4 级的目标。
传统 Shewhart 控制图的实质是区分偶然因素和系统因素所造成的过程波动,确定系统因素,并采取有效措施消除系统因素,使得过程处于受控的稳定过程。控制图的基本形式如图 1 所示,其中:
UCL=CL+3 δ
LCL=CL-3 δ
图1  控制图偏差
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
对于一个稳定的软件过程, Shewhart 根据经验认为 3 δ是合理的,这时漏掉系统因素的代价(漏警)和寻找不存在系统因素(误警)的代价是平衡的。Wheeler的经验规则3也说明这个问题:大约99%-100%的数据会处于平均值两边3δ单位距离内。不管过程质量指标的分布情况如何(正态分布、均匀分布、正交分布、指数分布、X2分布等),结果都是如此。在正态分布情况下,数据落在3δ界限外的概率是0.27%。根据小概率事件理论,如果质量指标值在3δ之外,很可能存在系统因素,需要进行排除,以使得数据稳定随机分布在3δ内。
在独立分析软件过程的质量和性能特征时, Shewhart 控制图和上述两种偏差源分类还是不够的。软件开发的很多不同过程之间是相互影响的,而 Shewhart 控制图是全控图,不能区分其他过程的异常对单个过程的影响,正如引言中例子所言,如果缺陷率异常,难以确定到底是程序评审过程本身的系统因素引起的,还是其他过程的异常带来的。因此,本文把系统因素进一步细分为外部系统因素和内部系统因素:
l         外部系统因素。能对目标软件过程的过程质量属性产生影响的其他过程的有可归属原因的偏差源,包括其他过程的系统因素和偶然因素。由于是非目标过程的偏差源,因此在分析目标过程的质量和性能指标时,需要剔除这种偏差源,实现目标过程分析的封闭性和独立性。
l         内部系统因素。是目标过程本身存在的有可归属原因的偏差源,是可以消除的非正常偏差,也是目标过程的改进重点。
只有真正区分这两种系统因素,才能对软件过程进行独立分析。如何区分这两种系统因素呢?本文使用张公绪 [3,4] 提出的选控图。选控图基本原理如图 2 所示。
图2  选控图原理
在正态分布情况下,假设目标过程的质量指标为 y, 存在 y~N( μ , δ ) ,。假设前序过程的质量指标 x 对 y 会产生影响。则一般有:μ =F(x) 和δ =G(x) 。
其中, F(x) 和 G(x) 可由回归算法、技术分析或者经验获得。由于存在 x 对 y 的影响,假设本过程质量指标 y 的分布是一个正态分布族,传统的休哈特控制图不适合。为了实现区分两种系统因素,对 y 应用标准变化,变换后的 y 标记为 ycs
其中 , 表示估计值。当样本足够大时,近似地有 ycs~N(0,1) ,这时,μ i=0, δ i=1 ,则 ycs 与 x 无关,从而实现了排除外部系统因素的目的。

   两种过程质量

软件开发活动涉及到很多子过程,每个子过程实现软件产品的一个工序,这些过程是相互关联的,比如引言中的例子。本文以常见的瀑布模型为基础进行分析,如图 3 所示,这是一个简化的软件开发流程图,并认为各个子过程是按照图示顺序执行的。在图 3 中,软件计划过程没有前序过程,此时软件开发过程体现出来的质量特征就是软件计划过程本身的质量性能特征。对于其他过程而言,其所表现出来的质量性能特征都是本过程以及所有相关联前序过程的综合过程质量性能的体现。基于此,我们定义两种软件过程质量:
l         全过程总质量。到目前阶段位置,软件开发活动体现出来的综合质量特征,总质量不仅包含当前第 n 个过程的质量特征,而且综合了所有前序过程的质量特征在内。它是所有已执行过程的各种偏差源的综合作用结果,也可以把目标过程和所有前序过程看作一个集成过程,没有来做于外部的偏差源,只使用 Shewhart 控制图就可以反应集成过程的总质量特征。
l         软件过程分质量。软件过程固有的质量特征,是目标过程本身的质量特征表现,不反应来做于前序过程的影响。在分析软件过程分质量时,必须区分偶然因素、外部系统因素和内部系统因素,尤其是剔除外部系统因素。这时就需要综合使用 Shewhart 控制图和选控图。
在这个理想模型下,对于软件计划过程,由于没有其他前序过程,也就没有外部系统因素,这时总质量就等于软件计划过程的分质量,只使用控制图就可以区分出软件计划过程的偶然因素和系统因素。
对于需求分析过程,总质量是软件计划和需求分析两个软件过程的综合表现,与需求分析软件过程的分质量不同。在分析需求分析过程的过程质量指标时,不仅需要使用选控图来剔除软件计划阶段的影响,还需要使用控制图来区分偶然因素和系统因素,来度量本过程是否稳定,是否符合性能要求。
图3  简化的软件开发过程

   过程质量分析表

在图 3 中,除了软件计划过程之外,分析其他目标软件过程的总质量和分质量时需要前序过程的控制图、目标过程的控制图和选控图,总共 3 种图。根据控制图和选控图是否异常,存在 23=8 种组合,如表 2 所示。
表2 过程质量分析表
前序过程的控制图
目标过程的控制图
目标过程的选控图
分析
1
异常
异常
异常
目标过程异常(存在内部系统因素),前序过程异常(存在外部系统因素)。
2
异常
异常
正常
目标过程正常(无内部系统因素),前序过程异常(存在外部系统因素)。
3
异常
正常
异常
目标过程异常(存在内部系统因素),前序过程异常(存在外部系统因素),但两种系统因素作用相反,目标过程控制图正常。
4
异常
正常
正常
目标过程正常(无内部系统因素),前序过程异常(存在外部系统因素),但外部系统因素的作用相反,目标过程正常。
5
正常
异常
异常
目标过程异常(存在内部系统因素),前序过程正常(无外部系统因素)
6
正常
异常
正常
目标过程正常(无内部系统因素),前序过程正常(无外部系统因素),但两种方向相同而叠加,致使目标过程的控制图异常
7
正常
正常
异常
目标过程异常(存在内部系统因素),前序过程正常(无外部系统因素),但两者作用相反而抵消,目标过程的控制图正常。
8
正常
正常
正常
目标过程和前序过程都正常,过程稳定。
情况 1 :目标过程的选控图异常,应该查找和解决目标过程的内部系统因素;前序过程异常,应该查找和解决前序过程的系统因素。
情况 2 :目标过程的选控图正常,说明不存在内部系统因素,目标过程的控制图异常是前序过程异常引起的,应该查找和解决前序过程的系统因素。
情况 3 :目标过程的选控图异常说明目标过程存在内部系统因素,应该查找和解决。前序过程的控制图异常说明前序过程存在系统因素,应该查找和解决。目标过程的控制图正常说明内部系统因素和外部系统因素作用相反而抵消。
情况 4 :前序过程的控制图异常说明存在查找和解决外部系统因素,目标过程的控制图正常说明目标过程不存在内部系统因素,并且目标过程的过程质量指标与前序过程的过程质量指标作用相反而抵消,应该查找查找外部系统因素和目标过程中的偶然因素,并加以解决。出现这种情况,也有可能说明目标过程和前序过程之间是松散耦合的,过程之间关联性很弱,前序过程的过程指标异常不对目标过程产生作用。
情况 5 :前序过程正常,目标过程异常,说明目标过程存在内部系统因素,只需要查找和解决内部系统因素即可。
情况 6 :前序过程的控制图和目标过程的选控图都正常,但两者的质量指标方向相反,叠加使得目标过程的控制图异常。这种情况出现原因是前序过程的某质量指标已经靠近控制图的界限,而目标过程的质量指标与上个质量指标作用方向相同,导致目标过程的控制图打点出界,显示异常。
情况 7 :目标过程的选控图异常,前序过程正常,但是与目标过程的质量指标方向相反而抵消,使得目标过程的控制图看起来正常,应该查找和解决系统因素。
情况 8 :前序过程和目标过程都正常,无需进一步处理。
按照表 1 中的判断条件就可以区分针对目标过程是否存在何种系统因素进行诊断。如果分析独立的过程而言,只需要使用控制图即可。
按照表 1 的过程分析表,我们就可以比较轻松识别出当过程的稳定和过程质量属性发生变化,出现异常时,根据控制图和选控图确定导致异常的偶然因素或者系统因素,以及系统因素是外部系统因素,还是内部系统因素,这样就给软件过程的质量分析提供了一种比较粗略的判断机制。

   结论

软件过程的重要性逐渐引起研究人员和工程实践人员的重视,软件产品质量研究已经比较成熟,但是有关软件过程质量尚处于初级阶段,有很多需要值得研究的地方,借鉴诸如制造业等成熟产业的统计过程控制技术来分析软件过程是一种思路。传统 Shewhart 控制图难以区分和定义过程间相互作用,本文基于简单的瀑布模型,定义软件过程的两种质量,把系统因素细分为外部系统因素和内部系统因素,提出借助于控制图和选控图进行软件过程分析的分析表。这种软件过程质量分析方法使用成熟的统计过程控制技术,能够定性和定量分析软件过程的稳定性和性能等方面质量特性。

参考文献:

  龚波 . 能力成熟度模型集成及其应用[M] . 北京:水利水电出版社 . 2003 .
  龚波、刘卫宏等.软件过程管理[M].北京:水利水电出版社 . 2003 .
  张公绪.现代质量管理学[M].北京:中国财政经济出版社 . 1999 .
  张公绪.选控图理论与实践[M].北京:中国邮电出版社 . 1984 .
  William A.Florac et al . Practical Software Measurement: Measuring for Process Management and Improvement[R] . Tech Rep:CMU/SEI-97-HB-003 .
  William A.Florac,Anita D.Careton . Measuring the Software Process-Statistical Process Control for Software Process Improvement[M].Pearson Education, Inc . 1999 .

John H Baument, Mark S McWhinney . Software Measures and the Capability Maturity Model(CMU/SEI 92 TR 25)[R] . Software Enginerring Institute, Camegie Mellon University . 1992.9 .


 

转载于:https://blog.51cto.com/gongbo/55869

一种基于SPC的软件过程质量分析方法相关推荐

  1. matlab波特一致性,一种基于MATLAB的数据一致性的分析方法与流程

    本发明属于电机性能数据的处理和分析技术领域,尤其涉及一种基于 MATLAB的数据一致性的分析方法. 背景技术: MATLAB是一种基于算法开发.数据可视化.数据分析以及数值计算的计算机高级编程语言和交 ...

  2. 快速谱峭度matlab,一种基于快速谱峭度分析的泵潜在空化故障检测方法与流程

    本发明属于信号处理领域,尤其涉及一种基于快速谱峭度分析泵的实时状态并且检测其潜在空化故障的方法. 背景技术: 高性能离心泵在当今社会上广泛应用和需求巨大.由于工作在高压高速等复杂条件下,离心泵的空化故 ...

  3. java课程教学质量分析_基于jsp的教学质量分析辅助决策学员评估系统-JavaEE实现教学质量分析辅助决策学员评估系统 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的教学质量分析辅助决策学员评估系统, 该项目可用各类java课程设计大作业中, 教学质量分析辅助决策学员评估系统的系 ...

  4. 风电功率预测matlab,一种基于二十四节气的风电功率预测方法与流程

    本发明属于风电场技术领域,尤其涉及一种基于二十四节气的风电功率预测方法. 背景技术: 风能的随机波动性对电网产生的较大冲击给风电产业的发展带来了巨大挑战.目前风电功率预测误差较大,数值天气预报精度.训 ...

  5. Linux断点方法,一种基于Linux问题断点的定位方法及系统与流程

    本发明属于Linux断点解决技术领域,涉及一种基于Linux问题断点的定位方法及系统. 背景技术: 在Linux的日常测试过程中,经常会遇见一些未知的原因下系统启动过程中突然出现的宕机,黑屏等现象.导 ...

  6. 帕德逼近matlab算法,一种基于帕德逼近的通信误差函数逼近方法与流程

    本发明属于通信与电子信息技术领域,具体是属于计算机仿真领域,涉及一种基于帕德逼近的通信误差函数逼近方法. 背景技术: 在通信领域,通信误差高斯Q函数在数字调制方案的符号错误概率(SEP).加性高斯白噪 ...

  7. 一种基于区块链的身份认证方法

    摘 要: 零信任理念的提出和发展,提高了网络信息系统数据访问的可控性和可信性,有效增强了系统数据的安全性.但是,总不信任,永远验证的设计原则,也给用户进行数据访问带来了巨大的挑战,特别是在广域.异地身 ...

  8. matlab随机信号分析,基于MATLAB的随机信号分析方法.ppt

    <基于MATLAB的随机信号分析方法.ppt>由会员分享,可在线阅读,更多相关<基于MATLAB的随机信号分析方法.ppt(31页珍藏版)>请在人人文库网上搜索. 1.基于MA ...

  9. 疲劳驾驶监测方案_一种基于手机的疲劳驾驶监测方法与流程

    本发明属于安全驾驶领域,具体涉及一种基于手机的疲劳驾驶监测方法. 背景技术: 疲劳驾驶是指驾驶员在长时间连续行车后,产生生理机能和心理机能的失调,从而在客观上出现的驾驶技能和反应下降的现象.若驾驶员在 ...

最新文章

  1. Linux:命令执行控制与||
  2. JavaWeb(五)之JSTL标签库
  3. ASP.NET常被忽视的一些细节
  4. golang中string长度
  5. 职场健康:缓解脖子酸
  6. [android] AndroidManifest.xml【 manifest - permission-tree 和 manifest - permission-group】
  7. 世界是数字的读后感:
  8. 显示器驱动程序已停止响应 并且已成功恢复
  9. 探寻安全管理平台(SOC)项目的关键成功因素(4)
  10. 8021x 获取IP信息失败,请检查锐捷认证客户端当前配置是否符合所在网络的要求,检查完毕后尝试重新认证...
  11. 一天搞懂深度学习--深度学习简介
  12. python xlsxwriter dict_Python玩转Excel神器xlsxwriter详解
  13. 强势入局,区块链专利将成为银行下一个战场?
  14. 联想服务器修改mac,修改Thinkpad E420的无线网卡MAC地址?
  15. vbox虚拟机网络设置
  16. 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL
  17. HTML 几种特别分割线特效 详细出处参考:http://www.jb51.net/web/28414.html
  18. android 连接电脑,安卓手机怎么连接电脑详细介绍【图文教程】
  19. 案例复盘:从上海首例遗弃犬只案看 如何精准研判舆情争议点
  20. 人工智能时代的自我修炼之-有效沟通

热门文章

  1. Bean ‘securityManager‘ of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible
  2. 2022 年 5 月产品大事记
  3. autocad plant 3d 2022 安装教程
  4. R语言-股票数据库(2)-股票日K线信息-未复权
  5. navigate系列api
  6. Win32汇编WG系列教程1——《植物大战僵尸5211314》
  7. 制作一个化妆品网站(二)(数据库设计)
  8. 不暴露 create react app 的webpack配置下,修改webpack配置
  9. 吸血鬼数字(多种解法)
  10. 微信小程序实现倒计时,苹果手机不显示