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

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

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

关于降低圈复杂度(代码对象中线性无关路径的数量),如下图所示,主要有两种方法: AUTOSAR BSW开发遇到的问题及MBD开发的优势

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

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

case重构

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

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

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