第三章:SysML之模块定义图

目录

模块定义图

1 BDD介绍

2 BDD外框

3 模块

3.1 基本介绍

3.2 结构特性

结构特性种类

1 组成部分属性

2 引用属性

3 值属性

4 约束属性

5 端口

基本介绍

标准端口

详细介绍

接口

流端口

3.3 行为特性

基本介绍

1 操作

2 接收

4 模型间的关系

模型的三种关系

4.1 关联

基本介绍

1 引用关联

2 组合关联

4.2 泛化

4.3 依赖

5 执行者

6 值类型

7 约束模块

8 注释


模块定义图

1 BDD介绍

模块定义图(Block Definition Diagram,BDD)是最常见的一种SysML图。可以在BDD中显示不同类型的模型元素和关系,以说明系统结构的信息。还可以降低修改设计所需要的时间和成本。

把出现在BDD中的元素叫做定义元素,BBD中的模型元素有:

  • 模块
  • 执行者
  • 值类型
  • 约束模块
  • 流说明
  • 接口

创建BDD的时机一般发生在执行系统工程活动中,例如:利益相关者需求分析、需求定义、架构设计、性能分析、测试案例开发、集成。

2 BDD外框

图的外框代表的模型元素类(modelElementType)可以是:

  • 模型
  • 模型库
  • 视图
  • 模块
  • 约束模块

3 模块

3.1 基本介绍

定义和实例之间的区别涉及系统设计最基本的概念。某些类型的模型元素(例如:模块、值类型、约束模块)表示对类型的定义;其他类型的模型元素(例如:组成部分属性、值属性、约束属性)代表那些类型的实例。

模块的注释是带有元类型<block>的矩形,后面是名称分隔框中的名称,如下图所示。必须显示模块的名称分隔框(一个分隔框如下图所示的一个矩形)通常会显示另外的可选分隔框(如组成部分、参考、值、约束、操作、接受、标准端口、流端口、完整端口、代理端口、流属性、结构等)

可选分隔框会显示模块的特性,特性有两种:

  1. 结构特性(也称作属性)
  2. 行为特性

3.2 结构特性

结构特性种类

模块可以拥有五种结构特性(也叫做属性):

  1. 组成部分属性
  2. 引用属性
  3. 值属性
  4. 约束属性
  5. 端口
1 组成部分属性

组成部分属性代表模块内部的结构,即模块是由组成部分属性构成的

模块的组成部分分隔框中列举一个组成部分属性时,以如下形式展现:

“<part name> : <type> [<Multiplicity>]”

  • 其中组成部分名称(part name)由建模者定义,类型(type)一般是在系统模型某处创建的模块的名称
  • 多重性(Multiplicity)是一种约束,限制复杂对象中组成部分属性的实例数量。单个整数或者一系列整数表示(多重性一般默认为1)。若想要一个组成部分属性代表任意数量的实例,可以把多重性设置为0…*,也就是“0或者多个”。或者,把多重性设置为*,那是0…*的缩写。

如下图所示,右边的图是通信和数据处理子系统。primaryComputer有一个实例,作为主要计算机的角色;backupComputer有一到两个实例,作为备份计算机的角色

2 引用属性

引用属性代表模块外部的一种结构,引用属性可以大概描述为“需要”的关系;带有引用属性的模块因为某种目的需要那个外部结构,或者是为了提供一种服务,或者为了交换事件、能量或者数据。

在模块的引用分隔框中列举一个引用属性的时候,会以如下形式展现:

“<reference name> : <type> [<Multiplicity>]”

  • 引用名称(reference name)由建模者定义
  • 类型(type)一般是在系统模型某处创建的模块或执行者的名称
  • 多重性(Multiplicity)是引用属性能够表示的实例的数量限制。

如下图所示,左边的图是电子电力子系统,拥有名为cdhs的引用属性,表示该系统的实例只需要一个通信和数据处理子系统(以满足其设计)

3 值属性

值属性可以代表一个数字(某种类型)、一个布尔值或者一个字符串。当和约束属性结合的时候,值属性会特别有用,那样可以构建系统的数学模型。

在模块的值分隔框中列举一个值属性的时候,会以如下形式展现:

“<value name> : <type> [<Multiplicity>] = <default value>”

  • 值的名称(value name)由建模者定义。
  • 类型(type)必须是已在系统模型中某处创建的值类型的名称。
  • 多重性(Multiplicity)是值属性能够持有的值的数量的限制。
  • 默认值(default value)是可选信息,代表它所属模块的实例第一次创建的时候赋予值属性的值。
  • 某些值属性会持有赋予的值,其他会持有从系统模型中其他值属性继承(计算)得到的值。为了表示一个值属性是继承得来的、需要在它的名称之前放置一个斜杠(/)。

如下图所示,DellSat-77有多个值属性。eventTimes有任意多个Timestamp值,Timestamp值类型存在于模型层级关系的某处

4 约束属性

约束属性一般代表一种数学关系(一个等式或者不等式),它会使用一系列值属性。在这里所需要的模型精确度要比大多数建模项目所需要的都高。

在模块的约束分隔框中列举一个约束属性的时候,会以如下形式展现:

“<constraint name> : <type>”

  • 约束名称(constraint name)由建模者定义
  • 类型(type)必须是已在系统模型某处创建的约束模块的名称。
  • 创建它是为了封装可重用的约束表达式

如下图所示,有一个名为Sufficent Meomory的封装模块,其中封装了表达式:memoryCapacity >= dataPerorbit *3

这个约束模块作为飞行计算机模块中的约束属性sm的类型,来限制memoryCapacity和dataPerorbit必须那个数学关系,如下图所示:

5 端口
基本介绍

端口是代表结构边缘不同交互点的一种属性,通过那些点外部实体可以和那个结构交互——或者是提供服务,或者是请求服务,或者是交换事件、能量和数据。当建模者为模块添加端口的时候,结构的内部实现会对客户端隐藏。

Sysml v1.2定义了两种端口:

  • 标准端口。指定一个交互点,关注模块提供或请求的服务
  • 流端口。指定一个交互点,关注能够流入、流出模块的事件、能量、或者数据的类型
  • Sysml新版本不再支持这两种端口
标准端口
详细介绍

标准端口是模块在边界交互点上提供或者请求的服务(行为)的模型。如下图所示:

  • 标准端口表示为模块边界上的小方块;
  • 标准端口是建模者定义的名称,以字符串形式显示在标准端口旁边(可能在模块边界之内,也可能在之外)
  • 标准端口可以拥有一种或多种类型,类型是赋予的接口(如图中的Power Generation、Status Reporting)

接口

接口是对元素的一种定义:它定义了一系列操作和接收信息

如下图所示,名称须带有关键字<<interface>>,在第二个和第三个分隔框中显示它的操作信息和接收信息。

(1)提供接口

提供接口使用圆形标识,并且和标准端口连接。提供接口的模块必须实现接口所有操作和接收信息。如下图所示,通信和数据处理子系统模块提供了状态报告接口,而该子系统必须实现接口的两个操作和两种接收信息

(2)请求接口

请求接口使用槽状的标识,并且和标准端口连接。请求接口的模块不要求系统操作必须有所有的操作和接收信息。如下图所示,电子电力子系统模块需要请求状态报告接口,则该子系统可以调用接口的任意多个操作或任意多个接收信息,不要求所有

流端口

Sysml提供两种流端口:非原子流端口和原子流端口

(1)非原子流端口

当需要为通过端口流入或流出的多种项目类型建模时,添加非原子的流端口,如下图所示:

  • 流端口会显示为在模块边界的小方块
  • 流端口有建模者定义的名称(如:dataOut,dataIn),名称也拥有类型,格式为:名称:类型,类型必须是在系统模型某处创建的流类别的名称

流类别

流类别是对元素的一种定义,定义了一系列能够流入、流出非原子端口的流属性。

流属性的格式如下:

“<direction> <name>: <type>”

  • 方向可以是in、out或者inout
  • 名称由建模者定义
  • 类型必须是创建的值类型、模块或者记号的名称

如下图所示,这是一个Housekeeping Data流类别

如下图所示,有图的飞行计算机模块有Housekeeping Data流类别,表示温度和电压可以传入飞行计算机的实例中;电子电力子系统模块有Housekeeping Data流类别,但有波浪线~,代表数据流出

(2)原子流端口

当需要为通过端口流入或流出的单一类型项目建模时,添加原子的流端口

如下图所示,图中小方块的箭头表示流端口的方向,原子流端口的类型必须是创建的值类型、模块或者记号的名称

3.3 行为特性

基本介绍

SysML提供了两种类型的行为特性:操作(operation)和接收(reception)。可以为模块添加操作和接收特性,表达系统或结构的行为。

1 操作

操作表示一种调用后执行的行为,即操作是由调用事件触发的。

在BDD 中把操作表示为模块操作分隔框中的字符串:

“<operation name> (<parameter list> ) :<return type>[<multiplicity>]”

  • 操作名称(operation name)是由建模者定义的。
  • 参数列表(parameter list)是由逗号分隔,拥有零个或多个参数的列表。每种参数的格式都会简短显示。
  • 返回值(return type)(如果有)必须是在系统模型中某处创建的值类型或者模块的名称。
  • 多重性(multiplicity)会约束操作完成时能够给调用方返回类型的实例的数量。

参数列表中的参数代表操作的输入和输出。列表中的每个参数都会以下面的格式显示:

“<direction> <parameter name> : <type>[<multiplicity>]=<default value>”

  • 方向(direction)可以是in、out或inout。
  • 参数名称(parameter name)是由建模者定义的。
  • 类型(type)必须是在模型某处存在的值类型或者模块的名称。
  • 多重性(multiplicity)会约束参数能够代表的类型实例的数量。
  • 当操作被调用时,如果没有指定一个值作为参数,则赋予参数默认值(default value)

如下图所示,分别是通信及数据处理子系统和电子电力子系统。操作的一个例子是processCommand。这个模型表示的是客户端调用通信和数据处理子系统来执行该操作,其中,客户端可以传递给操作一个或多个命令作为输入,操作完成后,会返回状态值

2 接收

接收代表一种行为,当客户端发送信号来触发的时候,模块就会执行这种行为,即接收是由信号事件触发的。

在BDD 中把接收表示为模块接收分隔框中的字符串:

“ <<signal>><reception name>(<parameter list> ) ”

  • 关键字<<signal>>必须总是作为接收名称(reception name)的前缀。
  • 接收名称必须与模型中触发它的信号名称匹配。
  • 只要有必要,在参数列表(parameter list)中可以显示任意多个参数

列表中的每个参数都会以下面的这样格式显示:

“<parameter name> : <type>[<multiplicity>] =<default value>”

  • 参数名称(parameter name)是由建模者定义的。
  • 类型(type)必须是在模型某处存在的值类型或者模块的名称。
  • 多重性(multiplicity)会约束参数可以代表的类型实例的数量。
  • 如果在信号相关属性中没有提供任何值,那么默认值(default value)就是赋予参数的值。

如下图所示,有一个名为AnalogTempDataSampled的信号。这个信号有两种属性:temp(类型是摄氏度)和time(类型是Timestamp)。客户端在系统操作过程中,生成这个信号的实例,为这两个属性提供值,然后,客户端可以把信号示例发送给接受它的目的地(下图的通信和数据处理子系统)

4 模型间的关系

模型的三种关系

模块之间可以存在三种主要类型的关系:关联、泛化和依赖

4.1 关联

基本介绍

引用属性代表模块外部的结构,即模型需要与之连接的结构;组成部分属性代表模型内部的结构,即构成模型的结构。

引用属性和组成部分属性在模块之间创建并在BDD中显示的两类关联相关:引用关联和构成关联

1 引用关联

BDD中引用关联的标识法是两个模块之间的实线。如果一端有箭头表示单向的访问,如果两端都没有箭头则表示双向访问(箭头端为被访问端)

如下图所示,引用关联是一种电力电缆。从图中可以看出一些规则:

  • 可以选择在线的中间位置显示关联的名称
  • 可以选择在线的任一端显示角色名称和多重性
  • 关联名称是由建模者定义的字符串,描述能够存在于两个模块的实例之间的关联类型

其中,图中下面的BDD显示的是同一模型的等价视图,只是它使用的是引用分隔框标识法,而不是引用关联。

如下图所示,飞行模块中有多个引用属性,则需要绘制多个引用关联。

  • 注意:这幅图同时使用了分隔框标识法和引用关联,一般情况下是不需要同时使用的

2 组合关联

两个模块之间的组合关联表示结构上的分解。组合端的模块实例由一些组成部分端模块的实例组合而成。BDD中组合关联的标识法是两个模块之间的实线,在组合端有实心的菱形。

如下图所示:

  • DellSat-77 Satellite是组合端,其余四个模块都是组成部分端模块,这说明DellSat-77卫星由一个电子电力子系统、一个高度及轨道控制子系统、一个环境控制子系统以及一个通信和数据处理子系统构成。
  • 组合端的多重性的上限必须总是1;多重性的下限可以是0或者1。下限为0表示组成部分可以从组合结构中移除;下限为1表示不能移除
  • 在组成部分端有箭头表示从组合端对组成部分的单向访问,如果没有箭头则表示双向访问

如下图所示,模块可以拥有相同类型的多个组成部分的属性

4.2 泛化

泛化:表示两种元素之间的继承关系

  • 一个更加一般化的元素,叫做超类型
  • 一个更具体的元素,叫做子类型。

如下图所示:

  • 泛化的标识法是一条实线,在超类型的一端带有空心的三角箭头
  • 泛化是可传递的。泛化表示子类型会继承超类型的所有特性:结构特性和行为特性。子类型还可能拥有超类型所不具备的其他特性。例如,星球地图仪(Star Mapper)是一种星球传感器(Star Sensor),星球传感器(Star Sensor)是一种传感器(Sensor),所以星球地图仪(Star Mapper)是一种传感器(Sensor)

4.3 依赖

依赖意味着:模型中的一种元素,客户端,依赖于模型中的另一种元素,提供者。依赖表示当提供者元素发牛改变时、客户端元素可能也需要改变。

如下图所示:

  • 依赖在BDD中:标记是带有箭头的虚线,箭头方向从客户端指向提供者。
  • 表示这个子系统模型依赖于接口,接口发生改变,模型也需要改变

5 执行者

执行者代表某人或者某件事物,它拥有系统的外部接口。执行者的名称表示人、组织或者其他系统在与你的系统交互时所扮演的角色

如下图所示:

  • SysML为执行者定义了两种标识法:一种是火柴人,一种是在名称前面带有关键字<>的矩形。
  • 建模者通常会采用火柴人图形标识法来代表人,矩形标识法来代表系统

当执行者涉及泛化、引用关联以及组合关联这些关系的时候,所有关于那些关系的关键点也全部适用。但有两条约束:

  1. 无法在执行者和模块之间定义泛化
  2. 执行者不能拥有组成部分

6 值类型

值类型也是一种定义元素———般会定义一种数量类型。在SysML 中有两种值类型——布尔型和字符串型

值类型可以作为结构化特性的值属性出现,也可以在下述情况出现:

  1. 模块或者执行者的原子流端口
  2. 流规格中的流属性
  3. 约束模块中的约束参数
  4. 连接器上的条目流(项目流)和条目属性
  5. 操作的返回值
  6. 操作和接收的参数
  7. 活动中的对象节点、固定点和活动参数

在系统模型中定义三种值类型——原始值类型、结构值类型和枚举值类型。

(1)原始值类型

原始值类型没有任何内部结构(它不拥有任何值属性)。它的标识法是名称前带有元类型<<valueType>>的矩形,SysML定义了四种原始值类型:String、Boolean、Integer 和 Real

  • 注意:可以定义自己的原始值类型作为四种原始值类型的特殊情况

(2)结构值类型

它的标识法是名称前带有元类型<<valueType>>的矩形,结构值类型拥有内部结构:一般是两种或多种值属性。Sysml定义了一种结构值类型:Complex,有两个值属性:realPart和imaginaryPart,其都是Real类型。

(3)枚举值类型

通常叫做枚举,定义一系列数值(有效的值)。若一项操作的参数的类型是枚举,则它所持有的值必须是枚举值中的值

例子

如下图所示,BDD定义了CommandKind枚举,将其作为名为buildCommand操作中名为kind的输入参数的类型,当客户端调用这个操作,有效值只能是Stored和Real-Time

7 约束模块

约束模块也是一种定义元素——它定义了一种布尔型的约束表达式(结果要么是true要么是false的表达式),在约束模块中定义的约束表达式是一个等式或者不等式:用来约束模块的值属性的数学关系

如下图所示:

  • 约束表达式中的变量叫做约束参数
  • BDD中约束模块的标识法是名称前面带有元类型<<constraint>>的矩形
  • 约束表达式在约束分隔框中总是会显示在大括号{ }之间
  • 约束表达式中的约束参数会分别列在参数分隔框中

该模型表示Hohmann Transfer定义了一个约束表达式,它由两个更简单的约束表达式组成。即约束模块Hohmann Transfe由约束属性ttof和tos组成

8 注释

注释是一种模型元素。它包含唯一的属性:一段文字(注释体)。建模者可以在注释体中传递任何需要的信息,还可以选择在图中把注释附加给其他元素,以提供关于它的额外信息。可以在所有九种SysML图中使用注释

如下图所示:

  • 注释的标识法通常是一个笔记符号:一个矩形,右上角有折角
  • 可以使用虚线把注释附加给其他元素

  • 18
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于模型的系统工程(MBSE)是一种将系统工程的原理与模型驱动的方法相结合的方法。它综合运用OPM(Objective Process Modeling)和SysMLSystems Modeling Language)两种建模语言,以更好地理解和设计复杂系统。 OPM是基于事物的建模语言,它关注系统的结构、功能和行为。它通过可视化形表示,将系统的各个部分和它们之间的关系进行描述,从而帮助我们更好地理解系统的组成和功能。例如,OPM可以帮助我们分析一个车辆系统中的各个组件,如发动机、底盘、电池等,并描述它们之间的连接和相互作用。 SysML是一种形化的建模语言,专注于系统的结构和行为。它提供了不同的建模形,如需求、用例、活动等,帮助我们更好地描述系统的需求、功能和行为。例如,SysML可以帮助我们分析一个软件系统中的不同需求,并通过建模形表示系统的功能和交互。 综合运用OPM和SysML,可以实现MBSE的目标。通过使用OPM和SysML,我们可以更好地理解系统的组成和功能,并通过建立建模形来描述系统的结构和行为。这些模型可以通过模拟和验证来测试系统的性能和可行性,帮助我们在系统设计过程中做出更明智的决策。 总之,基于模型的系统工程通过综合运用OPM和SysML两种建模语言,可以帮助我们更好地理解和设计复杂系统。这种方法不仅能够提高系统设计的效率和质量,还可以帮助我们更好地与利益相关者合作,达到系统需求和项目目标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值