软件工程课程个人总结
1. 自我介绍
我是软工二班的LZY,很高兴能够在这学期学习软件工程课程。通过这门课程的学习,我对软件开发的系统化方法和工程化思维有了更深入的理解,也积累了宝贵的实践经验。
2. 课程计划完成情况回顾
回顾学期初制定的学习计划,我基本完成了设定的目标,具体进展如下:
-
核心流程掌握:通过课堂学习和项目实践,我对软件开发生命周期有了系统认识。在团队项目中,我们完整经历了需求分析、系统设计、编码实现、测试和部署的各个阶段。
-
工程化工具使用:
- Git版本控制:在团队项目中熟练使用Git进行协作开发,掌握了分支管理、合并冲突解决等技能,共提交了56次代码。
- UML建模:完成了系统的用例图、类图和时序图设计,使用StarUML工具绘制了12张设计图。
-
项目实践:
- 作为团队项目的后端开发负责人,完成了用户管理模块的设计与实现,包括数据库设计、API接口开发和单元测试。
- 编写了23个单元测试用例,测试覆盖率达到85%。
-
关键概念理解:通过案例分析和个人项目实践,对设计模式(特别是工厂模式和观察者模式)、软件质量属性和敏捷开发方法有了更深入的理解。
3. 学期初问题的回顾与解答
学期初提出的五个问题及现在的回答:
-
问题:如何在需求不断变化的情况下保持软件架构的稳定性?
- 回答:通过项目实践,我理解了采用松耦合设计、遵循开闭原则和使用设计模式可以帮助应对需求变化。我们也实践了敏捷开发中的迭代方法,通过小步快跑的方式适应变化。
-
问题:如何平衡开发速度与代码质量?
- 回答:课程教会我们通过自动化测试、持续集成和代码审查来保持质量。我们在项目中建立了CI/CD流程,每次提交都自动运行测试,有效平衡了速度和质量。
-
问题:软件工程理论如何与具体编程实践结合?
- 回答:通过实际项目,我体会到理论指导实践的重要性。例如,在系统设计阶段应用UML建模,在编码阶段应用设计模式,都使我们的项目更加规范和专业。
-
问题:如何有效评估软件工程师的工作绩效?
- 回答:课程中的团队项目让我认识到,除了代码量,代码质量、文档完整性、团队协作等都是重要评估维度。我们使用了燃尽图和任务完成度来跟踪进度。
-
问题:软件工程知识如何适应不同规模的项目?
- 回答:通过分析不同规模案例,我理解了要根据项目规模灵活调整流程和方法。小型项目可以简化文档和流程,而大型项目则需要更严格的工程规范。
4. 新产生的问题
-
问题:在分布式团队中,如何更有效地进行知识管理和经验传承?
- 背景:在远程协作时,我们发现部分知识只存在于个别成员头脑中,难以共享。
-
问题:如何衡量技术债务的临界点,确定何时需要进行重构?
- 背景:项目后期我们面临一些技术债务,但难以判断重构的最佳时机。
-
问题:对于学生项目,如何平衡学习新技术与项目稳定性之间的关系?
- 背景:我们曾因尝试新技术而遇到兼容性问题,影响了进度。
5. 文献回顾与"事后诸葛亮"分析的新感想
重新阅读《构建之法》和相关文献后,结合团队项目的"事后诸葛亮"分析,我有以下新认识:
-
风险管理的重要性:我们项目初期忽视了风险登记,导致后期遇到数据库性能问题措手不及。现在更理解要提前识别技术风险并制定应对方案。
-
文档的价值:最初认为文档是负担,但在后期维护和新成员加入时,完善的需求文档和API文档大大提高了效率。
-
反馈循环:我们过于关注功能实现,忽视了早期用户反馈。现在认识到应建立更频繁的反馈机制,及时调整方向。
-
团队动力学:团队成员技能差异导致任务分配不均,后期采用结对编程和定期知识分享改善了这一问题。
6. 技能提升与收获
对比学期初的技能评价表,我的进步主要体现在:
-
技术能力:
- Git使用:从基本提交到熟练分支管理(提升3级)
- UML建模:从零基础到能独立完成系统设计图(提升4级)
- 单元测试:从无到有,掌握了JUnit和Mockito框架(提升3级)
-
工程实践:
- 代码规范意识显著增强,代码审查发现问题减少60%
- 文档编写能力提高,能独立完成技术设计文档
-
软技能:
- 团队协作能力提升,能有效主持技术讨论
- 项目时间管理改善,任务按时完成率从70%提高到90%
无法用数字衡量的收获:
- 培养了工程化思维,不再只关注代码能否运行,更关注可维护性、可扩展性
- 理解了软件开发的系统性,认识到沟通、文档、流程的重要性
- 获得了面对复杂问题的分析能力和解决信心
7. 对未来的展望与课程建议
设想一年后进入职场,回顾这门课,我认为:
-
课程价值:
- 项目实践让我提前体验了真实工作场景
- 工程化思维将成为职业发展的基础
- 团队协作经验帮助快速适应工作环境
-
教学建议:
- 增加企业真实案例分享,帮助学生理解行业实践
- 提供更多工具链整合的指导(如Git+CI/CD+项目管理工具)
- 加强与其他课程(如数据库、操作系统)的联动
-
衔接建议:
- 建议在高年级设置进阶软件工程课程,深入架构设计等主题
- 增加与毕业设计的衔接指导,帮助学生应用所学
8. 总结
这门软件工程课程是我大学生活中的重要转折点。通过理论学习与实践结合,我不仅掌握了具体的技术和工具,更培养了作为软件工程师应有的系统思维和职业素养。项目中的成功与挫折都是宝贵经验,让我对未来的职业发展有了更清晰的认识和准备。感谢老师和助教的悉心指导,这些收获将伴随我整个职业生涯。
浙公网安备 33010602011771号