敏捷开发方法

摘要

        2021年4月,我有幸参与了某保险公司的“优车险”项目的建设开发工作,该系统以售卖车险和报案理赔为核心功能,同时实现了年检代办、道路救援、一键挪车等增值服务功能。在本项目中,我被安排担任架构师一职,负责系统需求分析和架构设计工作,以及关键业务模块的设计和编码工作。

        本文以敏捷开发方法的应用为论述主题,首先介绍了敏捷开发方法的核心思想,如适应型、以人为本、迭代增量式的开发过程,同时说明了敏捷开发方法所遵循的原则,如个体和交互高于流程和工具、可以工作的软件高于详尽的文档、客户协作高于合同谈判等。然后结合笔者自身的实践,重点从迭代开发、持续集成与交付、迭代速度与质量平衡问题三个方面出发,阐述了敏捷开发方法在该车险系统建设过程中的应用过程以及遇到的问题和解决方案。项目历时6个多月的开发与迭代,成功上线,至今一直平稳运行。

正文

        2018年前后新能源汽车市场在国内快速扩张,这一现象导致燃油车的价格大幅度下降,在电车“出新”和燃油车“减价”的双重刺激下,国内汽车销售量出现了大幅度的增长。按照买车必购险的政策,车险的投保量随之快速增长,这为车险行业带来了前所未有的发展机遇。在上述行业背景下,我所在的保险公司为了提升自身车险交易平台的服务质量,于2021年4月,提出了"优车险"的项目计划,决定在整合原有车险系统的基础上,打造一个更完善的车主服务平台。系统主要实现了车险报价、车险购买、报案理赔三个核心功能,本质上是一个车险电商平台。为了给客户带来更好的服务体验,进而增加客户粘性,系统还提供了诸如年检代办、道路救援、一键挪车、电车充电等一系列增值服务功能。我有幸以架构师的身份参与并主导了本系统的开发建设工作,负责系统的需求分析和架构设计,经过多轮深入的技术评估和业务分析,考虑到项目需求频繁变更、开发周期紧张等挑战。为了提高开发效率、增强系统的灵活性和快速响应市场变化,我们决定采用敏捷开发方法。

        为更好地将敏捷开发方法应用到系统建设中,在启动系统设计工作前,我们针对敏捷开发方法的核心原理与所遵循的开发原则开展了充分调研,并将关键理论要点进行了整理。

        敏捷开发作为一种流行的开发方法,旨在通过持续的反馈和灵活的调整来提高团队的效率和产品的质量。它强调团队合作、客户反馈和快速响应变化,为软件开发项目提供了一种高效、灵活的管理方式。其核心思想强调以下几点:该方法是适应型,而非可预测型,与传统方法不同,该方法拥抱变化,也可以说它的初衷就是适应变化的需求,利用变化来发展,甚至改变自己,最后完善自己;该方法以人为本,而非以过程为本,强调充分发挥人的特性,不去限制它,在无过程控制和过于严格繁琐的过程控制中取得一种平衡,以保证软件的质量。该方法采用迭代增量式的开发过程,以原型开发思想为基础,采用迭代增量式开发,发行版本小型化。同时,敏捷开发方法还遵循了以下原则。

        1、个体和交互高于流程和工具。敏捷开发认为,软件开发的核心是人,而不是流程或工具。团队成员之间的有效沟通和协作是成功的关键。因此,敏捷开发强调面对面的交流,以减少误解和延误。

        2、可以工作的软件高于详尽的文档。敏捷开发强调交付可运行的、经过测试的代码,而不是冗长的文档。尽管文档仍然重要,但敏捷团队更倾向于通过可工作的软件来展示进度和成果。

        3、客户协作高于合同谈判。敏捷开发鼓励团队与客户密切合作,共同定义需求、评估进度和调整计划。这种协作方式有助于确保软件真正满足客户的期望和需求。

        4、响应变化高于遵循计划。敏捷开发承认计划的不完美性,并强调在开发过程中灵活应对变化。团队需要不断评估和调整计划,以确保软件能够适应不断变化的业务需求和市场环境。

        上述所整理的关于敏捷开发方法和核心思想以及所遵循的开发原则,在理论层面上为车险系统的建设提供了有力的参考。而在实际项目开发中,如何将理论应用于实际项目成为关键衔接环节。为此,我们对车险系统的业务需求和场景进行了深入分析,发现车险系统作为典型的业务复杂型系统,其业务需求的复杂性和多变性,恰为敏捷开发方法的实施提供了良好的实践平台。下文将重点从迭代开发、持续集成与交付、迭代速度与质量平衡问题三个方面出发,阐述敏捷开发方法在该项目中的具体应用过程。

        一、迭代开发

        在采用敏捷开发方法时,我们将项目拆解为多个迭代周期,每个周期时长 2 至 3 周。在每个迭代开始前,产品经理与业务部门进行沟通,收集业务需求,梳理并形成初步的需求待办事项清单(Product Backlog),并为每个代办事项设定优先级。随后,开发团队(组织会议Sprint计划会议)针对每个事项展开研讨与评估,将其分解为具体的开发任务,为后续的设计、编码和测试工作做准备。例如,针对“开发车险智能核保系统” 这一任务,开发团队根据系统架构设计,将其分解为数据采集模块开发、模型训练模块开发、核保规则配置模块开发等具体任务,并估算每个任务的开发时间。每个迭代结束后,我们会举行迭代回顾会议,团队成员共同总结本次迭代的工作成果、遇到的问题以及解决方案。通过这种方式,我们能够及时发现项目中的问题并进行调整。例如,在一次冲刺评审会议中,业务代表对车险理赔流程中的客户信息录入环节提出了简化操作的建议,产品负责人将其添加到产品待办事项列表中,并调整了优先级,作为下一个迭代周期的重点工作。通过迭代开发的方式,提升了项目开发的灵活性与开发效率,规避一次性开发的高成本与低容错问题,有效降低了项目风险。

        二、持续集成与交付

        为确保迭代开发模式的质量与效率,我们引入持续集成与交付(CI/CD)流程。在项目中,我们选用 Jenkins 作为持续集成工具,Git 作为版本控制系统。开发人员每次将代码提交至 Git 仓库,Jenkins 便自动触发构建流程,执行代码规范检测、代码编译与打包。打包完成后,代码会自动部署至测试环境,供测试人员开展功能测试。测试中一旦发现问题,测试人员即刻反馈给开发人员,开发人员修复后重新提交代码,触发新一轮 CI/CD 流程。只有所有测试全部通过,代码才会部署到生产环境。借助持续集成与交付,我们实现代码的快速集成与频繁交付,极大缩短从代码编写到上线的周期。而且,由于每次代码变更都历经严格测试,软件质量得以有效提升,生产环境中出现问题的概率大幅降低。例如,在一次系统功能升级中,依靠 CI/CD 流程,我们仅用了一天时间就完成了从代码提交到生产环境上线的全过程,全程未出现任何重大问题,有力保障了业务的连续性。

        三、迭代速度与质量平衡问题

        在迭代初期,为了快速实现产品功能、我们过于追求开发速度,采用比较直接的编码方式。而忽略了代码结构的合理性与可维护性,例如,为了尽快实现基本的理赔规则判断功能,我们采用了硬编码方式的条件分支语句,很多功能函数没有进行合理的封装,致使代码结构混乱。这就导致在后续的迭代过程中,当需要添加新的理赔规则时,开发人员很难理解和修改代码,需要花费大量的时间进行代码的重构和优化,严重影响了开发进度。为此,我们采取了一系列措施。首先,制定严格的代码编写规范,禁止开发人员在公共功能模块使用硬编码的方式,鼓励开发人员根据具体情况使用设计模式。其次,在项目中引入代码规范检测工具(如Maven插件),在代码编译环节进行规范检查,检查代码中存在的语法漏洞和逻辑漏洞,对可以进一步优化的代码进行建议性提示。此外,我们定期组织开发评审会议,对关键功能的代码进行小组集体审查,不仅可以发现代码中存在的更加隐蔽的逻辑漏洞,而且还有利于开发人员相互学习、提升技术能力并保障代码质量。通过以上的措施,有效了保证了后续迭代过程中编码的合理性和可维护性,大大提高了软件质量。

        该系统开发耗时6个月时间,于2021年10月完成首个版本的全面上线,至今已在升级维护中稳定运行3年多的时间。截止目前,系统内在保的车辆涉及营运类、非营运类的客车、货车、私家车总共200多万辆,每年大概创造50多亿的保费总收入,为公司带来了不小的经济收益。

        通过采用敏捷开发方法,车险系统项目取得了显著的成果。系统功能全面满足了公司的业务需求,性能表现卓越,有效提升了公司的运营效率和客户满意度。在项目开发过程中,通过频繁的客户反馈和迭代开发,及时调整系统功能和方向,确保了系统能够适应市场变化和业务发展的需求。团队成员之间的协作更加紧密,沟通更加顺畅,团队绩效得到了显著提升。在未来的软件项目开发中,我们将继续优化和完善敏捷开发流程,不断提升团队的敏捷开发能力,为客户提供更优质的软件产品和服务。

🎁2025年11月软考架构论文预测

⚠️点击链接,领取全部架构论文备考资料:2025年11月软考架构论文预测

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐