scrum方式开发智能驾驶软件-实例
我们用一个具体的实例来详细说明如何使用Scrum框架开发智能驾驶软件。
项目实例:开发一个“高速公路自动巡航增强版”功能
-
功能描述:在已有自适应巡航的基础上,增加基于导航数据的自动车速调节(根据弯道曲率、收费站距离自动减速)、自动变道超车(在慢车阻挡时)以及自动驶入匝道的功能。
Scrum流程详解
Scrum的核心角色、事件和工件将贯穿整个开发流程。
第一步:组建团队与产品待办列表梳理
1. 角色分配:
-
产品负责人: 来自产品管理部门。他/她的目标是最大化功能商业价值。负责定义功能优先级,并与客户(整车厂)沟通。
-
实例: PO决定,第一个版本(MVP)必须先解决“基于导航的自动减速”和“安全自动变道”,因为这是客户最关心的安全与舒适性痛点。“自动驶入匝道”复杂度高,可以放在后续迭代。(MVP=Minimum Viable Product,中文通常翻译为 “最小可行产品)
-
-
Scrum Master: 敏捷教练。负责确保团队遵循Scrum流程,移除障碍。
-
实例: 团队抱怨测试车辆预约困难,SM主动协调资源,建立了固定的车辆测试时段。当团队在“弯道曲率计算”上产生分歧时,SM引导团队进行时间盒式的技术讨论,而不是无休止的争论。
-
-
开发团队: 跨职能的专家小组,包括:
-
软件工程师: 写感知、规划、控制算法的代码。
-
算法工程师: 设计机器学习模型用于物体识别、行为预测。
-
测试工程师: 设计仿真测试用例和实车测试流程。
-
系统工程师: 确保功能符合整车系统要求和安全标准。
-
实例: 团队共7人,他们自组织地决定谁负责感知模块的改进,谁负责规划层的变道逻辑。
-
2. 创建产品待办列表:
PO会创建一个包含所有功能、需求、改进的列表,并按优先级排序。
-
产品待办列表项示例:
- [高] 车辆能根据前方500米处收费站信息,自动平滑减速至停止。
- [高] 车辆能识别前方慢车,并在条件允许时自动发起向左变道。
- [中] 车辆能根据弯道曲率,计算舒适通过速度并自动调节。
- [低] 车辆在临近高速出口时,能自动驶入匝道。
- [非功能]所有决策的延迟必须小于100毫秒。
- [非功能]功能必须通过ISO26262ASIL−B级别的安全认证。
第二步:Sprint循环(核心流程)
Scrum开发通过一系列固定的“冲刺”来完成,每个Sprint通常为2-4周。我们以一个2周的Sprint为例。
Sprint 1 目标:实现“基于导航数据的自动减速”基础版本。
1. Sprint计划会议
-
参与者: 整个Scrum团队。
-
目的: 决定这个Sprint要完成什么,以及如何完成。
-
流程:
-
第一部分: PO讲解产品待办列表中优先级最高的项目。团队共同决定:“我们这个Sprint的目标是让车辆在仿真环境中,能够根据预定义的‘前方收费站’事件,成功执行减速动作。”
-
第二部分: 团队将选定的待办项拆解成具体、可执行的任务,形成 Sprint待办列表。
-
Sprint待办列表示例:
-
任务1:设计减速决策算法接口(8小时)
-
任务2:从导航模块获取收费站位置和类型数据(13小时)
-
任务3:实现平滑减速 曲线控制逻辑(21小时)
-
任务4:在仿真环境中创建测试场景(收费站、弯道)(8小时)
-
任务5:为减速功能编写单元测试和集成测试(13小时)
-
-
-
团队承诺在这个Sprint结束时,交付一个“完成”的、可演示的功能增量。
-
2. 每日站会
-
时间: 每天同一时间,15分钟。
-
目的: 同步进度,发现障碍,调整当日计划。
-
实例:
-
软件工程师A:“昨天我完成了减速曲线算法的初版。今天我将把它集成到控制模块。遇到的问题是和真实车辆动力学模型的对接有些参数不确定。”
-
软件工程师B:“我昨天提供了接口文档。今天我可以和你一起调试参数。”
-
测试工程师C:“我创建了3个基础仿真场景。今天我会测试A的算法,并反馈结果。”
-
Scrum Master: 记下“参数不确定”的障碍,会后立即协助解决。
-
3. 开发与测试
团队在Sprint中进行高强度、跨职能的协作。
-
算法工程师写出模型后,软件工程师立即集成。
-
代码提交后,触发持续集成流水线,自动运行大量的仿真测试(如CARLA、LGSVL等平台),测试成千上万个 corner case。
-
测试工程师分析仿真结果,并准备实车测试的脚本。
4. Sprint评审会议
-
时间: Sprint结束时。
-
参与者: 团队、PO、 stakeholders(如其他团队经理、客户代表)。
-
目的: 检视本Sprint的成果,并收集反馈。
-
实例:
-
团队在仿真器中演示:车辆在高速上巡航,导航提示2公里后有收费站,车辆在1公里处开始平滑减速,最终在收费杆前稳稳停住。
-
PO反馈:“减速过程很舒适,但能否在UI上给乘客一个明确的提示,比如‘即将减速’?”
-
系统工程师反馈:“减速的减速度值需要符合公司制定的舒适性标准,这是下个Sprint需要验证的。”
-
团队将这些反馈记录下來,PO可能会将其作为新的待办项加入产品列表。
-
5. Sprint回顾会议
-
时间: Sprint评审之后。
-
参与者: 仅Scrum团队。
-
目的: 反思团队在流程和人际协作方面如何能做得更好。
-
实例:
-
做得好的: 仿真测试效率很高,帮我们提前发现了3个重大bug。
-
待改进: 代码合并经常发生冲突,说明我们沟通不够。
-
改进措施: 从下个Sprint开始,我们实行“结对编程”来开发核心模块,并每天下午固定一个时间进行代码审查。
-
第三步:持续迭代与发布
-
Sprint 2: 目标可能是“实现安全自动变道”。团队会基于Sprint 1的代码增量,继续开发。同时,可能会将Sprint 1的功能在封闭场地的实车上进行初步验证。
-
Sprint 3...N: 不断迭代,加入“弯道调速”、“处理更复杂的交通流”等功能,并持续进行仿真-实车闭环测试。
-
发布: 智能驾驶软件的发布通常是“持续交付”模式。可能每3-4个Sprint(比如2个月),当功能达到一个稳定的、有价值的节点时,就生成一个可供整车集成的软件版本,交付给整车厂进行系统级测试和验证。
总结与关键点
通过这个实例,可以看到Scrum在智能驾驶开发中的核心优势:
-
应对不确定性: 智能驾驶算法充满未知,Scrum通过短周期迭代,快速验证想法,及时调整方向。
-
内置质量: 每个Sprint都必须产出“可工作的软件”,迫使测试(尤其是仿真测试)左移,与开发紧密结合。
-
快速反馈: 通过每日站会、Sprint评审和回顾,问题能迅速暴露和解决,避免项目后期出现颠覆性风险。
-
透明与协作: 所有成员对目标、进度和挑战一目了然,促进了算法、软件、测试、系统等不同领域专家的深度协作。
这种模式非常适合智能驾驶这种复杂、创新且对安全要求极高的软件开发领域。
更多推荐
所有评论(0)