第 1 章 · 车站全景:软件工程是什么 章节摘要:本章是全书的站台。我们先把"软件工程"这个词落到实处——它管的不只是写代码,而是从需求进站到软件退役的整条运营线。你会看到大型软件为什么会失控(软件危机),工程师用什么原则把失控变成可控(目标与基本原则),以及一趟版本列车上都有哪些岗位、各管哪段轨道(角色与团队)。读完本章,你应当能用一张图画出软件生命周期各阶段,并说清每个阶段的进出站条件——这是理解后面所有章节的底座。 学习目标 读完本章,你应当能够: 用自己的话给出软件工程的定义,并指出它与"会编程"的差别至少在哪三点。 复述软件危机的典型症状,解释为什么规模一大、参与人数一多,"凭手感写代码"就必然失灵。 列出软件工程的五条以上基本原则,并为每条配一个违反后翻车的真实场景。
章节摘要:本章是全书的站台。我们先把"软件工程"这个词落到实处——它管的不只是写代码,而是从需求进站到软件退役的整条运营线。你会看到大型软件为什么会失控(软件危机),工程师用什么原则把失控变成可控(目标与基本原则),以及一趟版本列车上都有哪些岗位、各管哪段轨道(角色与团队)。读完本章,你应当能用一张图画出软件生命周期各阶段,并说清每个阶段的进出站条件——这是理解后面所有章节的底座。
读完本章,你应当能够:
如果把软件项目看作一趟版本列车,软件工程就是整座车站的运营规程:货单怎么核(需求)、车厢怎么造(设计与编码)、发车前怎么试跑(测试)、时刻表怎么排(项目管理)、安检怎么过(质量保证)。本章先把整座车站的平面图摊开。
金句:软件工程不保证项目不翻车,它保证翻车之后你知道是哪节车厢、哪个道岔出了问题。
生命周期(SDLC)这个词会在本章反复出现,这里先给它一个 operational 的说法:软件从被提出、被建造、被使用到被淘汰的全部阶段序列。车站视角下它就是"列车的一生"——编组计划对应需求分析,车辆装配对应设计与编码,试跑对应测试,上线运营对应发布与维护,退役报废对应系统下线。第 2 章会展开"同一趟旅程可以按哪几种时刻表来跑",本章只需记住阶段本身。
三节的推进是一条"为什么 → 是什么 → 谁来干"的链条:先看清没有规程会出什么事(危机),再定义规程要达成什么(目标与原则),最后把规程落到具体岗位上(角色分工)。缺了任何一环,后面章节的方法都会变成空转的流程。
[1.2 软件危机] 为什么需要规程 │ ▼ [1.1 目标与原则] 规程要守住什么 │ ▼ [1.3 角色与团队] 谁来执行规程 ──► 进入第2章:按哪种时刻表跑
拿你手头(或记忆中)的项目做三道演练,答案写下来比想一遍有效:其一,给它画一张生命周期阶段图,标出每个阶段实际的进出站条件——标不出来的阶段,就是管理真空;其二,按第 1.3 节的七类角色为项目成员对号入座,检查每道闸口(需求变更、发布放行、生产数据访问)有没有实名担责人;其三,找一次最痛的延期或事故,用第 1.2 节的四类危机症状给它归类,再问一句:哪条基本原则的缺席让它发生?三道题做完,本章就不再只是概念。
一处是把"工程化"读成"官僚化"——以为流程越多越好。本章讲的原则全部有事故出处,每条流程都该能回答"它在拦哪类事故";答不上来的流程,值得质疑的是流程本身而不是执行的团队。另一处是把角色表读成等级表——调度长并不比司机"高一级",只是职责不同。带着这两个防偏读法进本章,三节内容的重心会清楚得多。
本章不需要硬性的前置知识,但如果你亲手写过一点代码、参与过哪怕一次小组作业,会更容易对号入座。读完本章后直接进入第 2 章"运行图:生命周期模型选型"——在那里,本章的生命周期阶段会被组装成六种不同的发车方案;如果你更关心"项目延期了怎么办",也可以先跳读第 4 章调度台,再回来补运行图。