`
lujar
  • 浏览: 522235 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

第29回 软件质量度量

阅读更多


软件产品质量度量是软件质量度量重要组成之一,其度量的对象是软件产品,测量其软件平均失效时间、缺陷密度、适用性、可靠性等产品的质量属性,用于对软件产品进行评价,并在此基础之上不断优化产品设计、产品制造和产品服务。<o:p></o:p>

 
       软件产品质量度量包括软件复杂度、客户满意度的度量,由于篇幅所限,在此略去。 软件产品质量度量,则主要集中在软件缺陷的度量,而且这和软件测试有直接的关系。

质量是反映软件与需求相符程度的指标,而缺陷被认为是软件与需求不一致的某种表现,所以通过对测试过程中所有已发现的缺陷进行评估,可以了解软件的质量状况。也就是说,软件缺陷评估是评估软件质量的重要途径之一,软件缺陷评估指标可以看作是量度软件产品质量的重要指标,而且缺陷分析也可以用来评估当前软件的可靠性或预测软件产品的可靠性变化。<o:p></o:p>

软件评估首先是建立基线,为软件产品的质量、软件测试评估设置起点,这个基准线上再设置测试的目标,作为对系统评估是否通过的标准。缺陷评测的基线是对某一类或某一组织的结果的一种度量,这种结果可能是常见的或典型的,如10000行源程序(LOC)是程序规模的一个基准,每一千行代码有3个错误是测试中错误发现率的基准。基准对期望值的管理有很大帮助,目标就是相对基准而存在,也就是定义可接受行为的基准,如表1所示。

<o:p></o:p>

1某个软件项目质量的基准和目标<o:p></o:p>

条目<o:p></o:p>

目标<o:p></o:p>

低水平<o:p></o:p>

缺陷清除效率<o:p></o:p>

>95%<o:p></o:p>

<70%<o:p></o:p>

缺陷密度<o:p></o:p>

每个功能点 <4<o:p></o:p>

每个功能点 >7<o:p></o:p>

超出风险之外的成本<o:p></o:p>

0%<o:p></o:p>

>=10%<o:p></o:p>

全部需求功能点<o:p></o:p>

<1% 每个月平均值<o:p></o:p>

>=50%<o:p></o:p>

全部程序文档<o:p></o:p>

每个功能点页数 <3<o:p></o:p>

每个功能点页数 >6<o:p></o:p>

<o:p> </o:p>

软件缺陷评估的方法相对比较多,从简单的缺陷计数到严格的统计建模,基于缺陷分析的产品质量评估方法有以下几种:

  • 缺陷密度——软件缺陷在规模上的分布
  • 缺陷率——缺陷在时间上的分布
  • 整体缺陷清除率
  • 阶段性缺陷清除率
  • 缺陷趋势、预期缺陷发现率
  • 软件产品性能评估技术
  • 借助工具的其他方法

1.缺陷密度<o:p></o:p>

Myers有一个关于软件测试的著名的反直觉原则:在测试中发现缺陷多的地方,还有更多的缺陷将会被发现。这个原则背后的原因在于:如果缺陷发现缺陷多的地方、漏掉的缺陷可能性也会越大,或者告诉我们测试效率没有被显著改善之前,那么在纠正缺陷时将引入较多的错误。这条原理的数学表达就是缺陷密度的度量——每KLOC或每个功能点(或类似功能点的度量——对象点、数据点、特征点等)的缺陷数,缺陷密度越低意味着产品质量越高。

  • 如果缺陷密度跟上一个版本相同或更低,就应该分析当前版本的测试效率是不是降低了?如果不是,意味着质量的前景是乐观的;如果是,那么就需要额外的测试,还需要对开发和测试的过程进行改善。
  • 如果缺陷密度跟上一个版本高,那么就应该考虑在此之前为显著提高测试效率进行了有效的策划并在本次测试中得到实施?如果是的,虽然需要开发人员更多的努力去修正缺陷,但质量还是得到更好的保证;如果没有,意味着质量恶化、质量很难得到保证。这时,要保证质量,就必须延长开发周期或投入更多的资源。


2.缺陷率<o:p></o:p>

缺陷率的通用概念是一定时间范围内的缺陷数与错误几率(OFEopportunities for error)的比值。前面我们已经讨论过软件缺陷和失败的定义,失败是缺陷的实例化,可以用观测到的失败的不同原因数目来近似估算软件中的缺陷数目。<o:p></o:p>

软件产品缺陷率,即使对一个特定的产品,在其发布后不同时段也是不同的。例如,对应用软件的角度来说,90%以上的缺陷是在发布后两年内被发现出来,而对操作系统,90%以上的缺陷通常在产品发布后需要四年的时间才能被发现出来。<o:p></o:p>

<o:p> </o:p>

3整体缺陷清除率<o:p></o:p>

  让我们先引入几个变量,F为描述软件规模用的功能点;D1为在软件开发过程中发现的所有缺陷数;D2为软件发布后发现的缺陷数;D为发现的总缺陷数。因此,D=D1+D2<o:p></o:p>

  对于一个应用软件项目,则有如下计算方程式(从不同的角度估算软件的质量):

  • 质量 = D2/F;
  • 缺陷注入率 = D/F;
  • 整体缺陷清除率= D1/D;


假如有100个功能点,即F=100,而在开发过程中发现了20个错误,提交后又发现了3个错误,则:D1 =20,D2 =3, D= D1+D2 =23

  • 质量(每功能点的缺陷数)=D2/F= 3/100= 0.03 ( 3% )
  • 缺陷注入率= D/F= 20/100= 0.20 ( 20%)
  •  整体缺陷清除率= D1/D= 20/23= 0.8696 ( 86.96%)


有资料统计,美国的平均整体缺陷清除率目前只达到大约85%,而对一些具有良好的管理和流程等著名的软件公司,其主流软件产品的缺陷清除率可以超过98%<o:p></o:p>

众所周知,清除软件缺陷的难易程度在各个阶段也是不同。需求错误、规格说明、设计问题及错误修改是最难清除的,如表2所示。<o:p></o:p>

表2 不同缺陷源的清除效率<o:p></o:p>

缺陷源<o:p></o:p>

潜在缺陷<o:p></o:p>

清除效率(%)<o:p></o:p>

被交付的缺陷<o:p></o:p>

需求报告<o:p></o:p>

1.00<o:p></o:p>

77<o:p></o:p>

0.23<o:p></o:p>

设计<o:p></o:p>

1.25<o:p></o:p>

85<o:p></o:p>

0.19<o:p></o:p>

编码<o:p></o:p>

1.75<o:p></o:p>

95<o:p></o:p>

0.09<o:p></o:p>

文档<o:p></o:p>

0.60<o:p></o:p>

80<o:p></o:p>

0.12<o:p></o:p>

错误修改<o:p></o:p>

0.40<o:p></o:p>

70<o:p></o:p>

0.12<o:p></o:p>

合计<o:p></o:p>

5.00<o:p></o:p>

85<o:p></o:p>

0.75<o:p></o:p>

表3反映的是CMM五个等级是如何影响软件质量的,其数据来源于美国空军1994年委托SPR(美国一家著名的调查公司)进行的一项研究。从表中可以看出,CMM级别越高,缺陷清除率也越高。<o:p></o:p>

3 SEI CMM级别潜在缺陷与清除率<o:p></o:p>

SEI CMM 级别<o:p></o:p>

潜在缺陷<o:p></o:p>

清除效率(%)<o:p></o:p>

被交付的缺陷<o:p></o:p>

1<o:p></o:p>

5.00<o:p></o:p>

85<o:p></o:p>

0.75<o:p></o:p>

2<o:p></o:p>

4.00<o:p></o:p>

89<o:p></o:p>

0.44<o:p></o:p>

3<o:p></o:p>

3.00<o:p></o:p>

91<o:p></o:p>

0.27<o:p></o:p>

4<o:p></o:p>

2.00<o:p></o:p>

93<o:p></o:p>

0.14<o:p></o:p>

5<o:p></o:p>

1.00<o:p></o:p>

95<o:p></o:p>

0.05<o:p></o:p>

<o:p> </o:p>

4.阶段性缺陷清除率  <o:p></o:p>

阶段性缺陷清除率是测试缺陷密度度量的扩展。除测试外,它要求跟踪开发周期所有阶段中的缺陷,包括需求评审、设计评审、代码审查。因为编程缺陷中的很大百分比是同设计问题有关的,进行正式评审或功能验证以增强前期过程的缺陷清除率有助于减少出错的注入。基于阶段的缺陷清除模型反映开发工程总的缺陷清除能力。<o:p></o:p>

进一步分析缺陷清除有效性(DREDefect Remove Efficiency)DRE可以定义为:

<!----><!---->开发阶段清除的缺陷数/产品潜伏的缺陷总数 x 100%<!----><!----><o:p></o:p>

因为潜伏缺陷的总数是不知道的,必须通过一些方法获得其近似值,如经典的种子公式方法。当用于前期的和特定阶段的时候,此时DRE相应地被称为早期缺陷清除有效性和阶段有效性,对给定阶段的潜伏缺陷数,可以估计为:<o:p></o:p>

                   当前阶段的潜伏缺陷数 = 当前阶段排除的缺陷数+以后发现的缺陷数<o:p></o:p>

给定阶段的DRE度量值越高,遗漏到下一个阶段的缺陷就越少。<o:p></o:p>

         缺陷是在各个阶段注入到阶段性产品或者成果中去,通过表4 描述的与缺陷注入和清除相关联的活动分析,可以更好地理解缺陷清除有效性。回归缺陷是由于修正当前缺陷时而引起相关的、新的缺陷,所以即使在测试阶段,也会产生新的缺陷。<o:p></o:p>

<o:p> </o:p>

4 与缺陷注入和清除相关联的活动<o:p></o:p>

开发阶段<o:p></o:p>

缺陷注入<o:p></o:p>

缺陷清除<o:p></o:p>

需求<o:p></o:p>

系统/概要设计<o:p></o:p>

详细/程序设计<o:p></o:p>

编码和单元测试<o:p></o:p>

集成测试<o:p></o:p>

系统测试<o:p></o:p>

验收测试<o:p></o:p>

需求收集过程和功能规格说明书<o:p></o:p>

设计工作<o:p></o:p>

设计工作<o:p></o:p>

编码<o:p></o:p>

集成过程、回归缺陷<o:p></o:p>

回归缺陷<o:p></o:p>

回归缺陷<o:p></o:p>

需求分析和评审<o:p></o:p>

设计评审<o:p></o:p>

分享到:
评论

相关推荐

    软件质量保证和管理(ppt)

    第二章至第四章可能涉及软件质量模型和标准,如ISO 9000系列、CMMI等,这些模型提供了评估和改进软件质量的框架。其中,ISO 9000强调质量管理体系,CMMI则关注过程能力成熟度。 第五章至第八章会详细讲解软件质量...

    《软件工程》(李代平)课件

    软件质量保证是贯穿整个软件生命周期的活动,课件可能涵盖了质量计划、质量保证、质量控制等方面,以及ISO 9000和CMMI等相关标准。 九、软件度量与评估 软件度量用于评估软件的过程和产品,如代码行、缺陷密度等。...

    (集美大学)软件工程复习大纲

    复习大纲涵盖了多个章节的重要内容,包括软件工程的基础概念、软件开发过程、项目管理、软件度量、软件质量、风险管理、软件设计与测试等。 在第一章中,讲解了软件的定义及其抽象性,以及软件工程的核心要素:方法...

    软件工程 软件工程 软件工程

    软件工程是计算机科学领域中的一个重要分支,它涉及软件的开发、维护和管理,旨在提高软件质量、降低成本并确保项目的成功实施。在本压缩包中,我们找到了一系列关于软件工程的PPT资料,涵盖了从软件生命周期到面向...

    软件工程第八版

    #### 九、软件质量 软件质量是衡量软件产品是否达到预期目标的重要指标,主要包括功能性、可靠性、可用性、效率等方面。 - **功能性**:软件能够完成其指定任务的能力。 - **可靠性**:软件在规定条件下长时间稳定...

    软件评测师第10章软件工程知识总结.pdf

    软件质量管理是软件开发的重要部分,包括软件质量特性、软件质量保证、软件复杂性的概念及度量方法等。软件质量管理的目的是确保软件系统的质量和可靠性。 八、软件过程改进基础知识 软件过程改进是软件开发的重要...

    某软件有限公司质量管理手册范本.docx

    - **重点参照**:ISO9000-3:1997《质量管理和质量保证标准 第三部分:ISO9001在软件开发、供应和维护中的使用指南》。 #### 四、质量管理手册结构 - **手册目录** - 手册修改控制 - 手册目录 - 手册说明 - ...

    软件工程-原理、方法与应用第三版重点.doc

    本资源摘要信息将从软件工程的基本概念、软件工程方法学、软件开发技术、软件工程管理、软件生命周期、软件过程、软件设计、软件测试、软件可行性研究、软件风险分析、软件计划等方面,对软件工程的重要知识点进行...

    软件工程—实践者的研究方法

    2. **第二部分:软件项目的管理** - **第3章:项目管理的概念** 概述了项目管理的基本原则,如范围管理、时间管理等。 - **第4章:软件过程和项目的度量** 讨论了度量在软件工程中的重要性,包括度量选择的...

    软件工程复习(期末、软考)

    #### 九、软件质量保证 - **软件质量保证的目标:** 通过预防性的措施来提高软件质量。 - **软件质量保证活动:** - 质量规划:制定质量管理计划。 - 质量控制:监控软件开发过程,确保符合质量标准。 - 质量...

    软件工程 实践者的研究方法 中文 Roger Pressman

    探讨了度量软件质量的各种技术和指标,帮助团队评估软件性能并持续改进。 #### 第四部分:面向对象的软件工程 - **第19章:面向对象的概念和原则** 介绍了面向对象编程的基本概念和原则,如继承、封装、多态等...

    软件工程考试题库完整.doc

    McCall 软件质量度量模型是一种软件质量度量模型,它通过对软件的可维护性、可靠性、效率、可移植性和安全性进行评估来确定软件的质量。 22. ISO 的软件质量评价模型由 3 层组成,其中用于评价设计质量的准则是 ...

    软件工程试卷及答案

    - **知识点**:在McCall软件质量度量模型中,“适应性”属于面向软件产品修改的质量特性。适应性指的是软件能够适应新的硬件平台、操作系统或其他外部条件变化的能力。 4. **ISO软件质量评价准则** - **设计质量...

    《软件工程》教案(本科)

    第二章 系统分析: 系统分析阶段是软件开发的初始阶段,主要包括项目计划、问题定义和可行性研究。项目计划涉及确定项目的目标、范围和资源;问题定义是明确问题并设定解决方案的初步框架;可行性研究则评估项目的...

    软件工程课件.zip

    第九章:“软件质量保证”——介绍ISO 9000系列标准,讲解质量管理计划和质量审计。 第十章:“项目管理”——讨论软件项目的计划、进度控制、风险管理,以及项目经理的角色。 第十一章:“团队协作与沟通”——...

    软件工程——实践者的研究方法(原始版)

    - **第23章:面向对象系统的技术度量** ——讨论了面向对象软件的质量度量方法。 ##### 第五部分:软件工程高级课题 - **第24章:形式化方法** ——介绍了形式化方法在软件工程中的应用。 - **第25章:净室软件工程...

    软件工程知识点.zip

    自动化测试工具如JUnit和Selenium能提高测试效率,保证软件质量。 六、软件维护 软件发布后,还需要进行持续的维护,包括修复错误、改进性能、添加新功能等。维护阶段体现了软件生命周期的持续性,也是软件生命周期...

Global site tag (gtag.js) - Google Analytics