[I.3] 个人作业:结课总结
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2025年春季软件工程(罗杰,任建) |
| 这个作业的要求在哪里 | [I.3] 个人作业:结课总结 |
| 我在这个课程的目标是 | 提升自身编程能力,最终开发出一款合理且实用的软件 |
| 这个作业在哪个具体方面帮助我实现目标 | 总结和反思开发过程中的问题与收获心得 |
一、提问博客
二、对曾经提出的问题的解答
1. 关于软件工程代码编译的实践困境
解答:在开发过程中“简洁、易读、没有歧义”确实是理想状态,但是在实际实践中其实总会有超出想象中的麻烦。在此次实践中,我在Beta阶段负责的移动端开发,就需要先看懂网页版其他队友写的代码,但是因为不同人的编写风格也不同,排版也不同,导致我看的时候比较吃力。但是时间紧张,无法重构,于是我只能和原作者进行沟通、加注释来尽快搞懂逻辑,达到可以交付的目的。这也让我明白了统一团队风格规范很重要,后面维护也会更简单。遇到这种情况,还是要先保证运行稳定, 必要时做点局部优化,长期再慢慢改。
2. 关于如何获取用户需求
解答:在实际开发过程中,用户日志研究虽然理论上很好,但现实中大部分用户难以长期坚持记录,而且隐私顾虑也会影响记录质量。所以这个方法在实际使用中要谨慎,往往需要将其与访谈、问卷等其他方式结合使用,才能更全面地获取用户需求。
3.关于测试资源的消耗
解答:通过在实践中发现,在资源不够的情况下,我们最应该做的是把单元测试、持续集成这些自动化工具先用起来,这样省事又高效。人工测试可以保留,但只测最关键的功能。持续集成(CI)还能帮助我们尽早发现问题,减少返工。因此,在资源紧张的情况下,应当尽量通过自动化测试+持续集成打基础,并配合少量人工测试进行重点保障,从而在成本和效果之间找到更优平衡点。
4. 关于如何解决人员安排问题
解答:这个问题其实还是没有得到很好的解答。因为我们团队的开发模式更倾向于大家分配完任务后,大家领着任务回去自行开发,并没有很多大家的相互帮忙过程。即便有也只是在开组会的时候会提出问题,然后相互帮扶解决一下。并且我们的组会也只有负责这一部分功能开发的成员会需要出席,所以没能很好的解决我对于该问题的困惑。
5. 关于创新的问题
解答:在我们开发的过程中,当我们有什么实在写不出来的地方,也会使用AI工具,但是AIGC帮我们写出来的代码是不是有用,还得靠我们自身来判断。所以通过实践之后,我认为未来的竞争力会更偏向“解决问题”和“架构设计”。教学上也要跟上变化,不能只教语言语法,要更多教怎么设计系统、怎么用AI工具、怎么保证软件质量。这样学生才能真正适应新技术带来的变革。
二、学到的知识点
1.需求阶段:
我学会了怎么跟用户沟通,提炼出他们真正需要的功能,而不是只听他们“想要什么”。
2.设计阶段:
我了解了“高内聚、低耦合”这种设计原则,知道怎么把系统分成清晰又互不干扰的模块。
3.实现阶段:
我学会了用 Git 来协作开发,还意识到写清晰、规范的代码有多重要。
4.测试阶段:
我知道了写测试用例的重要性,比如单元测试可以帮我们提早发现 bug,不用等上线才修。
5.发布阶段:
我学到了用自动化工具做持续集成和部署,这样上线更快也更稳定。
6.维护阶段:
我体会到软件上线不是结束,而是开始,要不断修 bug、加功能,还要做好版本管理。
三、心得体会
· 个人项目: 在软件案例分析中,让我从“写程序”升级到了“做项目”,学会了用工程思维看问题,而不是只盯着代码本身。
· 结对项目: 在结对项目中,因为我的队友个人原因,导致我是单人完成的结对项目,对此我深感遗憾。
· 团队项目: 在团队项目中,我主要负责Beta阶段的前端开发,因为我在Alpha阶段并没有参与前端的开发,所以我对于前端的功能实现的细节不是很清楚,导致最开始我的开发出现许多困难,比如为了开发一个功能,因为没有和PM沟通到位,再加上我不清楚在Alpha阶段的实现,导致我一直在试图做一个Alpha阶段并没有开发的功能,因为后端没有支持。这让我深刻意识到了所有团队成员都应该对所有的流程有一个比较完整的了解,可以避免出现开发时功能上的差异,并且也可以帮助项目的推进更加稳定迅速。

浙公网安备 33010602011771号