个人作业-提问回顾与个人总结

文章探讨了在2023年北航敏捷软件工程课程中的学习体验,涉及单元测试的编写、结对编程的效率、MVP的反馈收集、项目管理角色以及压力测试的资源调整。作者通过个人项目和团队项目深化了对工程思维和开发能力的理解,总结了需求分析、设计、实现、测试和维护等关键环节的经验和心得。
摘要由CSDN通过智能技术生成
项目内容
这个作业属于哪个课程2023年北航敏捷软件工程
这个作业的要求在哪里个人作业-提问回顾与个人总结
我在这个课程的目标是锻炼工程思维,提高开发能力
这个作业在哪个具体方面帮助我实现目标总结与反思

博客链接

提问博客链接:个人作业-阅读和提问

问题解答

问题1:单元测试是否必须由程序的作者来写

单元测试并不一定非由程序的作者来编写,但在实践中,通常由程序员自己来编写他们所开发的代码的单元测试。这是因为程序员对于其代码的内部结构、实现细节和预期行为有深入的了解,可以更有效地编写测试用例来覆盖各种情况。

在我们团队的开发过程中,单元测试大部分是由程序的作者来写的,即每个人主要负责自己写的代码部分的单元测试,这样做的好处是编码效率高、测试也更全面,但是考虑到任务量和时间精力等,团队部分成员有时候也会给其他人的代码写单元测试。

问题2:结对编程是否能提高开发效率

结对编程可能在某些情况下提高开发效率,但并非适用于所有情况。《构建之法》中提到,结对编程主要能在以下方面提高开发效率:错误检测和代码质量控制、知识共享和技能提升、快速问题解决、减少调试时间。但是在课程的结对编程中,由于合作开发经验不足等原因,传统的结对编程方式并不能很好地提升效率,最终我们组还是选择了两人分工的方式,同样能保证开发效率。

问题3:MVP 配合什么样的反馈收集方式最有效

通过上网搜集资料,我了解到与MVP配合的有效反馈收集方式主要有以下几种:用户调查和反馈表、用户访谈和焦点小组讨论、用户行为分析和数据分析、A/B测试、用户反馈渠道和支持系统。无论选择哪种反馈收集方式,重要的是确保团队积极倾听用户的声音,并将反馈及时融入到产品的演进和优化过程中。组合使用多种反馈收集方式可以获得更全面、多维度的用户反馈,帮助优化产品并满足用户需求。但由于在课程敏捷开发过程中并未采用MVP的模式,因此对其理解还不够深,也并不清楚该模式的实际运作效果。

问题4:在软工课程中最好有人专门做 PM 吗

根据我们团队的实践来看,PM最好还是参加一部分开发工作,而不是只负责管理、交接和文档之类,因为PM完全不参与开发,可能对整个系统的架构和一些实现细节不太了解,导致不能很好地进行工作的分配。而且对于软工课程来说,主要的工作还是在开发和运维上面,管理相关的任务量不是特别大,所以如果PM完全不做开发的话可能和团队其他成员任务分配不均衡。

问题5:压力测试时如何调整系统资源,一定要减少吗

调整系统资源时不一定要减少资源,而是根据测试的目标和需求来增加或减少系统资源。关键是模拟真实负载,并仔细监测和分析系统的性能表现,以便发现问题并进行优化。我们团队在做压力测试的过程中,通过脚本模拟多用户并发访问api、多用户并发访问前端资源、多评测机并发执行评测任务,并调整请求频率、并发数、评测技术来模拟不同场景。

知识点

需求

需求分析部分我了解了NABCD模型,分别指需求、做法、好处、竞争、推广五部分。NABCD模型提供了一个结构化的方法来分析问题、制定解决方案和规划项目的实施。它帮助团队全面理解业务需求和挑战,评估解决方案的价值,并进行有效的项目规划和管理。

设计

在项目开发过程中,设计是很重要的一环,包括数据模型设计和api设计等等。尽管敏捷开发强调快速交付和灵活性,但良好的设计仍然是确保项目成功的关键因素。一个好的设计能够减少开发时的难度,提高开发效率,确保代码的质量、可维护性和可靠性,提升用户体验,减少风险,并促进团队协作和沟通。

实现

实现过程中代码管理是一件很重要的事情,我们团队使用git和gitlab进行代码管理,通过严格的分支管理规范、分支合并规范、冲突修复规范等,几乎没有出现过分支混乱、代码丢失等情况,有效减少了因代码管理漏洞而耗费的不必要的时间。

测试

完成代码后需要进行单元测试和压力测试。对于单元测试,需要保证足够的覆盖率,尽可能覆盖代码中的不同路径和边界情况。测试应该涵盖正常输入、边界条件、异常情况等,以确保代码在各种情况下的正确性。对于压力测试,需要测试不同并发用户数、请求频率、资源配额下的场景,逐步增加负载并记录和比较测试结果。

发布

在发布前需要做生产环境的准备,要进行数据库和数据迁移,并在宣发前配置好一定的使用环境,以便用户更好地体验产品。除此之外还需要进行安全性设置和权限设置,例如前端构建时需要关闭SourceMap等。

维护

维护时可以使用CI/CD来进行自动化测试和部署,以提高运维效率,而部署时使用docker技术也能够方便的进行程序的运行管理。

理解和心得

个人项目

个人项目包括了阅读《构建之法》并提问,以及软件案例分析。通过阅读《构建之法》,我初步了解了一些软件工程相关的基本概念和术语等,也对结对编程和敏捷开发有了一定的思考。而在软件案例分析中,我第一次以软件测试者的身份去使用一款软件,体验和以往有很大不同,例如会重点关注软件中不那么起眼的一些功能,想着尽可能发现bug。

结对编程

结对编程的项目是最长英语单词链,我负责实现CLI、GUI、异常处理和部分单元测试。主要收获提升了编程技能,对结构设计和解耦合思想有了更深入的体会。通过开发这么一个小程序,我对C++的掌握程度更高了,并且学会了CMakeLists、google test、Qt的简单使用(之前只用过PyQt)。但遗憾是在算法方面我没有怎么了解,全交给队友负责了。

团队项目

我们组的团队项目是Compilify编译实验平台,是服务于编译实验的一个优于希冀的平台,实现的主要程序包括前端、后端、分布式评测机、评测脚本、教程框架等等。经过alpha和beta两阶段的迭代开发,我对敏捷开发有了更丰富的理解,对软件产品的生命周期也有了更深刻的体会。在技术栈方面,我加强了前端的开发技能,对vue3的使用更加熟练,并且对于代码管理和git的理解也更加深刻,还掌握了CI/CD,Docker,Nginx等新技术栈的使用。

最后,感谢老师、助教以及同学们无私的帮助orzzz(经过软工感觉自己脸皮又更厚了呢

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值