博主资料

留言 加为好友 收藏

用户名:  dylan_ren
来自:  北京 海淀

麦哲思的咨询理念

人、技术、过程三者并重;
平衡敏捷与规范;
实效重于证书;
实施方法重于CMMI模型

个人统计

用户名: dylan_ren
等级: 初来乍到
威望: 830
积分: 1738
在线时间: 154 小时
日志总数: 119
评论数量: 261
访问次数: 688341
建立时间: 2006-10-01
RSS订阅       手机访问

文章搜索

友情链接

最新评论

日志文章

2007年05月02日 07:55:30

全功能点估算方法简介

 说明:本文已刊登于《信息技术与标准化》07年第3期

新一代的功能点规模估算方法: COSMIC-FFP

1 引言

软件规模估算是估计软件开发的工作量、成本与资源需求的基础,通过规模与其他度量数据还可以度量项目的生产率、缺陷密度,目前在工程界流行的估算方法是代码行估算方法和功能点分析方法(function points analysisFPA法)。代码行估算方法是一种经验估算方法,通常会采用PERT sizing方法和DELPHI方法,估计结果与估计的人员、使用的开发工具紧密相关,而功能点分析法则比较客观。FPA法最早由IBM的工程师Allan Albrech 20世纪70年代提出,随后被国际功能点用户协会(The International Function Point Users' GroupIFPUG)提出的IFPUG方法继承。IFPUG 功能点分析方法在美国盛行多年,这种方法主要适合于信息系统的规模估算。基于Allan Albrech的功能点方法,又发展出了多种方法,发展的谱系参见图1。目前被ISO组织接受为国际标准的功能点分析方法有4种:

国际功能点用户协会提出的IFPUG

功能点分析方法

       荷兰软件度量协会(NEtherlands Software Metrics AssociationNESMA)提出的荷

兰软件功能点分析方法。

英国软件度量协会(UK Software Metrics AssociationUKSMA)提出的Mk II功能分

析方法(Mark II FPA

       通用软件度量国际协会(COmmon Software Measurement International Consortium

COSMIC)提出的全功能点分析方法(COSMIC-FFP

COSMIC-FFP是第2代的功能规模度量方法,它不仅适合于信息系统的规模度量,还适合于实时系统和多层系统的规模度量,已经被ISO接受为国际标准(ISO/IEC 197612003,软件工程 - COSMIC-FFP - 一种功能规模度量方法)。该方法可以在软件开发生命周期的各个阶段使用,从用户功能的视角入手,起源于客户可以理解的术语,不需要调整因子,简单易行,因而受到越来越多的软件公司的推崇。

 

 

1 功能点方法的发展历程

2  COSMIC-FFP方法的基本原理

COSMIC-FFP方法假设功能规模是通过“数据移动”的个数来度量,一个数据移动是一个数据组的传输,一个数据组是一个有区别的、非空的、没有顺序且没有冗余的数据属性的集合。有4种类型的数据移动:输入、输出、读和写。输入是从用户穿越被度量系统的边界传输数据到系统内部,这里提到的用户既包括系统的使用人员,也包括其他软件或者硬件系统;输出是一个数据组从一个功能处理通过边界移动到需要它的用户;写是存储数据到永久性的存储设备;读是从永久性的存储设备读取数据。一个数据移动记为一个COSMIC功能规模单位(Cosmic Functional Size UnitCfsu)CfsuCOSMIC-FFP方法中标准的测量单位。通过统计系统中所有的“数据移动”的个数就可以得到系统的功能规模。

COSMIC-FFP中,将系统的功能处理分解为“数据计算”和“数据移动”2种类型,该方法只统计了“数据移动”的个数,没有对“数据计算”进行度量,所以,COSMIC-FFP方法主要适用于如下的领域:

以数据处理为主的商务应用软件,如银行、财务、保险、个人、采购、分销、制造等领域的信息系统;

实时系统,如电话交换系统、嵌入式控制软件(家电中的控制软件、汽车中的控制软件、过程控制中的自动数据采集系统等);

上述两种类型的混合,如飞机售票系统、旅馆预订系统等。

该方法不适合于复杂算法的系统与处理连续变量的系统,如:专家系统、模拟系统、自学习系统、天气预报系统、声音和图象处理系统等。

3 COSMIC FFP方法的过程

3.1 过程概述

  FFP的分析过程分为两个阶段:第一个阶段是映射阶段,映射阶段的目的是将软件的功能需求分解为功能处理、数据组、数据属性;第二个阶段是度量阶段,度量阶段的目的是将功能处理分解为数据移动,计算功能规模。整个过程的模型如图2所示。

 

 

                2 COSMIC-FFP 方法的过程模型

   上述的两个阶段可以细化为8个活动,具体的步骤参见图3

  

                          3  COSMIC FFP方法的步骤

 

32  识别软件层次

识别层次的目的是为了识别被度量软件的边界,清晰地定义被度量软件的范围。

一个层次是对软件环境进行功能划分的结果,每一层的软件提供功能给自己的用户(可能是一个人、一个物理设备或者其他软件,如在其他层次的软件)。在一个多层的软件中,提供功能的层称为“从属层”,使用功能的层称为“主层”。一个从属层的软件通过它的服务提供功能性的服务给主层,从属层的软件不依赖于主层的软件,如果一个从属层不能正常工作,则依赖于该层的主层可能也不能正常工作,某个主层的软件不需要依赖于从属层提供的所有功能。

COSMIC FFP中定义的层次的概念和我们通常讲的三层(表示层、业务逻辑层、数据层)体系结构中层次的概念是不同的,在同一个层次中的两个软件之间的数据交换在COSMIC FFP中定义为“对等数据交换”。

典型的MIS系统分层体系结构如图4所示。

4 典型的MIS系统分层体系结构

 

   33 识别边界

边界定义为被研究的软件与其用户之间的概念性接口,用户既包括系统的使用人员,也包括其他软件或者硬件系统。边界使得度量人员可以无二义性地将被度量的软件从其运行环境中区分开来。在识别的一对主层与从属层之间存在一个边界,在同一层的任意两个可区分的进行对等交换数据的软件部分之间也存在一个边界。

5 边界的概念视图

34  识别功能处理

一个功能处理是用户功能需求集合的一个基本部件,包括一组唯一的、内聚的、可独立执行的数据移动。直接或者间接地通过一个“actor” 被一个或多个触发事件触发。为响应它的触发事件,当它执行完所有被要求的任务之后,功能处理结束。“actor”是被度量系统的一个用户,它作为一个中介,将触发事件的数据传递到响应该实践的功能处理。

一个功能处理至少从一个可识别出来的用户功能需求(FUR)派生出来。当一个可确认的触发事件发生时,一个功能处理被执行。一个功能处理至少有两个数据移动组成,一个输入加上一个输出或者写。一个功能处理属于且仅属于一层。

    COSMIC FPP中用户功能需求(FUR)中并不包括技术与质量的需求,在实践中有些需求很难界定是否是“功能需求”,比如“应该简单易用”最基本的识别原则是:只要需要移动数据组,则应该识别为功能需求,并识别出功能处理,度量其规模。

 

35 识别数据组

一个数据组包含的每个数据属性描述了感兴趣的同一个对象的一个互补的侧面。一个数据组可以是永久存储的也可以是短期存储的数据,它必须在系统中被具体化。通过它的唯一的数据属性集合,每个被识别的数据组必须是唯一的和可区别的。每个数据组必须被直接的关联到一个在软件的FUR中描述的兴趣对象上。在COSMIC-FFP中,采用术语“兴趣对象”替代“实体类型”或“范式关系”,以避免使用特定的软件工程方法的术语。例如:在管理信息软件领域,一个兴趣对象可以是雇员(物理的)或订单(概念的),在实时系统中,一个兴趣对象可以是一个脱机文件。

 

36  识别数据属性

一个数据属性是已识别的数据组中最小的信息包,从软件的用户功能需求的角度表达了一定含义。一个数据属性要么刻画了用户的现实世界,要么是一种记录了环境信息,但不能是一种特定的实现技术所使用的信息,如临时变量等。

识别数据属性并非是必须的活动。COSMIC-FFP中基本的功能度量单位是一次数据移动,数据移动的对象是数据组,数据组是数据属性的集合。在计算功能规模时没有考虑数据属性的多少,对于特定的度量目的,需要更加精确地度量规模时,可以对COSMIC-FFP方法进行扩展,度量数据属性的个数即是其中的一种扩展方法。

 

37 识别数据移动

一个数据移动是一个功能处理的部件,它移动属于一个单独的数据组中一个或多个数据属性。如果移动多个数据组的数据属性,则应识别为多个数据移动。有四种子类型的数据移动:输入、输出、读和写。

 

在任何一个功能处理中,不要重复识别一个数据移动。例如:假定在FUR中要求一个数据组的移动,但是开发人员决定通过2个命令,在功能处理的不同地方,每次读取不同数据子集,在考虑规模时,仅识别为1次读。但是,本规则也有一些合法的例外,比如在实时软件中, 如果FUR要求在某个处理停止之前,必须重复读以检查从第1次读到现在的数据是否已经改变了,在这种情况下,如果有额外的和/或不同的数据操作与第2次读相关联,那么读就应该识别为2次。

 

3.8 执行度量与汇总结果

COSMIC FFP方法中,每一个有效的数据移动被看成为一个Cfsu。在为每一个功能处理都找到其应有的所有数据移动之后,将它们累加在一起便是这个功能处理的规模,如式(1所示)。

SizeCfsu (功能处理) = Size(输入)+Size(输出)+Size ( )+Size ( )              1

将所有的功能处理的规模累计在一起便是这个软件系统的规模。如果是从不同观点来度量的软件规模,则不应该累加一起。从最终用户的观点和从开发者的观点度量同一个软件系统的规模,其结果是不相同的。除非有特别的需要,不同层的规模一般也不应该累加一起。

4 COSMIC FFP的实践综述

根据笔者在5家软件公司中培训、推广该方法的统计分析,在1个小时内可以让开发人员掌握COSMIC FFP方法的原理,在6个小时内可以让学员掌握FFP方法的计算规则,通过培训后,学员按此方法对同一个需求进行规模估算,偏差不会超过10%。对同样的需求,由同样的一批专家采用代码行估算方法,偏差最大超过100%。如果采用IFPUG方法对学员进行培训,至少需要16小时,而且在实际估算时,IFPUG方法的估算效率大概是FFP方法的1/3

COSMIC FFP方法,易于理解与掌握,既适合于商业应用软件,也适合于实时系统以及二者混合的系统,既可以度量整个系统的规模也可以度量产品构件的规模,同时在采用该方法进行规模估算时,还可以发现需求不清晰、不详细等问题,对需求确认起到很好的帮助作用。从2003年开始,ISBSG(国际软件基准组织)开始接受基于COSMIC FFP进行规模度量的项目数据,到目前已经收集了100多个项目的度量数据。200511月针对商业应用软件的COSMIC的指南已经公布,针对实时系统的指南也即将公布,相信会有越来越多公司采用COSMIC FFP方法。

 

参考文挡:

[1] Measurement Manual, The COSMIC Implementation Guide for ISO/IEC 19761:2003,Version 2.2, January 2003. COSMIC Measurement Practices Committee.

[2] ISO/IEC 19761:2003, Software Engineering – COSMIC -FFP – A functional size measurement method.

[3]Cosmic-FFP method update bulletin #1 Proposed improvements to the definition and characteristics of a software “layer” 17th May 2004.

[4]Cosmic-FFP method update bulletin #2 Proposed improvement to the definition of an “object of interest” November 2005.

[5]Guideline for sizing business application  software using Cosmic-FFP version 1.0 December 2005.

 

 

Tags: 规模估算   功能点  

类别: 无分类 |  评论(3) |  浏览(7587) |  收藏
3楼 [匿名]李向阳 2007年10月26日 10:29:04 Says:
非常感谢,
2楼 [匿名]guest 2007年08月09日 13:36:13 Says:
非常感谢!找了很久才找到FFP的相关中文介绍。
1楼 [匿名]guest 2007年05月04日 13:34:27 Says:
不错,希望把图也上传一下
发表评论