汽车软件开发流程介绍

在汽车软件开发中,软件开发流程是软件工程的核心,因为它们为软件开发实践“提供了一个骨架并确保了它的严谨性”。软件开发的流程包含“阶段”“活动”和“任务”三个要素,它们规定了参与者需要完成的工作。不同的参与者在软件开发过程中扮演着不同的角色,例如软件设计者、软件架构师、项目经理或质量经理等。

(1)需求工程(requirementsengineering):该阶段用于创建有关软件功能的设想并将设想分解为多个需求(关于“应该实现什么”的碎片化信息)。

(2)软件分析(softwareanalysis):该阶段用于执行系统分析,做出关于将功能分配到系统中不同部分的高层级逻辑决策。

(3)软件架构设计(softwarearchitecting):该阶段软件架构师将描述软件及其组件的高层设计,并将这些组件分配至相应的计算节点(ECU)。

(4)软件设计(softwaredesign):该阶段用于软件各组件的详细设计。

(6)测试(testing):该阶段,软件以多种方式被测试,例如单元测试或组件测试等。

基于V模式的开发流程

现代软件开发范式认为,设计、实施和测试的迭代进行是最好的实践,因此上述阶段通常是并行完成的,具体到汽车行业,则普遍采用V模式开发。该流程的特点是无论进行开发、编程或测试,总是在同一环境下工作,开发过程的每一步都可以得到验证。使用这一方法最直接的效果就是加速和简化了开发流程,这样,技术人员可以快速地把自己的思想变成现实并可以尽早消除错误。

V模式的开发流程如图1所示,包括:功能设计及控制方案设计——快速控制原型——代码自动生成——硬件在环仿真——系统集成测试/标定,构成了从功能设计、软件编程、可靠性测试到标定的汽车电控系统开发一体化解决方案。其中的每一个开发步骤都在计算机辅助控制系统设计工具的支持下,大大加快了开发的速度,并且整个过程建立在一个完整的开发环境中,实现了各个步骤间快速、平滑的过渡。

图1V模式的开发流程

V模式开发流程的具体步骤包括:

(1)需求定义与功能设计。根据系统的功能要求在MATLAB/Simulink等环境下进行图形化建模,建立控制器模型和被控对象模型,并进行离线仿真和分析。这一过程也称为模型在回路(modelintheloop,MIL)。

(2)快速控制原型(rapidcontrolprototype,RCP)。建立实时仿真模型,并下载到原型系统中,接入实际被控对象进行测试,以验证控制系统软硬件方案的可行性。

(3)目标代码生成。采用产品代码生成软件对模型进行转换,自动生成产品代码。这个过程可以针对特定ECU进行代码优化。

(4)硬件在环(hardwareintheloop,HIL)。采用真实控制器,被控对象或者系统运行环境部分采用实际物体、部分采用仿真模型来模拟,进行整个系统的仿真测试。

(5)测试与标定。用于在系统集成中对ECU进行标定和测试,在便利的情况下对ECU进行必要的参数调整。

V模式的开发方式相对于传统ECU的开发过程有许多优点,它是一种基于模型的开发过程,所有控制策略与发动机仿真模型都是利用框图化的基本模块建立起来的。

首先由系统工程师进行功能的开发和建模,并进行系统设计,生产快速原型;接着需要软件工程师进行软件开发,将建好的模型转换成机器代码,并将其写入ECU;随后由软件工程师和硬件工程师依次进行软件测试、系统测试、标定及功能测试;最后需要匹配工程师在真实的汽车上对ECU测试,并将出现的问题反馈给开发部门重新修改,反复进行。

在整个ECU开发过程中,开发工具起到重要的作用。目前广泛采用自动代码生成技术可把框图模型直接生成可执行的代码,在专门设计的硬件平台上对控制功能及发动机进行仿真。同时模型化的控制算法也可直接生成目标ECU代码。V模式的开发方式大大缩短了ECU的开发周期,节约了开发成本,并能保证代码的高质量和控制系统的可靠性,同时为未来新的控制功能设计提供了图形化的接口平台。

基于ASPICE的开发流程

ASPICE,全称“AutomotiveSoftwareProcessImprovementandCapacityDetermination”,汽车软件过程改进及能力评定,在当前的汽车行业中有着十分广泛的应用,主要就是对软件开发团队所具备的研发能力水平进行评价的一种模型框架。这一评价模型及框架最早出现在2005年,是由欧洲的二十多家主要的汽车制造商共同制定并且发布的,其主要目的就是在汽车零部件厂进行软件开发流程的过程中给予其适当指导,从而使汽车软件研发质量可以得到有效改善,使汽车软件开发可以得到满意效果,并且这一模型框架在实际实践中的应用也越来越广泛。

图2ASPICE框架

图3ASPICE开发流程

依据上文中对Aspice体系的分析,可以以Aspice体系为基础进行汽车软件开发流程的设计,使汽车软件的开发得以更合理进行,从而使汽车软件开发可以获得比较满意的成果,其具体流程如下:

1)汽车软件开发需求的获取及分析

在进行软件开发设计之前,需要软件开发企业及开发设计人员由客户处得到客户需求,并且要确定这些需求能够被正确理解,对于这些经过定义的客户需求,将其转变成为系统需求,主要作用就是对系统设计进行指导。

2)系统架构设计

3)软件需求分析

对于系统需求中的有关部分,将其转变成为软件需求。

4)软件架构设计

功能安全开发流程

随着世界范围内汽车电气化不断深入,车辆的集成度和复杂性越来越高,为了保证复杂系统下汽车的安全性,国际标准化组织ISO针对汽车功能安全发布了《道路车辆功能安全标准———ISO26262》标准,旨在提高汽车的安全性。

图4ISO26262标准体系

安全生命周期是ISO26262定义的一个重要概念,完整的一个周期需包括3个阶段:概念阶段、开发阶段和量产阶段,见图5。ISO26262覆盖了从对象构思、设计、开发、生产直到使用寿命结束的整个生命周期,每个阶段都分别有相应的子标准来管理。在产品开发流程之外,并行地进行以功能安全作为开发对象覆盖整个生命周期的功能安全流程,这是ISO26262一个重要的和核心的概念。

图5安全生命周期概念

功能完整性等级ASIL:在ISO26262中所有影响系统功能安全的风险都应该被辨别和确认,对于所有可能影响功能安全的风险,需要执行风险辨别和持续安全改进,风险评估的主要手段是确定“功能安全完整等级”,可以通过3个指标:“严重性”,“发生概率”,以及“可控性”,来进行量化评估,作为后续阶段流程的输入。严重性:S0~S3,代表对驾驶员及乘客可能造成伤害的级别;S0代表没有伤害,S3则代表致命伤害。发生率:E0~E4,代表这个风险在实际应用环境中发生的概率;E0代表不可能发生,E4代表常见的。可控性:C0~C3,代表这个风险发生后人员依旧采取措施控制并避免伤害的能力;C0是总是可控,C3代表很难或无法控制。在上面3个参数确定了以后,可以参考ISO26262的ASIL分级矩阵来确定每个风险的ASIL等级。其中,QM代表不需要特别的功能安全流程,只需要正常的质量管理就可以。

部分危害事件的ASIL的评级以及为其分配的安全目标如表1所述

ASIL级别A、B、C、D,越高代表着风险越大,该风险越不可容忍。在开发中一些常用的降低风险的手段有:质保体系(文档化,流程,认证)、校验方法(方法设计,测试)、安全验证分析(失效分析,故障树分析,失效率)以及可靠性分析(工具,零件,人员)。

ISO26262-3到26262-10给出了一个功能安全的流程,如图6所示,从概念阶段到产品开发,再到SOP后阶段。如果对于研发公司来说,SOP后阶段可以不考虑。

图6功能安全流程

1)项目定义

项目定义的主要作用是定义和描述该系统,主要包括对该系统的初始架构、操作模式以及该系统的主要功能的描述。

在进行功能安全项目定义之前,研发人员可以参考一些以下文档,以对系统有一个初步的、充分的了解。主要包括:

1)新能源汽车市场的研究报告;

3)电池和电池管理系统的技术报告;

除此之外还需明确,此BMS是为总质量不超过3.5t的电动汽车设计的;且该车辆应该行驶在常规的场景,包括高速公路,城市道路,乡村道路等。通常情况下极端环境下如温度低于-40的情况下,该车辆是不适宜的。需要供应商提供电池的信息参数,例如电池额定容量,充放电截止电压,标准充放电工作电流等。此外,还需要与电池供应商确定好电池的安全的工作电压、温度以及电流工作区间,以便后期开发过程设定电池的故障阈值。

2)安全周期初始化

3)危害分析和风险评估

危害分析和风险评估(Hazardanalysisandriskassessment,HARA)的作用是通过系统性分析,对危害事件进行评估,从而规避不合理的风险。HARA的主要流程如图7所示。HARA过程中首先需要做的是基于系统定义中得到的BMS的主要功能得出失效功能(Malfunction,MF)。此过程可以借助头脑风暴的形式确定该系统的失效功能,缺点是可能存在遗漏的情况。目前较为常见的方式借鉴HAZOP分析中的“关键字”法进行失效功能的确定。通过“主功能+关键字”的形式,可以有效地得到该系统的失效功能并进行后续的HARA分析。常见的关键字包括“Loss”,“More”,“Less”,“Reverse”,“Unintended”,“Stuck”等。

图7危害分析和风险评估流程

4)功能安全概念

如果说概念阶段的项目定义、安全目标等安全活动与传统的开发流程相差甚远,研发人员对其较为陌生的话,那么功能安全需求则显得相对友好。在功能安全活动中,功能安全需求(FunctionalSafetyRequirement,FSR)是从安全目标推导出来的,实际上,我们可以将其等价于“用户安全需求”,根据定义好的需求,我们便可以进行后续的系统,软件与硬件阶段的设计。

按照“检测信号-确认故障-进入安全状态”的方式进行推导。

ISO26262中规定,每一个安全目标下至少有一个FSR,且FSR是可以共用于多个安全目标的。作为功能安全中一个重要的属性,FSR的ASIL等级是继承自该需求所属的安全目标的,如果该FSR属于多个安全目标,那么FSR的ASIL等级取多个安全目标的ASIL等级的最高值。如果说某一FSR可以分解为两个独立的需求,那么相应的ASIL等级也会进行分解,从而可以降低后续活动中该条需求的开发与验证难度。

借助V字型开发流程,可以将功能安全过程与ASPICE结合起来,如图8所示,这对产品开发有很大的帮助。

THE END
1.软件开发,一定要有这5个流程!软件开发流程互联网时代,软件开发越来越火热,不少企业会通过软件区拓展自己的业务和服务。不过大多数企业没有专属的开发团队,想要开发一个软件,需要怎么做?有什么流程? 如果你甚少接触软件开发这个行业,那么今天这篇文章,一定能帮你解答疑惑。 从定义上来说,软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程,是一项https://blog.csdn.net/qq_32885471/article/details/139356948
2.软件项目开发工作流程下面将以八个阶段的方式来介绍软件项目开发的工作流程。 1.需求调研与分析阶段 在这个阶段,项目团队与客户进行沟通,了解项目的背景、需求和目标。团队成员需要通过会议、问卷调查等方式,详细了解客户的期望。然后,对需求进行分析和整理,制定需求文档。 2.概要设计阶段 在这个阶段,团队根据需求文档,进行系统的总体设计,https://wenku.baidu.com/view/73165817d9ef5ef7ba0d4a7302768e9950e76e38.html
3.软件开发项目流程这张思维导图介绍了通用web软件开发项目的流程 亿图脑图MindMaster原创思维导图社区提供海量优质的思维导图模板资源,一个各类脑图创意思维绘制,整理知识学习与交流的平台 - 用思维导图来表述软件开发项目流程https://mm.edrawsoft.cn/template/221169
4.软件开发项目管理流程大家好,今天小编来为大家解答软件开发项目管理流程这个问题,软件项目管理流程是什么很多人还不知道,现在让我们一起来看看吧! 一、软件项目的管理流程 导语:关于软件项目的管理流程,相关人员来了解一下吧。下面是我收集整理的软件项目管理流程,供各位阅读和参考。 https://www.zhikuzx.com/zixun-66242.html
5.程序员一定要会的软件项目管理评估方案,不做只会敲代码的码农软件项目管理是通过计划、组织和控制等一系列活动,合理地配置和使用各种资源,以达到既定目标的过程,是在软件开发过程中,对开发工作进行全方位评估的有效措施。 Hello!我是灰小猿,一个有故事、爱分享、没技术的程序猿, 今天大灰狼来和大家聊聊除了软件编码,在软件项目管理阶段所需要进行哪些工作。提前祝大家从技术佬晋升https://cloud.tencent.com/developer/article/1702820
6.软件项目验收流程及方案范文三篇软件项目验收流程及方案范文三篇 软件项目验收流程应该包括包含验收测试的软件项目迭代过程,再按照一定标准进行检验而后收下或认可逐项验收。下面是 小编为大家收集整理的软件项目验收流程及方案范文。希望可以帮助大家。 软件项目验收流程及方案范文一 良好的软件测试方法可以确保软件项 http://www.360doc.com/document/24/0925/08/79930059_1134960037.shtml
7.软件开发的全流程介绍软件开发流程是指从构思软件产品到最终交付给用户的一系列步骤。不同的软件开发方法会有不同的流程,但大多数流程都会包含以下几个主要阶段 项目洽谈:与客户沟通评估、立项、收集需求、整理需求、评价工期、签订合同 原型策划:交互设计、原型demo (客户确认) UI设计https://maimai.cn/article/detail?fid=1848189467&efid=ipNp7YeKfW42PPfn3EoCRw
8.软件开发项目启动标准化流程(项目启动)全套.docx1.1描述项目启动的主要流程,指导项目启动阶段的活动安排,为项目规划做好充分准备。 2适用范围 2.1机构 开发中心。 2.2业务 项目(研发项目和合同项目)启动涉及的各项活动。 3名词术语 3.1?项目:指软件类项目或综合集成类(包含软件的集成)项目。 3.2?合同项目:指通过投标获得的项目。 https://max.book118.com/html/2023/1206/7010106105006014.shtm
9.软件开发流程同时应当考虑在开发过程中可能出现的变化情况,制定需求变更计划随时应对特殊情况的发生,保证软件开发流程的顺畅进行。怎么样写好需求很关键,如何学会进行需求开发可以去看下经典的《需求工程》这个翻译的书,不是很厚,但需要能理解为什么那样做更好,这个需要实践经验锻炼自己。如果有项目成员,可以一起做需求,这个阶段对于http://www.xincongrong.com/xincongrong/vip_doc/20061054.html
10.科研研发项目管理软件(IPD产品研发PLM全生命周期管理系统)验收鉴定、成果申报、科技推广、档案入卷的全过程研发项目管理平台,实现产品研发项目从市场规划、需求收集、项目立项、制定计划、设计开发、研制生产与测试、包装上市、产品线管理及交付、问题解决及售后的(IPD)产品研发管理系统,落地科研项目“标准的沉淀与优化、组织流程的优化及管理水平的提升、内外部资源整合的延伸”http://www.huatengsoft.com.cn/product/270keyan
11.软件设计师一篇文章让你读懂什么是软件工程与系统开发需求工程是一个闭环过程,它需要不断地与用户进行沟通和反馈,以确保软件需求的准确性和完整性。同时,需求工程还需要在软件开发过程中进行持续的需求验证和确认,以确保软件开发的进展与用户需求的实现保持一致。 软件开发项目管理 软件开发项目管理是为了确保软件开发过程中的各项工作能够按照计划和要求顺利进行而进行https://developer.aliyun.com/article/1515202
12.软件开发需要学什么软件开发流程介绍→MAIGOO知识5、软件维护工具:包括理解工具(如可视化工具)和再造工具(如重构工具)。 6、软件配置管理工具:包括追踪工具、版本管理工具和发布工具。 7、软件工程管理工具:包括项目计划与追踪工具、风险管理工具和度量工具。 8、软件工程过程工具:包括建模工具、管理工具和软件开发环境。 https://www.maigoo.com/goomai/177198.html