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非功能需求测量方法,建立适合本组织的测量模型。