软件成本度量国家标准实施指南:理论、方法与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.2 软件非功能评估过程

2.2.1 简介

规模是软件的一个重要属性,是成本估算和生产率分析的重要参数,也是软件项目管理所要考虑的重要因素。软件规模测量包括功能规模测量和非功能规模测量。目前,软件行业的功能规模测量(FSM)方法,如IFPUG、NESMA、MkⅡ、COSMIC FiSMA等是已发展较为成熟且被认定为国际标准的5种方法,但软件的功能规模测量并不能完全反映软件产品的全貌。随着软件越来越复杂,非功能规模测量显得尤为重要。软件人员应用非功能规模测量方法进行评估,可以按以下操作步骤:

(1)更好地对项目进行计划和估算。

(2)识别过程改进域。

(3)有助于确定未来技术发展的方向。

(4)对当前的技术影响进行量化评价。

(5)对非功能性问题提供数据支持。

● 2007年,在意大利软件度量协会(ISMA)会议上,信息技术度量分析委员会(ITMAC)接受了IFPUG“技术规模框架(TFS)”项目的委托,该项目将定义度量软件开发非功能规模的指南和规则。

● 2009年,SNAP发布软件开发非功能规模的指南和规则的第一个草稿版本,并命名为SNAP评估实践手册第0.1版。

● 2010年,SNAP评估了实践手册并发布第1.0 Beta版本。

● 2011年,SANP发布了评估实践手册第1.0版本。

● 目前,SNAP发布的评估实践手册的最新版本为2017年的第2.4版本。

2.2.2 评估过程

SNAP模型包括4个类和14个子类。SNAP中的确定类和子类的过程相当于2.1节功能点分析方法中确定系统边界的过程。通过一组基准,根据每个子类的类型和复杂性程度的不同来度量子类的规模大小,整个非功能需求规模就是这些子类规模之和。

软件非功能性评估可以在软件生存周期的任何一个时间段完成,应用情况见表2-7。

表2-7 软件非功能性评估应用于软件生存周期的情况

软件非功能需求评估的具体过程如下:

(1)确定评估的目的、范围、边界、分区。

(2)关联非功能需求中的类和子类。

(3)识别SNAP计数单元(SNAP Counting Units,SCU)。

一个SCU就是一个组件、过程或活动。

(4)确定每个SCU的复杂性。

(5)确定每个SCU中的SNAP Points(SP)。

计算SNAP Points是在边界层执行的,SP是所有的SCU规模之和。

(6)计算非功能需求规模。

SP是需要计算的最后一个非功能需求规模值。确定了所有子类后,通过结合软件产品的应用边界,确定整个非功能需求规模。

新开发项目的非功能需求规模的计算公式为

DSP=ADD

式中,ADD——所有子类的SP之和;

DSP——新开发类型项目的非功能需求规模;

ADD——传递给用户的非功能需求规模。

增强开发项目的非功能需求规模的计算公式为

ESP=ADD+CHG+DEL

式中,ESP——增强开发项目的非功能需求规模;

ADD——新增的功能需求规模;

CHG——变更的功能需求规模;

DEL——删除的功能需求规模。

计算原则:

(1)不能更改原项目已定的边界和分区。

(2)评估包括新增、修改、删除。

2.2.3 方法评价及展望

SNAP方法参考了IFPUG方法中对事务功能和数据功能的判定规则形式,简单易懂。SNAP方法是对IFPUG方法的补充,主要解决了IFPUG方法的14个通用系统特征系数设置的局限性,其优点主要体现在以下两个方面:

(1)IFPUG方法的14个通用系统特征系数设置带有明显的主观性,计数结果的客观性和可信度较低。而SNAP方法进行类和子类的设置,可以对非功能规模做出相对客观的评估。

(2)IFPUG方法的14个通用系统特征可用于整体软件功能规模的调整,SNAP方法则单独对非功能规模进行直接测量,测量结果的可信度较高。

但是由于SNAP方法在2011年才对外正式发布,国内软件行业历史数据较少,所以软件组织可以参考SNAP非功能需求测量方法,建立适合本组织的测量模型。