前言:本文首发于2018年中国汽车工程学会年会,并被收录于其论文集中。
由于产品的多样性、高复杂度、快速与持续的变更需求以及日益紧密的汽车整车和零部件厂商关系,汽车领域软件工程长久以来由电控单元驱动的开发模式正逐渐转换为功能驱动,面向架构的软件合作开发模式,即电控单元的软件不再由电控单元供应商完全开发,而是与客户共同进行开发。
软件合作开发模式使得在电控单元中集成客户定制化的控制策略成为可能,这一模式有利于管理汽车E/E系统日益增长的复杂性,对产品进行灵活快速的更新和升级,同时提高软件的重用度以满足更高质量目标的要求。
随着AUTOSAR标准的不断成熟和在全世界范围内的普及,软件合作开发模式得到了前所未有的推动。由于AUTOSAR强调应用软件和硬件之间的解耦,针对电控单元软件提出了三层架构的概念,如图1所示,使得应用层软件的开发无需关注控制器硬件特点,并且能够方便地在不同整车厂,不同供应商以及不同车辆平台之间进行灵活交换,极大地推动了软件合作开发模式的应用。
图1 三层软件架构[1]
在中国,新能源汽车市场的高速发展带动了一系列新型汽车电控单元的研发,如用于对车辆动力电池进行管理的电池管理控制器,对车辆电机进行控制的电力电子单元,对车辆动力系统进行协调与控制的整车控制器。
对于这些新型的电控单元,传统汽车零部件巨头的优势相对较小,这使得国内涌现出大量相关零部件研发企业,同时国内各大整车厂也积极尝试进行自主开发,以期掌握核心技术,实现弯道超车。
为了使产品可靠性达到汽车级的要求,同时缩短开发周期,受AUTOSAR标准的启发,这些企业逐渐将研发重点从完整的电控单元软件和硬件转换为单纯的应用层软件,其余基础软件和硬件部分则向传统零部件供应商,如Bosch,Continental等公司进行采购,如图2所示。
图2 新兴电控单元研发企业开发模式变化
相对于传统的软件完全由单个组织独立开发的模式,软件合作开发模式由于涉及到两个甚至多个软件开发组织,在实际的开发过程中,必须在职责分工,开发计划,接口定义,资源规划以及软件开发环境五个方面做好统筹与协调,才有可能使项目以较高的质量如期完成,如图3所示。
图3 软件合作开发模式的五个关键要素
对于软件合作开发模式,职责分工是项目开发正式启动前首先需要明确的关键内容,它为后续一系列开发活动定义了清晰的负责人,为项目实施过程可能出现的责任问题提供了方向性指导,避免可能出现的无限质量责任,同时也有利于软件开发各方对工作量的评估,合理制定开发计划,控制开发成本。职责的划分主要从两个维度进行,一个是功能维度,一个是开发过程维度。
参考图1中AUTOSAR标准对于汽车领域电控单元软件的分层方法,功能维度的职责划分首先分为应用层软件和基础软件两部分。
对于应用层软件,不同功能的控制器之间完全不同,没有一个统一的标准,需要结合具体的控制器用途,通过各方反复沟通才能确定。对于这部分的分工,通常由客户主导,同时基础软件供应商也可以根据自己的能力,提供若干应用层组件。
对于基础软件,则可以参考AUTOSAR标准对于基础软件的划分,如图4所示,进行职责分工。对于这部分的分工,主要由基础软件的提供方主导。
通常国内的客户对于此部分不进行任何开发,完全交由基础软件供应商负责开发,而GM,VW等欧美汽车巨头大多拥有自己定制化的基础软件需求,尤其是在通信和诊断方面,这时就需要使用客户提供的基础软件组件替换自身对应的组件。
另外,对于应用层软件和基础软件的划分标准,建议各方均以AUTOSAR标准为参考进行沟通。对于AUTOSAR标准中不支持,但客户又迫切要求基础软件实现的功能,可归入到复杂驱动中进行开发。
图4 AUTOSAR标准对基础软件的划分[1]
开发流程的职责划分可以参照汽车领域内广泛应用的V模型开发过程,例如,应用层软件对于基础软件接口需求的分析由供应商负责,系统集成和验证则由客户负责组织实施。表1针对典型的软件合作开发模式,列出了开发过程维度的职责划分。
表1 软件合作开发模式中的开发过程职责定义
在软件合作开发模式中,由于应用层软件多由客户负责,台架及整车的试验也转为客户负责,这使得以往项目中控制器开发计划完全由供应商主导的模式不再适用,客户转而主导控制器的开发计划,基础软件的开发计划必须配合客户端的开发计划。在这种客户主导,多方参与的模式下,项目开发计划的制定变的更加困难,项目开发节奏更快,项目如期完成的不确定性大大增加。
为了尽可能地满足客户开发节点需求,作为基础软件供应商,其开发计划的制定必须与客户定义的整体开发计划紧密配合,同时深入分析客户需求,并结合自身经验,引导客户合理制定开发计划。针对采用软件合作开发模式的项目,典型的项目开发计划如图5所示。
图5 软件合作开发模式下的项目开发计划
这一开发计划将基础软件的开发划分为四个阶段,这四个阶段的主要开发内容如表2所示。其中前三个阶段为主体开发阶段,第四个阶段为验证优化阶段。
表2 基础软件各开发阶段内容定义
客户软件接口开发是软件合作开发模式中最主要的工作,这项工作从项目的启动一直持续到项目结束,甚至在项目批产后仍需要对接口进行持续维护,是整个项目开发过程中人力消耗最多的工作。这主要是由于以下几个特点导致:
图6 ADC转换结果读取接口典型属性
另一方面则是由于不同的项目所要求的接口不同。在具体的项目应用过程中,由于不同的客户软件架构或者功能特性的不同,对于接口的需求往往也多种多样。
例如对于常规的CAN信号接口,有些客户希望能够提供对消息帧进行解析功能,从而直接获取对应的信号值,而另外有些客户则要求提供消息帧级别的接口,对于消息帧的解析由客户自己处理。对于系统异常重启,有些客户仅要求提供异常重启原因读取接口,而有些客户则要求统计特定异常重启的发生次数。这些都使得接口的定义过程非常困难。
AUTOSAR标准的提出为参与软件合作开发的各方提供了统一的“语言”,可以有效地解决客户软件接口开发中的难题。首先,AUTOSAR标准对于接口需求的定义规定使用统一的形式(ARXML文件),大大降低了需求分析的难度和工作量。其次,AUTOSAR标准采用RTE的形式通过工具自动生成接口,基础软件供应商只需建立自身BSW接口与客户所需接口之间的映射关系,大大简化了接口的开发过程。
当然,AUTOSAR标准内容非常多,并具有很强的专业性,这对于参与软件合作开发的各方均提出了较高的能力要求,同时需要采购相应的开发工具,一定程度上增加了开发成本。
不同于消费类电子产品,受限于成本和可靠性的要求,汽车领域电控单元内部的资源往往非常有限,存储资源只有几兆字节,甚至几千字节,而CPU运行频率往往也只有几十MHz,甚至几MHz,与消费类电子动辄几GHz的频率相差甚远。在软件合作开发模式中,必需对各参与方的ECU资源使用进行管理,提前做好预算,并在开发过程中进行持续跟踪,避免出现ECU资源不足的情况。
软件合作模式中所关注的ECU资源主要有存储资源,CPU资源和堆栈资源三类,其中存储资源主要包括RAM,Flash,EEPROM等各种不同的存储介质,CPU资源主要是各个任务执行时间和周期所占整个CPU运行时间的百分比;如图7所示。在软件合作开发模式下,为了便于高效的统计和分析这些资源,在基础软件中开发相关的资源统计功能,同时开发对应的资源自动化分析工具,十分有必要。
图7 ECU资源管理对象
汽车领域电控单元的软件开发从快速原型到售后服务需要大量的开发工具,如图8所示。对于软件合作开发模式,各方使用的软件编译工具必须完全一致,其它工具则可根据实际情况由工具使用方灵活选择。
图8 电控单元软件开发典型工具
软件编译工具的选择通常由基础软件供应商决定,但在软件合作开发模式中,参与软件开发的各方为了尽可能统一自己内部的开发工具,往往也会有一定的要求,尤其是大型的软件开发组织。这使得软件编译工具的确定变得困难,对于基础软件供应商而言,为了尽可能满足不同的客户需求,必需支持多种主流的软件编译工具,这使得研发成本进一步增加。
除软件编译工具之外,其它的开发工具往往由各个软件开发组织自行决定。由于可能采用各种不同的开发工具,而不同开发工具之间界面风格,操作方法,结果输出形式等可能大不相同,这对于需求的分析与管理,软件的集成,测试结果的分析等研发活动的效率带来了较为严重影响,使得项目的开发进度更加难以掌控。
因此,在项目初期就应当对软件开发环境进行约定,尽可能在软件开发的各个环节使用一致的开发工具,对于无法统一的开发工具,要及早进行评估,确定对于项目计划和开发成本的影响。
软件合作开发模式由于涉及多个开发组织,针对软件的知识产权自然就成为一个无法回避的问题。这一问题也应当在项目初期就进行明确定义,以免后期产生争议。软件知识产权主要涉及知识产权的归属,知识产权的使用权,知识产权的保密,以及开源软件使用可能导致的知识产权侵权四方面的内容。如图9所示。
图9 软件合作开发模式中的知识产权问题
对于通过软件合作模式开发出的软件,知识产权的归属应以软件组件为单位,按照“谁开发谁拥有”原则进行划分,即客户开发的软件组件其知识产权归客户所有,而供应商拥有它所开发软件组件的知识产权。
对于软件组件的使用权,通常拥有组件知识产权的一方授予其它方非独占、临时且具有限制的权利来进行使用,例如,供应商提供的基础软件既可以给A客户,也可以给B客户等其它客户使用,使用周期通常限定为开发阶段,使用范围通常以具体项目为准。至于使用费,则取决于参与软件开发各方之间的商务合同,既可能免费,也可能收取一定的费用。
除了对软件知识产权的归属和使用权进行约定外,为了避免软件知识产权的泄露,通常参与软件合作开发的各方还可以通过目标代码而非源代码的形式进行交互,并且约定任何一方不能以任何形式公开、反汇编、反编译其它方的目标代码。这就进一步保护了各自的知识产权。不过,由于任何一方无法看到其它方提供的源代码,这种方式增加了软件集成和调试的难度。
另外,由于开源软件的使用受开源软件许可证中各种义务,风险和限制的约束,因而可能导致各种形式的商业侵权。在软件合作开发模式中,通常约定任何一方都不能在各自提供的软件中使用开源软件,以避免可能的侵权行为。
软件合作开发不仅意味着共同承担软件开发任务,还意味着共同承担责任。对于开发阶段和售后阶段出现的问题,参与软件开发的各方应当共同进行分析,以确定问题原因。对于售后阶段出现的质量缺陷的责任认定通常可以参考以下原则进行:
类似于手机软件的开发模式,软件合作开发模式将是未来汽车电控单元开发的主流模式。无论对于传统电控单元供应商还是新创电控单元控制策略开发组织,都必须对软件合作开发模式客户主导,多方参与,接口繁杂,资源受限,工具多样,责任共担的特点有深入而全面的认识,并且有一套完整的合作开发解决方案,才可能使项目开发顺利进行,达到预期目的。同时,各方应充分利用AUTOSAR这一全球标准,深入研究其在基础软件架构,应用接口和方法学方面的所制定的规范,提升自身汽车电子软件开发能力,掌握业界统一的基础软件开发“语言”,推进汽车电子软件高效、高质量地开发。
参考文献
[1]. Official website of the AUTOSAR: www.autosar.org
[2]. Juergen Cordes and Markus Zetlmeisl: AUTOSAR Gets on the Road - More and More, SAE 2012 World Congress & Exhibition.
[3]. 谭晶星等: 汽车开放系统架构 AUTOSAR 综述,2009 中国汽车工程学会年会论文集.