软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第1张图片
SamGIU:汽车背后那些看不见的软件系统是怎样诞生的?(上)​zhuanlan.zhihu.com
软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第2张图片

软件系统如何从无到有

急剧攀升的软件代码量、庞杂的总线通信导致汽车电子系统日渐复杂。根据ADAC(全德汽车俱乐部,德国最大的交通协会)统计,德国2004年有40%的车辆故障最终归咎于软件问题或电子部件故障。为此,必须在保证电子系统整体可控的前提下研发新功能,软件工程师绝不能容忍自己迷失在亲手创建的庞大系统中。正如汽车行业的那句老话:Divide et Impera!维基百科对应的中文词条将它翻译为“分而治之”。德语将这句拉丁语翻译为Teile und beherssche!,直接译为中文是拆解掌控

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第3张图片

首先,如上图所示将电子系统研发拆解为软件系统、硬件系统、传感器和执行器研发四大部分,经过V模型流程研发,最终再次集成。这个V模型涵盖了从系统层面到软件层面以及集成后的功能测试和系统测试等流程,是当今汽车行业广泛应用的开发流程。因为其形状如字母V而因此得名。下面将以下图所示的软件系统开发为例,分步骤介绍V模型。

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第4张图片
  1. 分析终端客户需求、定义逻辑系统架构

这一步是根据终端客户的需求以及法规需求定义出整车软件系统的逻辑架构。其中包含各大功能块的定义,功能块接口定义和功能块之间的通信定义。这一步仅考虑满足原始需求,不会涉及任何技术层面的具体分析。

2. 分析逻辑系统架构需求、定义技术层面系统架构

逻辑系统架构为定义具体的技术层面系统架构提供了基础。在这一步中开始讨论具体的技术问题,哪些功能将通过软件实现、软件块分装在哪些电子控制单元以及电控单元之间采用什么通信协议等等。软件系统初现雏形。

3. 分析软件需求、定义软件架构

这里开始具体到电控单元中对于软件本身的需求分析。根据需求,定义出合适的软件架构。同时,还要考虑电控单元存储资源的最优使用、为满足安全法规的冗余系统设计等等。这里,会把软件进一步细分为更小的软件部件,定义各个部件之间的接口、分层和边界。

4. 定义软件部件

针对每个软件部件会继续定义出需求。这里的需求集中在功能层面,尚不考虑具体的软件实现方式等。

5. 设计、实现及测试软件部件

依据具体的需求,工程师开始分别搭建不同的软件部件。在前面一系列的拆解、分析和定义后,终于抵达了软件最核心最具体的世界——代码。与人们熟知的程序员直接写代码稍有区别,传统的汽车软件研发采用的是基于模型开发。如下图所示,逻辑运算通过模型的方式表达出来,相比于代码更加直观,便于日后的标定工作和维护。在一个电控单元中,有上千个这样的功能函数,如下图所示的功能模型组合到一起,会形成一份上万页的文件。这份文件是接下来所有流程的基础。

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第5张图片

当然这套模型只是工程师之间便于交流的高级语言,最终它们会被人工或计算机转为代码进入控制器中工作。早年间,模型到代码中间的转换工作由人工完成。这造成的问题是,代码无法统一化和标准化。面对一个软件逻辑模型,程序员可以用多种方法完成代码编译工作,达到同样的功能效果。但是,代码运行所占用的硬件资源或严谨度会大不相同。因此,近年来转码工作逐渐被机器取代。软件工程师事先定义标准的编译规范,保证最终代码统一和标准。

每一个软件部件完成后,要进行相应的软件测试。这里还不会聚焦功能层面的测试,仅仅针对软件本身。例如软件中是否因设计不当产生死循环、每个信号定义的范围是否恰当、会不会造成溢出错误或者会不会出现除以零的运算情况等等。针对这些,工程师要事先定义测试方案,由计算机进行全方位全覆盖的软件逻辑测试。例如,对于if, else语句需要把每一种可能的情况都测试检查到。

6. 集成及测试软件部件

单一软件部件研发测试完成后,将它们集成到一起就形成了每个电控单元中完整的软件包。这套软件包在集成后依然需要测试,检查各部件之间是否兼容,是否有开放接口等等。

7. 系统集成及测试

当软件包集成测试结束,它们将被刷进每一个电子控制器中。每个控制器与相应的传感器、执行器等用线束相连,最后控制器之间接通总线通信。这样整套电子系统终于诞生。如新生儿一般,这套系统依然十分脆弱和稚嫩,还有很大的潜力等待被开发。

系统集成后的第一批测试往往是问题重重。因为系统高度复杂,各个研发部件被分工研发,即便之前有严格的测试流程,仍会有许多漏网之bug。如果分工研发的各部门之间没有在开发过程中充分交流,集成后可能会出现各类兼容性问题。针对每一个问题,工程师们都不会忘记前面提到的拆解和掌控。拆解表象问题,找到根源,修复软件bug,掌控整套系统。

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第6张图片

8. 标定

系统测试结束后将进入软件标定阶段,这也是软件开发中的重要阶段。在软件实现阶段,工程师会在软件中预留一些可标定参数而不是固定的数值,等待标定。这是基于成本考量,车型繁多的整车厂不可能为每款车型单独开发一套软件系统。一般的解决方案是研发平台软件,适用于多款车型。然而每款车型都有自己的特点,平台软件无法让这些特点发光,标定可以。通过改变不同的参数数值,可以让车辆实现不同的驾驶性能,这也给了标定工程师很大的发挥空间。

9. 系统测试及接受度测试

标定完成后,就进入了整套流程的最终阶段。依据流程一开始提出的需求,忽略那些具体的技术实现手段,站在整个系统的高度检验它是否达到了终端客户的需求。到了这一步,整套软件系统已经十分成熟。在正式进入量产前会从一个时间点开始,停止所有软件和标定变更,为最终量产做准备。

整套V模型走下来可以看到,左侧和右侧的每个环节相互对应。需求为定义测试方案提供基础,而测试结果又会带动进一步的开发和完善。

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第7张图片

你或许会问,如果从V模型的左上角好不容易一路走到右上角,结果最后一步测试发现当初第一步的系统构架出了设计问题,那岂不是为时已晚?难道还要一切重新来过?的确,软件系统十分复杂,研发周期长。如果只是沿着V模型慢慢悠悠从左到右走一遍,等最后一步才发现问题,那确实一切都来不及了。因此,在实际研发中会持续不断地集成、持续不断地测试,工程师们会把V模型从左到右重复走许多遍。

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第8张图片

研发初期连原型车都还没有的时候,软件测试会依靠整车仿真系统在计算机中进行,发动机、变速箱、电子控制器、总线等都虚拟存在于工程师电脑中(SiL, Software in the Loop)。在仿真系统中,汽车可以如真实般开动,模拟各种工况提供给工程师测试。

随着车型研发推进,某些电子控制器研发完成,他们可以取代那些虚拟的电子控制器进入测试环境,但是其他部件仍为虚拟仿真(HiL, Hardware in the Loop)。直到有一天,原型车研发完成,软件集成和测试进入试验台架。最终,原型车调试完毕落地,软件测试进入实车阶段。可以说,软件开发的起始点非常早,从虚拟到现实一路走来,一直延续到最后的量产前夕。其实目的只有一个,通过不断集成和测试,尽可能发现所有问题,保证汽车的驾驶性、舒适性和安全性。

汽车电子未来展望

毋庸置疑,汽车软件的蓬勃发展必将持续下去。电动汽车的兴起,省去了机械加工复杂且精密的发动机,汽车厂商竞争的重点从机械中转移出来。为了让产品更有吸引力更能脱颖而出,软件因为其研发的灵活性,逐渐成为厂商间新的竞技场。

展望未来,大型中央控制器将成为主流以减少分散在汽车各个角落的小型控制器,降低总线长度。另外,速度更快、带宽更大、传输信息更有效率的总线将逐渐成为行业新标准。5G通讯技术的兴起会让车联网和更加炫酷的车载娱乐成为可能,而这一切都要依靠软件的继续发展。电子控制器中的软件也将有可能在云端运行,与汽车实时互动沟通,这些都为软件工程师们打开了更广阔的空间。

而不变的是,为了让汽车能够经受住最严苛的环境考验,汽车软件工程师们将继续如极客般完成软件的标定和测试。他们冬天穿梭在零下30度的北极圈内,与极光、麋鹿、雪松为伴。夏天在滚滚热浪中,面对太阳的炙烤,坐在尚未开发完成的原型车内,将电脑与车辆相连进行测试。汽车进入紧急状态,空调失效时有发生。但这些都无法阻挡他们不断突破科技极限、创造汽车未来的决心。因为,当灯光亮起,幕布掀开,新车闪亮发布,世界为之鼓掌时,这一切努力都将显得意义非凡。

软件系统兼容性设计_汽车背后那些看不见的软件系统是怎样诞生的?(下)_第9张图片

参考文献

[1]. J. Schäuffele, T. Zurawka, Automotive Software Engineering: Grundlagen, Prozesse, Methoden und Werkzeuge effizient einsetzen (ATZ/MTZ-Fachbuch) , 5. Auflage, 2013.

[2]. S. Thiel, Petri-Netz basierte Verifikation von funktionalen Testfällen

[3]. H Richter, Elektronik und Datenkommunikation im Automobil

你可能感兴趣的:(软件系统兼容性设计)