7.9 KiB
Raw Permalink Blame History

name version description trigger_conditions
function-point-counting 1.0.0 Use when 估算或复核软件功能点(FP/ILF/EIF/EI/EO/EQ/DET/FTR)。
用户要求计算/估算/核算软件功能点、功能规模、FP
招投标场景需要按功能点计价或复核对方报的功能点数
需求评审需要列出全部功能点清单及计算依据
对已有功能点估算结果做防虚增审计(查按页面/按钮/API/表拆分的错误)

软件功能点自动计算IFPUG 口径LLM 语义 + 规则引擎计算)

源文档:《软件功能点自动计算原则》全文见 references/principles-full.md16 章)。 本技能是它的可执行操作手册;原则冲突时以 references 原文为准。

分工铁律(文档第 16 章)

  • LLM 只做语义理解:①需求解析 ②功能候选识别 ③系统边界 ④ILF/EIF ⑤EI/EO/EQ ⑥去重 ⑦DET/RET/FTR 提取。
  • 复杂度判定与 FP 加权(⑧⑨)必须交给规则引擎scripts/fp_calc.py。 禁止 LLM 心算 FP、禁止 LLM 直接报总数。LLM 输出结构化 JSONtype/det/ret/ftr/confidence/evidence 脚本查矩阵+权重表算复杂度与 FP并生成四件套报告。
  • ⑩ 复核:把脚本输出交人工/规则复核后才定稿。

十步工作流

  1. 读需求文档(全文,不跳章)。
  2. 定应用边界:本系统维护哪些数据、读哪些外部数据、哪些处理在外部完成。未定边界禁止往下算。
  3. 列用户角色与外部系统。
  4. 识别业务过程(业务动作+业务数据+处理目的+业务结果四要素齐才算候选)。
  5. 识别数据对象 → 判 ILF/EIF见决策树
  6. 识别事务 → 判 EI/EO/EQ见决策树
  7. 去重(同功能跨页面/角色/终端/接口只算一次)。
  8. 逐功能提 DET/RET/FTR标置信度信息不足进待确认不猜。
  9. 写 input.json 跑 scripts/fp_calc.py 得复杂度与 FP。
  10. 输出四件套 + 证据链,交复核。

分类决策树

ILF(数据功能·内部):数据在本边界内 ∧ 本系统维护 ∧ 用户可识别 ∧ 结构稳定。 EIF(数据功能·外部):数据他系统维护 ∧ 本系统只读引用 ∧ 对本系统业务有意义。 EI(事务·输入):边界外数据/控制信息进入 ∧ 引起业务处理或维护内部数据 (新增/修改/删除/提交/审批/填报/导入/AI 生成提交类)。 EO(事务·输出):输出含 计算|汇总|派生|转换|复杂处理|业务规则 之一。 EQ(事务·查询):输入条件→检索→直接展示,计算派生。 EO vs EQ 一句话:结果里有"算出来的数"(总数/比率/均值/趋势)=EO只是把存的数据捞出来摆好=EQ。

功能独立性四问(全"是"才独立成点,否则并入所属业务事务)

独立业务目的?独立触发事件?独立处理逻辑?独立业务结果?

拆分禁令(五不按)

不按页面、不按按钮、不按 API、不按数据库表、不按 CRUD 机械拆。 例:人员管理/新增/编辑/详情 4 页 ≠ 4 功能POST/PUT/DELETE/GET /user ≠ 4 功能; user/user_role/user_project/user_skill 4 表 ≠ 4 ILF按逻辑数据分组判

去重三不

同业务功能不因 ①多页面 ②多角色仅权限不同③多展现形式Web/移动/API重复计。

特殊场景

  • 报表:纯查询=EQ含统计/计算/汇总/派生=EO复杂指标分析优先 EO。
  • 工作流:不按节点数算;按 发起→输入→审批→状态变化→结果 的业务过程定 EI/EO/EQ/数据功能。
  • 导入:接收外部数据+校验转换写入=EI。导出简单=EQ含汇总/计算/转换/派生=EO。
  • 消息通知:流程内自动通知(如审批后发短信)=该流程的处理逻辑,单独加点; 仅当通知本身是独立业务(用户主动群发管理)才算。
  • 接口:一个 API ≠ 一个功能点;按接口背后业务判 EI/EO/EQ/ILF/EIF。
  • AI 功能:一个 Prompt ≠ 一个功能点;按实际输入/处理/输出/引用数据分析 (如"AI 生成岗位描述"=用户提交需求(EI 输入)→调用生成→返回结果(EO/EQ 视有无派生))。

不确定信息(核心规则)

需求不足以定类型/边界/复杂度时不得猜测,输出三要素进待确认清单: 状态:待确认 / 原因:缺少…… / 需要确认:…… 例:"系统支持人员统计分析"→ 问:统计哪些指标?含计算吗?含趋势吗?数据源?支持筛选?生成报表? 置信度high=描述明确可直接算medium=功能明确但 DET/FTR 部分缺失,可算但标假设; low=只有模糊描述("具备XX管理能力")→ 进待确认,不给数。

证据优先与十条禁止system prompt 级强约束)

只算需求明确存在或可直接推导的功能。禁止为"完整"自补:用户管理/日志/权限/消息/字典/表/API/后台/配置。 1 禁止凭经验补功能 2 禁止按页面数 3 禁止按按钮数 4 禁止按 API 数 5 禁止按表数 6 禁止按代码量 7 禁止为抬高 FP 拆分 8 禁止重复计算 9 禁止缺证据强判(标待确认) 10 禁止修改需求事实(只识别需求,不创造需求)。

复杂度矩阵与权重IFPUG 4.xfp_calc.py 内置)

档位EI 的 DET 1-4/5-15/≥16、FTR 0-1/2/≥3EO·EQ 的 DET 1-5/6-19/≥20、FTR 0-1/2-3/≥4 ILF·EIF 的 DET 1-19/20-50/≥51、RET 1/2-5/≥6。 矩阵(行=FTR或RET档列=DET档 EI/ILF低低低/低中高/中高高EIF 第一行第三列=中)。 权重 UFPILF 7/10/15EIF 5/7/10EI 3/4/6EO 4/5/7EQ 3/4/6低/中/高)。 项目另有约定权重表时改 fp_calc.py 的 WEIGHTS/MATRIX不改流程。

规则引擎用法

python3 scripts/fp_calc.py input.json          # markdown 四件套
python3 scripts/fp_calc.py input.json --json   # JSON程序消费/复核)

input.json schema

{"project": "名", "boundary": {"internal": [], "external": []},
 "functions": [{"name": "", "type": "EI|EO|EQ|ILF|EIF", "desc": "",
   "evidence": "需求章节+原文摘要", "det": 12, "ret": 1, "ftr": 2,
   "confidence": "high|medium|low", "assumption": "可选"}],
 "pending": [{"item": "", "reason": "", "ask": ""}],
 "assumptions": [""]}

ret 仅 ILF/EIF 用(缺省 1ftr 仅 EI/EO/EQ 用(缺省 0。校验失败的功能进"输入校验错误"不计入。 脚本输出即文档第 14 章四件套:功能明细表 / 汇总ILF·EIF·EI·EO·EQ 计数+总 UFP/ 待确认项 / 计算假设。

证据链(每个功能点必须可回溯)

需求原文 → 功能识别 → 分类判断 → 复杂度判断 → FP 结果。 明细表每行带 evidence章节+原文摘要)与 calc_basis档位→复杂度→权重。 没有证据支撑的功能不得进入最终计数。

典型案例标准答案(回归用)

需求描述 判定 要点
新增外包人员 EI 边界外输入+维护人员档案
按姓名/工号查人员 EQ 检索直展无计算
人员月度统计(流失率/到岗率/SLA EO 有算出来的比率
人员档案(本系统维护) ILF 四条件齐
甲方HR员工信息只读 EIF 他维护我引用
人员管理4个页面 1 组功能 不按页面拆
入场审批后自动发短信 不单独计 属审批流程处理逻辑
Excel 批量导入人员 EI 校验转换写入
"系统具备人员管理能力" 待确认 低置信度不给数
AI 生成岗位描述 按输入/处理/输出分析 一个 Prompt ≠ 一个点

防虚增审计模式(复核他人估算时)

逐条查:是否按页面/按钮/API/表/CRUD 拆?是否自补了无依据的通用功能? 是否同功能跨端重复?是否把流程内通知单列?是否缺证据强判? 命中即要求对方按本技能重算,并给出差异清单。