《构建之法》阅读与提问

项目 内容
这个作业属于哪个课程 2026年春季软件工程 (北京航空航天大学 - 计算机学院)
这个作业的要求在哪里 [I.1] 个人作业:阅读和提问
我在这个课程的目标是 掌握软件工程的开发流程和方法
这个作业在哪个具体方面帮助我实现目标 了解软件工程的开发流程和方法

Q1

问:如果我很忙,能不能让别人代劳写单元测试?
答:如果忙到连单元测试都没有时间写,那么你也没有时间写好这个功能。在一些极限编程的方法中,是可以考虑让别人来做单元测试的,但是,程序的作者还是要对单元测试负责。

From 第 2 章 个人技术和流程

Q: 如今很多公司讲求“AI 提效”,在写技术方案的时候考虑让AI生成单元测试代码。这算不算是“别人代劳”?

我觉得不算。“AI 提效”的背景下,往往要求AI贡献率到达 xx%。经过人 Review 之后的技术方案,符合要求即可。只是在这样的背景下,RD 开发的时间被挤压了,所以会变“忙”,更依赖于“AI 代劳”。

Q2

如果一些数据不利于工程师本人(例如:花很多时间修改缺陷),我们怎么能保证工程师愿意如实地记录这些数据呢?

From 第 2 章 个人技术和流程

Q: 这能算是 PSP 的缺陷吗?

我们关注并学习这个模型的原因是 PSP 告诉了我们如何进行个人开发流程,至于数据如何记录以及记录的准确性,这是利用 PSP 进行实验的问题。

缺少对用户需求的关注,确实是 PSP 的缺陷。

Q3

结对编程让两个人所写的代码不断地处于“复审”的过程,程序员们能够不断地审核,提高设计和编码质量,可以及时发现并解决问题,避免把问题拖到后面的阶段去。

From 第 4 章 两人合作

Q: AI 背景下的结对编程应该如何进行?

Agent 辅助编程的背景下,其实人与AI正是处于结对编程的状态中。AI 带来高效的 Code Review,人也能提供区分过度设计的边界条件,并检查各处细节是否实现正确。

其实学习过结对编程的概念之后,可以考虑设计一个 Agent 工具来实现人与AI的结对编程。

Q4

敏捷开发的原则是 ……

From 第 6 章 敏捷流程

Q: AI 背景下的敏捷开发原则是否更新?

我觉得原则大体上不会更新,只是 Agent 辅助实在是太符合敏捷开发的目的了,让我不能不考虑 AI 背景下敏捷开发流程的变化。现在也有很多 Agent 工具比较遵循敏捷开发流程,比如 OpenSpec、SpecKit、bmad 等。我用过 SpecKit,它在将需求设计拆分成任务的时候会使用 AI 来判断各个任务之间的依赖关系,然后使用多 Agent 的能力来并行执行互不冲突的任务。从这点看来就很适用于敏捷开发。但它的问题就是如何促进其与人的合作,缺少人的参与,代码就缺少主体责任人。

Q5

随着程序功能的完善,我们要让程序的各个方面有次序地“冻结”,这样才能把稳定的软件交付给用户。一般来说,程序的人机交互界面最先开始“冻结”,不能再随意修改,因为很多项目的文字信息要被本地化成多种语言,只有人机界面所用的文字和布局固定后,我们才能把这些文字交给负责本地化的部门。随着时间的推移,一些功能也可以“冻结”,这些功能都经过全面测试,所有的Bug都解决了,功能进入稳定状态,在下一个版本前不要再碰与此功能相关的代码。如果有新的功能要加怎么办?那就在当前源代码的基础上创建分支,让当前版本和将来版本的工作分开进行。

Q: 如何判断一个软件的功能边界?

前几天看到这个博客:Good Software Knows When to Stop,我在想软件的功能边界是在项目开始阶段还是在冻结阶段决定的。

就像计组老师强调的架构设计先于代码那样,如果功能边界在一开始就确定下来,之后想要更改该怎么办?

posted on 2026-03-11 15:58  tsxb  阅读(22)  评论(0)    收藏  举报