[I.1] 个人作业:阅读和提问

项目 内容
这个作业属于哪个课程 首页 - 2026年春季软件工程 - 北京航空航天大学 - 班级博客 - 博客园
这个作业的要求在哪里 [I.1] 个人作业:阅读和提问 - 作业 - 2026 年春季软件工程 - 班级博客 - 博客园
我在这个课程的目标是 在实际项目中运用上先进的软件工程管理方法,提高开发效率和项目质量
这个作业在哪个具体方面帮助我实现目标 阅读教材并提出问题,对软件工程有一个大体上的把握

问题 1

image

在防御性编程中,代码会对很多不可预见的错误做处理。例如,AI 非常喜欢写防御性编程,它会在项目里写一大堆

try{
    业务逻辑
} catch(e : Exception) {
    错误处理
}

并不会管 Exception 具体可能是什么。

但是编写测试时无法编写出不可预见的错误(能写出来那就不是“不可预见”了),会导致测试做不到 100% 的覆盖。这种情况下这个错误处理是否应该拿掉?

问题 2

image

这里将软件工程比作医生开刀,以不同医生的不同水平比喻程序员的不同技能,非常有生活气息,易于理解。但是我认为程序和开刀还是有区别的,实际工程中能有多少 c 这样的程序员?我的理由如下:

  • 手术的种类是有限的,大部分相同病例的手术都有固定的套路,但是程序员接触到的业务却是五花八门的,这里适用的方法,换个需求就不再适用;
  • 如果有多个病人做相同的手术,医生必须单独给给个人都做一遍。但是程序是可以复用的,如果有了相同的需求,除非需要在某些方面有创新有突破,否则公司会更倾向于直接使用已有的代码(包括之前业务的代码、开源的代码、购买的服务)。

问题 3

image

两个人编程确实是软件工程中比较特殊的方式,两个人编程时交流更加方便,重大问题基本上可以两人共同决策,代码审查也更加容易且频繁。

但是书对此的描述中特地强调了“面对同一个显示器,使用同一个键盘,同一个鼠标一起工作”。众所周知,最慢的 IO 是人机交互,在结对编程中,本来人手就少,还要使用同一套 IO 设备,是不是效率非常低下?就算是一人写代码,一人看文档辅助说明,也得让两人独立行动,而不是限制在一台电脑里操作。

另外,在当前 AI 盛行的情况下,Copilot 等辅助工具已经具有了“副驾驶领航”的作用,能够对代码自动补全,分析简单的需求,审查代码,是不是已经可以取代这种结对编程了?

问题 4

image

这里有个明显的问题,任何团队任何项目第一次所花费的时间都是无穷大,都不可能做成功。如果没有第一次,又哪来第二次、第三次?针对学生群体,基本上所有的项目都是第一次做,那么针对第一次做的项目,是不是没有任何办法预计完成时间,同时也没有任何办法成功?

问题 5

image

这里认为产品很容易知道副作用是什么。但是实际上,副作用往往因为不在关注重点上而被忽略。就书中例子,LED 的 Spec 并不会预先知道 LED 发热少导致交通问题这种情况,这里说将这一副作用给写出来是不是有点“事后诸葛亮”?

另外,功能的改动往往会带来一大堆副作用,例如 LED 代替白炽灯,除了发热量有区别,还有外形的区别,颜色的区别,还有可能有对人眼睛疲劳影响程度的区别。此时副作用的记录要记录到哪一水平?

Posted on 2026-03-10 21:24  Likend  阅读(18)  评论(0)    收藏  举报