模块定义图(BDD)

1模型元素类型

clip_image001

2.模块

模块时SysML中的基本单元,其对应于系统中的任意实体,我们可以使用模块对系统中的实体进行建模。通过带有<<block>>标识的矩形框表示,其后带有模块的名称(用户自定义),另外,还可以通过可选的其他分隔框,用来标识模块的其他组成。例如下图所示,该模块定义为包含 值属性 和 操作属性分隔框。

clip_image002

BDD属性包含行为属性和结构属性。顾名思义,结构属性表达了实体的结构组成该部分,而行为属性则表达了实体所具有的行为特征。

2.1结构特性

如下图所示,结构特性包含值属性、组成属性、引用属性、约束属性、端口共 5 种类型,其在模块中分隔框的头部表示参考下图中的英文表示。已值属性为例,其分隔框头部标识为 values,其他的属性类似。

clip_image003

(1)值属性

SysML规定的命名规则为 <value name>:<type>[<multiplicity>] = <default value>。值属性的类型(type)是在SysML图中某处定义的“value type”(值类型也是一种SysML元素,用户可以灵活定义值类型).

clip_image004

(2)约束属性

SysML规定的命名规则为 <constraint name>:<type> 。约束名称为用户自定义,约束类型是用户在SysML图的某库定义的 约束模块 的名称。一般情况下,约束模块用于定义一种数学关系约束,约束属性是对约束模块的引用。

clip_image005

(3)引用属性

SysML规定的命名规则为  <reference name>:<type>[<multipicity>]。type是用户在SysML的某库定义的模块或者执行者,大部分情况下是模块,类似于UML 中类与类间的引用。SysML中引用表示的是一种 “需要” 语义,引用属性标示了引用模块与被引用模块之间存在关联,可能是为了数据交换、实践传递等,总之,二者之间存在联系。

clip_image007

(4)组成部分属性:

SysML规定的命名规则为 <part name> : <type> [<multiplicity>]。type是用户在SysML的某库定义的模块名称。multiplicity表示了实例的数量。组成属性标示的是一种 “所属” 关系,模块是由组成部分属性所映射的模块组成。这种 “所属”关系所表述的意义不仅仅局限于物理层面的“所属”,如发动机是汽车的组成部分。同样可以表述逻辑的所属,例如逻辑上的软件元素间的所属关系。另外,所属还有一层含义,SysML明确声明,组成部分属性一次只能属于一个复杂结构,但可以移除。

clip_image009

(5)端口

端口表示了一种结构对外提供的交互点,外部可以通过该交互点与模块进行交互-数据或事件等等。端口与软件的接口概念不同,其含义更加广泛。端口可以代表任意类型的交互点,例如物理的连接点,软件层面的消息队列,公司间的交互点如网站、邮箱等等。对端口的理解不要局限于软件接口,要从更加抽象的层次去理解和定义。大家只要记住其本质:端口是某一结构对外部结构提供的交互点,是结构间进行数据或事件、功能交换点的一种方式和抽象。另外,从端口的本质我们可以看出,它代表了一种“封装”的思想,这是面向对象的最常见并且最为关键的特性之一。封装有助于隐藏实现的细节,降低系统认知的复杂性以及系统间的耦合度。

a标准端口

clip_image011

b流端口

clip_image013

clip_image015

2.2行为特性

行为属性是对系统或结构的行为的表达,在SysML中包括 操作(operations )和 接收(receptions)。操作表示一种调用后执行的行为,也就说operations是基于调用事件触发的。一般情况下,operations代表一种同步行为,但SysML并没有对其做严格限制,设计者可以把任何行为定义为操作。

操作和接收的区别:操作是同步而接收是异步。同步:你叫我吃饭,我没听到,你就会一直叫我,知道我听到,和你一块去吃饭。异步:你叫我吃饭,叫了就不管我去不去吃了。

clip_image016

(1)操作

通过“operations”进行标识,其格式为:<operation name>  (<parameter list>)  : <return type>[<multiplicity>]。操作是一种调用事件触发的行为,可以具有返回值和输入及输出参数。SysML中对此不做同步和异步行为的区分,都可以通过 “操作” 进行表述。

clip_image018

(2)接收

通过“receptions”进行标识,其格式为:<<signal>> <reception name>  (<parameter list>) 。操作是一种信号事件触发的行为,且,其总是代表异步行为,无返回值,参数只有输入,没有输出。注意标识中的<<signal>>,这是必须的标识。另外,接收名称需要与模型某处定义的<<signal>>模型元素的名称一致。

clip_image020

3.模块之间的关系

(1)关联(属性的另一种表示方法)
a引用关系

引用关联表示双方存在一种连接,双方可以相互访问。

SysML中模块间的引用关联通过实线标识,若实线无箭头,则代表双向访问,若有箭头,则表示单向的访问。举例如下图所示,模块A和B存在关联关系,链接名称为“Link”,A中有B的引用属性bList,多样性为 1 -  5个。模块B中有模块A的引用属性a,多样性为 1 个。

clip_image022

b组合关联

组合关联表达的是一种构成关系,组合段的模块实例由组成部分端的实例组合而成。

    SysML中组合关联的标识法是带有实心菱形的实线。没有箭头表示双向访问,有箭头表示单向访问。菱形端是组合端,另一端是组成部分端。举例如下图所示,模块A是模块的结构组成部分。A和B是双向引用。在B中有模块A的引用属性a,多样性为 1 个。在模块A中有关于模块B的引用b,多样性为 0 - 1 个。由于B是组成端,A是组成部分端,因此,在A中最多只能有 1 个B引用实例。

clip_image024

(2)泛化

泛化表达的是一种继承关系,子类型继承超类型的特性,并对超类型特性进行扩展或重定义。泛化是可传递的。从广义上讲,泛化对应于面向对象思想中的继承,泛化有利于设计者面向抽象进行设计。设计者可以基于继承方式扩展出新的子类型,利用依赖倒置的原则实现便捷的扩展,因此这种设计方式有利于提高系统的可扩展性。

    SysML中泛化关系的标识法为一条带有空心三角箭头的实线。超类型位于箭头段,子类型位于非箭头段。举例如下图所示,模块A继承自模块B.

clip_image026

(3)依赖

依赖表述的是两个模块间一方依赖于另一方,当另一方改变时,则依赖房可能也需要改变。这也是模型间跟踪性的体现。

SysML中依赖关系通过带有箭头的虚线标识。箭头端是被依赖着,非箭头端是依赖者。同时,SysML中对依赖关系进行了泛化,定义了几种特定类型的依赖关系,例如需求图中经常出现的跟踪、满足、验证等多种关系都是依赖的特定类型。如下图所示,模块A依赖于模块B。

clip_image028

4.总结

(1)模块定义图描述了系统的结构化信息,包括系统的结构类型及关系、结构提供以及需要的服务、结构所遵循的约束、系统中的值类型。

(2)模块间的泛化关系提现了面向抽象设计的思想,方便系统的扩展。

(3)模块的结构特性“端口”体现了封装的思想,降低系统间的耦合。

(4)约束模块及约束属性描述了模块结构的约束关系,一般和参数图搭配使用,用于构建系统的数学模型。

(5)BDD描述了结构及结构件的关系,但未给出结构间联系的内部结构,这些有内部模块图IBD补充。

(6)BDD涉及了约束属性和约束模块,但精确的系统数学模型搭建还需要参数图的配合。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值