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

项目 内容
这个作业属于哪个课程 2025春季软件工程(罗杰、任健)
这个作业的要求在哪里 [I.3]个人作业:结课总结
我在这个课程的目标是 在PSP中精进个人代码技术,在TSP中提高团队合作凝聚力
这个作业在哪个具体方面帮助我实现目标 总结软件工程课程中的经验

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

一、回答自己曾经的问题

1.1 在结对编程中是否会出现1+1<2的情况?

​ 这个问题是因人而异的,视两个人的实际水平和配合水平而定。在本学期的实践中,我和我的队友饶晨烜同学的结对合作我认为达到了1+1>2的效果,其中我主要负责驾驶员,即主要负责代码编写,饶晨烜同学负责领航员,对我的代码进行code review和算法讨论。我们的配合比较默契,在我写出错误代码的时候饶晨烜同学可以及时发现并提示我更正;当我算法思路阻塞时饶晨烜同学可以给我提供思路,达到了1+1>2的效果。

1.2 杀手功能的辅助需求为什么是最低的优先级?

​ 这个问题我也将结合本学期的团队项目进行分析。本学期我们组的团队项目聚焦于一个在线文献阅读管理平台JieNote,市场上一个功能较为接近的竞品为readpapers,这里一个比较重要的问题就是做出产品的差异化。经过Alpha阶段小组的讨论,必要需求中我们的杀手功能是最重要的,在象限图中处于第一象限的地位;必要需求中的外围功能次为重要,在象限图中处于第二象限的地位;由于我们的产品必须要覆盖市面上已有的产品的所有功能,所以辅助需求的外围功能处于第三象限,这一点的必要性在于必须覆盖竞争对手的所有功能,防止由于因某一功能的缺失而放弃使用我们的产品;故杀手功能的辅助需求是最低的优先级,杀手功能是我们提出的独特功能,可以首先完成必要需求。

1.3 在AI辅助编码工具流行的今天应当如何估计项目开发时间?

​ 在实际团队项目的开发中,由于时间比较紧,我们实际上对于项目开发时间有比较严格的要求,这时的某个功能的单一开发时间往往就定为一两天.回到我提出问题的背景,面对AI辅助工具,我认为我们的项目开发时间应当在原有的估计水平上再降低1/3左右.

1.4 在小团队中“侵官之害胜于寒”有必要吗?

我认为没必要,在我们团队的实际开发中,PM兼任运维工作,测试同时兼任一些前端工作,大家都会做一些"胶水"工作,衔接一下前后的工作,而没有很清楚的划分这是开发或者测试,应该交给专门的人去做.

1.5 在Beta期间,不必要修复同类的类似bug吗?

我认为有必要,在团队的实际开发中,我们秉持的观念是有bug就要修复,修复bug是维护软件质量的一种方式,不论是否是同类bug.所以我认为,在Beta阶段有必要修复同类的bug.

二、 各个阶段学习到的知识点

2.1 需求阶段:用例建模

知识点:通过绘制用例图(Use Case Diagram)梳理用户需求,明确系统与外部参与者的交互关系,同时团队还使用了思维导图来梳理功能需求。

2.2 设计阶段:分层架构设计

知识点:将系统划分为表示层、业务逻辑层、数据访问层等独立层次,降低模块耦合度。

2.3 实现阶段:设计模式的工程化应用

知识点:通过设计模式解决代码复用和可扩展性问题,例如使用工厂模式创建对象,避免硬编码依赖。

2.4 测试阶段:单元测试与覆盖率分析

知识点:针对单个函数或模块编写单元测试用例,通过工具(如 pytest)验证逻辑正确性,并分析代码覆盖率,最后进行集成测试和压力测试。

2.5 发布阶段:CI/CD 持续部署流程

知识点:通过自动化工具Github workflow实现代码提交后自动编译、测试、部署,确保发布版本的稳定性。

需要注意一定不要泄露关键信息,团队在发布的后端开源代码中泄露了数据库密码等关键信息www

6. 维护阶段:版本控制与变更管理

知识点:使用 Git 等工具管理代码版本,通过分支策略(如 Git Flow)隔离功能开发与线上修复,确保维护过程可追溯。

三、心得体会

3.1 结对项目

​ 在结对项目中,我主要作为驾驶员,我的队友主要作为领航员。在结对项目中,我深刻体会到两个人协作配合的重要性:从一开始两个人一点不熟悉,交流起来非常“客气”,坐的位置也有点远,后来通过一两次的配合,两个人逐渐熟悉了彼此的节奏,在欢声笑语中完成结对编程任务。在这个两人合作的过程中,我体会到有问题一定要及时交流,不要怕“打直球”,要敢于直接说出对方的问题;对方指出自己的问题也不要感到“ 磨不开”,要勇敢地承认自己的问题,只有两个人能够互相指出对方的问题,才能更加高效地解决问题。

3.2 团队项目

​ 在团队项目中,我担当的角色是项目经理PM和运维。作为一个项目经理,我深刻体会到协调团队的困难之处:协调例会时间、督促登记工时、督促更新工作进度,沟通测试和前后端之间的工作......其中我遇到的最大的一个困难是,两个后端同学对于url的命名规范不同并且互相争执不下,最后我采取了折中的方式,之前已经写好的不必改动,后面的接口统一使用RESTful规范来写。作为一个运维,我需要尽职尽责完成自己的任务:配置前端nginx、配置后端docker、编写CI/CD脚本进行自动编译部署,及时和前后端同学进行沟通...... 在团队项目中,我不仅得到了个人能力的提升,还得到了领导力的提升,学会了如何更加高效的与人沟通。

posted @ 2025-06-16 12:45  coder0xe  阅读(12)  评论(0)    收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示