[I.1] 个人作业:阅读和提问
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | https://edu.cnblogs.com/campus/buaa/BUAA_SE_2026_LR |
| 这个作业的要求在哪里 | https://edu.cnblogs.com/campus/buaa/BUAA_SE_2026_LR/homework/15608 |
| 我在这个课程的目标是 | 学习软件工程的基本思想,理解软件开发的完整流程,并能在团队项目中应用这些方法 |
| 这个作业在哪个具体方面帮助我实现目标 | 通过阅读教材并提出问题,我可以思考软件工程方法在真实开发中的作用 |
问题一:个人开发流程在真实的软件公司中是否真的会被严格使用?
在第2章 “个人技术和流程” 中,书中介绍了个人软件过程(PSP)。书中提到程序员可以通过记录开发时间、记录缺陷数量、统计代码量等方式改进自己的开发效率。
“记录时间花费,计算工作量,事后总结,并提出过程改进计划。”
例如书中提到程序员可以记录每个阶段所花的时间,并分析代码中的缺陷数量,从而不断改进开发过程。
我查了一些资料,有人认为这种方法在教学环境中比较常见,但在实际公司中很少有开发者会非常详细地记录这些数据。
根据我的课程项目经验,我们在开发项目时通常不会记录开发时间或缺陷数量,更多时候只是完成任务和修复问题。
因此我产生一个问题:
在真实的软件开发团队中,程序员是否真的会严格按照个人开发流程记录这些数据?
我提出这个问题的原因是书中的方法看起来很系统,但我在实际项目中没有看到类似的实践。
问题二:结对编程是否真的可以提高开发效率?
在第4章 “两人合作” 中,书中介绍了结对编程。书中认为两个人一起编写代码可以提高代码质量,并减少错误。
“代码规范、代码复审和结对编程是提高代码质量的重要方法。”
结对编程通常由两个人合作完成:
- 一个人负责输入代码
- 一个人负责检查代码并思考设计
书中认为这种方式可以减少程序错误,同时提高团队交流效率。
但是我在一些技术论坛中看到不同的观点。有些开发者认为结对编程会提高代码质量,但也有人认为两个人完成一个人的工作可能会降低效率。
根据我的经验,在课程项目中如果两个人同时写代码,有时会出现节奏不同或意见不同的问题。
结对编程适合什么样的软件项目?是否所有项目都适合这种开发方式?
我提出这个问题的原因是我不太清楚这种方法在实际开发中的适用场景。
问题三:软件需求是否可以在项目早期完全确定?
在第8章 “需求分析” 中,书中介绍了软件需求的获取方式,例如用户调查、需求分析和功能规划等方法。
“需求分析的目标是理解用户真正需要什么,并把这些需求清晰地描述出来。”
书中提到软件开发通常需要先确定需求,然后再进行设计和实现。
但是在现实的软件项目中,需求似乎经常变化。例如很多互联网产品在发布之后还会根据用户反馈不断修改功能。
一些开发团队甚至采用敏捷开发方式,通过不断迭代来调整需求。
如果需求在开发过程中不断变化,那么传统的软件需求分析方法是否仍然适用?
我提出这个问题的原因是书中的开发流程看起来比较稳定,而现实中的项目往往变化很大。
问题四:团队如何保证所有成员遵守代码规范?
在第4章 “两人合作” 中,书中提到代码规范的重要性,例如变量命名规则、代码格式、注释方式等。
“统一的代码规范可以提高代码的可读性,也能让团队成员更容易理解和维护代码。”
在课程项目中我们也制定过代码规范,例如变量命名方式和代码格式。但是在实际开发中,并不是所有人都会严格遵守这些规则。
例如有些同学使用不同的变量命名方式,或者没有写完整的注释,这会在后期维护时增加理解成本。
在大型软件团队中,如何保证所有开发者都遵守统一的代码规范?
我提出这个问题的原因是我希望了解真实的软件团队是如何管理代码质量的。
问题五:软件测试应该在开发之前还是开发之后进行?
在教材中还介绍了软件测试的重要性,例如单元测试和系统测试等方法。
“Bug 的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。”
软件测试的目标是保证程序能够正确运行,并满足用户需求。
在很多传统的软件开发流程中,测试通常在开发完成之后进行。
但是我在一些技术博客中看到一种不同的方法,叫做 测试驱动开发(TDD)。这种方法要求开发者先编写测试代码,然后再编写实现代码。
这两种方法看起来有明显区别。
在现代软件开发中,测试应该在开发之前开始,还是在开发完成之后进行?
我提出这个问题的原因是我不太清楚不同测试方法之间的关系。
浙公网安备 33010602011771号