软体度量(software measurement)是对软体开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软体度量,就不能从软体开发的暗箱中跳将出来。
基本介绍
- 中文名:软体度量
- 外文名:software measurement
- 作用:从软体开发的暗箱中跳将出来
- 目的:理解、预测、评估、控制和改善
基本介绍
(software measurement)对软体开发项目、过程及其产品进行数据定义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、控制和改善。没有软体度量,就不能从软体开发的暗箱中跳将出来。通过软体度量可以改进软体开发过程,促进项目成功,开发高质量的软体产品。度量取向是软体开发诸多事项的横断面,包括顾客满意度度量、质量度量、项目度量、以及品牌资产度量、智慧财产权价值度量,等等。度量取向要依靠事实、数据、原理、法则;其方法是测试、审核、调查;其工具是统计、图表、数字、模型;其标準是量化的指标。
发展历程
如Lemmerich所言, 测量在科学领域有悠久的历史。相对早在1889年就定义好了度量单位~米的长度测量,温度的度量複杂的多。Fahrenheit和Celsius分别在1714年和1742年提出了基于某固定点间隔递增等级的温度度量方法。Celsius将100度和0度之间分为100个等份。但问题是一直不能唯一确定50摄氏度。而且长度的测量总是一个比例尺度,但是温度可能用间隔( 摄氏/华氏温度表) 或者比例尺度(开氏温度)来衡量。
软体度量流程图

今天,计算机在我们生活的每个领域几乎都扮演了非常重要的角色。在计算机上运行的软体也越来越重要。因此,可预测、可重複、準确地控制软体开发过程和软体产品已经非常重要。软体度量就是衡量软体品质的一种手段。 软体度量或者说软体工程度量领域是一个在过去30多年研究非常活跃的软体工程领域。软体度量(software measurement)和软体量度(software metrics)一样非常有名(译者注:为了区分,译者将software measurement和software metrics分别译成软体度量和软体量度,其实他们都可以表示软体度量)。但学界还没有明确这两个术语的区别。参照测量理论的相关术语,我们採用软体度量(software measurement)。从文献上看,这两个术语是同义词。量度(metric)在这里不作度量空间理解,它理解为:度量是客观对象到数字对象的同态映射。同态映射包括所有关係和结构映射。用另一句话说,软体品质和软体度量成直对关係。这是度量和软体度量的根本理念。
研究阵营
软体度量研究主要分为两个阵营:一部分认为软体可以度量,一部分认为软体无法通过度量分析。无论如何,研究主流是关心软体的品质和认为软体需要定量化度量。目前有超过上千种软体度量方法被软体研究人员及从业人员提出,并且到今天有超过5000份论文出版发表。
三维度
软体度量能够为项目管理者提供有关项目的各种重要信息,其实质是根据一定规则,将数字或符号赋予系统、构件、过程或者质量等实体的特定属性,即对实体属性的量化表示,从而能够清楚地理解该实体。软体度量贯穿整个软体开发生命周期,是软体开发过程中进行理解、预测、评估、控制和改善的重要载体。软体质量度量建立在度量数学理论基础之上。软体度量包括3个维度,即项目度量、产品度量和过程度量,具体情况如表-1所示。
软体度量

四、为什幺需要软体度量 在软体开发中,软体度量的根本目的是为了管理的需要。利用度量来改进软体过程。人们是无法管理不能度量的事物。在软体开发的历史中,我们可以意识到,在60年代末期的大型软体所面临的软体危机反映了软体开发中管理的重要性
管理功能
没有对软体过程的可见度就无法管理;而没有对见到的事物有适当的度量或适当的準则去判断、评估和决策,也无法进行优秀的管理。我们说软体工程的方法论主要在提供可见度方面下工夫。但仅仅是方法论的提高并不能使其成为工程学科。这就需要使用度量。度量是一种可用于决策的可比较的对象。度量已知的事物是为了进行跟蹤和评估。对于未知的事物,度量则用于预测。本专题将讨论软体度量的一些基本问题。但应认识到软体度量的成果是非常初步的,还需要大量工作才可能真正地做到实用化,但它的实用化成就将对软体的高质量和高速发展有不可估量的影响。那幺, 一、什幺是度量呢? 1、度量概念:度量存在于左右我们生活的很多系统的核心之中。在经济领域,度量决定着价格和付款的增加;在雷达系统中,度量使我们能透过云层探测到飞机;在医疗系统中,度量使得能够诊断某些特殊疾病;在天气预测系统中,度量是天气预报的基础;没有度量,技术的发展根本无法进行。度量的正式定义是: 度量 是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便以这种方式来根据已明确的规则来描述它们.
因此,度量关注的是获取关于实体属性的信息。一个实体可以是一个实物,如人或房间;或者是一个事件,如旅行;或软体项目的测试阶段。属性是我们所关注的实体的特徵或特性,如血压的高度(人)、时间(测试阶段)、範围或颜色(房间)、花销(旅行) 等。因此,说"度量事物"或"度量属性"的说法是不完全正确的;应该说"度量事物的属性"。"度量房间"的说法是模糊的;我们可以说度量它的长度、範围和温度等。同样说"度量温度"的说法也是模糊的,应该说:我们度量的是某一特定地理位置和特定情况下的温度。2、工程学科需要度量软体工程要的是有模型和理论支持的方法。
如在设计电路的时候我们套用欧姆定律。这个定律描述了电路中电阻、电流和电压三者之间的关係。但是这些理论已超出了一般意义上的科学方法的範畴,在这种範畴里最基本的东西是度量。度量除了在发展一个理论的过程中起作用外,我们使用度量并套用它们。因此设计一个特定电流和电阻的电路时我们就知道需要多大的电压。
如果没有度量,我们很难想像关于电子、机械、及普通工程的定律能得到发展。但事实上在软体工程的主流里度量却被忽略了。
现在的情况是:
■当我们在设计和开发软体产品的时候,我们并未能制定出度量的目标。例如:我们保证说我们将使用户界面友好、可靠、易于维护;而并未使用度量的术语来详细说明它们的具体含义。Gilb曾经说过:所谓模糊目标定理,就是没有明确目标的项目将不能明确地达到它的目标。
■我们未能对构成软体项目实际费用的各个不同的部分进行有效的度量。譬如:通常我们并不知道,和测试阶段相比,设计阶段花费时间多大。
■我们并未试图使我们开发的产品的各种质量合格。因此我们未能使用术语(如:在一段时间里使用故障的可能性、把产品安装到新环境中需花费的工作量等)向潜在的用户说明产品的可靠性很高。
■我们总是试图说服自己使用另一种新的革新的开发技术和方法进行软体开发
事实上,我们在软体度量方面做的工作很少很少,而且所作的度量方面的工作也与一般科学意义上的度量相分离。我们经常会看到诸如此类的话:"软体的费用有80%花费在维护上。"或"软体每一千行程式中平均有55个Bugs。"。但是这些话并没有告诉我们这样的结果是怎样产生的、试验是怎样设计、执行的、度量的是那个实体、及错误的框架是什幺等等。没有这些东西,我们就不能在我们自己的环境中客观地进行反覆度量,重现度量的结果以获得与工业标準的真实比较。因此,归因于度量不充分的问题的产生是由于缺乏严格的度量方法造成的。
除了传统的对计算机硬体的性能进行度量外,对算法的複杂性的度量一直是计算机科学的重要组成部分。但是,这种度量方法只适用于小程式,而对大型、複杂的软体来说它却无能为力了。这就属于软体工程的範畴了。如果我们不承认度量将会一个更重要的作用的话,软体危机将在随后的几年里依然存在 五、软体度量工具
随着软体定量方法(如:软体度量)的重要性不断增加,市场上出现了许多度量工具。然而,度量工具还是很混乱。因为没有统一的度量标準规範,每种工具发明商家都是按照他们自己的软体度量规範。对度量工具做了好的综述。
种类划分
aich等根据分类学把度量工具分成了以下几种:
● 通用度量工具;
● 小生境度量工具(Niche Metrics Tool);
● 静态分析;
● 原始码静态分析;
● 规模度量
管理目标
软体开发正在经受一场危机。费用超支(特别是在维护阶段的花费太大)、生产率低下、 以及质量不高等问题正困扰着它。简言之,软体开发经常处于失控状态。软体之所以失控是因为没有度量。Tom Demarco曾经说过:"没有度量就不能控制。"这种说法是好的,但不完全。并不能说为了获得控制必须进行度量。度量活动必须有明确的目标或目的,而正是这决定着我们选择哪种属性和实体进行度量。这个目标与软体开发、使用时所涉及的人的层次有关。以下主要从管理者和软体工程师两种角度来考虑,为了达到各种目标所要进行的度量工作。对管理者而言
1.需要度量软体开发过程中的不同阶段的费用。例如:度量开发整个软体系统的费用(包括从需求分析阶段到发布之后的维护阶段)。必须清楚这个费用以决定在保证一定的利润的情况下的价格。
2.为了决定付给不同的开发小组的费用,需要度量不同小组职员的生产率。
3.为了对不同的项目进行比较、对将来的项目进行预测、建立基线以及设定合理的改进目标等,需要度量开发的产品的质量。
4.需要决定项目的度量目标。例如:应达到多大的测试覆盖率、系统最后的可靠性应有多大等。
5.为了找出是什幺因素影响着费用和生产率,需要反覆测试某一特定过程和资源的属性。
6.需要度量和估计不同软体工程方法和工具的效用,以便决定是否有必要把它们引入到公司中。
对对软体工程师而言
1.需要制定过程度量以监视不断演进的系统。这包括设计过程中的改动、在不同的回顾或测试阶段发现的错误等等。
2.需使用严格的度量的术语来指定对软体质量和性能的要求,以便使这些要求是可测试的。例如:系统必须"可靠",可用如下的更具体 的文字加以描述:"平均错误时间必须大于15个CPU时间片。"
3.为了合格需要度量产品和过程的属性。例如:看一个产品是否合格要看产品的一些可度量的特性如"β测试阶段少于20个错误。","每个模组的代码行不超过100行。",和开发过程的一些属性如"单元测试必须覆盖90%以上的用例。"等。
4.需要度量当前已存在的产品和过程的属性以便预测将来的产品。例如:
(1).通过度量软体规格说明书的大小来预测目标的大小。
(2).通过度量设计文档的结构特性来预测将来维护的"盲点"。
(3).通过度量测试阶段的软体的可靠性来预测软体今后操作、运行的可靠性。
研究上面我们列出的度量的目标和活动我们可以发现:软体度量的目标可大致 概括为两类。
其一,我们使用度量来进行估计。这使得我们可以同步地跟蹤一个特定的软体项目 。
其二,我们套用度量来预测项目的一些重要的特性。但是,值得指出的是我们不能过分夸大这些预测。有些人甚至认为只要使用合适的模型和工具,所获得的预测可以精确到只需使用极少的其他度量(甚至根本就不用使用度量)。
事实上,这种期望是不现实的。
项目度量
项目度量是针对软体开发项目的特定度量,目的在于度量项目规模、项目成本、项目进度、顾客满意度等,辅助项目管理进行项目控制。
规
规模度量
软体开发项目规模度量(size measurement)是估算软体项目工作量、编制成本预算、策划合理项目进度的基础。规模度量是软体项目失败的重要原因之一。一个好的规模度量模型可以解决这一问题。有效的软体规模度量是成功项目的核心要素:基于有效的软体规模度量可以策划合理的项目计画,合理的项目计画有助于有效地管理项目。规模度量的要点在于:由开发现场的项目成员进行估算;灵活运用实际开发作业数据;杜绝盲目迎合顾客需求的“交期逆推法”。
软体质量度量模型

软体规模度量有助于软体开发团队準确把握开发时间、费用分布以及缺陷密度等等。软体规模的估算方法有很多种,如:功能点分析(FPA:function points analysis)、代码行(LOC:lines of code)、德尔菲法(Delphi technique)、COCOMO模型、特徵点(feature point)、对象点(object point)、3-D功能点(3-D function points)、Bang度量(DeMarco's bang metric)、模糊逻辑(fuzzy logic)、标準构件法(standard component)等,这些方法不断细化为更多具体的方法。
成本度量
主要方法
软体开发成本度量主要指软体开发项目所需的财务性成本的估算。
主要方法如下:类比估算法
类比估算法是通过比较已完成的类似项目系统来估算成本,适合评估一些与历史项目在套用领域、环境和複杂度方面相似的项目。其约束条件在于必须存在类似的具有可比性的软体开发系统,估算结果的精确度依赖于历史项目数据的完整性、準确度以及现行项目与历史项目的近似程度。
细分估算法。细分估算法是将整个项目系统分解成若干个小系统,逐个估算成本,然后合计起来作为整个项目的估算成本。细分估算法通过逐渐细化的方式对每个小系统进行详细的估算,可能获得贴近实际的估算成本。其难点在于,难以把握各小系统整合为大系统的整合成本。
周期估算法。周期估算法是按软体开发周期进行划分,估算各个阶段的成本,然后进行汇总合计。周期估算法基于软体工程理论对软体开发的各个阶段进行估算,很适合瀑布型软体开发方法,但是需要估算者对软体工程各个阶段的作业量和相互间的比例具有相当的了解。
顾客顾客满意度度量
顾客满意是软体开发项目的主要目的之一,而顾客满意目标要得以实现,需要建立顾客满意度度量体系和指标对顾客满意度进行度量。顾客满意度指标(CSI:customer satisfaction index)以顾客满意研究为基础,对顾客满意度加以界定和描述。项目顾客满意度量的要点在于:确定各类信息、数据、资料来源的準确性、客观性、合理性、有效性,并以此建立产品、服务质量的衡量指标和标準。企业顾客满意度度量的标準会因为各企业的经营理念、经营战略、经营重点、价值取向、顾客满意度调查结果等因素而有所不同。比如:NEC于2002年12月开始实施的CSMP 活动的度量尺度包括共感性、诚实性、革新性、确实性和迅速性,其中,将共感性和诚实性作为CS活动的核心姿态,而将革新性、确实性和迅速性作为提供商品和服务中不可或缺的尺度。每个尺度包括两个要素,各要素包括两个项目,总计5大尺度、10个要素和20个项目。例如,共感性这一尺度包括“了解顾客的期待”、“从顾客的立场考虑问题”这两个要素;“了解顾客的期待”这一要素又包括“不仅仅能胜任目前的工作还能意识到为顾客提供价值而专心投入”、“对顾客的期望不是囫囵吞枣而是根据顾客的立场和状况来思考‘顾客到底需要什幺’并加以应对”这两个项目。
美国专家史蒂芬(Stephen H.Kan)在《软体质量工程的度量与模型》(Metrics and Models in Software Quality Engineering)中认为,企业的顾客满意度要素:
顾客
顾客满意度要素
顾客顾客满意度要素的内容
技术解决方案质量、可靠性、有效性、易用性、价格、安装、新技术支持与维护灵活性、易达性、产品知识市场行销解决方案、接触技术解决方案
管理购买流程、请求手续、保证期限、注意事项交付準时、準确、交付后过程企业形象技术领导、财务稳定性、执行印象表7-1 顾客满意度要素及其内容 作为企业的顾客满意度的基本构成单位,项目的顾客满意度会受到项目要素的影响,主要包括:开发的软体产品、开发文档、项目进度以及交期、技术水平、沟通能力、运用维护等等。具体而言,可以细分为如表7-2所示的度量要素,并根据这些要素进行度量。 顾客满意度项目顾客满意度度量要素软体产品功能性、可靠性、易用性、效率性、可维护性、可移植性开发文档文档的构成、质量、外观、图表以及索引、用语项目进度以及交期交期的根据、进度迟延情况下的应对、进展报告技术水平项目组的技术水平、项目组的提案能力、项目组的问题解决能力沟通能力事件记录、式样确认、Q&A
运用维护支持、问题发生时的应对速度、问题解决能力表7-2顾客满意度项目度量要素
产品度量
软体质量的生命周期及其度量
软体产品度量用于对软体产品进行评价,并在此基础之上推进产品设计、产品製造和产品服务最佳化。软体产品的度量实质上是软体质量的度量,而软体的质量度量与其质量的周期密切相关。
软体软体质量度量模型
软体产品的度量主要针对作为软体开发成果的软体产品的质量而言,独立于其过程。软体的质量由一系列质量要素组成,每一个质量要素又由一些衡量标準组成,每个衡量标準又由一些量度标準加以定量刻划。质量度量贯穿于软体工程的全过程以及软体交付之后,在软体交付之前的度量主要包括程式複杂性、模组的有效性和总的程式规模,在软体交付之后的度量则主要包括残存的缺陷数和系统的可维护性方面。一般情况下,可以将软体质量特性定义成分层模型。勃姆(Barry W. Boehm)在《软体风险管理》(Software Risk Management)中第一次提出了软体质量度量的层次模型。而麦考尔(McCall)等人将软体质量分解至能够度量的层次,提出FCM 3层模型(参见表5-13):软体质量要素(factor)、衡量标準(criteria)和量度标準(metrics),包括11个标準,分为产品操作(product operation)、产品修正(product revision)和产品转移(product transition)。ISO 9126将软体质量总结为6大特性,每个特性包括一系列副特性,其软体质量模型包括3层,即高层:软体质量需求评价準则(SQRC);中层:软体质量设计评价準则(SQDC);低层:软体质量度量评价準则(SQMC)。
层 级名 称内 容
第一层质量要素:
描述和评价软体质量的一组属性功能性、可靠性、易用性、效率性、可维护性、可移植性等质量特性以及将质量特性细化产生的副特性
第二层衡量标準:
衡量标準的组合反映某一软体质量要素精确性、稳健性、安全性、通信有效性、处理有效性、设备有效性、可操作性、培训性、完备性、一致性、可追蹤性、可见性、硬体系统无关性、软体系统无关性、可扩充性、公用性、模组性、清晰性、自描述性、简单性、结构性、档案完备性等
第三层量度标準:
可由各使用单位自定义根据软体的需求分析、概要设计、详细设计、编码、测试、确认、维护与使用等阶段,针对每一个阶段制定问卷表,以此实现软体开发过程的质量度量表7-3 软体质量度量FCM模型 凯悦(Lawrence E. Hyatt)和罗森贝克(Linda H. Rosenberg)在《识别项目风险以及评价软体质量的软体质量模型与度量》(A Software Quality Model and Metrics for Identifying Project Risks and Assessing Software Quality)中比较了这3种最常用的软体质量模型,其基本情况如表5-14所示。
度量标準麦 考 尔勃 姆ISO 9126
正确性(Correctness)
可维护性
可靠性(Reliability)
完整性(Integrity)
可用性(Usability)
效率性(Efficiency)
可维护性(Maintainability)
度量标準
可测试性(Testability)
可维护性
互操作性(Interoperability)
适应性(Flexibility)
可重用性(Reusability)
可移植性(Portability)
明确性(Clarity)
可变更性(Modifiability)
可维护性
文档化(Documentation)
恢复力(Resilience)
易懂性(Understandability)
有效性(Validity)
可维护性
功能性(Functionality)
普遍性(Generality)
经济性(Economy)
软体质量模型之比较
软体质量度量方法
软体质量度量方法比较多,例如:(1)Halstead複杂性度量法,基本思路是根据程式中可执行代码行的操作符和运算元的数量来计算程式的複杂性。操作符和运算元的量越大,程式结构就越複杂。(2)McCabe複杂性度量法,其基本思想是程式的複杂性很大程度上取决于程式控制流的複杂性,单一的顺序程式结构最简单,循环和选择所构成的环路越多,程式就越複杂。
软体度量标準
《软体研发成本度量规範》
1.软体研发成本度量规範简介
本标準规定了软体研发成本度量方法、过程及原则,包括软体研发成本的构成、软体研发成本度量过程、软体研发成本度量的套用。本标準适用于度量成本与功能规模密切相关的软体研发项目的成本。本标準不涉及软体定价,但相关各方可依据本标準明确研发成本,从而为软体定价提供重要依据。
2.标準研製背景
长期以来,如何度量和评估软体研发项目的成本一直是产业界的难题。目前我国尚无科学统一的软体研发项目成本度量标準体系以指导、规範、管理软体项目的研发成本,较大程度导致做预算时无据可依,造成极大浪费;在软体项目招评标过程中,由于无法界定软体工程项目的合理成本範围,常常出现恶意低价或超高价格竞标现象;软体开发商在项目实施过程中,由于缺乏成本控制的科学依据,也经常出现时间滞后、费用远远超出最初估算水平的情况。
3.标準研製过程
在国家工业和信息化部软体服务业司领导下,从2010年开始启动我国软体成本度量标準体系的研製工作。中国软体行业协会系统与软体过程改进分会(以下简称 “过程改进分会”)和中国电子技术标準化研究院(以下简称“电子四所”)围绕软体研发成本度量标準体系建设开展了基础性研究工作,梳理了标準体系。核心标準《软体研发成本度量规範》于2010年12月正式立项,计画号为2010-3194T-SJ,由过程改进分会和电子四所共同牵头起草,组织产、学、研、 用约40家单位共同参与,历时3年,为软体项目预算、立项审批、招投标、项目计画、变更管理等工作提供“科学依据”。
4.标準的价值
1、倡导使用统一的国际功能点方法度量软体规模,使度量结果可比对;
2、倡导使用基準数据估算软体工期和成本,使估算结果更科学;
3、倡导使用一致的估算过程和公式,使估算过程透明化、估算结果可追溯。
5.标準试点套用
《软体研发成本度量规範》从2012年开始试点套用。海关总署、中国人民银行、东软集团等单位都参与了试点工作,分别在预算审批、项目立项、招投标、项目计画等场景进行套用,取得了很好的效果。截至2013年年底,共有约2000人参加CCEP培训,近1500人通过考试并成为国内首批CCEP(软体成本估算专家)。採用标準规定的方法后,极大的解决了试点企业长期以来面临的问题。
6.标準发布
行业标準《软体研发成本度量规範》(SJ/T11463-2013)由中华人民共和国工业和信息化部于2013年10月17日正式发布,并于2013年12月1日开始正式实施。
7.最新进展
经推荐,该标準由中关村智联软体服务业质量创新联盟牵头,正在申请升级为国家标準,于2015年7月31日正式下达计画号:20151553-T-469
8.标準套用配套书籍
随着工信部行业标準《软体研发成本度量规範》的正式发布,越来越多的软体企业、政府机关及各大行业(如金融、电信、能源、製造等)的软体开发及信息化建设部门开始採用该标準用于指导软体研发成本的度量工作,并广泛套用于预算、招投标、项目策划、变更管理、过程改进及项目后评价等场景。而能否正确理解《软体研发成本度量规範》并了解标準涉及方法的背景与原理,成为该标準是否可以在行业内深化套用的关键。
《软体研发成本度量规範释义》(第2版)、《软体成本度量标準实施指南》
《信息化项目软体开发费用测算规範》
1.规範研製背景
北京作为全国软体与信息服务业之都,产业规模一直位居全国前列,并且保持着较快的增长水平,软体和信息服务业在全市经济发展中也占有越来越重要的地位。随着十二五规划的逐步实施,北京市各行各业信息化建设投资也不断加大,仅全市每年属于市级财政拨款範畴的信息化项目就可达700至800个,金额总量可达三十多亿元,涉及上千家企事业单位。然而本市一直没有科学统一的标準以支撑、规範、管理信息化项目软体开发费用的测算,这大大制约了北京软体产业的健康可持续发展。由于相关标準的缺失,如何测算信息化项目软体开发的合理费用一直都是北京软体产业发展中的难点,因而常常导致软体项目预算审批无依据、恶意竞标等问题的发生。
2.规範的价值
由北京市经济和信息化委员会归口指导,北京软体和信息服务交易所、北京软体行业协会过程改进分会联合制订的北京市首个软体成本度量地方标準《信息化项目软体开发费用测算规範》将于今年11月起正式实施,这标誌着我市信息化项目软体开发工作拥有了科学、标準的费用评估方法,有助于规範行业市场、推动软体企业提升生产效率,提升产业增长质量。
《行标套用指南(预算场景)》
1.编制背景
长期以来,如何度量软体研发成本一直是产业界的难题,尤其是在预算、招投标、项目计画等活动中因为缺失科学统一的软体研发成本度量标準,较大程度导致项目做预算时无据可依,进而造成预算浪费或预算不足;在软体项目招投标过程中,因为缺乏软体研发成本度量依据,恶意竞标、低价中标现象频频发生;开发方在项目实施过程中,由于缺乏成本控制的科学依据,也经常出现时间滞后,费用远远超出最初预算的情况。科学统一的软体研发成本度量标準既是有效进行软体项目管理的重要依据,也是当前软体产业发展的迫切需要。
为此,工业与信息化部软体服务业司委託中国软体行业协会系统与软体过程改进分会牵头组织编制了《软体研发成本度量规範》。标準中规定了软体研发成本度量的方法及过程,包括软体研发成本的构成、软体研发成本度量的过程、软体研发成本度量的套用。其目的是帮助软体研发涉及各方科学、一致地进行成本度量。但标準中没有包含软体研发成本度量过程中所需要的估算模型、行业基準数据及其在不同场景进行成本估算的详细步骤和方法,因此需要制订标準的套用指南,以便相关各方针对不同的套用场景、正确使用行业数据和模型,有效开展软体研发成本度量相关工作。
2.编制目的与範围
本指南是《软体研发成本度量规範》系列套用指南之一,针对预算场景。
《软体研发成本度量规範》中的成本度量,特指对软体研发成本的预计值进行估算或对实际值进行测量、分析的过程。而《软体研发成本度量规範》中,预算是指根据项目成本估算的结果确定预计项目费用的过程。因此,本指南主要描述在预算场景下如何开展成本估算工作,而不涉及编制预算的其他方面。
在《软体研发成本度量规範》及本指南中,软体研发过程包括从项目立项开始到项目完成验收之间的需求分析、设计、编码、集成、测试、验收交付活动及相关的项目管理、支持活动。因此,本指南中软体研发成本仅包括软体研发过程中的所有直接成本和间接成本,但不包括数据迁移、软体维护等成本。本指南中所涉及工作量、工期也仅为软体研发过程所用工作量、工期。
本指南编制的主要目的是指导预算活动相关各方,基于《软体研发成本度量规範》有效开展成本估算工作,并为确定软体项目预算提供科学依据。
本指南明确了基于《软体研发成本度量规範》和基準数据开展成本估算相关活动的步骤与方法,并通过示例,明确了典型情况的估算及调整方法;对于其他特殊情况,相关人员应根据本指南及《软体研发成本度量规範》中的相关原则,结合项目特点,选择适当的估算方法或对估算结果进行合理调整。
对于与预算类似的其他早期估算套用场景,相关人员也可参照本指南的相关原则与方法,开展项目估算活动。
过程度量
软体过程性能 过程度量是对软体开发过程的各个方面进行度量,目的在于预测过程的未来性能,减少过程结果的偏差,对软体过程的行为进行目标管理,为过程控制、过程评价持续改善提供定量性基础。过程度量与软体开发流程密切相关,具有战略性意义。软体过程质量的好坏会直接影响软体产品质量的好坏,度量并评估过程、提高过程成熟度可以改进产品质量。相反,度量并评估软体产品质量会为提高软体过程质量提供必要的反馈和依据。过程度量与软体过程的成熟度密切相关,其度量模型如图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),主要包括问题定义度量、需求分析度量、设计度量、製造度量、维护度量等。软体过程度量流程
软体过程的度量,需要按照已经明确定义的度量流程加以实施,这样能使软体过程度量作业具有可控制性和可跟蹤性,从而提高度量的有效性。软体过程度量的一般流程主要包括:确认过程问题;收集过程数据;分析过程数据;解释过程数据;汇报过程分析;提出过程建议;实施过程行动;实施监督和控制。这一度量过程的流程质量能保证软体过程度量获得有关软体过程的数据和问题,并进而对软体过程实施改善。