软件开发人员定员讨论方案

软件开发人员定员讨论方案

1 软件项目定员流程示意图

项目需求
估算功能点
估算工作量(人·月)
分解为
子功能点
估算编制

 

2 估算功能点(参照行业做法)

2.1功能点分析的要素

功能点分析法是从软件用户的角度来评估一个软件系统的功能,它将软件的功能分为五个基本要素:其中两个表示终端用户的数据需求:内部逻辑文件(Internal Logical Files),外部接口文件(External Interface Files),另外三个表示用户对数据的获取处理的事务功能:用户输入(External InPuts),用户输出(External Outputs),用户查询(External Inquiries)。它们的详细定义如下:
1)内部逻辑文件(ILF):是一个用户可识别的逻辑相关的数据组,它在应用程序边界内,由用户输入来维护。它可能是某个大型数据库的一部分或是一个独立的文件。
2)外部接口文件(EIF):是一个用户可识别的逻辑相关的数据组,但仅仅是起参考的作用,且数据完全存于软件边界之外,由另一个应用程序进行维护,是另一个应用程序的内部逻辑文件。
3)用户输入(EI):是来自于软件外部的数据输入,可以是控制信息,也可是事务数据输入。如果是事务数据,它必须维护一个或多个内部逻辑文件。也就是说那些最后没有保存的中间计算结果和消息发送,都不算作数据输入单元。输入数据可来自于一个数据输入屏幕或其他应用程序。
4)用户输出(EO):是“经过处理”的数据,由程序内部输出到外部。这里“经过处理”是指其区别于用户查询数据,是将一个或多个ILF、EIF中取出数据经过一定的组合、计算、总结后得出的输出数据。
5)用户查询(EQ):是一个输入输出的组合过程,从一个或多个ILF、EIF中取出数据输出到程序外部。其中的输入过程不更新任何ILF,输出过程不进行任何数据处理。
注:
对软件项目进行估算的有效性和准确性取决于所掌握的有关项目的原始资料的完备性。这些原始资料包括:需求说明书、系统规格说明书、或者软件需求说明书等。从这些原始资料中可分析得出以上5类要素。如果以上5类要素的数据不准确,将直接影响到评估的结果。

2.2 功能点计算(初步值UFC)

一旦估算出应用程序中每个功能要素的数量后,就可以将每个计数与一个复杂度值(加权因子)相乘,最后进行合计,算出一个初步的总的功能点数UFC。复杂度加权因子表如下:
表1 功能要素复杂度加权因子表
           复杂度
功能要素
平均
用户输入数EI
3
4
6
用户输出数EO
4
5
7
用户查询表EQ
3
4
6
内部逻辑文件数ILF
7
10
15
外部接口文件数EIF
5
7
10
 
例如,假设每个功能要素的复杂度都是平均的。若有一个由25个数据登记表、5个接口文件,15个报告、10个外部查询和20个逻辑内部表单组成的系统,其功能点为:UFC=(25x4)+(5x7)+(15x5)+(10x4)+(20x10)=450个功能点。
每个功能要素的复杂度可通过下表进行分析判断。
表2 功能要素复杂度判别表
ILF(内部逻辑文件)和
EIF(外部接口文件)
EO(用户输出)和
EQ(用户查询)
EI(用户输入)
记录
单元
数据单元
文件
类型
数据单元
文件
类型
数据单元
1-19
20-50
51+
1-5
6-19
20+
1-4
5-15
16+
1
平均
0或1
平均
0或1
平均
2-5
平均
2-3
平均
2-3
平均
6+
平均
4+
平均
4+
平均
 
从表中可以看出,EI(用户输入)、EO(用户输出)和EQ(用户查询)是由文件类型和数据单元的数量来决定的。而ILF(内部逻辑文件)和EIF(外部接口文件)则是由记录单元和数据单元来决定的。通过上面的两维表即可确定各个功能要素的复杂度是低、平均,还是高。
表中三种数据项定义如下:
·记录单元类型Record Element Type(RET):指在ILE或EIF中,用户可识别的数据域的子集,可以通过检查数据中的各种逻辑分组来识别它们。(例如一个客户文件,包括客户姓名、地址等个人信息,以及客户的信用卡和卡号,一个客户有多张信用卡。该文件含有两个记录单元:客户信息和信用卡信息)
·文件引用类型File Type Referenced(FTR):指在一个事务过程中,所引用到的各种文件,可以是内部逻辑文件,也可以是外部接口文件。
·数据单元类型Data Element Type(DET):是用户可识别的无递归,不重复的信息单元。DET是动态的,而非静态的,可以读自于文件,或由FTR的数据单元创建。另外,一个DET也可是对一个事务处理过程的唤醒,或是事务的有关信息。

2.3 确定技术复杂度因子TCF

算出功能点总数UFC后,还需要根据项目具体情况,对各个技术复杂度参数进行调整。技术复杂度一共考虑了14个调节参数,分别是:
表3 技术复杂度因子表
序号
调节参数
描述
1
E1
数据通讯(Data communications)
2
E2
软件性能(Performance)
3
E3
可配置性(Heavily used configuration)
4
E4
事务效率(Transaction rate)
5
E5
实时数据输入(Online data entry)
6
E6
用户界面复杂度(End user efficiency)
7
E7
在线升级(Online update)
8
E8
复杂运算(Complex processing)
9
E9
代码复用性(Reusability ease)
10
E10
安装简易性(Installation ease)
11
E11
操作方便性(Operations ease)
12
E12
跨平台要求(Multiple ease)
13
E13
可扩展性(Facilitate change)
14
E14
分布式数据处理(Distributed functions)
 
各个复杂度参数的取值范围从0到5,表示该项对功能点总数的影响从没有到极高。各个参数默认值为0,也就是该项不影响功能点调整。
每个参数都是对总功能点数的线性调整,设Ei为根据14个方面的调节参数对软件系统的影响程度,则功能点技术复杂度因子为:
   TCF = 0.65 + 0.01 x ∑Ei, (i=1….14)
Ei∈(0,5), 则: TCF∈(0.65,1.35)

2.4 计算调节后的功能点数FP  

最后得出经调节后功能点数FP=UFC x TCF。
 
2009-6-2