《构建之法:现代软件工程》阅读与思考

课程社区链接首页 - 2025年春季软件工程(罗杰、任健) - 北京航空航天大学 - 班级博客 - 博客园 (cnblogs.com)

作业要求链接:[I.1] 个人作业:阅读和提问 - 作业 - 2025年春季软件工程(罗杰、任健) - 班级博客 - 博客园 (cnblogs.com)
课程目标:让学生掌握软件开发的基本理论与方法,理解软件工程实践,提高团队协作能力,并具备分析和解决软件开发问题的能力。通过学习需求分析、设计、编码、测试和维护等环节,学生能够更系统地理解软件开发流程,并运用工程化方法提升软件质量。
作业目标:加深对软件工程核心概念的理解,对软件工程有个基础的认识。


1. Re-work 越多是否意味着项目质量差?

出处:第50页

在书中提到 Re-work(返工)是软件开发中的一项重要工作,可能是由于需求变更、设计问题或代码缺陷引起的。我的问题是,是否可以认为 Re-work 越多,意味着项目质量越差?

支持材料:

  • 传统观点认为,高质量的软件应该尽可能减少修改,避免因设计不良导致的返工。
  • 但敏捷开发提倡迭代优化,在开发过程中不断调整和修改。

困惑: 如果一个项目需要频繁返工,是不是说明最初的架构或设计没有考虑周全?是否存在某种衡量标准,来判断 Re-work 是有益的优化,还是由于设计不良导致的浪费?


2. 局部优化到什么程度才不至于成为过早优化?

出处:第53页

书中提到软件工程中的优化需要适度,过早优化可能会带来不必要的复杂度。但在实际开发中,如何判断某个优化是必要的,还是属于过早优化?

支持材料:

  • 书中提到,局部优化可能会影响全局设计,甚至影响可维护性。
  • 但现实中,一些早期的优化可能避免后续架构重构的成本。

困惑: 有没有具体的标准或方法,来判断一个优化是在正确的时间点进行,而不是过早优化?


3. 功能未实现时,应该删除还是推迟到后续版本?

出处:第337页

在实际开发中,我们可能会遇到某些功能在预定时间内无法实现的情况。这时,我们应该选择删除该功能,还是先发布当前版本,后续再完善?

支持材料:

  • 书中提到敏捷开发允许增量式发布,未完成的功能可以放到后续迭代。
  • 但有些软件(如 MVP 最小可行产品)如果缺少核心功能,可能影响用户体验。

困惑: 在什么情况下,应该推迟发布,确保完整功能?什么情况下,可以先发布已有功能,再补充未完成的部分?


4. 高层次设计是否意味着底层优化被舍弃?

出处:第62页

书中提到,开发者应该将脑力放在高层次的设计上,而不是过分关注底层代码优化。这是否意味着底层优化(如性能优化、内存管理等)被忽略?

支持材料:

  • 现代软件开发确实更关注架构,而不是低层实现。
  • 但底层优化对于高性能应用(如游戏引擎、数据库)至关重要。

困惑: 是否有某种方法来平衡高层次设计与底层优化的关注点?


5. 预览版未通过100%测试的原因?

出处:第285页

书中提到,发行的预览版并不一定通过 100% 测试,未通过的部分是因为测试未覆盖到,还是有意让用户帮助发现问题?

支持材料:

  • 现实中,很多 Beta 版软件确实会带有已知或未知的 Bug。
  • 一些开发团队会有意依靠用户反馈来完善软件。

困惑: 预览版是否有一定的质量标准?未通过的测试部分是故意放开的,还是因为资源有限未能覆盖?

posted @ 2025-03-04 10:43  雨小森  阅读(42)  评论(0)    收藏  举报