NESMA和COSMIC区别
NESMA 是传统 “功能组件 + 复杂度加权” 的 FPA 变种,偏业务信息系统、偏早期分层估算;
COSMIC 是现代 “数据移动计数”,更简单、跨领域(含实时 / 嵌入式)、无复杂度加权
NESMA(荷兰软件度量协会)
把软件拆成5大组件,根据组件的复杂度加权计算总分
5 类组件:
- 数据功能:ILF(内部逻辑文件)、EIF(外部接口文件)
- 事务功能:EI(输入)、EO(输出)、EQ(查询)
COMIC(通用软件度量联盟)
只看数据移动,每个有效移动 =1 CFP,无复杂度加权
4 种数据移动:
- E(Entry 输入):用户→软件
- X(eXit 输出):软件→用户
- R(Read 读):存储→软件
- W(Write 写):软件→存储
示例
示例(登录功能):
- NESMA:EI(登录输入,中 = 4)+ EQ(查用户,中 = 3)+ EO(结果,中 = 5)→ 12 FP
- COSMIC:E(账号密码)+ R(读用户数据)+ X(结果)→ 3 CFP
nesma表格:
| 字段名称 | 核心含义 | 填写规则 / 取值说明 | 示例值 |
|---|---|---|---|
| 序号 | 行编号,用于台账排序 | 依次填写 1、2、3… | 1 |
| 系统 / 子系统 | 功能所属系统、模块 | 填写项目实际名称 | XXXX平台 |
| 一级功能 | 顶层业务大模块 | 按业务板块划分 | 首页 |
| 二级功能 | 一级功能下细分模块 | 细化业务范围 | 案例数据统计 |
| 三级功能 | 最小功能单元 | 具体功能 / 数据表名称 | 案例统计表 |
| 功能描述 | 功能业务作用说明 | 简洁描述用途 | 存储测试案例信息与统计数据 |
| 类型 | FPA 五大功能分类(核心) | 仅填:ILF/EIF/EI/EO/EQ | ILF |
| FTR | 引用文件数(关联数据表数量) | ILF/EIF 填 1;事务类统计关联表数 | 1 |
| DET | 数据元素(业务字段)数量 | 统计有效业务字段 / 界面项 | 10 |
| 复杂度 | 功能复杂等级 | 由 FTR+DET 判定,仅填:低 / 中 / 高 | 低 |
| UFP | 未调整功能点 | 按「类型 + 复杂度」查表取值,不计算 | 7 |
| 复用度 | 功能复用比例 | 1 = 全新开发;0.5 = 部分复用;0 = 完全复用 | 1 |
| 调整因子 | 技术复杂度修正系数 | 常规区间 0.65~1.35,无修正填 1 | 1 |
| FP | 最终功能点 | 公式:UFP× 复用度 × 调整因子 | 7 |
| FTR 明细 | 引用数据表名称清单 | 列明 FTR 对应的表名 | 案例统计表 |
| RET 明细 | 记录子分组数 | 单表填 1;多子分组按实际数填写 | 1 |
| DET 明细(除启动触发器) | 业务字段清单 | 逐条列出统计的字段名称 | 案例 ID、案例名称… |
| 逻辑处理 | 内部业务规则 | 校验 / 计算 / 筛选等,数据表可空 | - |
| 发起者 | 功能触发主体 | 用户、前端、第三方系统等 | 前台用户 |
| 接收者 | 结果 / 数据接收对象 | 页面、数据库、外部接口等 | 本地数据库 |
| 触发事件 | 触发该功能的操作 | 点击按钮、页面加载、表单提交等 | 页面加载 |
| 表名 | 操作的数据库表名 | 填写完整表名 | test |
| 输入 | 流入系统的数据 | 录入 / 查询条件,数据表可空 | - |
| 输出 | 系统向外返回的数据 | 报表、列表、提示等,数据表可空 | - |
| 功能类型 | 自定义业务标签 | 数据存储 / 录入 / 查询 / 报表等 | 数据存储 |
cosmic表格
| 字段名称 | 核心含义 | 填写规则 / 取值说明 | 示例值 |
|---|---|---|---|
| 修订标识 | 记录本条需求 / 功能的变更版本 | 新增 / 修改 / 删除 / 空,用于版本管理 | 空 |
| OPEX - 需求名称 CAPEX - 子系统 | 对应项目的需求名称 / 所属子系统 | 填写项目 / 子系统名称,CAPEX/OPEX 为成本分类标识 | 空 |
| 一级模块 | 最高层级的业务模块划分 | 按业务大板块填写,如首页、案例管理、系统设置 | 首页 |
| 二级模块 | 一级模块下的细分模块 | 细化业务范围,按功能域划分 | 数据统计展示开发 |
| 三级模块 | 最小业务单元 / 功能模块 | 对应具体功能场景 | 平台概览统计 |
| 功能用户 | 触发 / 接收该功能数据的角色 / 系统 | 填写发起者、接收者,如操作员、数据统计服务 | 发起者:操作员 接收者:xxxx |
| OPEX - 功能用户需求 CAPEX - 可留空 | 该功能对应的用户业务需求 | 用业务语言描述功能目标,CAPEX/OPEX 为成本分类标识 | 实现xxx,掌握xxx |
| 触发事件 | 启动该功能的动作 / 条件 | 填写用户操作、系统事件,如点击查询、页面加载、定时任务 | 操作员执行查询平台概览数据 |
| 功能过程 | COSMIC 核心单元:完成一个业务目的的完整过程 | 对应一个独立业务动作,一个功能过程可包含多个数据移动 | 列表查询查询平台概览数据 |
| 子过程描述 | 功能过程下的具体步骤 / 子操作 | 描述数据移动对应的具体行为 | 操作员输入查询平台概览条件信息 |
| 数据移动类型 | COSMIC 核心计数项,4 种标准数据移动 | 仅填写:E / X / R / WE=Entry(外部输入)、X=Exit(外部输出)、R=Read(读存储)、W=Write(写存储) | E |
| 数据组 | 一组有业务含义、一起移动的字段集合 | 填写该数据移动对应的业务数据组名称 | 查询平台概览请求信息 |
| 数据属性 | 数据组包含的具体业务字段 / 属性 | 列出该数据组的关键字段,无需系统字段 | 查询时间范围、用户权限、数据维度 |
| CFP | COSMIC 功能点,数据移动的计数 | 单个有效数据移动记 1 分,一个功能过程的总 CFP 为其所有数据移动的和 | 1 |