个人随笔
以员工管理系统为例,详细说明如何利用 功能点估算法计算业务复杂度。 在员工管理系统中添加一个员工资料 会使用到员工的一般信息、教育情况、工作经历和家属信息。员工隶属于某个部门 在本系统中会有一个对部门进行维护的功能。员工的工资则由另外一个财务系统提供。
假设员工基本信息如下所示:
员工ID(标签控件)
员工名称
性别
生日
婚否
所属部门ID(标签控件)
所属部门名称
受教育的时间
学校名称
所学专业
-工作时间
-工作单位
-工作部门
-工作职务
-亲属的姓名
-之间关系
-亲属年龄
-工作单位
假设部门信息如下所示
部门ID(标签控件)
部门名称
假设工资表信息如下所示:
员工ID(标签控件)
员工姓名
金额
单位
ILF(内部逻辑文件)和EIF(外部接口文件)的功能点数本范例识别出来ILF和EIF功能点个数如下
表所示。
ILU内部逻辑文件 | RET(记录元素类型的个数) | DET个数数据元素类型的个数 | 复杂度 | 未调整的FP个数 |
员工信息 | 员工基本信息受教育情况工作经历亲属信息4个 | 18 | 低 | 7 |
部门信息 | 部门基本信息一个 | 2 | 低 | 7 |
EIF外部接口文件 | RET | DET个数 | 复杂度 | 未调整的FP个数 |
工资表 | 员工基本信息共2个 | 4个 | 低 | 5 |
十九个
EQ | FTR | DET个数 | 复杂度 | 未调整的FP个数 |
查询员工信息 | 员工部门工资表 | 20 | 高 | 6 |
查询部门信息 | 部门 | 2 | 低 | 3 |
九个
总结功能点估算法是一个非常有用的对软件规模进行估算的国际通用技术,是项目管理人员必须掌握的工具。为了便于大家对功能点的技术进行理解和记忆,这里对其进行总结:
由于计算机软件就是为了实现无纸办公,那么在估算功能点时应该多以用户的纸质表单为依据,每个表单就是一个ILF或EIF,表单上显示的字段都是DET,一个表单上的“核心”内容不管是由几个数据表
来分别存放数据的,每个表都是一个RET.简单来讲,ILF和EIF可以被看作数据库中的数据表,但是主、从表将被视为一个ILF或EIF。那么,ILF和EIF的复杂度就是由数据表中的字段DET和一个ILF或EIF自身所包含的主、从表个数RET来决定。在计算DET时主、外键只能算作一个。
EI就是对应用户增加、修改、删除的操作,EO和EQ都是用于用户查询的操作。EO和EQ的区别是,EO查询时使用了数学公式或计算方法。EI、EQ和EO的复杂度是由FTR和DET决定的。FTR的个数由ILF和EIF的个数决定,可以由主表中主、外键的个数来计算。在计算EI的DET时,只有用户在界面上直接输入的信息才算作DET,通过页面自动计算或转换的数据不能算作EI的DET。在EO和EQ计算DET时,报表的标题、页码等信息不能被计算为一个DET。
其他功能点方法
Markll功能点(主要应用在英国)COSMIC-FFP功能点(适用实时系统或者嵌入式系统)
传统估算方法-类比估算-定义
估算人员根据以往的完成类似项目所消耗的总成本(或工作量),来推算将要开发的软件的总成本(或工作量)。
是一种自上而下的估算形式
举例
证券交易网站
需求类似
历史数据十万
类比估算十万
自下而上估算---定义
利用任务分解图(WBS),对各个具体工作包进行详细的成本估算,然后将结果累加起来得出项目总成本。
三点估算 三种估算值
最可能得成本呢 cm比较现实的估算成本
最乐观成本 c0 最好情况
最悲观成本 cp 最差情况
三角分布 c1 = c0+ cm+cp /3
贝塔分布 ce = c0+4cm+cp)/6最现实
cocomo
E = a * (kloc)^b
E 工作量
a b 依赖于项目的自然属性的系数
kloc 交付代码行
专家估算法
取多个估算值 最后得出综合的估算值、
组织者确定专家,这些专家互相不见面组织者发给每位专家一份软件规格说明专家以无记名对该软件给出3个规模的估算值① 最小ai
②最可能的mi
③最大bi
组织者计算每位专家的Ei=(ai+4mi+bi)/6最终可以获得一个多数专家共识的软件规模:(E=E1+E2+…En)/n(n:表示n 个专家)如果各个专家的估算差异超出规定的范围(例如:15%),则需重复上述过程