一、COSMIC方法概述

COSMIC(Common Software Measurement International Consortium)是由全球软件度量专家组成的非营利组织,成立于1998年,致力于研发标准化软件规模度量方法。其核心成果COSMIC功能点方法于2002年成为国际标准(ISO/IEC 19761),最新版本为2011年修订版,被广泛应用于业务系统、实时软件及混合型系统(如银行、嵌入式控制、航空订票系统等)。

该方法通过量化软件中数据移动的数量来度量功能规模,每个数据移动计为1个功能点(CFP)。其优势在于不依赖技术实现细节,仅关注用户可感知的功能需求(FUR),适用于需求早期估算与变更管理。

二、核心概念与数据移动类型

1. 数据移动的分类

  • 输入(Entry, E):用户向系统传输数据(如提交表单);

  • 输出(Exit, X):系统向用户返回数据(如生成报表);

  • 读(Read, R):从持久存储(如数据库)读取数据;

  • 写(Write, W):向持久存储写入数据。

image-bdle.png

2. 功能过程与拆分规则

每个功能过程(Function Process)由用户触发,是用户需求的最小执行单元,需包含至少2个数据移动(例如1个输入+1个输出或写)。例如:

  • 图书借阅功能:输入借阅人信息(E)→ 保存至数据库(W)→ 输出借阅成功提示(X),合计3 CFP。

3. 数据组与兴趣对象

  • 数据组:描述同一对象(如“客户”)的多个属性集合(如姓名、年龄),其移动按整体计数,不可拆分属性;

  • 拆分限制:弹窗提示若包含业务数据需单独计为输出(X),系统日志仅计1/3 CFP。


三、度量过程的三个阶段

1. 策略阶段

  • 明确度量目的(如成本估算或需求变更评估);

  • 定义软件边界(区分系统与外部交互的接口);

  • 识别功能用户(包括人、硬件或其他系统)。

2. 映射阶段

  • 识别功能处理:按用户需求拆解为独立功能模块;

  • 划分数据组:基于兴趣对象(如“订单”)及其属性;

  • 标记数据移动:按输入、输出、读、写分类并计数。

3. 度量阶段

  • 汇总所有功能过程的CFP;

  • 处理需求变更时,计算新增、删除或修改的数据移动(如删除“校验重名”功能减少2 CFP)。


四、应用示例与工作量测算

示例:需求变更的规模度量

  • 原始需求:录入员工信息(含姓名、身份证),校验重名后保存。

    • 输入(E=1)→ 读姓名(R=1)→ 输出错误提示(X=1)→ 写数据(W=1),总计4 CFP。

  • 变更后:取消重名校验,仅保留输入与保存。

    • 减少读(R)和输出(X),最终2 CFP,变更规模=2 CFP

工作量转换规则

  • 人天计算:1 CFP ≈ 1.2–2人天(中国移动行业经验值),需结合复杂度、技术调整因子(如团队经验)修正;

  • 成本估算:若单功能点成本为3000元,209 CFP的项目总成本≈62.7万元。


五、注意事项与挑战

  1. 非功能性需求需转换为功能性描述(如“高并发”拆分为多实例处理逻辑);

  2. 自动化工具缺失:目前依赖人工拆分,效率较低,部分企业尝试引入AI辅助;

  3. 数据组一致性:同一对象的不同展现形式(如报表与图表)需计为多个输出。


结语

COSMIC功能点方法通过标准化数据移动的度量,为软件规模评估提供了客观依据。尽管存在学习成本高、过程繁琐的挑战,但其在需求管理、成本控制及跨项目对比中的价值显著。未来随着自动化工具的完善,该方法有望在敏捷开发与DevOps中进一步普及。

扩展阅读

  • COSMIC国际联盟官网 提供最新标准文档;

  • ISBSG数据库(付费)包含行业基准数据,支持更精准的估算。