《软件工程》课程总结
(1)回顾课程计划
每日计划:周一到周五抽出45分钟用于编写代码和开发--------完成度大概80%
每天进行任务的总结---------完成
目标:
基本明白安卓开发的流程,对安卓开发的流程有了一个基本的思路----------------完成,可以使用安卓进行基本的增删改查,并可以实现一定的界面美化。
同时这学期的大作业(团队作业)完成情况较好,也收获了很多知识。
(2)回顾《构建之法》
①在软件项目中,如何有效地收集、分析和管理用户需求,确保最终产品能够满足用户的真实需求?需求变更时,如何保持项目的稳定性和进度?
答案:与用户、利益相关者和团队进行沟通,了解他们的需求和期望。可以通过面对面会议、问卷调查、焦点小组讨论等方式获取用户需求;将收集到的需求进行分类、整理,明确和详细地描述需求的内容和优先级;对于需求变更问题,在项目初期就尽可能明确和详细地收集用户需求,减少后期的变更。评估和分析需求变更的影响,优先处理重要和紧急的变更。定期进行需求审查和验证,确保需求的准确性和完整性。与团队成员和利益相关者保持密切沟通,及时沟通并解决需求变更的问题。
②如何设计一个既满足当前需求又具有可扩展性的软件架构?在设计阶段,如何平衡功能实现、性能优化、代码质量和后期维护之间的关系?
答案:设计可扩展性的软甲架构,如进行模块化设计:将软件系统划分为独立的模块,模块之间关联尽可能松散,便于后期的拓展和修改;同时可以采用分层架构,将系统划分为不同的层次,使得各个层次的功能清晰分明,方便维护和拓展;在平衡功能实现,性能优化,代码质量和后期维护之间的关系时:首先要满足用户需求,把握核心功能的实现,其次在设计阶段就要考虑系统的性能优化,避免后期因为性能问题引入大规模的重构,同时应该遵循良好的编程归还和原则,编写可读性高、可维护性强的代码,保证代码质量;也要考虑系统的可维护性,尽量降低后期维护的成本,包括文档的完善、合理的设计和注释等。
③在多角色、多技能的软件开发团队中,如何有效促进团队成员之间的沟通与协作?如何合理规划项目时间线,避免延期风险,同时保证产品质量?
答案:可以安排定期的团队会议,让团队成员分享进展、遇到的问题和解决方案,确保团队成员了解项目的详细情况,同时鼓励不同职能的团队成员进行合作,促进技术和业务之间的沟通,避免信息孤岛;还需要制定清晰的项目计划,确保项目的目标明确,任务清晰,清楚自己的责任和角色;还需要识别项目的风险,并采取措施降低风险发生的可能性,建立备用方案以应对延期风险;另外,使用迭代开发方式,将项目分解为小任务,每个迭代结束后进行评审和修正,确保产品质量和项目进展;最后需要利用持续集成和自动化测试工具,确保代码质量,减少Bug数量,提高开发效率;规范开发,提高项目开发的效率和质量。
④在软件开发过程中,如何实施全面而有效的测试策略,以确保软件产品的质量?如何平衡测试成本与软件质量的关系?
答案:可以通过制定详细的测试计划,在软件开发初期就制定测试计划,包括测试范围、测试目标、测试资源、测试时间表等,确保全面且系统地进行测试;采用合适的测试方法,据项目需求和特点选择合适的测试方法,如黑盒测试、白盒测试、集成测试、系统测试等,确保对软件各个方面进行充分测试;鼓励开发人员、测试人员和业务人员之间的密切合作,测试人员要在早期参与需求分析和设计阶段,从而更好地理解软件产品和相关需求,同时进行定期的审查和评估,确保测试策略的持续优化。关于软件质量方面,根据软件项目的风险特点,重点关注高风险的功能和模块,确保对关键功能进行深入的测试;同时在制定测试策略和计划时,进行测试成本效益分析,评估测试任务的成本和效果,合理安排测试资源和工作量。
⑤如何建立一套高效的持续集成和持续部署流程,以提高软件开发效率和产品质量?在CI/CD实践中,如何处理自动化测试与人工测试的结合,以及如何应对生产环境中的突发问题?
答案:建立高效的持续集成和持续部署(CI/CD)流程是关键,能够通过自动化构建和部署、持续集成、持续部署、代码审查以及监控和反馈来提高软件开发效率和产品质量。同时,结合自动化测试和人工测试,包括优先考虑自动化测试,重点人工测试用户体验和复杂场景,以及结合不同测试类型,可以全面保证软件质量。另外,应对生产环境中的突发问题,如灰度发布、快速回滚、紧急修复和持续监控,有助于降低风险,提高团队响应能力,确保用户满意度和系统稳定性。这些方法的结合将有助于提升团队整体效率和产品质量水平。
(3)产生的新的问题
①如何将软件工程课程学到的知识在实际开发中更好地使用?
②有哪些方式可以帮我们更好地学习软件开发方面的知识?
(4)事后诸葛亮分析与感想
在事后诸葛亮会议中,在会议开始时,团队回顾了项目的最初目标和最终成果。确保项目的实际结果是否符合最初的设想,并检讨可能存在的偏差和原因;同时会议中成员就项目中出现的问题、挑战和解决方案进行了深入的讨论。总结了取得成功的因素和失败的原因,为将来的项目经验教训提供了宝贵的参考;最后,团队明确了各自在项目中的责任和贡献,并制定了下一步的计划和目标。确保所有参与者都知道自己的职责和下一步的行动方案。通过“事后诸葛亮会议”,团队能够深入反思项目过程,总结经验教训,提出改进建议,从而不断提高软件开发的质量和效率,为未来的项目积累宝贵的经验和教训。
(5)技能评价表与收获
在对比软件工程师的技能评价表后,我认识到一个优秀的软件工程师不仅需要具备扎实的编程技能,还需要具备良好的沟通能力、团队合作能力以及解决问题的能力。此外,软件工程师还需要不断学习和提升自己的技能,跟上科技行业的发展步伐。综合来看,软件工程师在不断发展的技术领域中扮演着至关重要的角色,他们的技能评价也应该被全面考量,而非仅仅看重技术能力。
(6)对课程教学方法和老师工作的建议
首先,对于《软件工程》这门课程,我觉得老师的教学方法很好,采用理论与实际相结合的方式,没有单纯的讲授理论知识,而是给了我们更多的实践的机会,这是其他课程所没有涉及到的,同时建民老师在本学期着重锻炼我们的团队开发能力,通过本学期的团队大作业,我认为我的团队沟通能力和合作能力大大提高,同时在与团队成员合作的过程中,我也学到了很多新的知识与技能,学习的动力更加充沛了。最后,感谢一下老师的辛勤付出和耐心指导,希望《软件工程》这门课程越来越好,也希望每个人都越来越好!