摘 要 : COSMIC-FFP方法是新一代的功能点规模估算方法,它通过计算系统中四种数据移动类型(输入、输出、读、写)的数量来度量软件的规模,计算规则直接、简单,不需要调整因子,易于掌握,目前已经为众多的软件组织所接受。简明扼要地介绍了该方法的原理、过程、计算步骤与优势,对于采用该方法的组织提供了一个实用的指南。
关键词: COSMIC-FFP 边界 功能处理 数据移动 功能点
1 引言
软件规模估算是估计软件开发的工作量、成本与资源需求的基础,通过规模与其他度量数据还可以度量项目的生产率、缺陷密度,目前在工程界流行的估算方法是代码行估算方法和功能点分析方法(function points analysis,FPA法)。代码行估算方法是一种经验估算方法,通常会采用PERT sizing方法和DELPHI方法,估计结果与估计的人员、使用的开发工具紧密相关,而功能点分析法则比较客观。FPA法最早由IBM的工程师Allan Albrech 于20世纪70年代提出,随后被国际功能点用户协会(The International Function Point Users' Group,IFPUG)提出的IFPUG方法继承。IFPUG 功能点分析方法在美国盛行多年,这种方法主要适合于信息系统的规模估算。基于Allan Albrech的功能点方法,又发展出了多种方法,发展的谱系参见图1。目前被ISO组织接受为国际标准的功能点分析方法有4种:
●国际功能点用户协会提出的IFPUG功能点分析方法。
●荷兰软件度量协会(NEtherlands Software Metrics Association,NESMA)提出的荷兰软件功能点分析方法。
●英国软件度量协会(UK Software Metrics Association,UKSMA)提出的Mk II功能分析方法(Mark II FPA)。
●通用软件度量国际协会(COmmon Software Measurement International Consortium ,COSMIC)提出的全功能点分析方法(COSMIC-FFP)。
COSMIC-FFP是第2代的功能规模度量方法,它不仅适合于信息系统的规模度量,还适合于实时系统和多层系统的规模度量,已经被ISO接受为国际标准(ISO/IEC 19761:2003,软件工程 - COSMIC-FFP - 一种功能规模度量方法)。该方法可以在软件开发生命周期的各个阶段使用,从用户功能的视角入手,起源于客户可以理解的术语,不需要调整因子,简单易行,因而受到越来越多的软件公司的推崇。

图1 功能点方法的发展历程
2 COSMIC-FFP方法的基本原理
COSMIC-FFP方法假设功能规模是通过“数据移动”的个数来度量,一个数据移动是一个数据组的传输,一个数据组是一个有区别的、非空的、没有顺序且没有冗余的数据属性的集合。有4种类型的数据移动:输入、输出、读和写。输入是从用户穿越被度量系统的边界传输数据到系统内部,这里提到的用户既包括系统的使用人员,也包括其他软件或者硬件系统;输出是一个数据组从一个功能处理通过边界移动到需要它的用户;写是存储数据到永久性的存储设备;读是从永久性的存储设备读取数据。一个数据移动记为一个COSMIC功能规模单位(Cosmic Functional Size Unit,Cfsu),Cfsu是COSMIC-FFP方法中标准的测量单位。通过统计系统中所有的“数据移动”的个数就可以得到系统的功能规模。
在COSMIC-FFP中,将系统的功能处理分解为“数据计算”和“数据移动”2种类型,该方法只统计了“数据移动”的个数,没有对“数据计算”进行度量,所以,COSMIC-FFP方法主要适用于如下的领域:
●以数据处理为主的商务应用软件,如银行、财务、保险、个人、采购、分销、制造等领域的信息系统;
●实时系统,如电话交换系统、嵌入式控制软件(家电中的控制软件、汽车中的控制软件、过程控制中的自动数据采集系统等);
●上述两种类型的混合,如飞机售票系统、旅馆预订系统等。
该方法不适合于复杂算法的系统与处理连续变量的系统,如:专家系统、模拟系统、自学习系统、天气预报系统、声音和图象处理系统等。
3 COSMIC FFP方法的过程
3.1 过程概述
FFP的分析过程分为两个阶段:第一个阶段是映射阶段,映射阶段的目的是将软件的功能需求分解为功能处理、数据组、数据属性;第二个阶段是度量阶段,度量阶段的目的是将功能处理分解为数据移动,计算功能规模。整个过程的模型如图2所示。

图2 COSMIC-FFP 方法的过程模型
上述的两个阶段可以细化为8个活动,具体的步骤参见图3。