转载

模型开发活动及ASPICE过程的映射

编辑推荐:

文章主要介绍了被问到的几个问题基于模型开发,通常包括哪些活动呢?模型开发活动,与ASPICE中的过程(SWE.1 ~ SWE.6)是如何映射的呢?围绕这两个问题讲解。

本文来自于仨人谈起,由火龙果软件Anna编辑、推荐。

汽车嵌入式软件开发中,基于模型开发的方法非常普遍,经常被客户及一些评估师问到的问题是:

基于模型开发,要包括哪些活动?

这些活动与ASPICE中的过程(SWE.1 ~ SWE.6)是如何映射的呢?

软件开发过程中,应用模型开发,是指:采用具备一定语法和语义含义的模型,来全部或部分完成软件需求、软件设计、并基于模型来生成代码。

根据使用模型的目的,基于模型开发可以映射到“SWE.1 软件需求分析”、"SWE.2 软件架构设计"和"SWE.3 软件详细设计和单元构建"等ASPICE中的各个Process。

当前比较普遍的用法是用模型进行设计、基于模型生成代码、在模型及代码层面进行验证。使用模型来定义需求的情形不是特别多。

接下来,我们就基于当前比较普遍的这种用法来进行分析:

一、基于模型开发,通常包括哪些活动呢?

模型开发活动及ASPICE过程的映射

① 模型设计

基于模型设计的输入(通常是软件需求和软件架构设计)和模型规范(如: 基于MAAB的模型规则),进行模型设计。

② 模型静态分析

使用工具对模型进行分析,包括:

分析模型是否符合建模规范,如:使用Simulink Verification & Validation检查是否符合MAAB。当现有的规则无法满足要求时,工程师也可以自己动手定制一些检查规则项

模型的形式化验证,如:使用Simulink Design Verifier检查是否有整数溢出,或者是否有死逻辑等

③ 模型评审

评审模型的内部逻辑、评审其是否与模型设计的输入相一致。也就是评审设计的模型否能正确的实现模型设计的输入。

④ 模型动态验证

一般是通过模型在环(MIL)测试的方式对模型进行动态验证。

测试的目的有两个:

功能测试:测试“模型设计的输入”是否被正确的实现了,往往用比如“需求覆盖度”的覆盖度指标进行衡量。

模型内部逻辑的正确性:往往用结构化覆盖度指标进行衡量,比如条件覆盖(Condition Coverage)、判定覆盖(Decision Coverage)、MC/DC覆盖等。

⑤ 自动代码生成

进行一定的代码生成的定制化设置、并使用工具生成代码。

在这个过程中“用户的定制化设置”和"生成代码的工具"都有可能引入错误。

因此,在对代码质量要求很高的场合,会希望做“⑥等效性测试”。

⑥ 等效性测试

通常采用软件在环(SIL)测试和处理器在环(PIL)测试的方式,用来验证代码和模型的一致性。

模型开发活动及ASPICE过程的映射

SIL是将模型生成的代码通过DLL的方式运行在Windows平台上;PIL是将生成的代码运行到目标处理器上,两种模式使用的编译器是不同的,SIL使用的就是Windows下的编译器,比如Visual Studio C++或者LCC编译器,而PIL使用的是目标编译器。

二、模型开发活动,与ASPICE中的过程(SWE.1 ~ SWE.6)是如何映射的呢?

(1) SWE.3 软件详细设计和单元构建

模型开发活动及ASPICE过程的映射

模型设计是设计到可以生成代码的程度,这里面就包括有软件单元的详细设计。

基于模型生成代码,就是软件单元的构建。

注意:有些时候,当模型本身不足以全面、清晰的呈现设计时,是需要有一些补充的文字信息描述的。

(2) SWE.4 软件单元验证

模型开发活动及ASPICE过程的映射

(3) SWE.2 软件架构设计

模型开发活动及ASPICE过程的映射

有些时候,在模型设计中,会包括SWC之间的交互及接口的设计,这个部分是属于软件架构设计的。

(4) SWE.5 软件集成和集成测试

模型开发活动及ASPICE过程的映射

基于模型开发时,模型中SWC与SWC之间的集成步骤,体现的不明显。SWC之间的接口的一致性,往往是由建模工具来检查和保证的。

在"④模型动态验证"和"⑥等效性测试"时,会测试SWC之间的交互,这个部分的测试属于模型的集成测试。

原文  http://www.uml.org.cn/SoftWareProcess/202006042.asp?artid=23353
正文到此结束
Loading...