过程和项目度量概述_第1页
过程和项目度量概述_第2页
过程和项目度量概述_第3页
过程和项目度量概述_第4页
过程和项目度量概述_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件工程第19章 过程和项目度量主要内容v过程领域和项目领域中的度量过程领域和项目领域中的度量v软件测量软件测量v软件质量度量软件质量度量v小结小结过程和项目度量v软件过程和项目度量是定量的测量,这些软件过程和项目度量是定量的测量,这些测量能使软件工程师更深入地了解软件过测量能使软件工程师更深入地了解软件过程的功效,以及使用该过程作为框架进行程的功效,以及使用该过程作为框架进行开发的项目的功效。度量时,首先收集基开发的项目的功效。度量时,首先收集基本的质量数据和生产率数据,然后分析这本的质量数据和生产率数据,然后分析这些数据、与过去的平均值进行比较,通过些数据、与过去的平均值进行比较,通过评估

2、来确定是否已有质量和生产率的提高。评估来确定是否已有质量和生产率的提高。度量也可以用来查明问题区域,以便确定度量也可以用来查明问题区域,以便确定合适的补救方法,并改进软件过程。合适的补救方法,并改进软件过程。过程和项目度量v软件度量由软件管理者来分析和评估。测软件度量由软件管理者来分析和评估。测量数据通常由软件工程师来收集。量数据通常由软件工程师来收集。v如果不进行测量,只能根据主观评价来做如果不进行测量,只能根据主观评价来做判断。通过测量,可以发现趋势,可以更判断。通过测量,可以发现趋势,可以更好地进行估算,随着时间的推移能够获得好地进行估算,随着时间的推移能够获得真正的改进。真正的改进。过

3、程和项目度量v 首先确定一组有限的易于收集的过程测首先确定一组有限的易于收集的过程测量和项目测量。通常使用面向规模或面向量和项目测量。通常使用面向规模或面向功能的度量对这些测量进行规范化。然后,功能的度量对这些测量进行规范化。然后,对测量结果进行分析,并与该组织以前完对测量结果进行分析,并与该组织以前完成的类似项目的平均数据进行比较。最后成的类似项目的平均数据进行比较。最后评估趋势,并给出结论。评估趋势,并给出结论。v工作产品是得到一组软件度量,它们提供工作产品是得到一组软件度量,它们提供了对过程的洞察力和对项目的理解。了对过程的洞察力和对项目的理解。过程和项目度量v通过提供目标评估的机制,测

4、量使我们能通过提供目标评估的机制,测量使我们能够对项目和过程有更深入的了解。够对项目和过程有更深入的了解。Lord Kelvin曾经说过:曾经说过:v当你能够测量你所说的事物,并能用数字当你能够测量你所说的事物,并能用数字表达它时,你就对它有了一定的了解;当表达它时,你就对它有了一定的了解;当你不能测量它,也不能用数字来表达时,你不能测量它,也不能用数字来表达时,就说明你对它的了解还很贫乏,不能令人就说明你对它的了解还很贫乏,不能令人满意:这可能是知识的开始,但你在思想满意:这可能是知识的开始,但你在思想上还远远没有进入科学的境地。上还远远没有进入科学的境地。过程和项目度量v测量可以应用于软件

5、过程中,目的是持续测量可以应用于软件过程中,目的是持续地改进软件过程。测量也可以应用于整个地改进软件过程。测量也可以应用于整个软件项目中,辅助进行估算、质量控制、软件项目中,辅助进行估算、质量控制、生产率评估及项目控制。最后,软件工程生产率评估及项目控制。最后,软件工程师还可以使用测量来帮助评估工作产品的师还可以使用测量来帮助评估工作产品的质量,并在项目进展过程中辅助进行战术质量,并在项目进展过程中辅助进行战术决策。决策。过程和项目度量vPAR96讨论了进行测量的理由:讨论了进行测量的理由:(1)刻画刻画通过刻画而获得对过程、产品、资源通过刻画而获得对过程、产品、资源和环境的了解,并建立同未来

6、评估进行比较的基和环境的了解,并建立同未来评估进行比较的基线;线;(2)评价评价通过评价来确定相对于计划的状况;通过评价来确定相对于计划的状况;(3)预测预测通过理解过程和产品间的关系,并构通过理解过程和产品间的关系,并构造这些关系的模型来进行预测;造这些关系的模型来进行预测;(4)改进改进通过识别障碍、根本原因、低效率和通过识别障碍、根本原因、低效率和其他改进产品质量和过程性能的机会来进行改进。其他改进产品质量和过程性能的机会来进行改进。v测量是一个管理工具,如果能正确地使用,它将测量是一个管理工具,如果能正确地使用,它将为项目管理者提供洞察力。因此,测量能够帮助为项目管理者提供洞察力。因此

7、,测量能够帮助项目管理者和软件团队制定出使项目成功的决策。项目管理者和软件团队制定出使项目成功的决策。过程领域和项目领域中的度量v过程度量过程度量的收集涉及所有的项目,而且要经历的收集涉及所有的项目,而且要经历相当长的时间,目的是提供能够引导长期的软相当长的时间,目的是提供能够引导长期的软件过程改进的一组过程指标。件过程改进的一组过程指标。项目度量项目度量使得软使得软件项目管理者能够:件项目管理者能够:(1)评估正在进行中的项目评估正在进行中的项目的状态;的状态;(2)跟踪潜在的风险;跟踪潜在的风险;(3)在问题造成在问题造成不良影响之前发现它们;不良影响之前发现它们;(4)调整工作流程或任调

8、整工作流程或任务;务;(5)评估项目团队控制软件工作产品质量的评估项目团队控制软件工作产品质量的能力。能力。v测量数据由项目团队收集,然后被转换成度量测量数据由项目团队收集,然后被转换成度量数据在项目期间使用。测量数据也可以传送给数据在项目期间使用。测量数据也可以传送给那些负责软件过程改进的人员。因此,很多相那些负责软件过程改进的人员。因此,很多相同的度量既可用于过程领域,又可用于项目领同的度量既可用于过程领域,又可用于项目领域。域。过程度量和软件过程改进v改进任何过程的唯一合理方法就是改进任何过程的唯一合理方法就是测量该过程的特定属性,再根据这些测量该过程的特定属性,再根据这些属性建立一组有

9、意义的度量,然后使属性建立一组有意义的度量,然后使用这组度量提供的指标来导出过程改用这组度量提供的指标来导出过程改进策略。但是,在讨论软件度量及其进策略。但是,在讨论软件度量及其对软件过程改进的影响之前,必须注对软件过程改进的影响之前,必须注意到:过程仅是众多意到:过程仅是众多“改进软件质量改进软件质量和组织性能的控制因素和组织性能的控制因素”中的一种。中的一种。软件质量和组织有效性的决定因素图19-1 软件质量和组织有效性的决定因素过程度量和软件过程改进v在图在图19-1中,过程位于三角形的中央,中,过程位于三角形的中央,连接了三个对软件质量和组织绩效有重大连接了三个对软件质量和组织绩效有重

10、大影响的因素。其中,人员的技能和动力被影响的因素。其中,人员的技能和动力被认为是对质量和绩效影响最大的因素,产认为是对质量和绩效影响最大的因素,产品复杂性对质量和团队绩效也有相当大的品复杂性对质量和团队绩效也有相当大的影响,过程中采用的技术也有一定的影响。影响,过程中采用的技术也有一定的影响。另外,过程三角形位于环境条件圆圈内,另外,过程三角形位于环境条件圆圈内,环境条件包括:开发环境、商业条件、客环境条件包括:开发环境、商业条件、客户特性。户特性。过程度量和软件过程改进v可以间接地测量软件过程的功效。即,可可以间接地测量软件过程的功效。即,可以根据从过程中获得的结果来导出一组度以根据从过程中

11、获得的结果来导出一组度量。这些结果包括:在软件发布之前发现量。这些结果包括:在软件发布之前发现的错误数的测度,提交给最终用户并由最的错误数的测度,提交给最终用户并由最终用户报告的缺陷的测度,交付的工作产终用户报告的缺陷的测度,交付的工作产品的测度,花费的工作量的测度,花费时品的测度,花费的工作量的测度,花费时间的测度,与进度计划是否一致的测度,间的测度,与进度计划是否一致的测度,以及其他测度。还可以通过测量特定软件以及其他测度。还可以通过测量特定软件工程任务的特性来导出过程度量。工程任务的特性来导出过程度量。过程度量和软件过程改进vGRA92认为不同类型的过程数据的使用可以分为认为不同类型的过

12、程数据的使用可以分为“私有的和公有的私有的和公有的”。私有度量的例子有:个人缺陷率、。私有度量的例子有:个人缺陷率、软件构件缺陷率和开发过程中发现的错误数。软件构件缺陷率和开发过程中发现的错误数。v“私有过程数据私有过程数据”的观点与的观点与Humphrey所建议的个人所建议的个人软件过程方法相一致。软件过程方法相一致。Humphrey认为过程改进能够、认为过程改进能够、也应该开始于个人级。私有过程数据是软件工程师个人也应该开始于个人级。私有过程数据是软件工程师个人改进其工作的重要驱动力。改进其工作的重要驱动力。v有些过程度量对于软件项目团队是私有的,但对所有团有些过程度量对于软件项目团队是私

13、有的,但对所有团队成员是公用的。例如,主要软件功能的缺陷报告、正队成员是公用的。例如,主要软件功能的缺陷报告、正式技术评审中发现的错误,以及每个构件或功能的代码式技术评审中发现的错误,以及每个构件或功能的代码行数或功能点数。这些数据可由团队进行评审,以便找行数或功能点数。这些数据可由团队进行评审,以便找出能够改善团队性能的指标。出能够改善团队性能的指标。过程度量和软件过程改进v公用的度量一般吸收了原本是个人或团公用的度量一般吸收了原本是个人或团队的私有信息。收集和评估项目级的缺陷队的私有信息。收集和评估项目级的缺陷率、工作量、时间以及相关的数据,来找率、工作量、时间以及相关的数据,来找出能够改

14、善组织过程性能的指标。出能够改善组织过程性能的指标。v软件过程度量对于组织提高其整体的过软件过程度量对于组织提高其整体的过程成熟度能够提供很大的帮助。不过,就程成熟度能够提供很大的帮助。不过,就像所有其他度量一样,软件过程度量也可像所有其他度量一样,软件过程度量也可能被误用,产生的问题比它们所能解决的能被误用,产生的问题比它们所能解决的问题更多。问题更多。过程度量和软件过程改进vGRA92提出一组提出一组“软件度量规则软件度量规则”。管理者和。管理者和开发者在制定过程度量大纲时,这些规则都适用:开发者在制定过程度量大纲时,这些规则都适用:v解释度量数据时使用常识,并考虑组织的敏感性。解释度量数

15、据时使用常识,并考虑组织的敏感性。v向收集测量和度量的个人及团队定期提供反馈。向收集测量和度量的个人及团队定期提供反馈。v不要使用度量去评价个人。不要使用度量去评价个人。v与开发者和团队一起设定清晰的目标,并确定为达到这些目标需与开发者和团队一起设定清晰的目标,并确定为达到这些目标需要使用的度量。要使用的度量。v不要用度量去威胁个人或团队。不要用度量去威胁个人或团队。v指出问题区域的度量数据不应该被指出问题区域的度量数据不应该被“消极地消极地”看待,这些数据仅看待,这些数据仅仅是过程改进的指标。仅是过程改进的指标。v不要在某一个别的度量上纠缠,而无暇顾及其他重要的度量。不要在某一个别的度量上纠

16、缠,而无暇顾及其他重要的度量。过程度量和软件过程改进v随着一个组织更加得心应手地收集和使用过随着一个组织更加得心应手地收集和使用过程度量,简单的指标获取方式就会逐渐被更程度量,简单的指标获取方式就会逐渐被更加精确的方法所取代,该方法称为统计软件加精确的方法所取代,该方法称为统计软件过程改进。本质上,过程改进。本质上,SSPI使用软件失效分析使用软件失效分析方法收集在应用软件、系统或产品的开发及方法收集在应用软件、系统或产品的开发及使用过程中所遇到的所有的错误及缺陷信息。使用过程中所遇到的所有的错误及缺陷信息。项目度量v软件过程度量用于战略目的,而软件项目度量软件过程度量用于战略目的,而软件项目

17、度量则用于战术目的。即,项目管理者和软件项目则用于战术目的。即,项目管理者和软件项目团队通过使用项目度量及从中导出的指标,可团队通过使用项目度量及从中导出的指标,可以改进项目工作流程和技术活动。以改进项目工作流程和技术活动。v在大多数软件项目中,项目度量的第一次应用在大多数软件项目中,项目度量的第一次应用是在估算阶段。从过去项目中收集的度量可以是在估算阶段。从过去项目中收集的度量可以作为估算当前软件工作量及时间的基础。随着作为估算当前软件工作量及时间的基础。随着项目的进展,可以将花费的工作量及时间的测项目的进展,可以将花费的工作量及时间的测量与最初的估算值量与最初的估算值(及项目进度及项目进度

18、)进行比较。项目进行比较。项目管理者可以使用这些数据来监控项目的进展。管理者可以使用这些数据来监控项目的进展。项目度量v随着技术工作的启动,其他项目度量也开随着技术工作的启动,其他项目度量也开始有意义了。生产率可以根据创建的模型、始有意义了。生产率可以根据创建的模型、评审的时间、功能点以及交付的源代码行评审的时间、功能点以及交付的源代码行数来测量。此外,对每个软件工程任务中数来测量。此外,对每个软件工程任务中所发现的错误也要进行跟踪。在软件从需所发现的错误也要进行跟踪。在软件从需求到设计的演化过程中,需要收集技术度求到设计的演化过程中,需要收集技术度量来评估设计质量,并提供若干指标,这量来评估

19、设计质量,并提供若干指标,这些指标将会影响代码生成及测试所采用的些指标将会影响代码生成及测试所采用的方法。方法。项目度量v项目度量的目的是双重的。首先,利用度项目度量的目的是双重的。首先,利用度量能够对开发进度进行必要的调整,以避量能够对开发进度进行必要的调整,以避免延迟,并减少潜在的问题及风险,从而免延迟,并减少潜在的问题及风险,从而使得开发时间减到最少。其次,项目度量使得开发时间减到最少。其次,项目度量可在项目进行过程中评估产品质量,必要可在项目进行过程中评估产品质量,必要时可调整技术方法以提高质量。时可调整技术方法以提高质量。v随着质量的提高,缺陷会减到最少。而随随着质量的提高,缺陷会减

20、到最少。而随着缺陷数的减少,项目中所需的修改工作着缺陷数的减少,项目中所需的修改工作量也会降低,这将使整个项目成本降低。量也会降低,这将使整个项目成本降低。软件测量v软件测量有两种分类方法:软件测量有两种分类方法:(1)软件过程软件过程(如花费的成本和工作量如花费的成本和工作量)和产品和产品(如产生的如产生的代码行代码行(LOC)、运行速度以及某段时间内、运行速度以及某段时间内报告的缺陷报告的缺陷) 的直接测量的直接测量;(2)产品的间接产品的间接测量,包括功能、质量、复杂性、有效性、测量,包括功能、质量、复杂性、有效性、可靠性、可维护性,以及许多其他的可靠性、可维护性,以及许多其他的“产产品

21、特性品特性”。v将项目度量联合起来可以得到整个软件组将项目度量联合起来可以得到整个软件组织公用的过程度量。织公用的过程度量。面向规模的度量v面向规模的软件度量是通过规范化质量和面向规模的软件度量是通过规范化质量和(或或)生产率的测量值而得到的,这些测量生产率的测量值而得到的,这些测量都基于已经开发的软件的规模。如果软件都基于已经开发的软件的规模。如果软件组织一直在做简单的记录,就会产生一个组织一直在做简单的记录,就会产生一个如图如图19-2所示的面向规模测量的表。该表所示的面向规模测量的表。该表列出了在过去几年中完成的每一个软件开列出了在过去几年中完成的每一个软件开发项目及其相关的测量数据。发

22、项目及其相关的测量数据。面向规模的度量图19-2 面向规模的度量面向规模的度量v为了产生能和其他项目中同类度量进行比为了产生能和其他项目中同类度量进行比较的度量,选择代码行作为规范化值。根较的度量,选择代码行作为规范化值。根据表中所包含的基本数据,每个项目都能据表中所包含的基本数据,每个项目都能得到一组简单的面向规模的度量:得到一组简单的面向规模的度量:v每千行代码每千行代码(KLOC)的错误数;的错误数;v每千行代码的缺陷数;每千行代码的缺陷数;v每千行代码的成本;每千行代码的成本;v每千行代码的文档页数;每千行代码的文档页数;v此外,还能计算出其他有意义的度量。此外,还能计算出其他有意义的

23、度量。面向功能的度量v面向功能的软件度量使用功能测量数据作面向功能的软件度量使用功能测量数据作为规范化值。应用最广泛的面向功能的度为规范化值。应用最广泛的面向功能的度量是功能点量是功能点FP。功能点是根据软件信息域。功能点是根据软件信息域的特性及复杂性来计算的。的特性及复杂性来计算的。调和代码行和功能点的度量方法v代码行和功能点之间的关系依赖于实现软代码行和功能点之间的关系依赖于实现软件所采用的程序设计语言及设计的质量。件所采用的程序设计语言及设计的质量。很多研究试图将很多研究试图将FP测量和测量和LOC测量联系起测量联系起来。来。v表表19-1(P340页页)给出了在不同的程序设给出了在不同

24、的程序设计语言中实现一个功能点所需的平均代码计语言中实现一个功能点所需的平均代码行数的粗略估算。行数的粗略估算。调和代码行和功能点的度量方法v人们发现基于功能点和人们发现基于功能点和LOC的度量都是对软件的度量都是对软件开发工作量和成本的比较精确的判定。然而,开发工作量和成本的比较精确的判定。然而,如果使用如果使用LOC和和FP进行估算,还必须要建立一进行估算,还必须要建立一个历史信息基线。个历史信息基线。v在过程度量和项目度量中,最关心的是生产率在过程度量和项目度量中,最关心的是生产率和质量和质量软件开发软件开发“输出量输出量”(作为投入的工(作为投入的工作量和时间的函数)的测量和对生产的工

25、作产作量和时间的函数)的测量和对生产的工作产品的品的“适用性适用性”的测量。为了进行过程改进和的测量。为了进行过程改进和项目策划,必须掌握历史的情况。在以往的项项目策划,必须掌握历史的情况。在以往的项目中,软件开发的生产率是多少?生产的软件目中,软件开发的生产率是多少?生产的软件质量如何?怎样利用以往的生产率数据和质量质量如何?怎样利用以往的生产率数据和质量数据推断现在的生产率和质量?如何利用这些数据推断现在的生产率和质量?如何利用这些数据帮助我们改进过程,以及更精确地规划新数据帮助我们改进过程,以及更精确地规划新的项目?的项目?面向对象的度量v传统的软件项目度量也可以用于估算面向传统的软件项

26、目度量也可以用于估算面向对象的软件项目。但是,这些度量并没有对象的软件项目。但是,这些度量并没有提供对进度和工作量进行调整的足够的粒提供对进度和工作量进行调整的足够的粒度,而这却是在演化模型或增量模型中进度,而这却是在演化模型或增量模型中进行迭代时所需要的。行迭代时所需要的。LOR94提出了下列提出了下列用于用于OO项目的度量。项目的度量。v场景脚本的数量场景脚本的数量v关键类的数量关键类的数量v支持类的数量支持类的数量v每个关键类的平均支持类数量每个关键类的平均支持类数量v子系统的数量子系统的数量面向用例的度量v与与LOC或或FP相类似,使用用例作为规范相类似,使用用例作为规范化的测量应该是

27、合理的。同化的测量应该是合理的。同FP一样,用例一样,用例也是在软件过程早期进行定义的。在重大也是在软件过程早期进行定义的。在重大的建模活动和构造活动开始之前,就允许的建模活动和构造活动开始之前,就允许使用用例进行估算。用例描述了用户可见使用用例进行估算。用例描述了用户可见的功能和特性,这些都是系统的基本需求。的功能和特性,这些都是系统的基本需求。用例与程序设计语言无关。另外,用例的用例与程序设计语言无关。另外,用例的数量同应用系统的规模和测试用例的数量数量同应用系统的规模和测试用例的数量成正比,而测试用例是为了充分测试该应成正比,而测试用例是为了充分测试该应用系统而必须设计的。用系统而必须设

28、计的。软件质量度量v软件工程的基本目标是在某个时间框架内软件工程的基本目标是在某个时间框架内开发出满足市场需要的高质量的系统、应开发出满足市场需要的高质量的系统、应用或产品。为了达到这个目标,软件工程用或产品。为了达到这个目标,软件工程师必须在成熟的软件过程背景下,使用有师必须在成熟的软件过程背景下,使用有效的方法及现代化的工具。此外,一个优效的方法及现代化的工具。此外,一个优秀的软件工程师必须通过测量来判断能否秀的软件工程师必须通过测量来判断能否实现高质量。实现高质量。软件质量度量v将软件工程师个人收集的私有度量结合起将软件工程师个人收集的私有度量结合起来,可以提供项目级的度量。虽然可以收来

29、,可以提供项目级的度量。虽然可以收集到很多质量测量数据,但在项目级上最集到很多质量测量数据,但在项目级上最主要的还是测量错误和缺陷的数量。从这主要的还是测量错误和缺陷的数量。从这些测量中导出的度量能够提供一个指标,些测量中导出的度量能够提供一个指标,表明个人及小组在软件质量保证和控制活表明个人及小组在软件质量保证和控制活动上的效力。动上的效力。软件质量度量v度量度量比如说工作产品比如说工作产品(如需求或设如需求或设计计)每功能点的错误数、在评审中每小每功能点的错误数、在评审中每小时发现的错误数、测试中每小时发现的错时发现的错误数、测试中每小时发现的错误数,使我们能够深入了解度量所涉及的误数,使

30、我们能够深入了解度量所涉及的活动的功效。有关错误的数据也能用来计活动的功效。有关错误的数据也能用来计算每个过程框架活动的缺陷排除效率算每个过程框架活动的缺陷排除效率DRE。测量质量v正确性、可维护性、完整性和可用性为项目团正确性、可维护性、完整性和可用性为项目团队提供了有用的指标。队提供了有用的指标。v正确性正确性:一个程序必须能够正确地执行,否则:一个程序必须能够正确地执行,否则对于用户就没有价值了。正确性是软件完成所对于用户就没有价值了。正确性是软件完成所要求的功能的程度。最常用的关于正确性的测要求的功能的程度。最常用的关于正确性的测量是每千行代码的缺陷数。量是每千行代码的缺陷数。v可维护性可维护性:可维护性是指遇到错误时程序能够:可维护性是指遇到错误时程序能够被修改的容易程度,环境发生变化时程序能够被修改的容易程度,环境发生变化时程序能够适应的容易程度,用户希望变更需求时程序能适应的容易程度,用户希望变更需求时程序能够被增强的容易程度。还没有一种方法可以直够被增强的容易程度。还没有一种方法可以直接测量可维护性,只能采用间接测量。有一种接测量可维护性,只能采用间接测量。有一种简单的面向时间的度量,称为平均变更时间简单的面向时间的度量,称为平均变更时间MTTC。测量质量v完整性完整性:这个属性测量的是一个系统对安:这个属性测量的是一个系统对安全性攻击的抵抗能力。软件的所有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论