《构建之法》阅读提问
《构建之法》阅读与提问
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2026年春季软件工程(北京航空航天大学·计算机学院) |
| 这个作业的要求在哪里 | I.1 个人作业:阅读和提问 |
| 我在这个课程的目标是 | 掌握软件工程的开发流程和方法 |
| 这个作业在哪个具体方面帮助我实现目标 | 了解软件工程的开发流程和方法 |
Q1
单元测试必须由最熟悉代码的人(程序员自己)来写……好的单元测试应该准确、快速地保证程序基础功能的正确性。
From 第 2 章 个人技术和流程
Q:AI 时代,"快速"这个标准还成立吗?
我最近在做一个用 LLM 检测代码漏洞的项目,测试推理函数的时候每次都要先加载几个 G 的模型权重,跑一次要好几十秒。按书里的标准,这些测试全是不合格的——但不测又不行,我也没想到更好的替代方案。
感觉书里讨论的"快速"默认了被测代码是纯逻辑的那种,对 AI 系统完全没提。我现在真的不知道对这类代码该怎么写"好的"单元测试,还是说业界已经有别的方法了,只是书里没覆盖到?
Q2
通过代码复审,两个人可以对代码做"复审"的过程,他们可以相互批评,提高设计和代码质量,可以从对方身上学到对方的代码规范,发现对方代码里的问题。
From 第 4 章 两人合作
Q:AI 背景下的结对编程应该怎么搞?
Agent 辅助编程的背景下,其实人和 AI 已经在进行某种形式的"结对"了。AI 能高效做 Code Review,也能帮你分析设计的边界条件,检查各处细节是否实现正确。
学习了结对编程的概念之后,我在想能不能专门设计一个 Agent 工具来实现人与 AI 的结对编程。但我自己也不确定这还算不算"结对",还是说结对的核心在于两个人之间的思维碰撞,AI 参与进来之后性质就变了?
Q3
被捷开发的原则是……
From 第 6 章 敏捷流程
Q:AI 背景下的敏捷开发原则是否要更新?
我常用的那些大体上不咋更新,只是 Agent 辅助实际上已经在大力促进敏捷开发的目标了,让我能不考虑 AI 背景下敏捷开发流程的变化。现在也有很多 Agent 工具比较擅长敏捷开发流程,比如 OpenSPC、SpecKit、bmad 等。我用过 SpecKit,它在分解任务设计和分配任务的时候确实会用 AI 来判断各个任务之间的依赖关系,然后使用 Agent 的能力来并行执行不冲突的任务,从这点看挺敏捷的。但它的问题是如何促进其与人的合作,减少人的参与、代码缺少主体责任人。
所以我的问题是:敏捷宣言里"个体与交互高于流程与工具"这条,在大量使用 AI Agent 的项目里还怎么落地?
Q4
随着程序功能的完善,我们把程序的各个功能依次排进"流稳",这样才能把稳定的软件交付给用户。一般来说,程序的人机交界面最先开始"流稳",不经消磨修改,因为多数项目的文字信息要被本地化成多种语言,只有人机界面固定之后,翻译部门才能开始工作。
From 第 7 章 MSF
Q:如何判断一个软件的功能边界?
书里提到功能要"流稳",但现实里我参与的几个项目,功能边界从来没有真正稳定过。用户反馈来了改,竞品上新功能了改,老板拍脑袋了也改。
我想知道书里说的这个"流稳"在工程实践里是真的能做到,还是只是一个理想状态?如果功能一直在变,那翻译和下游的工作要怎么安排,大家是怎么处理这个矛盾的?
Q5
如果收据不利于工程师本人(例如:花很多时间修改疏漏),我们怎么能保证下属如实报告这些收据?
From 第 2 章 个人技术和流程
Q:这能算是 PSP 的缺陷吗?
我们学习这个模型的初衷是让它帮助我们进行个人开发过程,其中数据如何记录、记录以及记录的偏差,还是利用 PSP 进行实践之后的问题。
缺少对用户需求的关注,重点是 PSP 的缺陷。
我觉得这是个挺根本的问题——PSP 依赖自我汇报,但自我汇报天然会受到各种偏差影响。书里有没有讨论过怎么解决这个问题,还是默认大家都会如实记录?
Q6
如今很多公司追求"AI 提效",在写技术方案的时候考虑让 AI 生成单元测试代码,这算不算是"别人代劳"?
From 第 2 章 个人技术和流程
Q:我觉得不算。
"AI 提效"的背景里,往往需要人把需求率达 xx%。经过人 Review 之后的技术方案,符合要求即可。只是在这样的背景下,RD 开发的时间被挤压了,所以会变"懒",更依赖于"AI 代劳"。
但我想多问一层:如果一个工程师对 AI 生成的单元测试完全不理解,只是跑一遍通过了就提交,这和"别人代劳"还有什么区别?书里说的"熟悉代码"和这种工作方式之间的矛盾,是不是值得认真讨论一下?
以上是泛读《构建之法》后产生的一些真实困惑,有些问题可能问得不够准确,欢迎老师和同学指正。的真实困惑,欢迎老师和同学交流探讨。

浙公网安备 33010602011771号