作 者 简 介 杨环宇(Thomas Yang),国内知名的Automotive SPICE专家和评估师,上海先起公司首席过程及软件顾问,负责Automotive SPICE、汽车功能安全(ISO26262)过程及软件部分。20余年的丰富嵌入式软件及汽车领域工作经验;国内最早的Automotive SPICE®从业人员(2009年始);国内第三方机构中,在中国大陆最早获得最高级别的AutomotiveSPICE®评估师(目前唯一)。为国内众多的OEM及供应商提供过Automotive SPICE®及ISO26262的培训、咨询和评估审核服务。 汽车嵌入式软件开发中,基于模型开发的方法非常普遍,经常被客户及一些评估师问到的问题是:
◆ ◆ ◆ ◆ 软件开发过程中,应用模型开发,是指:采用具备一定语法和语义含义的模型,来全部或部分完成软件需求、软件设计、并基于模型来生成代码。 根据使用模型的目的,基于模型开发可以映射到“SWE.1 软件需求分析”、'SWE.2 软件架构设计'和'SWE.3 软件详细设计和单元构建'等 ASPICE 中的各个 Process。 当前比较普遍的用法是用模型进行设计、基于模型生成代码、在模型及代码层面进行验证。使用模型来定义需求的情形不是特别多。 接下来,我们就基于当前比较普遍的这种用法来进行分析: 一、基于模型开发,通常包括哪些活动呢? ① 模型设计 基于模型设计的输入(通常是软件需求和软件架构设计)和模型规范(如: 基于 MAAB 的模型规则),进行模型设计。 ② 模型静态分析 使用工具对模型进行分析,包括:
③ 模型评审 评审模型的内部逻辑、评审其是否与模型设计的输入相一致。也就是评审设计的模型否能正确的实现模型设计的输入。 ④ 模型动态验证 一般是通过模型在环(MIL)测试的方式对模型进行动态验证。 测试的目的有两个:
⑤ 自动代码生成 进行一定的代码生成的定制化设置、并使用工具生成代码。 在这个过程中“用户的定制化设置”和'生成代码的工具'都有可能引入错误。 因此,在对代码质量要求很高的场合,会希望做“⑥等效性测试”。 ⑥ 等效性测试 通常采用软件在环(SIL)测试和处理器在环(PIL)测试的方式,用来验证代码和模型的一致性。 SIL 是将模型生成的代码通过 DLL 的方式运行在 Windows 平台上;PIL 是将生成的代码运行到目标处理器上,两种模式使用的编译器是不同的,SIL 使用的就是 Windows 下的编译器,比如 Visual Studio C++ 或者 LCC 编译器,而 PIL 使用的是目标编译器。 二、模型开发活动,与ASPICE中的过程(SWE.1 ~ SWE.6)是如何映射的呢? (1) SWE.3 软件详细设计和单元构建
(2) SWE.4 软件单元验证 (3) SWE.2 软件架构设计 有些时候,在模型设计中,会包括SWC之间的交互及接口的设计,这个部分是属于软件架构设计的。 (4) SWE.5 软件集成和集成测试
文章经作者授权转自“仨人谈起”微信公众号 ◆ ◆ ◆ ◆ |
|