AUTOSAR BSW开发遇到的问题及MBD开发的优势

  • 时间:
  • 浏览:
  • 来源:互联网

AUTOSAR BSW模块越来越多,需求数量也呈现指数型增加,并且模块的复杂性很大, 一般的传统设计已经很难满足,通过MBD中提供的方法可以满足AUTOSAR BSW的开发。如通过MBD提供了以下方法满足AUTOSAR 模块的特点:

  • 采用变体子系统设置并生成AUTOSAR预编译配置方法
  • 通过Subsytem实现Autosar提供的标准接口
  • 通过库和引用子系统的方法实现代码块的复用
  • 通过仿真和测试功能实现在线的测试和主要功能的早期验证(冒烟测试)
  • 提供函数组件去封装功能来降低圈复杂度

关于降低圈复杂度(代码对象中线性无关路径的数量),如下图所示,主要有两种方法:

程序块的重构(代码的局部优化)

  • 提炼函数 你有一段代码可以被组织在一起并独立出来。将这段代码放进一个独立函数中,并将函数名称解释该函数的用途。
  • 分解条件表达式 你有一个复杂的条件(if -else)语句。从if、else段落中分别提炼出独立函数。
  • 合并条件表达式 你有一系列条件测试,都得到相同结果。将这些测试合并为一个条件表达式,并将这个条件表达式提炼成为一个独立函数。
  • 合并重复的条件片段 在条件表达式的每个分支上有着相同的一段代码。将这段重复的代码搬移到条件表达式之外。
  • 移除控制标记 在一系列布尔表达式中,某个变量带有“控制标记”的作用。以break语句或return语句取代控制标记。
  • Case的重构(整体对代码结构进行优化)

case重构

对于一个switch有几十个case的情况,其圈复杂度往往上百,程序块重构显然已不能解决其本质复杂度。如果要降低其圈复杂度,必然需要对代码进行重新设计。 C语言的switch/case语言特性本质是描述一种查表逻辑,其中表结构和表的控制(即查表)都通过软件来表达。表通过代码来描述,这显然不是一种最佳的实现方式。我们需要做的就是,避免控制中的复杂性,将精力集中在数据的组织上,以反映所模拟世界的真实结构,并将数据与控制进行分离。 表的设计由两部分组成:对象(表项)的抽象和表的构建。对象的抽象涉及对象如何抽象,对象粒度如何划分,对象间的关系如何设计,这些问题与具体业务逻辑强相关。表的构建方法可分为编译期构建、链接期构建和运行时构建。3种构建方法各有所长和不足,可根据自身需要进行选择。

下面详细介绍一下AUTOSAR BSW开发遇到的问题及MBD开发的优势:

本文链接http://element-ui.cn/news/show-341877.aspx