1. 软件成本度量的意义
软评的意义主要在于其在软件项目的预算、招投标、实施及决算后评估阶段的重要作用。
- 在预算及招投标阶段,软评通过软件成本度量有助于制定合理的项目预算,规范招投标行为。这一阶段,甲方需要准确估算项目成本和合理的投标价格范围,而乙方需要根据自身能力进行竞标。如果缺乏科学有效的软评方法,将可能导致资源浪费、项目失败,甚至产生不当竞争,对软件产业的健康发展产生影响。因此,软评在此阶段具有明显的优势,能够帮助甲方选择可靠的乙方,有效地规避项目风险,促进软件产业健康发展。
- 在项目实施阶段,软评通过软件成本度量有助于合理调配资源,有效控制项目范围和质量。在实施过程中,如果因成本估算不准确而导致的项目计划不合理,可能会影响项目进度和质量,或者造成资源浪费。而采用科学的成本度量方法进行规模、工作量、工期和成本估算,可以为资源分配和工期安排提供有效的支撑,同时也能减少需求变更对项目进度及成本的影响,保证软件企业合理的利润。
- 在项目决算及后评估阶段,软评通过软件成本度量有助于项目交付、总结和评价。在这一阶段,甲乙双方经常会因为对项目的实际投入存在争议,从而影响到项目的最终交付,也难以对项目的绩效进行科学评价。而通过软评,可以了解项目的实际成本,为决算工作提供合理的依据,同时也能通过对项目决算与预算的对比,考核投资控制的工作成效,总结经验教训,提高未来项目的效益。此外,还可以利用软件企业的度量数据,建立基准数据库,定量分析软件企业或行业的当前能力、问题及发展趋势,为软件企业的发展提供指导,相关主管部门也可依此制定合理的政策引导软件行业健康发展。
2. 国内外标准化现状
软件成本度量标准:旨在提供科学的成本控制依据和规范的成本量化方法。
2.1 国际标准化
目前,ISO/IEC JTC 1/SC7 没有制定和发布直接用于软件成本度量的标准。
已发布的标准集中在功能规模测量方面,包括:
ISO/IEC 14143系列标准
- ISO/IEC 14143-1:2007 《信息技术 软件测量 第1部分:概念定义》
——是概念标准,是其他标准的基础。
主要内容包括定义、FSMMS(功能规模测量方法)的特性、FSMMs 的要求、应用 FSMM 的过程、FSMM 标号设置的约定、符合性认证。
- ISO/EC 14143-2:2011 《信息技术 软件测量 第2部分:软件规模测量方法与ISO/IEC 14143-1的符合性评价》
——是支持标准,定义了检查一个候选的FSMM是否符合ISO/IEC 14143-1的过程。
推荐采用ISO/EC 14143-2进行符合性评估,本部分的内容包括评价方的特性、符合性评价的输入、符合性评价规程的任务和步骤、符合性评价的输出、符合性评价的结果。
- ISO/IEC TR 14143-3:2003 《信息技术 软件测量 第3部分:功能规模测量方法的验证》
——是支持标准,提供了一种评估FSMM 性能属性的过程。
主要内客包括验证组的能力和职责、验证输入、验证规程、验讯输出。
- ISO/IEC TR 14143-4:2002 《信息技术 软件测量 第4部分:基准模型》
——是支持标准。该部分标标准提供了一种用于在FSMM之间对比FSM 结果的基准用户需求的标准汇集,其中还包含选择基准FSMM 的指南;该部分标准可与ISO/IEC14143-3结合使用,能将规范的、定量的FSMM性能证据汇集起来,主要内容包括基准用户需求(RUR)和基准FSM法。
- ISO/IEC TR 14143-5:2004 《信息技术 软件测量 第5部分:功能规模测量的功能域确定》
——是支持标准。制定该部分标准是为描述功能域(“软件类型”),例如,一个软件能以此判定所属,一个功能测量方法能以此声称其适用性(按ISO/IEC 14143-1的要求)。该部分标准通过描述功能域特性以及能将 FUR 特性用于确定功能域的规程,提供一种确定功能域的手段,主要内容包括功能域的一般要求、功能域特性的一般要求、确定一个 FSM方法对特定功能域的适用性和功能域分类方法示例。
- ISO/EC 14143-6:2012 《信息技术 软件测量 第6部分:ISO/IEC 14143系列标准和相关国际标准使用指导》
提供了功能规模测量(FSM)相关标准的概括说明以及系列标准之间的关系,以及ISO/IEC的功能规模测量方法标准。
具体包括以下5项:
ISO/EC 19761:2011 《软件工程 COSMIC:功能规模测量方法》
1SO/EC 20926:2009 《软件和系统工程软件管理IFPUG功能规模测量方法 2009》
ISO/EC 20968:2002 《软件工程 MkⅡ功能点分析 计算实践手册》
ISO/EC 24570:2018 《软件工程 NESMA 功能规模测量方法 功能点分析应用的定义和计算指南》
ISO/EC 29881:2010 《信息技术 系统和软件工程FiSMA1.1 功能规模测量方法》
- 具体操作方法的标准
- SJ/T 11617-2016 软件工程 COSMIC-FFP 一种功能规模测量方法
- SJ/T 11618-2016 软件工程 MK-Ⅱ功能点分析计数实践指南
- SJ/T 11619-2016 软件工程 NESMA功能规模测量方法
- SJ/T 11620-2016 信息技术 软件和系统工程 FiSMA1.1功能规模测量方法
- ISO/IEC 20926:2009 软件与系统工程 软件测量 IFPUG功能规模测量方法2009
2.2 国家标准
- 国家标准
- 软件开发成本度量:GB/T36964-2018《软件工程软件开发成本度量规范》
定义了软件开发成本度量的方法及过程,通过软件开发成本的构成、度量过程和应用场景给出应用指导。 - 软件测试成本度量: GB/T32911-2016《软件测试成本度量规范》
综合考虑了软件测试过程中涉及的环境、测试工具和测试人工等成本因素,对软件测试成本的度量方法及过程进行了规范。
- 云计算等新的软件服务方式:GB/T 37735-2019《信息技术 云计算 云服务计量指标》
根据基础设施、平台和应用3种类型,规定了不同类型云服务的计量指标和计量单位,规范了各类云服务的提供、采购、审计和监管过程中的计量活动。
- 信息技术服务成本度量:20194187-T-469(计划号,已完成立项):《信息技术服务运行维护7部分:成本度量规范》
将规定运维成本度量的方法及过程,包括运维成本的构成及运维成本度量过程,适用于各类组织度量信息技术服务运行维护成本,包括GB/T29264-2012《信息技术服务 分类与代码》中包含的各类运维服务。
行业标准
- SJ/T 11617-2016 《软件工程 功能规模测量 COSMIC方法》
- SJ/T 11618-2016 《软件工程功能规模测量Mk II功能点分析方法》
- SJ/T 11619-2016《软件工程功能规模测量 NESMA 方法》
- SJ/T 11620-2016 《软件工程功能规模测量 FiSMA1.1方法》
3. 软件规模测量方法
常见的软件规模测量方法包括:
- 功能点分析方法
- 软件非功能评估过程
- 软件源代码行测量方法
- 用例点估算方法
- 对象点估算方法
- 故事点估算方法
1.1 功能点分析方法——COSMIC方法
COSMIC方法关注每个功能过程所引起的数据移动。
数据移动是移动单个数据组的基本功能部件。
数据组具有唯一、非空、无序、无冗余的数据属性,各个数据属性互相补充,分别描述了同一个关注对象某个方面的特征。这些数据移动计为功能点,软件的整体规模由这些功能点累加而成。
数据移动的分类如下:
- 进入:功能用户(人员、其他系统)穿越被度量系统的边界传输数据到达系统内部。
- 退出:一个数据组从一个功能处理通过边界移动到达需要它的功能用户。
- 读取:从持久性的存储设备读取数据。
- 写入:存储数据到达持久性的存储设备。
COSMIC方法的度量过程分以下几个步骤::SM目的和范围的确定、FUR的识别、软件层的识别、功能性用户的识别、软件边界的识别、功能过程的识别、数据组的识别、数据移动的识别、数据移动的分类、功能规模的计算、FUR 变更的规模计算。
在COSMIC方法中,每一个有效的数据移动被看成一个COSMIC功能点(CFP)。在为每一个功能过程都找到其应有的所有数据移动之后,将它们累加在一起便是这个功能过程的规模。
在可操作性方面,COSMIC方法很好地借鉴了IFPUG 方法中基于规则约束的实践经验并且计算规则简单直接,无须调整因子。同时COSMIC方法引入了分层模型操作的概念,对度量复杂系统有一定的合理性,但度量结果会受技术实现方案的影响。
在适用性方面,COSMIC 方法尤其适用于以数据处理为主的商务应用软件、实时系统及嵌入式系统。
1.2 功能点分析方法——NESMA方法
NESMA 方法与 IFPUG方法在发展过程中相互借鉴,与FPUG方法完全兼容,需要识别的功能类型及其复杂性程度的确定与TFPUG方法相似,其估算过程分以下6个步骤:
(1)收集现有文档。
(2)确定软件用户。
(3)确定估算类型。
(4)识别功能类型并确定其复杂性程度。
(5)与用户验证估算结果并进行结果校正
(6)与功能点分析专家验证估算结果。
NESMA方法在各功能类型的复杂性程度确定后,可用复杂性程度矩阵来确定各组件的功能点值。
NESMA提供了3种类型的功能点分析方法:
(1)详细功能点分析方法
- 确定每个功能的类型(IF、EIF、EI、EO、EQ)。门明菜美的书里
- 为每个功能测量复杂性程度级别(低、中、高)。
- 计算整体未调整功能点。
(2)估算功能点分析方法
在确定每个功能部件(数据功能部件或事务功能部件)的复杂性程度时使用标准值:数据功能全部采用“低”级复杂性程度,事务功能全部采用“中”级复杂性程度计量。步骤如下:
- 确定每个功能的功能类型(ILF、EIF、EI、EO、EO)。
- 为所有的数据功能选择“低”级复杂性程度,事务性功能选“中”级复杂性程度
- 计算整体未调整功能点。
该方法与详细功能点分析的唯一区别是不用为每个功能识别分配的复杂性程度,而是采用“默认值”。
(3)预估功能点分析方法
在度量时,只识别出软件需求的数据功能数量,根据经验公式得出软件规模。步骤如下:
- 先确定数据功能的数量(ILF、EIF)。
- 用下列公式直接计算未调整功能点的数量
35 × N r o I L F s + 15 × N r o E I F s 35×N_{roILFs}+15×N_{roEIFs} 35×NroILFs+15×NroEIFs
其中,NroILFs表示ILF的数量,NroEIFs表示EIF的数量。
估算功能点分析方法与预估功能点分析方法的计算结果,与详细功能点分析方法的计算结果有很强的相关性和一致性。在软件项目早期,选择预估功能点分析方法较好。