软件系统开发费用的估算——功能点方法

文章目录

  • 一、前文
  • 二、功能点方法的简介
  • 三、功能点方法的用途
  • 四、功能点方法的特点
  • 五、功能点方法的完整过程
    • 5.1 确定计数类型
    • 5.2 识别系统边界
    • 5.3 识别功能点计数项
      • 5.3.1 ILF(内部逻辑文件)
      • 5.3.2 EIF(外部接口文件)
      • 5.3.3 EI(外部输入)
      • 5.3.4 EO(外部输出)
      • 5.3.5 EQ(外部查询)
  • 六、其他要点
  • 七、其他类似功能点的方法
  • 八、应用实例

一、前文

我们接到甲方的软件系统需求单,我们如何报价?

或者我们有一个软件系统需要外包给乙方,我们如何定价?

一般来说,分为几步走。

  • 确认系统模块边界
    • 是否需要云端服务器开发
    • 是否需要Web前端开发
    • 是否需要移动端开发
    • 是否需要嵌入式软件开发
    • 是否需要硬件开发
    • 等等
  • 系统模块单独报价
    • 有界面的,如Web前端和移动端,画出原型图
    • 无界面的,如云端服务器开发和嵌入式开发,列出功能点
    • 根据经验,预估工作量和工时
    • 根据商务/关系/市场/技术/时间紧急程度等,给与适当的溢价
    • 每个系统模块,都单独给出报价

以上,是我们常规给客户报价的方法。

客户根据自身的感知(对专业程度的感知 / 对关系的远近亲疏 / 对价格的货比三家)等,确定合作商的选择。

这些都是企业对企业的常规做法。

但是,如果甲方是政府机构 / 国企 / 央企 等单位,那这一套就完全行不通。

对象不同,要求不同。政府机构 / 国企 / 央企 等单位需要更加严格的规章制服和标准流程,不能这么草率。

所以,这里引入了软件系统开发费用的估算——功能点方法

功能点方法目前也是政府机构 / 国企 / 央企 等单位的开发费用估算的标准方法。

二、功能点方法的简介

软件系统开发费用的估算——功能点方法_第1张图片软件系统开发费用的估算——功能点方法_第2张图片

  • 功能点是度量软件规模的一种单位,例如生活中我们采用平方米度量房子的面积
  • 功能点方法从用户视角(即业务价值)度量软件的大小
  • 功能点方法的核心思想是系统维护的信息及处理的复杂程度决定了系统价值
  • 功能点方法已成为软件规模度量的国内外标准,目前应用的比较广泛的是国际功能点用户组(IFPUG)发布的标准功能点法和荷兰软件度量协会(NESMA)发布的快速功能点法

三、功能点方法的用途

  • 规模估算或测量
    • 每类功能点计数项根据复杂度不同均有特定权值
    • 例如中等复杂度的ILF/EIF/EI/EO/EQ的权值分别为10/7/4/5/4
    • 所有功能点计数项数值之和就是未调整的功能规模,单位为FP
  • 工作量/工期/成本估算
    • 规模估算是项目估算的基础
  • 项目范围管理
    • 功能规模的变化对项目工作量产生重大影响
    • 规模估算与范围定量管理相结合对于需求不确定的增强开发项目尤其重要

四、功能点方法的特点

  • 更快的速度
  • 足够准确的规模估算
  • 采用国际标准(NESMA)

五、功能点方法的完整过程

软件系统开发费用的估算——功能点方法_第3张图片
软件系统开发费用的估算——功能点方法_第4张图片

5.1 确定计数类型

  • 新开发
    • 识别所有新增功能
  • 增强开发
    • 识别变化功能
    • 包括新增、修改及删除
  • 已有系统计数
    • 识别最终交付功能

5.2 识别系统边界

  • 标准功能点方法
    • 从用户视角
  • 实际情况
    • 产品型研发组织按照产品架构划分居多
    • 项目型研发组织按照项目划分居多
  • 金融行业
    • 通常按照产品(系统)确定边界

5.3 识别功能点计数项

  • 数据功能:系统使用或维护了哪些数据(业务对象/业务规则)?
    • ILF(内部逻辑文件):在本系统维护的业务对象/业务规则
    • EIF(外部接口文件):本系统引用,在其他系统维护的数据
  • 事务功能:系统如何使用或维护这些数据?
    • EI(外部输入):对数据进行维护或改变系统行为的事务
    • EO(外部输出):对数据加工后呈现或输出的事务
    • EQ(外部查询):对已有数据直接呈现或输出的事务

因此,功能点规模与业务复杂度相关,但与技术实现方式无关

  • 估算早期(如编制预算)可采用预估功能点方法,只需要识别ILF/EIF,但要注意对于增强开发项目可能不适用
  • 估算中期(如技术方案、立项、项目计划)通常采用估算功能点方法,需要识别ILF/EIF/EI/EO/EQ
  • 估算中后期(如需求分析、变更、项目决算)可根据管理需求决定是否采用详细功能点方法(通过对DET/RET/FTR计数对各功能点计数项的复杂度进行调整)

本博文主要介绍估算功能点方法

5.3.1 ILF(内部逻辑文件)

  • ILF(内部逻辑文件):在本系统维护的业务对象/业务规则
  • 复杂程度:10

识别规则

  • ILF指在待计数系统内部逻辑上的一组数据
  • 对单个ILF平均执行6种左右的操作(经验而非规则!),而且一定包含写操作

5.3.2 EIF(外部接口文件)

  • EIF(外部接口文件):本系统引用,在其他系统维护的数据
  • 复杂程度:7

识别规则

  • 本系统“引用”
  • 是一个“逻辑”上的文件
  • 在系统外部维护

关键点

  • 是文件,而非系统或接口
  • 引用的实现方式不影响计数结果
  • 维护是指逻辑上而非物理上的维护或存储

5.3.3 EI(外部输入)

  • 复杂程度:4

识别规则

  • 是一个完整的基本过程
  • 其主要目的是对内部逻辑文件进行维护或接受某个控制信号使软件行为发生改变

主要目的

  • 对内部逻辑文件进行维护
  • 输入信号并改变系统行为

示例

  • 如增/删/改
  • 如启动服务

5.3.4 EO(外部输出)

  • 复杂程度:5

识别规则

  • 是一个完整的基本过程
  • 即通过处理逻辑(计算/产生衍生数据/维护逻辑文件/改变系统行为)表示/发送信息

主要目的

  • 向系统边界之外发送/呈现数据

示例

  • 例如:针对某业务数据的复杂报表/统计分析等(含计算)
  • 查询3月份贷款记录,并计算贷款总额
  • 输出报表
  • 生成对账单
  • 大额交易统计
  • 员工所得税报表

5.3.5 EQ(外部查询)

  • 复杂程度:4

识别规则

  • 是一个完整的基本过程
  • 对内部数据的简单输出(不能计算,不能产生衍生数据,也不可维护ILF或改变系统行为,可以排序、筛选、等值代换等)
  • 以原始状态查看信息
  • 可以排序、筛选、分组、简单的等值代换等

主要目的、

  • 是向系统边界之外发送/呈现数据

示例

  • 列表显示某业务数据基本信息
  • 只显示未处理的授信申请
  • 按日期显示收支记录
  • 搜索某个ID的客户
  • 帮助系统(搜索帮助条目)
  • 帐号交易记录
  • 人员信息查询
  • 显示“我的待办

六、其他要点

  • 快速功能点方法要点—预估功能点
    • 正确评估ILF/EIF的必要性
    • 准确计算ILF/EIF的数目
  • 快速功能点方法要点—估算功能点
    • 准确计算ILF/EIF的数目
    • 正确认识“基本过程”
    • 准确计算EI、EO、EQ的总数
    • EO和EQ混淆仅产生少量误差
    • 关于功能点方法的定制及优化
    • 提高计数一致性
    • 提高规则合理性

七、其他类似功能点的方法

  • 功能项数
  • 页面数/窗体数
  • Use case数量(UCP)
  • User story数量(Story point)

以上方法尚未形成国际标准

八、应用实例

软件系统开发费用的估算——功能点方法 应用实例

觉得好,就一键三连呗(点赞+收藏+关注)

你可能感兴趣的:(杂七杂八,功能点,开发费用估算,开发费用,软件开发,ILF)