深维AI随笔头像
关注
《构建之法》| 第十一章软件设计与实现:从Spec到代码,开发者的标准工作流封面图

《构建之法》| 第十一章软件设计与实现:从Spec到代码,开发者的标准工作流

本文适合:刚入行不知道拿到需求后该怎么一步步做的开发新人、想规范团队开发流程的技术负责人、对每日构建和持续集成感兴趣但没落地过的工程师。

你将收获:分析与设计方法四类工具、从Spec到实现的标准开发流程、开发阶段日常管理(每日构建/小强地狱/构建大师)、AI结对编程对开发流程的重塑。

写在前面

第十章解决了"为谁设计"和"怎么把需求说清楚"(典型用户+Spec),第十一章终于进入开发者最熟悉的领域:拿到Spec之后,怎么一步步把代码写出来并交付。

邹欣老师在微软的实战经验告诉我:优秀的开发不是"拿到需求就写代码",而是有一套标准化的工作流程。 跳过任何一步,后面都会加倍还债。

第四版在这一章融入了AI结对编程对开发流程的影响,这是与前三版最大的差异。

章际衔接:从"为谁设计"到"怎么实现"

维度

第十章(典型用户和场景)

第十一章(软件设计与实现)

核心问题

为谁设计、怎么把需求说清楚

拿到Spec后怎么一步步把代码写出来

视角

用户与场景

开发与工程

关键产出

典型用户画像、用例、Spec

可交付的代码、构建产物

比喻

"用户画像"

"施工图纸到交付"

一句话衔接: 第十章产出了"施工图纸"(Spec),第十一章讲"怎么按图纸施工"。

01 | 分析与设计方法:四种描述工具

1.1 四类工具速查

拿到需求后,第一步不是写代码,而是分析和设计。书中介绍了四类描述工具:

类型

代表方法

特点

适用场景

文字为主

需求文档、设计文档

易读、易改

小型项目、简单功能

图形为主

思维导图、ERD、DFD、UML

直观、结构化

中大型项目、复杂关系

数学语言

形式化方法(Z语言、VDM)

精确无歧义

安全关键系统

类语言+代码

伪代码、接口定义、原型代码

可执行、可验证

技术细节验证

1.2 图形建模方法

书中重点介绍了几种图形工具的适用场景:

图形工具

表达什么

我的理解

思维导图

实体间的层级关系

适合头脑风暴、功能分解

ERD(实体关系图)

数据实体及其关系

适合数据库设计

DFD(数据流图)

数据在系统中的流动

适合理解业务流程

UML用例图

角色与功能的映射

适合需求阶段

UML类图

类的结构与关系

适合详细设计

FSM(有限状态机)

状态转换与控制流

适合复杂状态逻辑

1.3 不要为画图而画图

书中提醒:图形工具是手段不是目的。 很多团队"为了文档而画UML",画完就没人看了。正确的做法是:哪个工具能帮你把问题想清楚,就用哪个。 想不清楚的时候画图,想清楚了就不用画了。

我的实战感悟

我们团队早期每个功能都要求画完整UML——类图、时序图、活动图。结果开发花在画图上的时间比写代码还多,图还没人维护。后来改成"关键功能画图、简单功能直接写"——只有涉及多模块交互或复杂状态的功能才要求画UML,简单CRUD直接写代码。

工具是帮你思考的拐杖,不是给别人看的展板。

一句话提炼

四类描述工具各有侧重:文字读得懂、图形看得清、数学写得准、代码跑得通。选对工具比用全工具更重要。

02 | 从Spec到实现:开发者的标准工作流

2.1 标准开发流程

书中给出了一个开发人员拿到Spec后的标准工作流程:

步骤

名称

做什么

产出

1

需求分析

理解Spec,确认需求边界和验收标准

需求理解确认

2

复审设计文档

检查技术可行性,发现设计缺陷

设计问题清单

3

估计

估算任务所需时间

工时估算

4

原型

写快速原型代码验证效果

原型Demo

5

详细设计

写设计文档,明确实现方案

设计文档

6

编程

按设计文档写代码

源代码

7

自我复审

自己检查代码规范和逻辑

修改记录

8

同伴复审

请同事审查代码

复审意见

9

单元测试

写测试并确保通过

测试用例

10

集成签入

合并代码到主干,运行构建

签入记录

2.2 每一步都不能跳

书中强调:这个流程看起来"繁琐",但每跳过一步,后面都会加倍还债

跳过的步骤

短期看

长期后果

跳过原型

省了半天

设计方案不可行,返工一周

跳过详细设计

省了一天

编码时频繁改方向,浪费三天

跳过自我复审

省了一小时

同伴复审发现低级错误,丢人

跳过同伴复审

省了半天

上线后发现Bug,修一个改坏三个

跳过单元测试

省了一天

集成时全崩,排查两天

2.3 "闭门造车"的故事

书中讲了一个"闭门造车"的教训:一个开发人员拿到任务后不跟任何人沟通,自己闷头干了两周,结果做出来的东西跟PM期望的完全不一样——需求理解偏了、接口对不上、风格不统一。

开发不是个人创作,是团队协作。 每一步的产出(原型、设计文档、代码)都是与团队"对齐"的机会。

我的实战感悟

我带团队最头疼的就是"闷头型开发"——分配任务后一声不吭,问进度永远说"快了",交付一看全偏。后来强制要求两个"汇报点":第1天出原型Demo(对齐方向),第3天出设计文档(对齐方案)。不行就打回重来。

宁可提前对齐返工一天,不要交付后发现偏了两周。

一句话提炼

标准开发流程十步:需求→复审→估计→原型→设计→编码→自审→同伴审→单测→集成。跳过任何一步,后面加倍还债。

03 | 代码复审:不是找茬,是互助

3.1 三种复审方式

方式

谁来审

效果

成本

自我复审

自己

发现明显问题,但盲区看不到

同伴复审

同级别同事

发现逻辑错误和风格问题

团队复审

全组一起

发现架构级问题,促进知识共享

3.2 复审查什么

书中明确了代码复审的四层检查:

检查层

查什么

举例

规范层

是否符合编码规范

命名规范、注释格式

逻辑层

逻辑是否正确

边界条件、空值处理

设计层

是否符合架构设计

分层是否正确、接口是否合理

安全层

是否有安全风险

SQL注入、XSS、权限绕过

3.3 复审的纪律

书中强调了几条复审纪律:

纪律

说明

对事不对人

审代码不是审人,不评价能力

记录问题

复审意见必须记录,不能口头说完就忘

限时修改

复审发现的问题必须在约定时间内修复

交叉复审

避免总是同一个人审同一个人的代码

我的实战感悟

我们团队推行代码复审时遇到的最大阻力是"面子问题"——开发觉得被审代码就是"被质疑能力"。后来我改了说法,叫"同伴互审",并且要求每个人既审别人也被别人审。慢慢地团队发现复审能学到别人的写法,抵触就小了。

代码复审不是"审你",是"帮我们俩"。

一句话提炼

代码复审四层:规范、逻辑、设计、安全。核心原则是对事不对人——审的是代码,不是人。

04 | 开发阶段的日常管理

4.1 每日构建

书中重点介绍了"每日构建"(Daily Build)的概念:

维度

说明

是什么

每天自动、完整地构建整个代码树

为什么

尽早发现集成问题,避免"攒到最后崩"

怎么做

定时触发自动化构建脚本,编译+测试+打包

谁负责

全员负责——任何人的代码导致构建失败,必须立即修复

4.2 小强地狱

书中提到了一个生动的概念——"小强地狱"(Bug Hell)

如果某人的代码导致每日构建失败,他就被分配去修所有"小强"(Bug),直到全部清理干净才能继续开发新功能。这是一种"惩罚机制",逼着每个人在签入前充分测试。

4.3 构建大师

另一个概念——"构建大师"(Build Master)

团队中指定一个人负责维护构建系统,监控构建状态,在构建失败时协调修复。构建大师不一定是技术最强的人,但必须是最有责任心的人。

4.4 从每日构建到持续集成

阶段

频率

代表工具

核心理念

每日构建

每天1次

脚本+计划任务

一天一集成

持续集成

每次签入

Jenkins、GitLab CI

签入即集成

持续交付

每次通过测试

ArgoCD、Spinnaker

随时可部署

持续部署

每次通过自动部署

K8s+GitOps

签入即上线

书中讲的"每日构建"是持续集成的雏形。在第四版时代,大部分团队已经从"每日构建"进化到了"持续集成"甚至"持续部署",但核心理念不变:尽早集成、尽早暴露问题。

我的实战感悟

我们团队早期没有每日构建,代码攒了两周才集成一次——每次集成就是一场"灾难",合并冲突、接口不兼容、测试全崩。后来上了GitLab CI,每次签入自动触发构建和测试,构建失败立即修复。集成时间从"两天"降到了"十分钟"。

集成越频繁,每次集成的痛苦越小。

一句话提炼

每日构建是持续集成的雏形——核心不是"每天",而是"尽早集成、尽早暴露问题"。

05 | AI结对编程:开发流程的重塑(第四版新增)

5.1 AI如何改变开发流程

第四版重点融入了AI结对编程对传统开发流程的影响:

开发步骤

传统方式

AI辅助方式

需求理解

人工读Spec

AI辅助解读Spec、自动提取关键约束

原型

手写原型代码

AI根据Spec生成原型初稿

详细设计

手写设计文档

AI根据需求生成设计方案草案

编程

手写全部代码

AI生成代码片段,人工审查修改

代码复审

同伴人工审

AI自动审查规范和逻辑,人工审设计

单元测试

手写测试用例

AI自动生成测试用例初稿

集成

手动触发

AI辅助分析集成风险

5.2 AI结对编程 vs 人类结对编程

维度

人类结对

AI结对

知识广度

限于个人经验

覆盖广泛技术栈

响应速度

需要沟通时间

即时响应

耐心

审多了会烦

永不疲倦

创新性

能提出意想不到的思路

基于已有模式推荐

上下文理解

深入理解业务背景

可能缺乏业务上下文

责任承担

人对代码负责

AI不对结果负责

5.3 人的角色变了

AI结对编程后,开发人员的角色从"写代码的人"变成了"审代码的人":

维度

传统开发

AI辅助开发

核心动作

写代码

审代码、改代码

时间分配

70%写+30%审

30%写+70%审

关键能力

编码能力

判断能力、审查能力

质量风险

人写人审,盲区重叠

AI写的代码人必须审,否则隐患更大

5.4 AI不能替代的环节

书中提醒:AI能加速编码,但有三件事替代不了:

1. 需求理解——AI能读Spec,但"用户真正想要什么"需要人与PM、用户沟通确认

2. 架构决策——AI能给出方案,但"选哪个方案"需要结合业务约束、团队能力、长期演进做判断

3. 质量责任——AI写的代码出了Bug,责任还在人身上。AI不背锅

我的思考

我们团队从去年开始用AI编程助手,最直观的变化是——代码产出速度提升了,但代码审查的压力更大了。 以前一个人一天写200行,现在AI帮他生成500行,他要审500行。审查能力成了新的瓶颈。

AI让"写代码"变便宜了,但让"审代码"变更重要了。

一句话提炼

AI结对编程让开发从"写代码的人"进化为"审代码的人"——核心能力从编码速度转向判断力和审查力。

干货复盘

本章核心概念

一句话理解

常见误区

四类设计工具

文字读得懂、图形看得清、数学写得准、代码跑得通

"什么都要画UML"

标准开发流程

十步流程,跳过一步后面加倍还债

"拿到需求直接写代码"

代码复审

对事不对人,审代码不是审人

"复审就是找茬"

每日构建

尽早集成、尽早暴露问题

"等做完了再集成"

小强地狱

构建失败者去修Bug

"构建失败无所谓"

持续集成进化

每日构建→持续集成→持续交付→持续部署

"这些都是一回事"

AI结对编程

从"写代码"到"审代码",核心是判断力

"AI写的代码不用审"

本章最大收获: 这一章的核心是"标准化"——开发不是个人创作,而是一套有纪律的工程流程。十步标准流程、代码复审四层检查、每日构建、AI结对编程,所有方法指向同一个目标:把"个人水平"变成"团队水平",让质量不依赖某个人的状态。 在AI时代,开发的核心能力正在从"编码速度"转向"审查判断力"——AI帮你写,但你必须看得懂、判得准、负得起责。

下篇分享第十二章:用户体验。如果这篇笔记对你有帮助,欢迎转发给也在学软件工程的朋友。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/weixin_40967106/article/details/165627339

文章来源转载

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--