软件不是一上来就敲代码的:需求分析→需求定义→设计→开发→测试,五步流水线里【写代码】只排第四——上游错一步,下游全返工。
1-5 的五种职业各自在哪一环出力,本节给出时间轴答案。它与 数据库课 5-1 引入系统的流程 讲的是同一件事——那门课站在【引入数据库】的角度,本节站在【开发软件】的角度,两条流程能一一对上。
一、五步流水线一张图
需求分析(问明白:要解决什么问题)
↓
需求定义(写清楚:系统该有哪些功能)
↓
设计(画图纸:架构、数据库、界面)
↓
开发(施工:写代码)
↓
测试(验收:按需求逐条验货)
核心思想:越靠前的步骤越便宜、越靠后越贵。改一行需求的字,设计图跟着改;改一张设计图,代码跟着重写;代码写完了才发现需求理解错,是软件行业最贵的错误。
二、每一步在干什么
① 需求分析:还没到系统层面——先搞清【客户的业务哪里痛】。方法:访谈、看现有的工作方式、盯异常流程(数据库课 5-4 说过:异常流程才是设计难点)。
② 需求定义:把调研结果写成白纸黑字:谁用、干什么、数据保什么、性能要多快。这份文档是后面所有步骤的【合同】——验收时逐条对照的就是它。
③ 设计:翻译成技术方案——系统怎么分层(1-2 的执行环境选哪种)、数据库怎么建表(数据库课第五章整套方法在这里用上)、界面长什么样。
④ 开发:写代码+调试。这一步只占全程的一小段(1-9 会讲写码之外的活)。
⑤ 测试:按需求定义逐条验货——【需求文档第 3 条说批量导入,那就造 1 万条数据导一次】。测试发现的问题按严重程度回炉。
三、为什么【问明白】是专业活
新手以为需求分析是【客户说什么记什么】。正解是客户说的叫愿望,不是需求:
- 客户说【我要一个能查库存的手机上能用的东西】——这是愿望;
- 拆成需求:谁查(仓管员)?查什么(当前库存+在途)?多久查一次?断网要不要能用?——这才是需求;
- 树莓派课 16-4 的教训同理:验收标准要写清楚,否则你会以为【能动】就是【做好了】。
四、动手 Demo:给【教室照明管理系统】走一遍五步
看到什么算成功: 1. 需求分析:校方痛点=放学忘关灯、电费高、手动巡楼;观察现有巡楼流程与异常(暴雨提前开灯); 2. 需求定义:三条硬需求——按课表自动开关、支持手动强制、月度能耗报表;写清【断网时控制器本地策略照旧】; 3. 设计:控制器+网关+云端数据库+Web 界面,画出数据流与表结构; 4. 开发:实现并联调; 5. 测试:按三条硬需求逐条验,再专测异常——【断网 10 分钟恢复后,灯的状态对不对?】
读结果:注意第 2 步那行【断网时本地策略照旧】——它来自需求分析时问出的异常场景,而不是开发时的灵机一动。上游多问一句,下游少熬一夜。
30 秒实验
回忆任何一件你参与过或听说过的【做了返工】的事(不限于软件),按五步对号:问题出在哪一步?
看到什么算成功:能明确说出【其实是需求那步没问清/设计那步没定协议版本】这类上游归因。
读结果:多数返工向上追因,都会追到需求或设计——五步流水线不是流程图装饰,是追责和自保的工具。
常见误区
- 【需求文档是走形式】——它是验收的依据、变更的基准线;没有它,【做完了】与【做对了】无法区分。
- 【测试放最后做就行】——测试用例应与设计同步产出(1-5 讲过),敏捷开发更是全程边测边写(下一节)。
- 【写代码是工作量最大的环节】——行业经验里代码往往不到一半;需求、设计、测试、维护合起来才是大头。
- 【五步只能严格顺序走】——瀑布模式是这样,但还有小步循环的走法(下一节的敏捷);五步讲的是【该做的事】,不是【做事的顺序只有一种】。
自测三问(点开对答案)
1. **需求分析与需求定义的区别?** 分析是【调研搞清楚】(访谈、观察、挖异常),定义是【落成文档】(谁用、做什么、验收标准)——一个在问,一个在写。 2. **为什么上游错误最贵?** 改需求的成本是改文档,改代码的成本是重写+重测+回归;越靠后,同一个错误的波及面越大。 3. **本节五步与数据库课 5-1 的引入流程怎么对上?** 调查→需求→设计→开发→测试→运用,两边的【需求/设计/开发/测试】一一对应;数据库课多了【运用】,因为引入系统后还有长期运维(那门课第六、七章整章都在讲它)。- ☐ 下一节(1-8 软件开发的流程)
相关笔记
- 数据库 5-1 · 步骤的整理-引入系统的流程 —— 同一套流程的数据库视角
- 数据库 5-4 · 需求定义 —— 【异常流程才是设计难点】
- 编程相关职业的区别 —— 五种职业与五步流水线的对位
- ⌨️ 编程原理 · 索引 —— 全课路线图