由于汽车行业的快速变革,新能源技术、自动/辅助驾驶技术、车联网等新新技术的不断推广和普及。越来越多的车载电控系统代替了人为的操作和决策,承担了降低驾驶复杂度、改善驾驶体验、保障安全、规避事故的职责。
传统的车载控制系统的研制方法往往是通过企业的过程管理和繁杂的测试工作来进行保障的。其本质是减少软件的缺陷,提高可靠性,从而降低控制系统失效的可能。对于对安全性有极高要求的系统,其代价往往比较昂贵,整个研发投入和研制周期都将成倍的增长。而对安全性有直接影响的缺陷并没有完全的消除、探测或防护,随着使用人数和行驶里程的增加,发生致命事故的概率也在极速增长,从偶然性变为必然性。
为此,我们需要在现有流程体系和技术方法的基础上,引入安全性保证技术和相关工具,如功能安全分析技术、形式化验证技术、防御性设计、非相似设计等等。同时,充分确保需求执行的正确性和完备性、生命周期数据的一致性和可追踪性、围绕安全性需求的活动得以正确开展等要求。ISO 26262就是相关的国际规范。
为此我们将引入ANSYS SCADE工具来支撑企业基于安全性保证技术(ISO 26262规范)的功能安全分析和高安全性软件研制体系的建设。以此来改进现有产品研发手段,确保企业在有限的投入和快速的研发周期内,能够开发出满足更高安全性要求和质量要求的产品。
1、基于ANSYS SCADE的软件工程化过程
基于SCADE的MBD研制流程与传统方式有一定的差异。如下图所示,新的研制流程主要涉及以下三个方面的不同:
1)在软件(模型)设计阶段就需要充分实现软件级需求,并基于需求对设计进行验证,并对需求进行完善(需求变更或派生需求等);
2)传统的代码级测试由模型级测试所代替;
3)软件开发活动的唯一对象为软件设计模型,模型与代码、模型与设计报告文档的一致性由工具来进行保证。
其他的研制过程,如系统设计过程、需求管理过程、配置管理过程、软硬件基础、系统集成等都不发生变化。
基于模型的软件设计过程
SCADE Suite具有数据流、状态机两种模型的搭建能力。SCADE的建模是一个软件的设计过程,包含了软件的架构设计和详细设计。所以,在建模之初需要对软件的整体架构进行规划,以模型化的方式,定义功能单元、单元间的数据关系和控制关系、合理的数据结构、公共可复用的功能和算法库。之后,才是对需求中的具体功能、算法进行设计和实现。
由于SCADE的建模机制是建立在严格的数学模型基础之上,具有严格的数学语义,它们保证了设计模型的精确性、完整性、一致性和无二义性。同时,SCADE模型在语法上天然支持多种防御性的实现机制。所以,建模规范仅需要涉及命名、复杂度、图形的布局、注释等方面的内容即可。
基于模型的软件验证过程
SCADE具备一系列图形化的测试验证工具,即可满足开发人员的调试仿真要求,也可以满足测试人员的测试要求。
在设计阶段,设计人员可以:
1) 使用SCADE Suite仿真器对控制模型进行调试,发现设计中的逻辑错误和算法错误;
2) 使用SCADE Suite形式化验证器对安全性需求进行数学化证明,无需用例就能100%证明模型功能的正确与否;
3) 使用SCADE Suite最坏运行时间、堆栈分析器,可以在早期就定量地对软件性能进行预估,获取最长的运行时间路径和针对特定CPU的最坏运行时间和堆栈使用情况,评估与目标环境的兼容性;
4) 使用SCADE模型覆盖率分析器,可以衡量测试的完备度,以及设计模型中是否含有冗余的设计。
在测试阶段,基于SCADE模型,测试人员可以使用SCADE自动化测试环境来进行软件单元测试、集成测试和代码的覆盖率测试。所能覆盖的相关工作如下:
1) 测试用例和测试场景的设计、编写与组织;
2) 单元和覆盖率测试的自动、批量执行;
3) 测试结果的图形化展示,以及测试报告的自动生成;
4) 生成可用于LDRA、RTRT、VectorCAST等测试工具的测试数据,来完成最终的真机测试。
代码自动生成
SCADE工具可以生成具有良好可读性和友好接口的标准C代码。同时,该代码具备与手写代码相当的执行效率和目标码大小。但最为关键的是,SCADE关键代码生成器通过了汽车ISO 26262、航空DO-178C、轨道EN 50128等行业最高等级的工具鉴定。从而确保了模型与代码的一致性,免除了基于代码的一切验证活动——基于模型的验证和代码生成器的鉴定是其前提和保障。从而极大的改进了传统研制流程,在更好的确保软件工程化的同时,缩短了软件的生命周期过程。
生命周期数据的管理和生成
SCADE具备与自身设计要素相关的生命周期数据管理和生成能力,如:
1)数据追踪管理
SCADE LifeCycle ALM Gateway可以与支持OSLC标准的生命周期管理工具自动对接,如DOORS、Reqtify等。以此来建立需求、设计、测试数据之间的追溯拓扑图。并借助这些生命周期管理工具生成追溯矩阵、影响分析矩阵等数据文档。
2)设计文档生成器
SCADE LifeCycle Reporter内嵌在SCADE所有产品中,能够自动生成符合DO-178C的设计文档。文档包含数据类型、常量的定义与说明。并按层次自顶向下逐个分解设计模型,并以图、表、文字的形式展现每一个模型的逻辑构成和接口定义。配以设计中所添加的注释和说明,阅读者可以很好的了解到整个设计过程和细节。
基于以上过程,SCADE可以涵盖软件开发、验证和最终产品生成的完整过程。为更好的满足实际项目的应用要求,还需要在SCADE工具基础之上,建立以下几个方面的开发理念和技术过程:
以模型为核心的研制流程
基于SCADE的软件研制过程其本质就是围绕模型来开展相关的研制活动。传统的文档化的设计、编码和对代码的测试验证都不再是软件工程师所需要重点关心的内容。所以,基于SCADE或者说基于模型的开发方法在实际项目中得以良好应用的前提就是:以模型为核心来进行软件研制生命周期的所有活动。所有的配置、变更管理都需要以模型为基础,文档和代码都是模型的产物。
同时,基于模型的方法,在设计阶段就能够进行软件功能逻辑算法的实现,这就要求其输入——需求足够详细。所以,基于模型的软件研制方法和需求工程是相辅相成的。实际项目研制过程中,需要先具备一个相对完整、详细的软件需求。在架构设计和详细设计过程中对需求进行不断的完善,同时需要补充由于架构和实现方面的考虑而增加需求或未明确定义的需求,即派生需求,如库函数的要求、特定精度要求的算法、鲁棒性需求等。
设计标准
与传统方法一样,在基于模型的方法中,模型是日后走查、维护、复用的唯一对象。按照统一的规则去搭建模型对企业知识的积累百度排名和复用是非常有利的,设计标准的定义是开展正式研制活动的前提。由于SCADE在高安全性嵌入式软件的开发方面天然具备了增强软件质量、增加可读性/可维护性的要素,如强类型、边界检查、无递归、无内存操作等等。所以,基于SCADE的建模规范主要着眼于复杂度的限制、命名规则的限制、协同管理的考虑、验证策略的考虑、复用性、鲁棒性等。在初次使用SCADE工具进行项目的研制活动时,可以把编码规范和基于文档的设计规范作为模型设计规范撰写的输入。
分层设计
软件应用层与硬件和操作系统的直接耦合降低了软件的复用度,同时也无法在宿主机上对软件应用层进行充分的测试,增加了软件研制的难度和周期。SCADE的建模元素与硬件和操作系统无关,基于SCADE的实现是软件应用层的实现。所以,在进行软件架构设计时,就需要引入分层的概念,将访问操作系统接口、操纵硬件驱动接口、通讯的实现与应用层的实现进行解耦。只有这样才能在集成阶段和测试阶段充分利用SCADE的优势,在宿主机上进行充分的验证,并提高SCADE模型的复用度。
模型库的建设
模型最大的优势之一就是模块化,模块化的核心并不是一个个功能块的独立展现,而是通过减少功能间的数据耦合和控制耦合来达到功能的最大复用。这就需要对功能模块进行解耦,以数据接口的方式来传递模块间的调用关系。SCADE没有全局变量的概念,所有模块间的交互都是以数据流的传递为基础的。所以,SCADE对于提高功能模块的复用具备天然的优势,在SCADE中很容易对通用的功能进行提炼,形成通用的功能库和算法库。
为加快研制进度、提高复用度,在项目实施的早期,基于原有项目的经验,进行通用模型库的建设是有必要的。同时,在项目进行中也需要不断的去完善通用模型库的建设。另外,基于SCADE的库模型,并不是一个个孤立的功能实现。而是需要有相关的需求和测试数据的支撑,只有这样才能在后续项目中充分评估其可复用度,以及对其进行最大程度的复用。在SCADE中,设计数据、测试数据和与需求的追踪数据都包含在了一个工程内。
2、行业规范与标准的支持
ANSYS工具方案很好的支持了现有汽车行业的规范与标准,至上而下的满足流程要求、技术要求和审定要求,极大的简化了符合规范所带来的额外工作和投入。
ISO26262标准的支持
SCADE可以很好满足ISO26262标准中对于功能安全分析、系统设计、软件开发的技术要求:
1)支持ISO 26262标准的功能安全开发全流程,如项目定义、HARA分析、 ASIL等级确定、安全目标分析、安全需求定义和管理、基于系统架构的ASIL等级分配、失效模式及影响分析(FMEA)、硬件指标计算、兼容多种(如SN29500、MIL HDBK 217F、IEC62380等)可靠性预计模型、故障树的定性和定量分析、数据的跟踪管理等过程。
2)支持ISO 26262标准的系统设计和软件开发过程,如用户需求分析、功能开发、架构设计、安全性需求到系统架构的分配等系统设计过程,以及软件架构设计、软件详细设计、编码实现、软件集成、单元与集成测试等软件开发过程中关于设计准则、编码准则、验证要求和生命周期数据管理的技术和流程要求。可以很好的满足ASIL C和D级的软件开发。
3)代码生成器通过了TUV对于ISO 26262中TCL 3级工具的鉴定要求,直接满足ASIL C、D级软件的开发。
AutoSAR标准的支持
ANSYS工具对AutoSAR标准的支持主要涵盖电子电器系统的架构设计和软件开发两个阶段的工作:
1)SCADE Architect提供的汽车行业包包含了满足AUTOSAR标准中软件组件模板的元模型描述,包括SWC类型、接口、计算方法、数据常量、模式管理、数据原型、数据类型、行为、事件等元模型。据此能够支持VFB和RTE级的系统描述。同时,工具还支持标准ARXML文件的导入导出,方便不同层级的系统设计工作的协同。
2)SCADE Architect中与SWC(软件组件)相关的系统描述可以同步到SCADE Suite中进行后续SWC行为的开发。同时,SCADE Suite提供了定点数的定义和相关的计算操作。之后,基于该系统描述可以自动生成SWC和RTE(运行时环境层)间的接口代码,可直接用于后续的软件集成。
ASAM MCD-2 DC软件标定和测量标准的支持
SCADE Suite支持基于ASAM MCD-2 DC标准的软件标定和测量。通过在设计模型中指定需要标定测量的数据(如输出、探针、全局传感器等),设置校准矢量、测量类变量、标定类变量等参数。在进行代码生成时,可以同时生成ECU描述文件A2L。
支持MESIR C的编码标准
SCADE Suite能够自动生成标准C代码,代码符合MISRA-C:2004标准,并提供了完整的符合性分析报告。该报告覆盖了所有SCADE Suite所生成代码的语言子集。
3、SCADE国内外典型应用
SCADE是业内领先的面向高安全性的集成软件开发环境,通过采用scade语言和统一的形式化语义,可实现基于模型的设计、仿真、验证、认证级代码生成以及与其他开发工具和平台的交互。
SCADE软件具备完善的工具环境支撑MBD的软件开发过程,优化开发过程,提升软件质量,遵循SCADE的软件研制流程,可以极大的提高软件的安全性,减少设计缺陷。
目前,ANSYS SCADE多应用于高安全性车载电子电器系统的开发中,如ADAS、BMS等ASIL等级为C或D的系统和软件。目前,通用汽车、大众、戴姆勒、宝马、雷诺、奥迪、国能汽车、沃尔沃卡车、尼桑、博格华纳、马自达、德尔福等等整车厂和零部件供应商正给予ANSYS的工具方案进行功能安全分析、系统仿真与嵌入式软件开发的相关工作。
Magna——建立新能源车的功能安全开发流程
新能源是一个全新领域,需在原有开发流程基础上引入符合ISO26262标准的功能安全开发流程。需采用标准的功能安全分析方法、工作产品模板等,同时需考虑电动车特有的安全属性。辅助Magna公司制定标准的开发流程和工作产品模板,形成规范的工作产品。
Subaru——混合动力汽车管理系统的开发
日本富士重工(斯巴鲁)基于ANSYS MBD的工具和方法进行混合动力汽车管理系统(EBU, Electric Brain Unit, 包括发动机、传动、电机和电池管理)和纯电动汽车项目的开发。基于ANSYS SCADE斯巴鲁的工程师搭建了满足AutoSAR标准的软件安全架构、进行了模型级的设计与验证工作,ANSYS SCADE认证级的代码生成器免去了对自动生成代码的测试工作。在极短的项目周期内完成了大量复杂控制应用的开发和验证工作,并很好的满足了ISO26262的审定要求。
NEVS——纯电动汽车电池管理系统的沈阳网页设计开发
电池管理系统(BMS)在纯电动汽车中扮演着越来越重要的角色。BMS监控着电池的状态,管理着电池的操作,从而优化整车的性能和电池的寿命,确保乘客的安全。瑞典国能电动汽车基于ANSYS Suite开发下一代电池管理系统。通过实际使用,整个项目的开发效率提高了30%,完全替代了传统的手工编码和模型结合的开发方式,更容易满足ISO26262的软件开发要求。