软件过程质量度量与控制
独立咨询师 李 健
北京
*
李健 jasonli@
提纲
软件度量
度量的过程
度量的对象
度量的技术
度量的几点考虑
李健 jasonli@
基本概念
Measure,度量(名词),是根据一定的规则赋予软件过程或产品属性的数值或类别[ISO/IEC 14598-1]。数值是对软件产品、软件过程的特征的量化记数的结果,类别是特征的定性表示,例如编写程序的语言,可以是C或C++。
Measure,度量(动词),按照度量过程中的过程定义,对软件过程或软件产品实施度量,表示实际的动作。 [ISO/IEC 14598-1]
Measurement,测量,是按照一定的尺度用度量(名词)给软件实体属性赋值的过程[ISO/IEC 14598-1]。它强调对软件实体属性进行量化的过程性,是提取软件过程或软件产品属性的度量(名词)的过程。它所蕴涵的内容是度量的过程,度量过程可分为评估度量的过程和直接度量的过程,评估度量的过程是对计划实施度量的过程,直接度量的过程是在实例项目过程中收集数据和分析数据的过程。
Metric,度量,是已定义的测量方法和测量尺度[ISO/IEC 14598-1]。在很多场合与Indicator交叉出现,但其内涵大于Indicator,Metric概指软件环境中任何一个软件对象的属性的量化表现。
Indicator,指示器,是用于评价或预测其他度量(名词)的度量(名词)[ISO/IEC 14598-1]。指示器是一个或多个度量的综合,是对软件产品或软件过程的某一方面特征的反映。不同的度量目的有不同的度量指示器选择。在具体的实施过程中,可操作的度量成千上万,选择最能反映当时度量环境的指标作为度量指示器。
Process Capability,软件过程能力度描述通过遵循软件过程能够实现预期结果的程度。[CMM Version ]
Process Maturity,软件过程成熟度是一个特定过程被明确定义、管理、度量、控制、并且是有效的程度。[CMM Version ]
Process Performance,软件过程性能是过程实际执行的结果。[CMM Version ]
李健 jasonli@
软件管理的基本过程模型
李健 jasonli@
软件过程管理与项目管理
软件过程改善
软件过程定义
软件过程度量
软件过程控制
定义项目计划
调整项目计划
度量计划/结果
软件过
程执行
项目计划执行
软件开发
产品
需求
李健 jasonli@
度量与软件过程管理
改善软件过程
规划软件过程
应用度量
控制软件过程
执行软件过程
计划度量
人、资源
输入信息
软件产品
软件过程
度量信息
软件产品
度量信息
李健 jasonli@
用户对象
软件过程度量
项目主管
:计划与控制
高层主管
:过程的可见性
软件过程组
:过程改善
客户/用户
:跟踪
技术中心
:研究
信息流
相互通信
项目外部
项目内部
李健 jasonli@
度量的目的
度量的目的
理解过程
管理过程
理解过程
评价过程
预测过程
控制过程
改善过程
李健 jasonli@
度量的分类
客观度量和主观度量
主观度量是人的主观判断结果,主观度量也可以是在客观数据基础上的分析结果。
客观度量是过程或产品的实际结果,客观度量在一定程度上就减少了人为的主观影响。
绝对度量和相对度量
绝对度量其度量值的取得是没有参照物或没有其他的依赖关系,比如一个程序模块的大小具有绝对的代码行数,其他代码模块的变化不影响该模块的大小。
相对度量是其度量值的取得具有参照物或与其他属性的有依赖关系,比如过程生产率依赖于过程时间和过程产出的规模。
显式度量和隐式度量
显示度量是可直接得到数据的度量,例如编程时间是显式度量。
隐式度量是对原始度量数据进行运算或结合多个度量分析得到的结果,例如个人编程效率。
动态度量和静态度量
动态度量是两维以上的度量。
静态度量是一维度量。
预测度量和解释度量
内部度量和外部度量
软件组织内部和软件组织外部,项目组内部与项目组外部,项目内小组之间。
李健 jasonli@
过程的度量和产品的度量
差异
度量目标,产品度量是用于对软件产品进行评价,在此基础之上进行产品设计优化。软件过程度量是为了对软件过程的行为进行目标管理,并在度量的基础上对软件过程进行控制、评价和改善。
度量内容,对软件产品的度量侧重于软件结构的度量,度量的内容与软件开发技术密切相关。对软件过程的度量有三大类基本内容,分别是质量、时间和资源。
度量方法,对产品的度量方法是阶段性方法,度量对象是软件生产后期得到的成形的软件产品。对软件过程的度量方法是过程性方法,度量过程中的各个阶段所用到的技术、方法是动态更新的。
度量结果,产品度量结果通常是软件产品的复杂度模型和可靠性模型等。对过程度量的结果是过程基线。
联系
产品度量内容可以是过程度量内容的一部分;
对产品的度量结果是对产品的评价,而产品又是过程的结果,产品的好坏从一个方面体现了过程的好坏。
李健 jasonli@
提纲
软件度量
度量的过程
度量的对象
度量的技术
度量的几点考虑
李健 jasonli@
度量的过程
GQM(Goal-Question-Measurement)
PSM(Practical Software Measurement)
过程和产品
商业
目标
过程
目标
度量
目标
度量问题
度量
度量用户对象
逆向过程
正向过程
“G”
“Q”
“M”
李健 jasonli@
软件过程的度量过程
目标驱动的度量过程ISPMM
李健 jasonli@
ISPMM中人员角色组织形式
李健 jasonli@
ISPMM的目标
(1)整合度量过程和分析过程
建立和维护度量目标
定义度量
定义数据收集和存储过程
定义数据分析过程
(2)提供度量和分析结果
收集度量数据
分析度量数据
存储数据和结果
数据和结果交流
李健 jasonli@
ISPMM:准备度量子过程
李健 jasonli@
ISPMM:选择度量子过程
李健 jasonli@
ISPMM:应用度量子过程
李健 jasonli@
ISPMM:数据分析子过程
李健 jasonli@
度量过程的能力度
未完成层
已执行层
已管理层
已定义层
量化管理层
优化层
ISPMM
具有已管理层和已定义层的过程特征并且支持软件组织建立能力度为已定义层以下的过程实现
李健 jasonli@
提纲
软件度量
度量的过程
度量的对象内容
度量的技术
度量的几点考虑
李健 jasonli@
软件度量选择的方针
“着眼现在,展望未来”
在度量的基础上,理解并控制管理现有过程,找出现有过程存在的问题进行改善,并通过评价来衡量改善的结果以增强过程的预测能力。
多层次度量需求
软件项目度量需求,侧重理解和控制当前项目的情况和状态
软件产品度量需求,侧重理解和控制当前产品的质量状况
软件过程度量需求,理解和控制当前情况和状态,还包含了对过程的改善和未来过程的能力预测。
李健 jasonli@
选择度量的衡量指标(参考)
It is considered meaningful by the customer,manager,and performer.
It demonstrated quantifiable correlation between process perturbations and business performance.
It is objective and unambiguously defined.
It displays trends.
It is a natural by-product of the process.
It is supported by automation.
Metrics must be simple,objective,easy to collect,easy to interpret,and hard to misinterpret.
Metrics collection must be automated and nonintrusive,that is, not interfere with the activities of developers.
Metrics must provide consistent assessments throughout the life cycle, especially in early phases, when efforts to improve quality have a high payoff.
Metrics,both values and trends, must be used actively by management and engineering personnel for communicating progress and quality in a consistent format.
Metrics’ fidelity improves across the life cycle.
李健 jasonli@
选择度量的衡量指标(参考)
The measures should relate closely to the issue under study. These are usually issues of quality,resource consumption, or elapsed time.
They should have high information content..
They should pass a reality test.
They should permit easy and economical collection of data.
They should permit consistently collected , well-defined data.
They should show measurable variation.
They should have diagnostic value and be able to help you identify not only that something unusual has happened but also what might be causing it.
李健 jasonli@
选择度量的标准
可交流性
采用规范的方法对度量属性进行定义和描述,使其他人可以一致地了解度量的内容,度量的数据值里包括了哪些信息或不包括哪些信息,以及度量数据的收集过程。
可重复性
表示其他人按照定义的度量过程进行数据采集和分析是否能够得到同样结果的可能性。
可追溯性
表示根据度量信息是否能够定位出产生度量数据时软件过程的当时状态和当时环境的可行性。度量信息的可追踪性对软件过程改善是非常重要的,进行过程改善时需要明确在什么环境下产生这样的过程状态,什么原因导致了过程偏差。
可操作性
度量的选择同时也应该考虑收集度量数据的可能性及难易程度,并同时考虑数据收集的花费和资源占用。
可代表性
表示度量信息具有反映软件过程的某个方面特性的能力。一个前提条件是:度量数据应是变化的,因为只有变化的数据才能反映过程的偏差。
李健 jasonli@
度量目标选择及描述
度量对象:
目的:
用户对象:
度量环境:
度量对象:X项目中的同级评审过程
目的:在评价的基础上改善过程效率
用户对象:软件组织过程改善组
度量环境:新开发电力系统办公自动化项目。
项目组规模50人,其中开发人员40人。
商业目标 1
商业目标 2
商业目标 n
…
关键过程目标 1
关键过程目标 2
…
关键过程目标 m
度量目标 1
度量目标 2
…
度量目标 k
李健 jasonli@
过程实体描述模型
过程组成
过程消耗
过程保留
过程输入
过程输出
过程度量实体
过程度量实体
过程度量实体
李健 jasonli@
度量的对象内容(参考)
管理度量
Work and progress
Budgeted cost and expenditures
Staffing and team dynamics
质量度量
Change traffic and stability, which is relationship between opened and closed software change orders.
Breakage and modularity, which is average breakage trend over time
Rework and adaptability, which is rework trend over time
MTBF and maturity, which is MTBF trend over time
李健 jasonli@
软件过程的度量模型
软件过程性能
软件过程性能范畴
软件过程性能类型
特性
子特性
度量
数据项
软件过程能力度
软件过程成熟度
李健 jasonli@
软件过程的度量模型
软件过程质量
软件过程效率
软件过程成本
产品和服务的质量
过程依从性
时间和进度
稳定性
资源和费用
软件过程性能
软件过程的能力度/成熟度
技术能力
软件过程性能的稳定性
生产率
李健 jasonli@
度量模型中七种度量类型之间的关系模型
李健 jasonli@
度量模型对SW-CMM一般过程特征的覆盖
李健 jasonli@
度量模型对SW-CMM过程提问单的覆盖
对SW-CMM第二层中的6个关键过程域进行软件过程问题单和
过程性能度量的对比分析,第二层总共有36个过程问题。
李健 jasonli@
过程性能度量准则和指标
准则
① 相同质量指标下,占用资源越少的过程性能越好
② 相同质量指标下,效率越高的过程性能越好
指标
① 设计时间大于编码时间[TSP]
② 设计评审时间大于50%的设计时间[TSP]
③ 编码评审时间大于50%的编码时间[TSP]
④ 偏离度
⑤ 返工率
⑥ 失控数
⑦“80/20”原则
李健 jasonli@
提纲
软件度量
度量的过程
度量的对象内容
度量的技术
度量的几点考虑
李健 jasonli@
软件过程的特性分析
过程的特点
软件过程的过程性
软件过程的持续性
软件过程的特殊性
软件过程的层次性
软件过程的动态性
过程的特性
软件过程性能
软件过程稳定性
软件过程能力度
软件过程改善
李健 jasonli@
过程质量和过程性能
(a)
(b)
尺度、协作关系、领域经验等
李健 jasonli@
度量分析技术
6Sigma
Scatter Diagrams
Run Chart
Histograms
Cause-and-effect diagrams ( Fish-bone )
Bar Chart
Pareto Charts
Regression Analysis
Control Chart ( SPC )
李健 jasonli@
控制图技术基础
CL
CL-3s
CL+3s
CL-2s
CL-s
CL+2s
CL+s
中心线
上限(UCL)
下限(LCL)
李健 jasonli@
X-R图分析
针对问题
过程行为的中心趋势?
随着过程的进行,各分组数据之间的偏差?
分组内的过程行为偏差?
前提
分组内采样数据数目大小n应大于等于2,在进行软件过程度量时找出相似性数据分组。
R图反映的是分组内数据范围的分布,如果分组的n值过大就可能会导致不同分组计算出的Rj值相差过大,就无法分析出外在因素导致的过程偏差,R图的应用范围一般是在n ≤ 10的情况下。
稳定性判定准则
如果X图中出现分布在上下界限以外的数据,那么过程是不稳定的。
如果X图中三个连续分布点中有两个点分布在中心线同一侧并且偏离中心线2s的距离,那么过程是不稳定的。
如果X图中五个连续分布点中有四个点分布在中心线同一侧并且偏离中心线s的距离,那么过程是不稳定的。
如果X图中自少有八个连续分布点中在中心线同一侧,那么过程是不稳定的。
李健 jasonli@
X-R图计算
Xj是每一个采样数据,k表示采样的数据组数目,n表示每一个采样组中有n个数据。
表示X图的中心线的值。
表示在同一分组内样本数据的最大差距。
表示R图中心线的值。
分别表示X图的上下界限值,在X图中上下界限是与中心线等距的,由此可得出s的值。其中A2是统计值常量。
分别表示R图的中上下界限值,在R图中上下界限是与中心线等距的。其中D3 和D4是统计值常量。
李健 jasonli@
XmR图分析
基本假设
软件过程的连续性使相邻两个采样点最可能近似
应用前提
数据分组在有些情况不易实现,同时分组产生的数据聚集可能减弱异常数据在控制图上的表现;
对每一个采样数据进行分布处理,可分析出采样个体是否存在一些异常模式,如循环分布、持续单向分布等。
稳定性判定准则
如果X图中出现分布在上下界限以外的数据,那么过程是不稳定的。
如果X图中三个连续分布点中有两个点分布在中心线同一侧并且偏离中心线2s的距离,那么过程是不稳定的。
如果X图中五个连续分布点中有四个点分布在中心线同一侧并且偏离中心线s的距离,那么过程是不稳定的。
如果X图中自少有八个连续分布点中在中心线同一侧,那么过程是不稳定的。
“个体控制图”出现数据异常分布模式。
李健 jasonli@
软件过程的性能分析
解决SPC在软件领域应用的问题:
选择适当控制图
X-R图、X-S图、XmR图、MAMR图、c图、u图
数据采样与数据分组
过程性能偏差分析
过程能力度分析
李健 jasonli@
数据采样与数据分组
采样数据特性
可交流性、可重复性、可追溯性、可操作性、可代表性
数据的采样时间和空间信息
如果采样的时间和空间跨度太大,不论怎样分组数据控制图中的上下限范围就会较大,控制图中的过程表象就会出现多数是处于稳定状态
数据分组基本原则
保持组内采样数据的相似性,表现在两个方面:① 在同一组内引起过程偏差的原因应该近似,同组内的数据偏差近可能小。② 同组数据所跨度的时间和空间应尽可能小。
结合目标和需求确定分组的原则
均值控制图反映的是分组间的过程偏差,范围控制图反映的是组内的过程偏差。结合数据分析的需求把可能是主要或特别关注的引起过程偏差的原因产生的数据分布在组间,引起过程偏差的次要原因或是不关心的原因产生的数据放在组内
李健 jasonli@
过程性能偏差分析
(1)过程性能数据本身是否正确
(2)数据组织和分析问题
(3)过程依从性问题
与计划过程的一致性问题
人员、工具、技术和规程的合理应用问题
支持系统的合理应用问题
组织相关问题
(4)过程模型问题
过程缺陷和过程不完备
李健 jasonli@
过程性能能力度分析
CL
UCL
LCL
目标
LSL
USL
6ss
6s
(1)ss < s ,降低过程期望
(2)ss = s
> 0,表示实际过程的上限不满足需求。
= 0,表示该过程实际的性能表现是满足需求的,过程是有能力的。
< 0,表示实际过程的下限不满足需求。
(3)ss > s
> 3(ss - s ) ,表示过程性能的上限不满足需求。
-3(ss - s )=> <= 3(ss - s ),表示过程性能满足需求,是有能力的。
< -3(ss - s ),表示过程性能的下限不满足需求。
李健 jasonli@
提纲
软件度量
度量的过程
度量的对象内容
度量的技术
度量的几点考虑
李健 jasonli@
度量实施问题
应用度量的一些限制?
怎样确定合适的度量目标?
未达到CMM/CMMI四级能用度量和量化管理吗 ?
四级以下的度量怎样进行?哪些指标更有效?
哪些过程域适合应用度量?
李健 jasonli@