度量的过程度量
展开全部 软件过程性能 过程度量是对软件开发过程的各个方面进行度量,目的在于预测过程的未来性能,减少过程结果的偏差,对软件过程的行为进行目标管理,为过程控制、过程评价持续改善提供定量性基础。
过程度量与软件开发流程密切相关,具有战略性意义。
软件过程质量的好坏会直接影响软件产品质量的好坏,度量并评估过程、提高过程成熟度可以改进产品质量。
相反,度量并评估软件产品质量会为提高软件过程质量提供必要的反馈和依据。
过程度量与软件过程的成熟度密切相关,其度量模型如图7-2所示:软件过程性能的度量模型软件过程管理中的过程度量弗罗哈克(William A.Florac)、帕克(Robert E.Park)和卡尔顿(Anita D.Carleton)在《实用软件度量:过程管理和改善之度量》(Practical Software Measurement:Measuring for Process Management and Improvement)中描述了过程管理和项目管理的关系。
认为软件项目团队生产产品基于三大要素:产品需求、项目计划和已定义软件过程。
度量数据在项目管理中将被用来:(1)识别和描述需求,(2)准备能够实现目标的计划,(3)执行计划,(4)跟踪基于项目计划目标的工作执行状态和进展。
而过程管理也能使用相同的数据和相关度量来控制和改善软件过程本身。
这就意味着,软件组织能使用建构和维持度量活动的共同框架来为过程管理和项目管理两大管理功能提供数据。
软件过程管理包括定义过程、计划度量、执行软件过程、应用度量、控制过程和改善过程,其中计划度量和应用度量是软件过程管理中的重要步骤,也是软件过程度量的核心内容。
计划度量建立在对已定义软件过程的理解之上,产品、过程、资源的相关事项和属性已经被识别,收集和使用度量以进行过程性能跟踪的规定都被集成到软件过程之中。
应用度量通过过程度量将执行软件过程所获得的数据,以及通过产品度量将产品相关数据用来控制和改善软件过程。
软件过程度量的内容软件过程度量主要包括三大方面的内容,一是成熟度度量(maturity metrics),主要包括组织度量、资源度量、培训度量、文档标准化度量、数据管理与分析度量、过程质量度量等等;二是管理度量(management metrics),主要包括项目管理度量(如里程碑管理度量、风险度量、作业流程度量、控制度量、管理数据库度量等)、质量管理度量(如质量审查度量、质量测试度量、质量保证度量等)、配置管理度量(如式样变更控制度量、版本管理控制度量等);三是生命周期度量(life cycle metrics),主要包括问题定义度量、需求分析度量、设计度量、制造度量、维护度量等。
软件过程度量流程软件过程的度量,需要按照已经明确定义的度量流程加以实施,这样能使软件过程度量作业具有可控制性和可跟踪性,从而提高度量的有效性。
软件过程度量的一般流程主要包括:确认过程问题;收集过程数据;分析过程数据;解释过程数据;汇报过程分析;提出过程建议;实施过程行动;实施监督和控制。
这一度量过程的流程质量能保证软件过程度量获得有关软件过程的数据和问题,并进而对软件过程实施改善。
个人软件过程的概述
随着软件工程知识的普及,软件工程师都知道,要开发高质量的软件,必须改进软件生产的过程。
目前,业界公认由CMU/SEI开发的软件能力成熟度模型SW-CMM是当前最好的软件过程,并且CMM已经成为事实上的软件过程工业标准。
但是,CMM虽然提供了一个有力的软件过程改进框架,却只告诉我们应该做什么,而没有告诉我们应该怎样做,并未提供有关实现关键过程域所需要的具体知识和技能。
为了弥补这个欠缺,Humphrey又主持开发了个体软件过程(Personal Software Process,PSP)。
在CMM1.1版本的18个关键过程域中有12个与PSP有关,据统计,软件项目开发成本的70%取决于软件开发人员个人的技能、经验和工作习惯。
因此,一个单位的软件开发人员如能接受PSP培训,对该单位软件能力成熟度的升级是一个有力的保证。
CMM侧重于软件企业中有关软件过程的宏观管理,面向软件开发单位,PSP则侧重于企业中有关软件过程的微观优化,面向软件开发人员。
二者互相支持,互相补充,缺一不可。
按照PSP规程,改进软件过程的步骤首先需要明确质量目标,也就是软件将要在功能和性能上满足的要求和用户潜在的需求。
接着就是度量产品质量,有了目标还不行,目标只是一个原则性的东西,还不便于实际操作和判断,因此,必须对目标进行分解和度量,使软件质量能够测量。
然后就是理解当前过程,查找问题,并对过程进行调整。
最后应用调整后的过程,度量实践结果,将结果与目标做比较,找出差距,分析原因,对软件过程进行持续改进。
就象CMM为软件企业的能力提供一个阶梯式的进化框架一样,PSP为个体的能力也提供了一个阶梯式的进化框架,以循序渐进的方法介绍过程的概念,每一级别都包含了更低一级别中的所有元素,并增加了新的元素。
这个进化框架是学习PSP过程基本概念的好方法,它赋予软件人员度量和分析工具,使其清楚地认识到自己的表现和潜力,从而可以提高自己的技能和水平。
度量的管理功能
没有对软件过程的可见度就无法管理;而没有对见到的事物有适当的度量或适当的准则去判断、评估和决策,也无法进行优秀的管理。
我们说软件工程的方法论主要在提供可见度方面下工夫。
但仅仅是方法论的提高并不能使其成为工程学科。
这就需要使用度量。
度量是一种可用于决策的可比较的对象。
度量已知的事物是为了进行跟踪和评估。
对于未知的事物,度量则用于预测。
本专题将讨论软件度量的一些基本问题。
但应认识到软件度量的成果是非常初步的,还需要大量工作才可能真正地做到实用化,但它的实用化成就将对软件的高质量和高速发展有不可估量的影响。
那么, 一、什么是度量呢? 1、度量概念:度量存在于左右我们生活的很多系统的核心之中。
在经济领域,度量决定着价格和付款的增加;在雷达系统中,度量使我们能透过云层探测到飞机;在医疗系统中,度量使得能够诊断某些特殊疾病;在天气预测系统中,度量是天气预报的基础;没有度量,技术的发展根本无法进行。
度量的正式定义是: 度量 是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便以这种方式来根据已明确的规则来描述它们.因此,度量关注的是获取关于实体属性的信息。
一个实体可以是一个实物,如人或房间;或者是一个事件,如旅行;或软件项目的测试阶段。
属性是我们所关注的实体的特征或特性,如血压的高度(人)、时间(测试阶段)、范围或颜色(房间)、花销(旅行) 等。
因此,说度量事物或度量属性的说法是不完全正确的;应该说度量事物的属性。
度量房间的说法是模糊的;我们可以说度量它的长度、范围和温度等。
同样说度量温度的说法也是模糊的,应该说:我们度量的是某一特定地理位置和特定情况下的温度。
2、工程学科需要度量软件工程要的是有模型和理论支持的方法。
如在设计电路的时候我们应用欧姆定律。
这个定律描述了电路中电阻、电流和电压三者之间的关系。
但是这些理论已超出了一般意义上的科学方法的范畴,在这种范畴里最基本的东西是度量。
度量除了在发展一个理论的过程中起作用外,我们使用度量并应用它们。
因此设计一个特定电流和电阻的电路时我们就知道需要多大的电压。
如果没有度量,我们很难想象关于电子、机械、及普通工程的定律能得到发展。
但事实上在软件工程的主流里度量却被忽略了。
现在的情况是:■当我们在设计和开发软件产品的时候,我们并未能制定出度量的目标。
例如:我们保证说我们将使用户界面友好、可靠、易于维护;而并未使用度量的术语来详细说明它们的具体含义。
Gilb曾经说过:所谓模糊目标定理,就是没有明确目标的项目将不能明确地达到它的目标。
■我们未能对构成软件项目实际费用的各个不同的部分进行有效的度量。
譬如:通常我们并不知道,和测试阶段相比,设计阶段花费时间多大。
■我们并未试图使我们开发的产品的各种质量合格。
因此我们未能使用术语(如:在一段时间里使用故障的可能性、把产品安装到新环境中需花费的工作量等)向潜在的用户说明产品的可靠性很高。
■我们总是试图说服自己使用另一种新的革新的开发技术和方法进行软件开发事实上,我们在软件度量方面做的工作很少很少,而且所作的度量方面的工作也与一般科学意义上的度量相分离。
我们经常会看到诸如此类的话:软件的费用有80%花费在维护上。
或软件每一千行程序中平均有55个Bugs。
。
但是这些话并没有告诉我们这样的结果是怎样产生的、试验是怎样设计、执行的、度量的是那个实体、及错误的框架是什么等等。
没有这些东西,我们就不能在我们自己的环境中客观地进行反复度量,重现度量的结果以获得与工业标准的真实比较。
因此,归因于度量不充分的问题的产生是由于缺乏严格的度量方法造成的。
除了传统的对计算机硬件的性能进行度量外,对算法的复杂性的度量一直是计算机科学的重要组成部分。
但是,这种度量方法只适用于小程序,而对大型、复杂的软件来说它却无能为力了。
这就属于软件工程的范畴了。
如果我们不承认度量将会一个更重要的作用的话,软件危机将在随后的几年里依然存在 五、软件度量工具随着软件定量方法(如:软件度量)的重要性不断增加,市场上出现了许多度量工具。
然而,度量工具还是很混乱。
因为没有统一的度量标准规范,每种工具发明商家都是按照他们自己的软件度量规范。
对度量工具做了好的综述。
个人软件过程的介绍
个人软件过程(Personal Software Process,PSP)是一种可用于控制、管理和改进个人工作方式的自我持续改进过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP与具体的技术(程序设计语言、工具或者设计方法)相对独立,其原则能够应用到几乎任何的软件工程任务之中。
PSP能够说明个体软件过程的原则; 帮助软件工程师作出准确的计划;确定软件工程师为改善产品质量要采取的步骤;建立度量个体软件过程改善的基准;确定过程的改变对软件工程师能力的影响。
软件度量的意义
度量存在于左右我们生活的很多系统的核心之中。
在经济领域,度量决定着价格和付款的增加;在雷达系统中,度量使我们能透过云层探测到飞机;在医疗系统中,度量使得能够诊断某些特殊疾病;在天气预测系统中,度量是天气预报的基础;没有度量,技术的发展根本无法进行。
度量的正式定义是: 度量 是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便以这种方式来根据已明确的规则来描述它们.因此,度量关注的是获取关于实体属性的信息。
一个实体可以是一个实物,如人或房间;或者是一个事件,如旅行;或软件项目的测试阶段。
属性是我们所关注的实体的特征或特性,如血压的高度(人)、时间(测试阶段)、范围或颜色(房间)、花销(旅行) 等。
因此,说度量事物或度量属性的说法是不完全正确的;应该说度量事物的属性。
度量房间的说法是模糊的;我们可以说度量它的长度、范围和温度等。
同样说度量温度的说法也是模糊的,应该说:我们度量的是某一特定地理位置和特定情况下的温度。
如在设计电路的时候我们应用欧姆定律。
这个定律描述了电路中电阻、电流和电压三者之间的关系。
但是这些理论已超出了一般意义上的科学方法的范畴,在这种范畴里最基本的东西是度量。
度量除了在发展一个理论的过程中起作用外,我们使用度量并应用它们。
因此设计一个特定电流和电阻的电路时我们就知道需要多大的电压。
如果没有度量,我们很难想象关于电子、机械、及普通工程的定律能得到发展。
但事实上在软件工程的主流里度量却被忽略了。
情况是:■当我们在设计和开发软件产品的时候,我们并未能制定出度量的目标。
例如:我们保证说我们将使用户界面友好、可靠、易于维护;而并未使用度量的术语来详细说明它们的具体含义。
Gilb曾经说过:所谓模糊目标定理,就是没有明确目标的项目将不能明确地达到它的目标。
■我们未能对构成软件项目实际费用的各个不同的部分进行有效的度量。
譬如:通常我们并不知道,和测试阶段相比,设计阶段花费时间多大。
■我们并未试图使我们开发的产品的各种质量合格。
因此我们未能使用术语(如:在一段时间里使用故障的可能性、把产品安装到新环境中需花费的工作量等)向潜在的用户说明产品的可靠性很高。
■我们总是试图说服自己使用另一种新的革新的开发技术和方法进行软件开发事实上,我们在软件度量方面做的工作很少很少,而且所作的度量方面的工作也与一般科学意义上的度量相分离。
我们经常会看到诸如此类的话:软件的费用有80%花费在维护上。
或软件每一千行程序中平均有55个Bugs。
。
但是这些话并没有告诉我们这样的结果是怎样产生的、试验是怎样设计、执行的、度量的是那个实体、及错误的框架是什么等等。
没有这些东西,我们就不能在我们自己的环境中客观地进行反复度量,重现度量的结果以获得与工业标准的真实比较。
因此,归因于度量不充分的问题的产生是由于缺乏严格的度量方法造成的。
除了传统的对计算机硬件的性能进行度量外,对算法的复杂性的度量一直是计算机科学的重要组成部分。
但是,这种度量方法只适用于小程序,而对大型、复杂的软件来说它却无能为力了。
这就属于软件工程的范畴了。
如果我们不承认度量将会一个更重要的作用的话,软件危机将在随后的几年里依然存在
项目成本估算方法的面向规模(LOC)的度量
面向规模的软件度量通过规范化质量和生产率测量的方法得到,这种测量是基于所生产软件的规模(Size)确定的。
为了与其他项目中的同类度量相比较,选择代码行作为规范化,这样,就可以为每个项目产生一组简单的、面向规模的度量标准:●每千行代码(KLOC)的错误数。
●每千行代码行(KLOC)的缺陷数。
●每千行代码行(KLOC)的成本。
●每千行代码行(KLOC)的文档页数。
●每人月错误数。
●每页文档的成本。
面向规模的软件度量,通常并不被认为是软件开发过程中最优的方法,因为有很多因素直接影响代码的行数。
例如,代码行数依靠软件和硬件的选择,应用商业数据库管理系统就不用再编写有关数据库管理部分的代码。
而用ADA语言就比用FORTRAN语言的代码行要多等。
因此,在1979年Albercht提出面向功能点(FP)软件度量。