一、前言
汽车自诞生之日起,经过多次巨大发展变革,而且这种趋势仍将持续。
2007年,德国慕尼黑工业大学的Alexander Pretschner教授、Manfred Broy教授等概述了汽车系统软件开发的主要趋势,预测汽车软件体量将会出现指数增长的趋势。
直到现在,这个结论仍然适用于汽车软件的发展,在2007年汽车软件的大小以兆字节计算,而到了今天,已经到了几千兆甚至万兆字节计算了,代码行数处于亿条数量级。
一辆当代汽车想要工作,已经很难离开嵌入汽车的电子器件中的软件作用,汽车软件随着时间不断演变,开发方法也应该需要与时俱进的改变,否则按照上个世纪代码开发的方式,在今天手指打断都可能完成不了任务。
回头看汽车电子的发展里程,一些重大技术变革正在悄然发生变化,现代汽车已经成为了复杂的计算平台,可以实现多种多样的功能(车用动力也已经从内燃机转变为电驱动或复合动力技术)。
二、汽车软件系统的发展趋势
1、软件差异性
现代汽车中的软件功能分布在各个不同的域中,这些域包括从与安全高度相关的主动安全功能,到以客户体验为中心的车载娱乐系统,软件的需求定义、设计、设计实现、验证和确认的方式都因为域的不同而产生差异。
2、软件分布化
目前汽车软件系统由众多不同ECU组成,每个ECU都有自己的软件,一个功能的实现往往需要依赖多个软件的协调。随着ECU和功能的增多,软件间协调将变更的更加困难,系统的复杂性也不断的增加。
3、软件变体和配置
因汽车市场的高度竞争性以及各大车企的全球化战略,同一车型需要根据不同国家和不同用户习惯设计出多款客户化变体,现代汽车的软件开发阶段就需要考虑不同国家的法规和认证的要求,在源代码和运行过程中需要全方位的考虑各种变体,来增加效率。
4、基于单位成本模型
激烈的市场竞争意味着,车企制定的单车价格不能太高,因此车企的优化硬件和软件设计的思路往往是将单位成本保持在低水平。但随着功能的复杂化,这条规律可能被打破。
5、工作分配方式
功能种类的愈加多样性,可能导致整车软件系统分域,并将域的开发任务在OEM与软件产品供应之间分配,可能软件产品供应商在软件功能上承担更多的责任,而OEM可能把资源整合,整车装配的道路走的更远;
极有可能发生的情况是一辆现代汽车,它可以满足除了生孩子之外的所有功能。
6、车辆互联与协作
车辆逐渐具备了利用移动网络享有互联网功能,使得车辆之间的彼此连接、车辆从交通基础设置得到并利用信息进行决策成为可能。
7、自动驾驶功能
车辆从驾驶员手中接管制动、转向等驾驶任务,自动驾驶的场景十分具有挑战性,车辆必须精确对行驶车辆周边的物理环境进行感知、决策等任务,因此车辆需要处理更多数据、具备更多的决策点,以及相应的,采用更复杂的都算法。
三、汽车软件架构是什么?
软件架构是汽车软件设计的基础,作为一种高层设计视图,由软件系统的多种视图共同组成。
软件架构是一个软件产品成功的基石,在汽车行业更是如此;
一般来说,系统越庞大,研发人员越难确保其功能、子系统、组件和模块的整体高质量,在汽车软件设计中更是如此,以软件嵌入汽车时的安全问题或软件的分配的问题为例,软件计算节点在物理层面的分配,软件研发任务在OEM和供应商之间的分配都是巨大的挑战。
软件架构的设计开始于受到产品设计的第一条需求,直到产品的最后一个缺陷修复完成后结束。
软件架构指的是软件系统的高层结构、创建这些结构的原则,及对这些结构的文档记录,这些结构可以被用来推导整个软件系统。
1、使用高层结构来作为软件架构的描述
a.软件组件/块,根据逻辑结构被打包到若干子系统和组件中的一段软件,b.硬件组件/ECU,软件执行所使用的计算系统或平台的设计原件,c.功能模块,从功能角度来进行描述软件的逻辑设计要素,分布在软件组件/块中。
2、使用创建结构的原则来作为软件架构的描述
该原则指负责软件架构工程师为设定开发场景所作的决策,例如,定义系统中应该包含哪些组件、每个组件应具备哪些功能,及组件间的通信。
以软件耦合这个例子来说明下原则,当考虑某两个组件之间的通信,其中一个组件是玻璃刮水器控制器,另一个实际刮水器的小型执行电动机硬件接口,
以上图为例,两个块之间的连线从控制器指向刮水执行器的硬件接口。标识通信智能单向发生,控制器发送信号到硬件接口。
控制发送信号但是接收不到信号,执行器无法发送是否完成任务的信号给控制器,该种情况可能会对后续的工作造成影响,在某个功能强行条件下,必须增加总线来获取执行电机硬件接口的状态。
当然也可以设置系统进行双向通信,解决了从硬件接口组件获取相关状态的问题,但另一个问题是控制器和硬件接口的紧耦合,这意味着两个组件中一个发生变化,另一个也会发生相应变化。
以上要素和其他要素共同组成汽车电气系统和软件系统。
四、汽车软件架构的发展趋势
软件的演变一方面意味着我们需要更多代码实现新的功能,另一方面也意味着我们可以使用更先进的软件开发方法。
目前正在重塑汽车软件工程有以下几个方面,
1、大数据
现代汽车的互联通信能力以及在决策中引用传感器信息的能力导致了车内数据量呈指数增长,因此需要不断进化以应对存储、分析和处理大数据的挑战。
大数据系统通常被认为具备以下5种特征,即所谓的5V,
大量(Volume),大数据系统拥有大量的数据(可能达到TB或PB级别),多样(Variety),数据来自多样化的数据源,具有不同格式和多个语义模型(不同感知器得到的信息,激光雷达和视觉摄像头等),
高速(Velocity),数据获取速度极快,需要实时处理(从多个车内传感器获取数据并使用这些数据做出决策),
价值(Value),收集到的数据具有一定商业价值,会给存储隐私等带来挑战(车辆行驶路径数据,共享汽车或自动驾驶出租车可能收集到个人所有的信息,包括生活习性、取向等等),
准确性(Veracity),具有不同质量等级,在信息准确性和可信度上,数据准确性的差异会给现代汽车带来巨大挑战。
大量的来自车辆自身传感器的数据需要被处理并通常存储起来,高速处理需要更高的处理功率、更高效的处理器以及更好的连接能力,由于汽车环境的更恶劣,对上述的要求会更高。
硬件价格对于汽车行业非常重要,按照以往经验,每个ECU增加1块钱的成本,可能会导致汽车总成本增加100块。
大数据在车辆上的应用,是自动驾驶等先进算法得以实现的基石。
2、自动驾驶
自动驾驶技术会增加软件的复杂性,这是毫无疑问的,但这个复杂性不仅仅指的是软件本身或其中算法的复杂,在软件、检查、验证和认证的成本也在增加。
自动驾驶属于安全关键功能,其本身要求特殊的验证工作,此外自动驾驶还需要在非常抽象的层面上进行交通情景的复杂推导(自动驾驶悖论)。
自动驾驶功能推动了大数据处理,从而催生了现代汽车对计算能力的要求。强大的计算处理能力必须依靠高效的CPU及高通量电子总线来保证,而CPU和电子总线性能又易受到车辆自身的振动、湿度、环境温度等因素的影响,又进一步需要一些先进的设备来保障。
自动驾驶方案的不同方案可能导致软件架构形式,以上图为例,采用顺序规划是通过感知和决策模块为规划和控制模块提供输入;行为感知规划则是将决策和规划集成为一个模块;
而端到端的规划则是省略了所有模块,用一个网络实现了所有的功能。
3、自主系统
具有自我修复或自适应系统,或者可以自己“思考”的聪明汽车就目前来说不再是遥不可及的事情。
自修复(Self-Healing)是系统为保持行为不变而主动改变其架构的能力,美国国防高级研究计划局的Keromytis将自我修复定义为从错误执行中主动恢复的能力。
自修复系统最突出的一个机制是MAPE - K,即测量(Measure)、分析(Analyse)、计划(Plan)、执行(Execute)、知识(Knowledge),
以上图所示的监督自适应循环算法是否正确执行的算法为例,在该例中,可以监督雷达的活动范围确保探测结果可靠,分析组件检测是否检测到某种失效情况,并向计划组件发送信号,再根据信号读取和分析,计划适当行动。
一旦组件做出修复策略的举的那个,执行组件开始执行修复任务(通知使用者并禁用自适应巡航功能)。
在安全关键系统中,使用自适应机制的趋势上升,因为该机制允许在出现错误和故障时,临时改变组件的运行,让系统具备功能主动降级的能力。
然而自适应机制想符合汽车系统的要求,必须证明自适应工作的过程是符合在ISO 26262标准的。
4、新的软件工程范式
新的软件工程方法影响汽车系统软件的开发方式,引领着汽车工业的发展步伐。
在汽车软件工程中,大家对可追溯性的关注度越来越高,汽车软件的规模不断增加,并越来越多出现在安全系统中,需要更为严格的流程对安全关键系统的需求进行追溯,更为复杂的软件模块势必需要颗粒度更小的追溯管理流程来保证。
同时,对非功能属性的关注度加强,车内通信总线的通信量以及容量增加对软件的数据同步和校验能力提出了更高的要求。
此外,对安全需求的关注度加强,车辆越来越多的和外界互联,更易受到黑客的攻击;想想你驾驶汽车行驶在高速公路上,之前你的仇家想要解决你需要在你的汽车上安装一颗炸弹,现在仅仅需要在电脑上按一下回车键。
软件架构的开发通常由经验丰富的架构师来完成,且产品越复杂,对经验要求越高。由于每种系统都有其独特的需求,架构设计需要有特殊的关注点,必需实时性或可拓展性等,在汽车领域,安全性是主要关注点。
敏捷软件开发在除汽车外的其他领域已经得到了广泛应用,目前在汽车领域也正在不断普及,特别在V模型开发的中间环节,供应商正在越来越多地使用敏捷方法进行需求工程和软件开发,并逐渐扩展到整个车辆的开发过程。
在汽车电子行业正在集成越来越多的商业成品组件的趋势下,在未来或许可能需要软件工程师们具备更强的需求定义和软件开发能力。
五、总结
从最近的小米造车、华为、百度入局自动驾驶等消息来看,除了大量资本从房地产行业流出涌入汽车行业这个可能之外,是不是有一种可能,未来汽车将会作为一个计算平台,不同的第三方公司基于计算平台构建应用软件。
就如今天的Android和IOS移动操作系统为例,认证通过的软件公司,将符合安全标准的软件上传到商城,大家挑选符合心意的软件OTA到自己的车上。这种可能性的发生可能改变未来汽车工业的面貌,商品化平台和供应商在应用程序间的可移植性将使得汽车更加安全,也更加有趣。
meko@mekorp.com
Tel: +86-512-57176128
Fax:+86-512-57176129