[I.3] 个人作业:结课总结

项目 内容
这个作业属于哪个课程 2025年春季软件工程(罗杰、任健) (北京航空航天大学 - 计算机学院)
这个作业的要求在哪里 [I.3] 个人作业:结课总结
我在这个课程的目标是 学习软件工程的基本知识,了解软件开发流程。在实践中,掌握与团队配合开发,团队管理等方面有关的知识。
这个作业在哪个具体方面帮助我实现目标 通过总结本学期的软件工程的项目,感受软件工程课程中的学习的收获与心得。

[I.3] 个人作业:结课总结

提问博客连接

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

曾提出的问题

1. 结对编程中两人水平不同是否会导致地位不等?

曾经的困惑:在结对编程中,如果两人水平差异较大,是否会导致一方在分析、设计或编码上拥有更多的决策权利,从而影响结对编程的平等性?

解答:结对编程的核心在于平等的合作和交流。虽然水平差异可能导致一方在某些方面更有发言权,但通过合理的沟通和协作,可以确保双方都能参与决策。在结对编程的项目实践过程中,我认识到,即使某一方在某些细节上无法提供建设性意见,但在整个编码的过程中,依然能对代码的功能和质量负责。结对编程的目标是通过两人合作来提高代码质量,而不是让一方主导所有决策。也因此在结对编程中要重视双方的交流和反馈,确保每个人都能在项目中发挥作用。

2. 敏捷开发不需要文档吗?

曾经的困惑:敏捷开发流程中是否真的不需要文档?如果不需要,那么如何保证软件的可维护性和团队成员之间的沟通?

解答:在本学期的团队开发过程中,我们的确是在欠缺了部分文档的,导致其他同学对于我的代码的理解有些困难。我认为,敏捷开发并不是完全放弃文档,而是强调高质量的面对面交流和协作。通过每周的几次例会与微信交流,确实能够一定程度上消除缺少文档的问题。虽然敏捷开发鼓励减少不必要的文档,但适当的文档仍然是必要的,特别是团队成员分布在不同地点或时区时。因此,在敏捷开发中,我们应该找到一个平衡点,既能保持高效的沟通,又能确保必要的文档记录。

3. 敏捷开发中剩余时间会不会被“猜不准”的计划影响?

曾经的困惑:敏捷开发中,剩余时间的估计是否会受到不准确计划的影响?如果计划是“猜”出来的,那么如何确保项目进度的准确性?

解答:敏捷开发强调灵活性和适应性,确实在某种程度上依赖于“猜测”。然而,这并不意味着我们可以忽视对项目进度的管理。在本学期的项目中,我们通过定期的进度报告和回顾会议来调整计划。在每周的例会中,通过当周完成的进度,合理调整下一周的计划,修改之前“猜测”的计划。最终在本学期的开发中,虽然总的实现目标有所变动,但每周的任务基本是完成的,因此动态调整计划是可行的。虽然敏捷开发中可能存在不准确的估计,但通过持续的反馈和调整,我们可以更好地掌握项目进度,确保最终目标的实现。

4. 修Bug门槛越来越高还是Bug清零?

曾经的困惑:修Bug门槛越来越高还是Bug清零,应该采取什么样的策略来处理项目中的Bug?

解答:在本学期的项目实践中,我们确实遇到了不少Bug。通过结对编程和代码审查,我们能够及时发现并修复大部分Bug。随着项目接近尾声,我们也将修复bug的工作作为一个重要的任务来对待,做到修复大bug的情况,尽量清零Bug。在我负责的部分,就有一个存在已久的大Bug,在项目尾声,我通过一定的舍弃,将当前状态下的代码修复到一个相对稳定的状态,虽然如果未来继续开发,可能还会重现这个Bug,但在当前阶段,已经满足了项目的需求。我认为,Bug门槛提高和Bug清零这两种策略应该对应项目的不同阶段和实际情况。在项目初期,可能更多地关注Bug的清零,而在项目后期,可能需要更高的门槛来处理复杂的Bug,避免因为大量修改而引入新的问题。

5. 100%代码覆盖率是否是一个好的目标?

曾经的困惑:100%代码覆盖率是否是一个好的目标?在实际开发中,如何平衡代码覆盖率和代码质量?

解答:在本学期的项目中,对于Unity编程测试较难的问题,我们并没有追求100%的覆盖率,而是关注代码的实际功能和质量。我个人认为,如果没有很高的可靠性要求,100%的代码覆盖率并不是一个必要的目标。设定一个合理的覆盖率目标(如80%或90%)可以在保证代码质量的同时,避免过度追求覆盖率而导致的代码复杂性增加。在实际开发中,我们应该关注代码的可读性、可维护性和实际功能,而不是仅仅追求数字上的完美。

收获的知识点

需求分析:用户调研与典型用户画像的建立,通过用户调研,了解用户的需求和痛点,建立典型用户画像,为后续的设计和开发提供依据。

设计阶段:学习了解了Unity的基本使用和开发流程,对Unity的程序组织与设计有了基本的认识。

实现阶段:认识到代码的可读性和可维护性的重要性,对代码模块化与解耦的设计原则有了更深刻的理解。

软件测试:软件测试应当贯穿于软件开发的各个阶段,做到早发现、早修复。

发布阶段:发布的版本应当经过充分的测试和验证,确保软件的稳定性和可靠性。

维护阶段:积极响应用户反馈,及时修复Bug和进行功能迭代,保持软件的持续更新和优化。

总结

在本学期中,第一次通过Unity进行软件开发实践,同时也是第一次与一个团队合作完成一个软件项目。软件工程不只是编写代码,更是“人”的工程,需要团队成员之间的良好沟通和协作。通过本学期的学习和实践,无论是结对编程的项目,还是团队开发的项目,我都感受到了软件工程的魅力和挑战,感受到团队之间互相配合,互相学习的重要性。

此外,我也认识到规范化的作用,使用规范的开发工作,规范的代码风格和编程习惯,以及版本控制工具,Issue与PR的使用等,都是提高软件开发效率和质量的重要手段。通过规范化的流程,我们能够更好地管理项目,减少Bug的产生,提高代码质量。

posted @ 2025-06-20 16:39  dong3gold  阅读(11)  评论(0)    收藏  举报