ASPICEvsAgile,谁是自动驾驶时代答案?

汽车ECU开发 2022-08-31 08:29

开写前先唠两句,只要与开发工程师多聊两句,你就会很容易地发现,开发工程师几乎是一边倒的支持敏捷开发,笔者曾完整地参与过一次ASPICE认证项目,也在敏捷模式下进行过较长时间开发。从开发工程师的角度出发,使用敏捷进行开发的体验吊打ASPICE(或者V模型)九条街,但我们今天讨论的话题是哪种模式更适合“更快更高质量”地输出产品,而不是哪个模式对工程师更友好。那么我们就来探讨一下这两种开发模式在域控时代的适应性。

当汽车电子电器架构还处于分布式的年代,ASPICE(或V模型)可以说是唯一的答案,就没听说过哪家Tier 1或者OEM是使用敏捷去开发一个发动机控制器的。到了域控时代,新的玩家入场,开发逻辑出现不同声音,特斯拉,蔚小理等硅谷/互联网背景出身的新玩家都使用敏捷进行开发,做出来的产品用户体验确实让消费者有种“诺基亚转安卓”的感觉,难道说敏捷就有如此大的魔力?可以给软件赋予生命力?ASPICE和敏捷的差异和思路究竟在哪?

1. ASPICE:堂正之师

1.1. 简述

ASPICE的核心思想就是DRIFT(Do things right in first time),ASPICE认为:

  • 软件缺陷修复的成本是随着软件进度的开展,成倍数级提升的,BUG越早发现,成本越低;

BUG在不同阶段引入的修复成本

  • 在关键控制器上(比如动力总成的ECU),某些Bug可能是致命的(字面意义上的)且难以被发现的,因此,对代码的态度必须慎之又慎;

  • 传统的合作关系上,通常是Tier1供控制器(Turn-key or Customer-sharing),OEM集成到车上,对于软件这种无形的资产,又是闭源交付,OEM管控是很难的,唯一的监管方式就是交付物,所以ASPICE既是开发过程,也是质量证据

因此,ASPICE讲究走一条最康庄平坦的大道:

一份不偏离相关方(stakeholder)意图的工程需求---->按照意图,考虑所有corner case,基于选型芯片资源,设计考虑完备的软件架构---->将软件架构进一步细化到模块与函数级别的详细设计---->与详细设计思路一模一样的编码---->验证是否与详细设计一致的单元测试---->验证是否与软件架构设计一致的集成测试---->验证是否与软件需求一致的合格性测试。

说白了,就是:

  • V左半边:保证每一行代码都能知道是为哪一条需求服务的。

  • V右半边:保证每一行代码都在正确的实现每一条需求。

1.2. ASPICE的缺点

ASPICE统治了汽车软件这么多年,自然有他的必要性与优势,但ASPICE的缺点也非常致命:

1. 难以拥抱变化

从上文可以看出,一套V模型撸下来,都是一环套一环的,下一步的输出完全依赖上一步的输入,如果需求发生了变更,而且需求还是与原需求互斥的,那整个项目的改动量将是灾难性的。所以有些OEM的DRE可能会很疑惑,为什么看起来一个小小的CR(change request)发下去,会被Tier1告知一大笔的开发费用,甚至是拒绝?流程可能就是其中一个原因。只要代码需要变更,好嘛,相应的设计文档作废,重新设计,测试重新做……想想都头疼。而国内的项目氛围又是“最爱”拥抱变化的,hmmm……

2. 对人力消耗巨大

我贴一下SWE.3(软件详细设计与单元开发)的BP出来给大家感受一下

SWE.3 BP

随便说几个工作量大到离谱的:

  • BP3:很多时候模块间交互是很难穷尽描述的,特别是大型软件,应用层,或者高聚低耦做得没那么好的模块,在不同场景,不同条件下,都可能走不同逻辑,整个交互路径都穷举一遍是很难的,画出来的seq图也很难阅读

  • BP5:每一步的流程都要求这个,做过的dddd(懂的都懂),有DOORS相对好点,用excel去管理这玩意就是个灾难,还感觉没什么卵用

其实每个BP要求的工作量都很大,我做过大概的统计,执行ASPICE的人力需求是不执行的3倍,除此以外,就像我之前说的,这个流程既是开发流程,也是质量证据,属于监管与被监管的关系,繁重的文档任务深深的打击了工程师的积极性

2. 敏捷开发:短平快,拥抱变化

2.1. 简述

单次sprint流程

敏捷开发的核心逻辑是解构,把软件需求分解成Epic or story,通过一轮开发迭代(sprint)实现相应的功能。一轮sprint包含:需求确认->方案制定->coding->台架验证->实车验证->rolling candidate版本验证->代码合入

敏捷的优点在于:

  • 拥抱不确定性,发生需求变更,那就直接来一轮sprint,如果还不够,那就来两轮;

  • 出活快,一个sprint的迭代以周为单位;

  • 充分调动工程师积极性,(相对)轻文档,重代码;

2.2. 敏捷的缺点

说完敏捷这枚硬币的正面,下面说他的反面。

相比ASPICE或者V模型,敏捷少做的事情:

  1. 缺少统筹全局的进行软件架构设计,导致模块很难做到高类聚低耦合,比如Sprint A实现的一个功能,其底层模块其实可以被Sprint B的某个功能部分复用,但由于Sprint A没有考虑Sprint B的开发需求,所以该底层模块并不能被完全复用,Sprint B可能就要重新开发一个底层模块去覆盖他自己的需求。多轮sprint下来,可能会有重复造相似轮子的情况出现。这样会导致软件比较臃肿,代码量大,执行效率低,且代码质量不高;

  2. 缺少集成测试,导致新加的功能可能对已实现的功能有潜在的影响而不能被发现;

  3. 由于短平快的特性,很多时候单元测试也不能充分进行,比如动态单元测试;

  4. 与FUSA的流程完全不兼容。26262也好,61508也好,34590也好,都是植根于V模型,使用敏捷开发的软件,很难满足功能安全的开发要求,也无法做功能安全分析,无法做FFI。

3. 谁是自动驾驶时代答案?

两种开发流程各擅胜场,也有其出现的背景,在传统汽车时代,各个控制器没有花哨的功能,但要求软件稳定可靠,这种情况下,使用ASPICE或者V模型进行开发无疑是非常正确的。

域控时代的来临,最主要的变化有三点:

  • 功能众多:带来的变化是软件复杂度指数式上涨,相关方众多

  • 产业链合作关系改变:从一功能一盒子,由Tier1软硬件一起交付,OEM负责集成,到所有功能集中在域控,Tier1只提供底软和硬件,应用软件由Tier1,Tier2,OEM联合开发

电子电气架构演变

我的观点是:ASPICE不适合用于开发智驾域控软件,敏捷相对更合适,但必须根据汽车软件的特点,进行适配

(一家之言,如果有使用ASPICE完整开发过智驾域控到SOP的经验,非常非常欢迎留言探讨)

3.1. 为什么ASPICE不合适用于开发域控?

第一,ASPICE下对发生变更的代价是巨大的,因此需要一次把所有功能都定义,设计完美。然而在域控这种软件复杂度下,我不认为有哪个人或者团队可以在项目开发初期,就能一次把所有的需求都定到完美。不完美,后期增改功能,好嘛,又一轮完整的V迭代,所有文档改掉,软件配置管理做版本管理,恐怕需求没开发完,工程师跑一大半了。

第二,退一万步讲,就算有优秀的产品团队可以一次把所有需求缕清,肯定也需要漫长的时间,试想下,两家公司同时开始项目,使用敏捷的小步快跑,不断试错,都已经有产品在投放市场了,使用ASPICE的可能还在需求制定阶段……

3.2. 敏捷开发需要做什么适配?

敏捷开发需要克服的困难主要在于提升软件质量和满足功能安全要求。

  • 并不是用敏捷开发出来的软件架构就会松散,臃肿,而是敏捷的环境让工程师更容易输出这样的结果。所以我认为以下措施的执行能有效改善软件质量:

    • 适当延长sprint周期;

    • 严格的编码规范与培训;

    • 使用TDD(测试驱动开发)思路

    • 强大的devops能力作为技术保证;

    • 引入自动化单元检查工具;

  • 满足功能安全要求,话只有一句,其实是个悖论,因为软件功能安全=V模型开发。可能的一个解决方案,是利用26262中FFI的思路,通过前期技术规划,将软件架构分解成功能:QM(D)和功能安全软件D(D),功能分区使用敏捷开发小步快走,功能安全分区还是按V模型进行开发(思路是这么个思路,但做软件安全分析和安全架构设计需要非常小心,而且仅适用于safety goal为fail safe的域控,如果L4以上需要做fail operational的,又不能这么玩了)。


版权声明:本文为知乎FragmentedSword」的原创文章,已获作者发表许可。

推荐阅读

丰田自动驾驶系统TAD的技术细节
谈谈整车OTA系统的理解
五千字说清汽车基础软件及国产现状
带不带功能安全(IS26262)的区别,功能安全要做啥?
谈谈simulink自动代码生成
浅谈电机控制器及其功能
谈谈Bootloader自更新
电子电气架构设计需要考虑哪些方面?
汽车E/E架构的网络安全分析
电子电气架构设计需要考虑哪些方面?
深度解读汽车域控制器
自动驾驶域控制器信息梳理
深度分析整车控制域现状与发展

分享不易,恳请点个【👍】和【在看】

汽车ECU开发 专注于汽车电子ECU软件开发,技术分享。
评论
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 134浏览
  • 现在为止,我们已经完成了Purple Pi OH主板的串口调试和部分配件的连接,接下来,让我们趁热打铁,完成剩余配件的连接!注:配件连接前请断开主板所有供电,避免敏感电路损坏!1.1 耳机接口主板有一路OTMP 标准四节耳机座J6,具备进行音频输出及录音功能,接入耳机后声音将优先从耳机输出,如下图所示:1.21.2 相机接口MIPI CSI 接口如上图所示,支持OV5648 和OV8858 摄像头模组。接入摄像头模组后,使用系统相机软件打开相机拍照和录像,如下图所示:1.3 以太网接口主板有一路
    Industio_触觉智能 2025-01-20 11:04 194浏览
  • Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示,搭载瑞芯微RK3568,四核A55处理器,主频2.0Ghz,1T算力NPU;支持OpenHarmony5.0及Linux、Android等操作系统,接口丰富,开发评估快人一步!添加新账号1、使用adduser命令来添加新用户,用户名以industio为例,系统会提示设置密码以及其他信息,您可以根据需要填写或跳过,命令如下:root@id
    Industio_触觉智能 2025-01-17 14:14 145浏览
  • 数字隔离芯片是一种实现电气隔离功能的集成电路,在工业自动化、汽车电子、光伏储能与电力通信等领域的电气系统中发挥着至关重要的作用。其不仅可令高、低压系统之间相互独立,提高低压系统的抗干扰能力,同时还可确保高、低压系统之间的安全交互,使系统稳定工作,并避免操作者遭受来自高压系统的电击伤害。典型数字隔离芯片的简化原理图值得一提的是,数字隔离芯片历经多年发展,其应用范围已十分广泛,凡涉及到在高、低压系统之间进行信号传输的场景中基本都需要应用到此种芯片。那么,电气工程师在进行电路设计时到底该如何评估选择一
    华普微HOPERF 2025-01-20 16:50 122浏览
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 175浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 70浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 586浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 320浏览
  • 本文介绍瑞芯微开发板/主板Android配置APK默认开启性能模式方法,开启性能模式后,APK的CPU使用优先级会有所提高。触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。源码修改修改源码根目录下文件device/rockchip/rk3562/package_performance.xml并添加以下内容,注意"+"号为添加内容,"com.tencent.mm"为AP
    Industio_触觉智能 2025-01-17 14:09 203浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 658浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 158浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦