【软件工程】软件项目估算(LOC/FP/COCOMO)+ 风险管理
考点频率项目估算 ★★★★☆选择题常考风险管理 ★★★★☆选择题常考难度⭐⭐⭐建议重点掌握三种估算方法的区别、COCOMO模型的公式及三种模式以及风险管理的四步流程1️⃣ 软件项目估算为什么估不准但必须估软件项目估算是估算软件项目的工作量、成本、进度的过程。它直接决定了项目能不能盈利、资源够不够、能不能按期交付。一个悖论软件项目估算永远不可能完全准确但企业仍然必须估算——因为合同要签、预算要批、团队要招、排期要定。估算的准确性不是目标控制误差范围才是。1.1 三种估算方法估算方法全称依据适用阶段LOC代码行估算Lines of Code基于程序代码量行数项目后期、技术已确定FP功能点估算Function Points基于系统功能数量项目早期、需求已定义COCOMO构造性成本模型Constructive Cost Model基于LOC/FP 项目特征各类项目1.2 LOC代码行估算核心思想通过估算软件产品的规模代码行数来推算工作量和成本。估算步骤将系统分解为各个模块/功能估算每个模块的代码行数范围乐观值、可能值、悲观值用加权平均计算期望值期望值 (乐观 4×可能 悲观) / 6汇总得到总代码行数优点简单、直观有历史数据支撑时比较准确。缺点依赖编程语言同样的功能C语言比Python多写几倍代码项目早期很难估算。1.3 FP功能点估算核心思想从用户视角出发根据软件的功能数量而非代码行数来估算规模避免编程语言带来的偏差。功能点由五种要素构成功能类型说明权重外部输入EI用户输入数据如添加订单低3/中4/高6外部输出EO系统输出给用户如报表低4/中5/高7内部逻辑文件ILF系统内部维护的数据如数据库表低7/中10/高15外部接口文件EIF系统引用的外部数据如调用外部API低5/中7/高10外部查询EQ用户查询操作如搜索商品低3/中4/高6计算步骤统计每个功能要素的数量乘以对应权重得到未调整功能点UFP根据14个技术复杂度因子如数据通信、性能要求等计算技术复杂度因子TCF调整后功能点 UFP × TCF优点与编程语言无关可在项目早期估算便于不同项目之间横向比较。缺点计算过程较复杂需要一定的经验和培训。2️⃣ COCOMO模型构造性成本模型COCOMO由Barry Boehm于1981年提出是目前最常用的软件成本估算模型。它基于代码行数KLOC和项目类型来估算工作量。2.1 COCOMO的三种开发模式模式适用场景特点有机型Organic项目规模小、需求稳定、团队经验丰富简单如企业内部管理系统半独立型Semi-detached中等规模、需求部分不确定、团队经验一般介于两者之间嵌入型Embedded大规模、需求复杂、硬件约束严格复杂如航天、电信系统2.2 COCOMO基本模型公式开发模式工作量公式人·月开发时间公式月有机型E 2.4 × (KLOC)^1.05D 2.5 × E^0.38半独立型E 3.0 × (KLOC)^1.12D 2.5 × E^0.35嵌入型E 3.6 × (KLOC)^1.20D 2.5 × E^0.32关于公式的说明在不同教材中系数如a2.4和指数如b1.05的取值可能略有差异但核心规律是一致的——项目规模越大、复杂度越高工作量和时间增长越快。考试中如果给出的公式参数与你记忆的不同建议以题目给出的公式为准。关键是要能够根据题目提供的公式进行套用和计算。2.3 计算示例题目某项目预计代码量为20 KLOC采用半独立型开发模式求估算工作量和开发时间。解工作量E 3.0 × (20)^1.12 ≈ 3.0 × 27.86 ≈ 83.6 人·月开发时间D 2.5 × E^0.35 ≈ 2.5 × (83.6)^0.35 ≈ 2.5 × 4.72 ≈ 11.8 月答案约84人·月12个月3️⃣ 风险管理把“定时炸弹”变成“已知量”风险Risk是指可能发生的、对项目目标造成负面影响的不确定事件。风险管理的目标不是“消灭所有风险”那不可能而是识别风险、评估风险、制定应对计划让团队有准备不会被打个措手不及。3.1 风险管理的四个阶段阶段核心活动产出风险识别找出所有可能的风险分类记录风险清单风险分析评估概率和影响排优先级风险评估表风险应对制定应对策略风险应对计划风险监控持续跟踪风险变化风险状态报告3.2 风险识别从三个维度识别风险项目风险进度延迟、预算超支、人员流失技术风险技术方案不可行、技术栈不成熟、性能达不到要求商业风险市场需求变化、竞争对手先发布、产品卖不出去3.3 风险分析两种常用方法方法一风险优先级评估概率×影响风险概率影响风险值P×I优先级核心开发人员离职20%51.0高需求变更频繁60%42.4最高服务器宕机10%50.5低方法二决策树分析定量估算风险成本用期望货币价值EMV来量化风险的财务影响计算公式为期望损失EMV 概率 × 影响金额。示例某个技术风险有30%的概率导致项目延期延期造成的额外成本为50万元。则 EMV 30% × 50 15万元。这意味着公司应当愿意投入最多15万元来规避此风险如提前采购备用方案或安排人员培训。3.4 风险应对的四种策略策略含义示例规避Avoidance消除风险源不让风险发生放弃不成熟的技术方案改用团队熟悉的技术转移Transfer将风险后果转嫁给第三方购买保险、外包非核心模块、签订固定总价合同减轻Mitigation降低风险发生的概率或影响代码审查降低Bug率、每周备份数据、定期Code Review接受Acceptance承认风险存在预留应急预算为可能的进度延迟预留10%的缓冲时间4️⃣ 经典例题例题1估算某软件项目采用COCOMO基本模型进行估算项目代码量为15 KLOC采用半独立型模式E3.0×(KLOC)^1.12估算工作量为多少A. 约45人·月B. 约60人·月C. 约84人·月D. 约120人·月解析E 3.0 × (15)^1.12 ≈ 3.0 × 19.7 ≈ 59.1 人·月。选B。例题2风险管理某项目团队针对“关键技术方案可能存在兼容性问题”这一风险决定在正式开发前先搭建一个小型原型系统进行验证。这属于哪种风险应对策略A. 风险规避B. 风险转移C. 风险减轻D. 风险接受解析通过原型验证来降低技术失败的概率这是典型的风险减轻策略。选C。例题3判断FP功能点估算方法与编程语言无关因此可以在项目早期使用。 解析正确。FP基于功能数量而非代码行数与编程语言无关适合项目早期使用。5️⃣ 记忆口诀估算三法代码行、功能点、COCOMO。COCOMO三种模式有机半独嵌入型。风险四步识别分析应对监控。应对四策规避转移减轻接受。6️⃣ 小测验评论区对答案某公司评估一个项目发现主要风险是“竞争对手可能提前发布类似产品”导致项目商业价值降低。该风险属于哪一类风险若公司决定将产品提前上市作为应对方案这属于哪种应对策略A. 商业风险减轻B. 商业风险规避C. 项目风险转移D. 技术风险接受本专栏日更点击头像 → 专栏《软考中级高频考点》订阅第一时间接收新内容#软考中级 #软件设计师 #项目估算 #风险管理 #COCOMO #软件工程

相关新闻

2026亚太EMBA含金量中立测评|民营企业家择校参考

2026亚太EMBA含金量中立测评|民营企业家择校参考

一、测评前言当下民营企业家、企业创始人择校EMBA,普遍面临择校标准模糊、项目适配性难判断、含金量参差不齐等问题。为帮助经营者精准避坑,本文从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大核心维度,开展2026亚太EMBA含…

2026/10/13 6:54:00 阅读更多 →
2026在职国内EMBA中立测评|民营企业家择校干货

2026在职国内EMBA中立测评|民营企业家择校干货

一、测评前言民营企业家、企业创始人择校在职国内EMBA,常面临排名繁杂、特色模糊、适配性难判断等问题,容易出现择校与自身发展需求不匹配的情况。本文从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大客观维度,横向对比主流…

2026/10/12 18:12:39 阅读更多 →
2026人工智能国内EMBA中立择校测评

2026人工智能国内EMBA中立择校测评

当下民营企业家择校,普遍纠结AI数字化适配、国际化视野、高端圈层与学位认可度,不同EMBA项目的赛道适配性、课程侧重差异极大。本文从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大客观维度,对主流人工智能国内EMBA项目做横…

2026/10/13 0:32:27 阅读更多 →

最新新闻

Java面试实录:从JVM到MySQL,那些让面试官崩溃的基础错误

Java面试实录:从JVM到MySQL,那些让面试官崩溃的基础错误

互联网大厂Java开发者面试实录:严肃面试官遇上搞笑水货程序员谢飞机如果你没经历过那种"简历挺漂亮,开口就崩盘"的Java面试,那你可能还没当过面试官。我在某头部电商平台做Java技术面试官已经有年头了,每周至少面七八个…

2026/10/13 18:17:10 阅读更多 →
AnyPS5:PS5跨平台兼容性问题的技术本质与工程应对

AnyPS5:PS5跨平台兼容性问题的技术本质与工程应对

1. “AnyPS5”不是产品型号,而是一类跨平台兼容性问题的代号“AnyPS5”这个标题乍看像某款新主机或破解工具的代号,但实际在技术社区中,它早已演变为一个隐含多重语义的行业暗语——它不指向某个具体硬件,而是指代一类在非原生PS5…

2026/10/13 18:17:10 阅读更多 →
一文掌握 TypeScript 泛型:约束、推断、条件类型与项目实战封装

一文掌握 TypeScript 泛型:约束、推断、条件类型与项目实战封装

写 TypeScript 这几年,TypeScript Generics 泛型是我花时间最长才真正理解的部分,也是后来收获最大的一部分。早期写工具函数或者封装库的时候,我最常用的手段就是 any,偶尔兴致来了把 any 换成 unknown,结果类型报错从…

2026/10/13 18:17:10 阅读更多 →
群同构同态定理详解:从正规子群到商群的一站式攻克

群同构同态定理详解:从正规子群到商群的一站式攻克

如果你也正在啃抽象代数,估计你和我当年一样,第一遍学到“群同构同态定理”的时候,心里是有点发毛的。明明只是三行定理,却牵出正规子群、商群、陪集、核与像一整套概念,做题时又不知道从哪下手。这篇文章就是想把这块…

2026/10/13 18:17:10 阅读更多 →
监控数据丢失?OpenFalcon Transfer 多重备份方案与实战

监控数据丢失?OpenFalcon Transfer 多重备份方案与实战

一、为什么要盯住 Transfer:监控链路里最容易丢数据的一环凡是维护过自建监控系统的人,大概率都被同一个问题折磨过:数据明明从 agent 发出去了,图表上却出现了断点,等到想排查的时候,几个小时前的原始数据…

2026/10/13 18:17:10 阅读更多 →
Scratch图层顺序详解:背景为何会挡住角色?层次指令一次弄懂

Scratch图层顺序详解:背景为何会挡住角色?层次指令一次弄懂

1. 一个让人抓狂的现象:背景为什么会跑到角色前面去前阵子有人拿着一个半成品的Scratch作品来问我:“背景坏了不显示前面了,明明画好了山和天空,运行起来整个画面却被一块黑乎乎的东西盖住,角色怎么点都不出现。”我打…

2026/10/13 18:16:09 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →