[I.3] 个人作业:结课总结
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2025年春季软件工程 |
| 这个作业的要求在哪里 | [I.3] 个人作业:结课总结 |
| 我在这个课程的目标是 | 在实践中熟悉软件工程的各个环节,提高合作能力与编程素养 |
| 这个作业在哪个具体方面帮助我实现目标 | 形成对于软件工程的基本认识,理解辨析基本概念 |
问题回答
链接到以前提问题的博客
1 单元测试中高覆盖率是否有必要性
我的回答是有。虽然100%的覆盖率不能保证代码完全正确,但它强制我们考虑各种边界条件和异常场景,显著降低生产环境出现严重缺陷的概率。
2 结对编程为什么可以提升开发效率
在结对编程中我感受到了群体促进。两人共同工作时产生的知识互补和即时评审机制,使得代码在编写阶段就能发现潜在问题。这种工作模式特别适合复杂算法实现和系统设计阶段,不仅减少了后期调试时间,还促进了团队知识共享。值得注意的是,有效的结对编程需要明确的角色分工和适度的持续时间,避免疲劳导致的效率下降。
3 如何提高我们对于项目时间估计的能力
我的实践是给任务分配一个相对比较短的时间,并留更多的时间用作机动。通过将大任务拆分为小颗粒度的子任务,每个估算单元的误差范围会显著缩小。在实践中,这种逐步细化的估算方式确实比一次性的大范围预估更可靠。同时,预留的缓冲时间能够有效应对那些难以预见的实现难题或需求变更,使整体进度更加可控。
4 如何理解敏捷流程中的“敏捷”
我现在的理解是敏捷是又快又好。敏捷本质是通过持续交付和价值驱动,实现可控的快速响应能力。它强调在保证质量前提下的适应性开发,通过自动化测试、持续集成等技术实践,构建可持续的开发节奏。真正的敏捷应该像专业运动员的敏捷性——不仅是动作快,更是对变化做出精准、协调的反应能力。
5 PM 的工作存在显著不同,如何衡量工作量
在实践中是根据实际情况大家讨论得出的。与可量化的编码任务不同,PM的工作价值往往体现在需求沟通、风险预防等难以直接测量的领域。团队讨论的方式能够综合考量这些无形贡献,特别是当PM在协调资源或化解危机时所做的努力。这种基于共识的评估虽然主观性较强,但往往能更全面地反映PM的实际贡献。
知识点总结
需求阶段
需求阶段最重要的是明确要做什么。这需要通过系统化的分析方法明确功能性和非功能性需求,同时定义清晰的约束条件和验收标准。
设计阶段
设计阶段在初期很难给出一个完整的方案,但至少要给出一个可扩充易实现的方案框架。该阶段应当遵循模块化设计原则,重点考虑系统的可扩展性和可维护性。需要完成的关键工作包括接口规范定义、数据库ER设计以及异常处理机制的制定。
实现阶段
进行合理的时间分配。这包括采用合理的代码组织结构、遵循既定的编码规范、实现必要的日志记录功能,以及进行定期的代码审查。
测试阶段
用户体验测试很重要。从验证基本逻辑的单元测试,到检查组件交互的集成测试,再到确认整体功能的系统测试,每个测试阶段都有其特定的验证目标。此外,性能测试和用户验收测试也是确保软件质量的重要环节。建立完善的测试用例库有助于提高测试效率和覆盖率。
发布阶段
在发布之前先解决部署时可能遇到的技术问题。这包括设计部署方案、检查环境配置、验证数据迁移流程、制定回退方案以及配置监控系统。在正式发布前,建议在预发布环境中进行全面验证,以确保发布过程的可靠性。
维护阶段
系统维护阶段需要建立规范的问题跟踪流程。定期进行系统健康检查、收集分析运行日志、处理用户反馈以及规划迭代优化都是维护工作的重点内容。同时,保持系统文档的及时更新也是确保软件可维护性的重要因素。
心得体会
通过本课程的完整实践,我对软件工程的理论体系与实际应用建立了系统性的认知。从需求分析、系统设计到编码实现、测试验证,再到部署维护的全流程参与,使我深刻体会到规范化开发流程的价值。特别是在团队协作开发中,版本控制、持续集成等工程实践的重要性得到了充分验证。课程中的结对编程、敏捷开发等环节,不仅提升了我的编码能力,更培养了工程思维和团队协作意识。这些经验为今后参与实际项目开发奠定了坚实基础,也让我认识到软件工程不仅是技术活动,更是一项需要严密组织和协调的系统工程。

浙公网安备 33010602011771号