国家标准GB/T 36964-2018《软件工程 软件开发成本度量规范》的出台实施,为国内软件行业的发展提供了极大助力,也为软件造价领域的发展提供了指导标准。
该标准定义的软件开发成本估算过程包括软件:规模估算、工作量估算、成本估算、确定软件开发成本四个部分。规模估算作为其他部分的基础,在估算时可采用功能点估算方法。工作量估算可采用方程法、类比法、类推法等方法。
在国际上,有两个组织负责国际标准化体系的构建和国际标准的制定,这两个组织分别是ISO(International Orgnization for Standardization,国际标准化组织)和IEC(International Electrotechnical Commission,国际电工委员会)。这两个组织共同组建了联合技术委员会,来进行国际标准体系的制定。我国多个国家标准和行业标准是从相应的国际标准引进并等同采用的。《软件工程 软件开发成本度量规范》就参考引进和等同采用了多个国际标准,下面简要介绍这些相关的标准。
国家标准:
1.GB/T 18492-2001 《信息技术 系统及软件完整性级别》
该标准主要定义了软件完整性级别相关概念,以及确定完整性级别的过程要求。该标准与《软件工程 软件开发成本度量规范》标准相配合,可确定完整性级别的划分及相关调整因子的取值。
2.GB/T 25000.10-2016 《系统与软件工程 系统与软件质量要求和评价(SQuaRE) 第10部分:系统与软件质量模型》
该标准定义了软件质量模型所包含的特性及子特性,配合《软件工程 软件开发成本度量规范》标准,可确定质量要求相关调整因子的选择和取值。实际应用中,软件开发成本估算模型和相关因子的取值来源于行业基准数据的采集分析结果,因此,可参照引用年度的行业基准数据。
行业标准:
根据《软件工程 软件开发成本度量规范》国家标准引用其他标准的文件条目,可以看出,该国家标准提出了5个国际上普及性较高的功能点度量标准,分别为:IFPUG、NESMA、COSMIC、MK II和FiSMA。这5种标准对应的具体操作方法可参见如下的标准:
1.SJ/T 11617-2016 《软件工程 COSMIC-FFP一种功能规模测量方法》
COSMIC(Common Software Measurement International Consortium,通用软件度量国际联盟)功能点测量方法起源于1997年的FFP(Full Function Point,全面功能点)标准。之后,FFP与COSMIC组织共同合作,于1999年提出了COSMIC功能点标准。2003年该标准被ISO组织接纳,成为国际标准。国内于2016年等同采用该标准,推出了电子行业标准《软件工程 COSMIC-FFP一种功能规模测量方法》。
COSMIC的原理是通过识别“数据移动”的个数来度量软件规模,每个数据移动计为一个COSMIC功能规模单位(CFP),四种数据移动类型分别为:输入(Entry)、输出(eXit)、读(Read)和写(Write)。
COSMIC度量方法可分为三个阶段,分别为度量策略阶段,映射阶段和度量阶段。度量策略阶段需要明确发起软件度量的目的、范围和功能用户,识别出适合用于度量的功能用户需求(FUR)级别;映射阶段需要将被度量软件映射为通用软件模型,识别出触发事件、功能处理、兴趣对象及数据组、数据属性和数据移动这些通用软件模型的元素;度量阶段是根据度量单位和度量规则汇总度量结果。
COSMIC方法适用于商业应用软件和实时系统的功能规模测量。
2.SJ/T 11618-2016 《软件工程 MK II功能点分析计数实践指南》
MK II功能点方法起源于1991年英国人Charles Symons所著《Software Sizing and Estimating: MK II Function Point Analysis》一书,该书介绍了MK II操作方法。Symnos先生在为毕马威咨询公司工作期间提出了MK II功能点操作方法,在该操作方法的基础之上形成了Mark II功能点标准,该标准提出后被英国政府所采纳。后于2001年被ISO组织接纳为国际标准。该标准由英国软件行业协会维护。2016年,我国基于该国际标准,推出了国内行业标准《软件工程 MK II功能点分析计数实践指南》。
MK II方法适用于逻辑事务能被确定的任何软件类型。
3.SJ/T 11619-2016 《软件工程 功能规模测量NESMA方法》
NESMA(Netherland Software Measurement Association,荷兰软件度量协会)的功能点标准经由IFPUG标准演化而来,但在一些规则细节上与IFPUG不完全相同。NESMA 功能点估算方法已在2003年升为ISO标准。和IFPUG方法相比,该方法更着重在项目早期进行估算。此外,针对IFPUG方法分析过程较复杂、计算工作量大的不足,NESMA方法实现了快速计算。
NESMA方法包括估算法(Estimated)方法和指示法(Indicative)方法。它们使得用户可以在早期需求不完整的情况下,迅速估算出软件的功能点数。2016年,我国电子行业标准 《软件工程 功能规模测量NESMA方法》正式发布。该标准等效采用国际标准《软件工程——NESMA功能规模测量方法版本2.1——使用功能点分析的定义和统计准则》(ISO/IEC 24570:2005)。
4.SJ/T 11620-2016 《信息技术 软件和系统工程FiSMA1.1功能规模测量方法》
1997年,FiSMA(Finnish Software Measurement Association,芬兰软件度量行业协会)组织提出了Experience2.0 Function Point Analysis(FPA),后发展为FiSMA标准。该标准的应用主要集中在芬兰的软件开发组织中。FiSMA功能点标准突出“服务”的概念,不再强调“功能”概念,并且,将软件的典型功能分为了28种服务,使得服务类型划分较为细致,但带来了操作的不便。2016年,该标准被等效采用为我国行业标准《信息技术 软件和系统工程FiSMA1.1功能规模测量方法》。
国际标准:
ISO/IEC 20926:2009 《软件与系统工程 软件测量 IFPUG功能规模测量方法2009(Software and systems engineering-Software measurement-IFPUG functional size measurement method 2009)》
IFPUG(International Function Points User’s Group,国际功能点用户组)。1979年,服务于IBM的Allan Albrecht提出了功能点分析方法。1986年成立了IFPUG组织,2003年被ISO组织接纳为国际标准。其他几种功能点标准均是基于IFPUG标准发展而来。
目前,在这5种规模度量标准中,IFPUG和NESMA在国际和国内应用较广。《软件工程 软件开发成本度量规范》标准将上述5种相关功能点标准作为规范性引用文件,并未对其各自功能点方法进行特别解释和定义,在该标准与其所引用原文标准表述存在差异时,以所引用标准的原文为准。
另外,由于各标准都在不断发展演化中,对于《软件工程 软件开发成本度量规范》标准中所引用文件,凡是注明日期的,仅该标注日期版本适用于该标准;未注明日期的,以其最新版本适用于该标准。