12软件项目度量管理.docx
《12软件项目度量管理.docx》由会员分享,可在线阅读,更多相关《12软件项目度量管理.docx(33页珍藏版)》请在冰豆网上搜索。
![12软件项目度量管理.docx](https://file1.bdocx.com/fileroot1/2023-2/9/fda1e1e5-09fe-4e9d-9ffc-be62b2664fbd/fda1e1e5-09fe-4e9d-9ffc-be62b2664fbd1.gif)
12软件项目度量管理
韩万江姜立新,《软件项目管理案例教程》,机械工业出版社,2005-02
【丛书名】国家示范性软件学院系列教材
12软件项目度量管理2
12.1软件度量概述2
12.1.1度量定义3
12.1.2度量的类型4
12.1.3度量的作用4
12.1.4度量的成本4
12.2度量体系4
12.3度量技术5
12.3.1GQM技术5
12.3.2PsM技术6
12.4度量管埋过程7
12.4.1标识目标8
12.4.2选择度量指标8
12.4.3定义数据收集8
12.4.4分析度量9
12.4.5改逆度量过裎10
12.5度量计划10
12.5.1度量计划的构成10
12.5.2度量计划的买施12
12.6度量指标选择13
12.6.1PsMER分类组13
12.6.2s匚丨E=指标15
12.6.3PSPE=18
12.6.4SE⊥的度量指标19
12.7软件度量的建议20
12.8案例说明21
12.9小结22
12.10习题22
12软件项目度量管理
项目度量是实现量化管理的关键,没有度量,项目管理永远是主观的管理。
但是,项目度量常被项目管理过程所忽略,其实它很重要。
度量的作用不是立竿见影的,它的作用是潜在的,是逐步体现出来的。
所以,应该在项目计划中建立度量计划。
本章我们将进入路线图的第11站:
项目度量,如图12-1所示。
图12-1路线图第11站:
项目度量
我们的生活中同样充满了度量。
度量物体的长、宽、高以判断物体是否合乎相关标准,度量体温以便判断是否有发烧症状,度量读书的速度以便计划将来读书的时间等。
总之,度量在我们的日常生活中是无处不在的,而且起着比较重要的作用。
度量就像一把尺子,衡量合乎标准、规则、计划的情况。
在激烈的软件行业竞争中,客户都希望以更低的费用、更快的速度,获得更多的高质量的产品功能,并可以迅速实现新的功能,以满足不断变化的市场需求。
软件度量已经成为企业能否跟上快速变换的信息技术发展的关键要素。
12.1软件度量概述
软件度量为软件过程的不断改进和量化管理奠定了基础,也为管理层了解项目状态提供了帮助,但国内在这方面似乎经验不足。
近来,软件项目总是由于超进度和超预算而名声在外,而且还存在质量的问题,究其原因,主要是没有对进度、成本和质量等进行准确的预计,没有有效的度量。
软件度量已经发展成为一门至关重要的软件工程学科。
过去,很多的软件组织认为度量是额外的,是可以忽略的工作,其实,软件度量已经是软件工程的重要实践。
高效的组织在技术目标和管理目标上使用客观的度量数据,用度量来帮助计划和评价一个软件项目。
规划项目时,需要估计项目规模和进度;跟踪项目时,需要明确实际的工作量和时间与计划的对比情况;判断软件产品的稳定性时,需要明确发现和纠正缺陷的比率;定量了解项目的进展,需要对当前项目的绩效进行测量,并与基线进行比较。
这些都需要准确的度量,度量可以帮助项目经理更好地规划和控制项目,更多地了解项目的情况。
一个有效的项目管理应该是离不开度量的。
其实,软件度量是软件项目很重要的一项任务,只是目前还没有受到应有的重视。
从图12。
2可见,只有经过度量才能知道:
项目缺陷10%来自需求阶段,40%来自设计阶段,50%来自实现阶段。
也只有经过度量才能知道:
缺陷的发现有3%通过需求评审实现,5%通过设计评审实现,7%通过代码评审实现,25%通过功能测试实现,50%通过系统测试实现,还有10%的缺陷留给后来用户发现或者投诉。
当然,也可以通过度量知道解决缺陷的成本组成,如图12-3所示。
图12ˉ2阶段缺陷度量结杲
12.1.1度量定义
量度(mcasurc)被定义为测量的一个单位,必须为每个量度建立通用的或者局部的标准,代码行(LOC)是量度的一个例子,如果没有标准确定什么是代码行(LOC),组织就应该定义一个局部标准来说明代码行(LOC),或者采用相关文献的标准。
测量(measuremcnt)是一个行为或者过程,测量是为实体的所选属性赋予数字或者符号的过程。
属性是一个实体的特征,一个实体可以是物理对象,或者可以是发生在现实世界中的事件或者过程。
测量过程把现实世界中的实体映射到形式化的数学领域。
图12ˉ3缺陷与成本关系度量结果
度量(mctric)是一个指标器,指示多个(或者单个)量度的计算或者组合的结果,例如缺陷数/千代码行(KLOC)就是一个度量。
所以,一个量度是一个直接测量的结果,而一个度量是通过多个测量进行计算而得到的结杲。
软件度量是通过各种不同的量度对软件生存期中的各个元素进行测量的。
通过度量可以定量了解项目进度、工作量、产品规模、项目状态以及质量性能等,从而评估项目情况、跟踪进展、评价效率等。
SW-CMM中并没有一个专门的软件度量的关键过程域,而是将其贯穿于其他关键过程城中,不过在SW-CMM的继承者——CMMI中定义了一个专门的关键过程城:
度量与分析软件度量。
尽管度量和量度有不同形式的定义,但在实践中可以同义地互换使用。
因此,在软件工程的文献和实践中,术语“软件度量”(SoftwarcMctrics)、“软件量度”(SoftwarcMcasurcs)和“软件测量”(SoftwareMcasurcment)可以相互互换使用。
12.1.2度量的类型
从宏观上,可以将度量分为过程度量、项目度量、技术度量。
过程度量是量化了用于软件开发的环境或者过程的特征,过程度量具有战略性目的,有助子进行连续的过程改进。
项目度量量化了被开发软件项目的特征,项目度量具有战术性目的,辅助估算、质量控制、生产率评估、项目控制等。
技术度量是评估技术工作产品的质量,在项目中进行决策,比如:
项目的复杂性,偶合性等。
对于项目管理者,感兴趣的是项目度量和过程度量。
本章主要讲述过程度量和项目度量。
12.1.3度量的作用
软件度量能够为项目管理者提供有关项目的各种重要信息,同时也是评估项目活动的基础。
软件度量能为项目估算、计划提供基础数据,也提供了控制项目的量化信息。
同时,软件度量也为质量管理提供指示,推动企业的过程改进。
度量为软件组织提供了客观的信息,是帮助项目经理进行项目交流的有利工具。
度量可促进主动性的管理策略,度量指标的各种指示,就像质量目标的红绿指示灯一样,帮助项目经理进行决策,以便对费用、进度、质量等进行杈衡,以满足项目目标。
通过度量,可以量化实体的特征或者属性,以便了解它们、预测它‖可的未来行为,并最终控制它们。
所以,进行软件度量的三个主要作用是:
1)理解软件项吕;2)预测软件项目;3)控制软件项目。
12.1.4度量的成本
与大部分管理活动一样,度量管理也是有成本的,度量管理更多依赖子项目负贯人的判断和综合企业文化。
如杲收集和推进某类度量的成本是无法承受的,或者某些度量不能提供改善的信息,就不要进行这些度量。
在开始收集企业度量时,应从满足最低要求开始,然后逐步增加那些能以最低成本和最低工作量提供最高潜在利益的度量信息。
开始度量时可以设定度量底线:
收集度量的成本应与可获得的潜在利益相平衡。
防止意外成本(后杲)的发生,例如,测量生产率的时候,开发者一味扩大生产量,不顾镨误,加快编码速度,改变了原来的编码风格。
这是得不偿失的做法。
12.2度量体系
为了有效地进行软件度量,首先要选择合适的度量指标。
软件度量指标(SoftwareMctricIndicator)是进行软件度量时所选择的属性,属性是一个实体(例如项目产品、过程等)的特征或者性质。
例如,项目的成本是一个度量指标。
测量时对指标赋予相应的度量值。
图12-4说明与度量指标相关的干系人。
度量指标可以为项目管理者进行项目规划和项目控制提供参考;度量指标可以为软件工程过程组(SEPG)的过程改进提供依据;度量指标可以为公司的高层管理提供可视化的报告;度量指标可以为客户提供跟踪项目的可靠信息;度量指标可以为研究组织提供研究的资料。
图12ˉ4与度量指标相关的干系人
一项度量指标只是赋有相对数值的一些数字,规模、工作量、时间或者缺陷也只是一些数据的集合,多项度量指标结合起来才能形成度量体系。
利用度量体系的结果,可以确定最佳实践、建立过程改进的模型、分析项目发展趋势、改进评估方式、培训客户等。
度量体系是客观评价过程或者产品的标准。
为了让度量体系取得最大的效益,软件企业应该做到:
·将度量体系融人现有过程。
·将度量体系纳人企业文化。
·以项目为单位收集信息并汇总,从而产生组织的成效。
·用准确、可重复和持续的方式收集数据。
·初始度量,应该选择少量的度量指标。
·采用行业标准度量体系,促进与其他组织的比较。
·建立度量体系数据库。
·运用简单一致的度量方案。
·及时而恰当地交流度量方案的结果。
·最妤取得高层经理的支持。
·选择合适的人员实施度量。
·对相关人员培训度量规划和度量体系。
·采用明确的方式进行度量,不进行个人度量。
12.3度量技术
度量方法学,可以用于决策支持,目的是为一个软件开发项目选择、组织、交流和评价所需的度量。
其中GQM(Goal目标一Question问题一Mctric度量)和PSM(PracticalSoftwareMcasurcmcnt,实用软件度量)是两种重要的度量方法或者技术。
12.3.1GQM技术
由于度量工作不易开展,实施度量之初,选择一组数量少而且平衡的度量,有助于企业达到目标。
GQM(Goal目标一QuCstion问题-Mc饣nc度量)是一种很不错的技术,可以用于选择适当度量来满足需求。
采用GQM方法选择度量指标的基本步骤如下(详见图12-5)∶
l)首先选择几个项目目标或者几个企业目标,尽可能将目标叙述得可以量化、可以测量。
2)对于每个目标,设想一下必须回答的问题,看看是否达到目标。
3)然后,选择回答每个问题所必需的度量指标。
4)最后,确认进行软件度量的度量体系。
图12-5GQM技术
例如:
某软件公司确定的目标是:
1)一年内降低50%维护成本。
2)将进度估计的准确性提高到10%以内。
3)将下一个项目的系统测试时间减少15%。
对于第一个目标:
一年内降低50%维护成本,应该确定如下问题:
1)每个月的维护费用是多少?
2)支持每个应用软件的维护成本是多少?
3〕用子调整(调整以适应变更的环境)、完善(增加、提高)和修正(纠正缺陷)的费用
各是多少?
对于最后一个问题,可以提出如下的度量:
1)每类维护活动的时间。
2)每类维护活动时间内的总维护成本。
类似地,对于其他的目标,我们也可以逐步提出问题,然后再确定相应的度量指标。
12.3.2PsM技术
PSM(实用软件度量)是数十年来数十个组织的经验总结,它们是在实现如何最佳地完成软件项目度量过程中积累起来的。
PSM是基于成功量度工作中关键实践的一个全面度量过程,该过程反映每个项目的技术和管理特点,是基于风险和问题驱动的。
PSM包括三个基本的度量活动:
裁剪、应用和实施。
裁剪是选择一组有效、平衡的度量,GQM方法可以帮助实现这一目标。
应用是收集、加工、分析定义的度量数据。
实施是根据具体的企业和项目,建立一个有效的度量买既过桂。
PsM采用度量信息模型懈决了度量信息的数据结构,采跽螂型撼述了良量祗动和任务s良量信息模型如图12-6所示,它提供了定义特定项目度量并将度量与项目决策者的需要相关联的结构。
项目经理需要对项目的进度、成本、质量等做出综合的决策,因此,需要有项目实践中的信息作为决策的依据。
在度量实施和数据的收集过程中,度量信息模型将度量数据和相关的分析构造作为决策信”崽。
图|2ˉ6度量信”愈模型
度量过程模型(见图12-7)可以同度量信息模型一起,对一个项目提供实施度量的应用框架,它是通过计划→实施→检查→行动的管理顺序构造的,包括四个基本活动:
计划度量、执行度量、评价度量、建立和维持承诺。
核心的度量过程是计划度量和执行度量。
计划度量活动包括数据收集、分析和报告规程的定义和规划,它的输出是定义良好的度量方法、直接支持项目的信息需要。
执行度量活动直接解决了度量用户的需求,包括度量数据的收集、分析、处理;执行度量活动是通过执行度量计划而为项目决策提供有效的信息产品。
评价度量活动可以通过评估度量的应用和度量过程能力,提供改进措施,便于持续改进。
建立和维持承诺是确保度量获得相应的支持,获得相应的资源和基础设施。
只有进行正确的度量,才可能真正获得软件项目中的各种实际数据,为正确地估算、计划、控制项目性能提供帮助。
图127度量过程模型
12.4度量管埋过程
尽管很多人已经意识到度量的重要性,但是真正实施度量还是有一定的困难。
定义和实施度量过程的最佳方法是:
首先定义企业或者项目的目标,然后为其选择合适的度量,确定了度量指标之后,下一步就需要收集支持这些度量指标的特定数据集。
具体说,软件项目度量过程的基本步骤是:
1)标识目标。
2)选择度量指标。
3)定义数据收集。
4)分析度量。
5)改进度量过程。
12.4.1标识目标
标识目标是成功实施度量的第一步,如杲没有确定的目标,就妤比在没有软件需求的时候就开始进行软件项目的开发,这是无法成功的。
以下便是一些目标举例:
·提高项目生产率。
·提高项目质量。
·降低项目成本。
度量本身不说明问题,度量必须与一个目标进行比较以确定项目是否成功。
刚开始度量时,项目经理通常不太清楚项目组织当前的生产率或者质量水平,所以,初始的目标就可以执行得常规一些或者采用当前状态的度量作为基线,然后将后续的度量与塞线进行比较,以判断是否有所进步。
基线不一定容易得到,有时需要积累一些初始度量数据,实施一些测量并了解当前的水平。
例如,可能要跟踪系统缺陷三个月,然后按照月的平均值作为综合基线。
之后,可以根据当前的情况,设定特定的目标,例如将生产率提高l0%等。
12.4.2选择度量指标
标识目标之后,下一步是选择合适的度量指标,以便确定如何支持这些目标。
例如,针对上面标识的目标,确定度量指标,如表12币1所示。
表丬2丬选择度且指标
目标
度量指标
提高项目生产率提高项围质量
每小时的功能点数
降低项目成本
每个功能点产住的缺陷数每个功能点的戌本
作为软件企业,在开始选择度量时,应该从少数的度量值人手,这样才能更便捷、准确和一致地收集到数据。
下面给出一个适合起步阶段的度量方案:
1)生产率。
生产率是指消耗资源、开发软件过程中的效率。
例如LOC/小时。
2)质量。
质量既是软件过程的度量指标,又是已交付软件产品的度量指标。
例如缺陷率、
缺陷排除率等。
3)规模成本。
规模成本是决定项目能否继续进行的一个至关重要的参数,成本超出会导
致项目失败。
例如人月工作量、实际成本、计划成本等。
4)时间。
时间用来编制项目进度,也用来确定在预定日期内完成项目所需要的资源,时
间还能影晌软件的质量。
例如工期等。
为了完成这些度量体系,需要更多其他的基本度量,例如表示规模的代码行、功能点,表示工作量的工时数,表示质量的缺陷数,表示时间的日期,表示成本的金钱等度量指标。
它们可以以各种方式组合成上面的度量体系。
软件组织必须明确、一致地定义这些度量指标,并且可以捕获它们。
12.4.3定义数据收集
选择了度量指标之后,就可以定义支持这些度量指标所需要的数据:
明确度量的各项具体活动;确定度量时间、确定度量负责人、确定度量报告形式等,必要时可以赋予各种度量相应的优先级。
⒈数据定义
度量指标的每项定义都要进行验证,并以可以理解的方式进行定义,例如如果选择了每小时功能点的生产率作为度量指标,就需要定义功能点和功能点的工作时间量。
2-数据收集
尽最大可能把度量收集活动集成到项目的软件开发过程中,作为软件项目活动的一部分,而不是额外的工作。
数据应该在支持选择的度量指标的那些点上进行收集。
例如,如果项目的目标是提高项目生产率,而且度量指标是功能点/小时,那就需要计算执行的功能点数,同时收集其工作时间量。
3,|&集度垦的责任
为了确保数据的收集,需要指定收集和报告每顼数据的负责人,例如,一些人负责记录数据,一些人负责收集数据,还有一些人负责报告数据等。
⒋度曼收集的工具
在收集度量数据的时候,应该利用现有的数据收集形式或者体系,避免重复和混乱,尽可能利用自动化的工具帮助度量数据的收集和分析,可以通过采用纸面模板、电子数据表、预定义报告、软件工具等方式实现。
收集过程的自动化可以降低度量工作的成本,并增强收集数据的准确性。
例如,作为一个软件配置项的软件模块放人配置库之后,计数器程序就可以自动计算代码行数等。
表12亏2是度量数据定义的一个表格。
表亻2-2项目度丑走义
目标
度量指标
数据定义
责任
提高项目化产率
功能点//l`时
项目实施过程中计算出功能点数
功能点负责人用电子表格记录数据
项目开发周期内记录工作时间量
开发人贞随时记录数据
提高顶目质量
缺陷'功能点
项目实施过程中计算出功能点数
功能点负责人用电子表格记录数据
计算用户使用三个月后的缺陷数
服务台的人员在接到用户的报告后采用缺陷跟踪系统记录数据
降低项目成本
成本'功能点
项目实施过程中计算出功能点数
功能点负责人用电子表格记录数据
按工作量计算出劳动成本
项目经理在项目进行过程中记录并计算
项目周期内记录非芳动成本
12.4.4分析度量
分析度量是根据收集的数据,同时汇总历史数据,与既定的目标进行跟踪比较,得出相应的结论。
汇总数据时要汇总已经完成的项目的度量数据和当前项目的历史数据。
进行数据度量时应该使用度量数据库,存储和收集度量数据。
分析度量的主要原因是要给出结论并做出预测,这些结论和预测可用于指导项目的技术和管理过程。
最基本的分析活动之一是随着时间的变化绘制出度量结果,并在项目的进展中寻找其特征和趋势,其中既有预测和预期的数据,也有实际的曲线,典型的例子是成本和进度数据、产生的代码行数或者存储设备的使用情况等。
度量报告的确定包括确定度量报告的对象、报告的频率和报告的形式。
度量报告的对象除了包括项吕经理、项目组成员、高层领导、客户、过程改进入员等外,还应包括提供信息的人员和数据收集过程的人员,他们都应该从中获益,获得相关的信息。
项目组人员利用度量结果分析项目的现状,预测项目的后续情况,同时,也获得必要的过程改进信息。
度量报告至少应该包括:
·度量结果:
看到的事实。
例如“某某项目,第二阶段的缺陷率下降6%”♂
·度量结论:
分析结果是什么。
例如“某某项目,第二阶段的缺陷率下降6%,是由于在
项目第二阶段增加了技术评审的频度和质量”。
要深人了解度量值说明的内在问题,比
如某个功能点发现的缺陷减少,就要仔细探讨是因为测试效果下降了,还是因为开发质
量提高了,缺陷数下降了哪些等。
·建议:
下一步如何做。
例如,“建议进一步加强技术评审的效率,同时将技术评审作为
过程改进,推广到企业的软件开发过程中”。
使用度量的数据可以进行软件项目的各种决策,例如:
·可以判断产品的推出程度。
·可以了解客户项目的成本和进度。
ˉ
·可以考虑在估计成本和进度时包括多少偶然因素。
·可以估计在过程改进中投资何处能得到最高的回报。
12.4.5改逆度量过裎
与SW-CMM的软件过程改进模型IDEAL类似,度量过程的改进也有PIMA(Plan。
ImplcmcntationˉMctric—Action,计划实施度量改进)模型:
计划:
它要求在启动开发活动前首先确定用户的需求,以确保计划和度量需求的制定早于度量指标的选择。
在设计和实施方案前,公司需要确定目标并确立软件度量(计划〉需求(问题)。
实施:
实施阶段包括筛选和设计适合该计划的恰当度量体系,以及培训、启动和收集具体的指导性度量指标。
度量:
在度量过程中,要结合度量指标,收集、分析、审核和报告实际数据,并汇集和呈报具有可操作性的管理信'急。
改进:
根据前一步的数据,确立适当的过程改进方法,执行完行动后再循环返回到计划步骤,确认下一度量方案是否仍然符合目标‘
12.5度量计划
为了能更好控制项目进展和评估项目性能,也为了能向将来项目提供历史信息,建立一个项目度量计划是必需的。
为特定的项目制定度量计划,需要将度量信息模型实例化,以便生成一个项目度量产品,供项目决策和后续项目之用。
一个软件度量程序的关键活动是规划+工作,实施和使用度量,以及改进或者精化度量程序。
12.5.1度量计划的构成
一个度量计划的执行产生项目需要的度量信息产品,这些信息产品可以作为项目决策的指示器。
度量规划包括三个任务:
1)定义项目的目标;2)选择支持达到目标的度量;3)定义实施必要的测量过程、计算所需的度量、需要的政策和规程。
即度量计划是项目目标需要的度量(信,歆需要)、度量构造和度量规程的集合。
图12-8描述了度量计划中的信息需要、度量构造和度量规程的关系。
信息需要应该与项目的目标一致,同时也应该与实现目标的范围相关。
很多的项目都是根据成本、进度、质量和软件范围等来实现既定的目标。
度量构造定义了度量的对象和如何对数据进行组合以便产生满足信息需要的结果。
度量规程定义了收集和组织数据的机制,要求这些数据可以实例化度量构造。
定义妤目标之后,选择度量集合,以测量目标的满足程度。
选择度量必须是现实的。
因此,在选择度量时,必须清楚地理解计算度量所需的数据,以及如何通过计算这些数据得到度量。
面对大量的度量,如何选择一个小型的、有意义的度量集是很重要的。
理想情况下,选择的度量应该具有如下的特征:
·简单:
度量的定义简单、易于理解。
·客观:
不同的人使用同一度量,应该得到相同的值。
·易收集:
收集数据的成本或者工作量是合理而且可以接受的。
·健壮性:
度量对不相关的改变是不敏感的。
·正确性:
度量的测量应该是它所定义的内容。
图12-8度量计划的组成关系
如果度量只是支持一个单独的项目,那么所选择的度量以及被狈!
量的数据和度量的单位都应该被记录到项目度量计划中。
如杲设计的度量方案支持多个项目,那么共同的信息应该置于一个单独的组织度量计划中。
度量计划还应该定义度量规程,例如:
·何时、以何种频率实施测量过程和收集数据。
·记录和汇报结果的时间要求。
·被测量数据的来源。
·收集、抽取和记录数据的形式和规程。
·数据如何被存储和访问。
·谁负责设计度量数据库、谁负责维护和监督度量工作。
·谁负责收集度量数据。
·谁使用度量数据。
·数据如何被确认、分析和报告。
·获取并维护支持过程的所有支持工具。
项目管理者需要在项目执行期间对产品的质量进行定期评价,软件的缺陷率(缺陷数/KLOC)便是一个重要的度量指标,它的大小可以作为决策的指示器。
缺陷率是一个派生度量,即需要获取多于一个属性的信息,是两个或多个基本度量的函数。
这里,缺陷率需要的基本度量是代码行数和缺陷数的度量,缺陷率的函数是:
缺陷率=1000x缺陷数/代码行数。
基本度量是对单个属性的度量,执行度量产生一个度量值,例如代码行数、缺陷数等。
具体的度量过程如图12-9和图12亏10所示。
度量分析模型是基子构造的度量及其随着时间变化的行为期望饣是包含多个基本度量或者派生度量的算法或者计算。
图l2-9缺陷度量过程
图12-10缺陷拴制线
12.5.2度量计划的买施
实施度量计划所涉及的活动包括度量收集、度量确认、度量分析和度量改进。
对于小型的项目,项目经理可以负责实施度量活动;对于大型项目,项目经理可以设置专门的度量人员。
无论如何,项目经理都需要进行度量活动,保证收集和报告的度量数据是准确的,同时分析潜在的问题指标,并采取相应的措