《SysML精粹》学习记录--第四章


第四章:内部模块图(Internal Block Diagram,IBD)

  (由于知识储备与软件因素,有些图出现错误敬请谅解)。

IBD介绍

  和 BDD一样,IBD是系统或者系统一个组成部分的静态(结构化)视图。和BDD不同的是,IBD不会显示模块;它会显示对模块的使用——在IBD头部命名的模块的组成部分属性和引用属性。
  在BDD中可以显示组成部分属性和引用属性——或者是作为模块分隔框中的字符串,或者是作为关联一端的角色名称。但是IBD可以表达在BDD中无法表达的信息:组成部分属性和引用属性之间的连接;在连接之间流动的事件、能量和数据的类型;以及通过连接提供和请求的服务。
  SysML没有提供对系统的空间结构建模的方法。IBD可以对那些彼此相连的组成部分建模,但是无法对它们的形状或者彼此之间合适的空间建模。则可能需要使用(非SysML)计算机辅助设计(Computer Aided Design,CAD)工具来完成那个目标。
  IBD 和 BDD互相补充,提供了模块的信息。首先创建BDD定义模块和它的属性。然后创建IBD来显示对那个模块的合法配置——模块属性之间特定的一系列连接。
  模块是出现在IBD中的模型元素的类型。而模块不能出现在IBD中,它们只在BDD中出现。IBD中出现的是模块的实例。从而,BDD 和IBD提供了相互补充的模块视图。
  内部模块图的图类型缩写是ibd。IBD中唯一允许的模型元素类型就是模块,IBD的外框总是代表你在系统模型某处定义的模块。如下图所示,在外框之中,可以显示模块的组成部分属性和引用属性,以及把它们连接在一起的连接器。
内部模块图

  BDD和IBD是相互补充的模块视图:除了属性之间的连接器之外,IBD还能够表示在属性之间流动的项目,以及属性能够通过那些连接器彼此调用的服务。

组成部分属性

  IBD中的组成部分属性和 BDD中模块的组成部分分隔框中的组成部分属性有着相同的意义:组成部分属性代表一种结构,位于在IBD头部显示名称的模块内部——也就是组成模块的结构。IBD中组成部分的标识法是带有实线边框的矩形。显示在矩形中的名称字符串的格式和 BDD中模块的组成部分分隔框中显示的字符串相同:“<part name> : <type>[<multiplicity>]”。可以选择在矩形的右上角显示组成部分属性的多重性,或者在字符串末尾的方括号中显示。建议:在日常工作中创建图时使用一种一致的标识法。

引用属性

  IBD中的引用属性和 BDD中模块的引用分隔框中的引用属性有着同样的意义:引用属性代表IBD头部显示的名称代表的模块外部的结构——模块因为某种目的而需要的模块,或者是为了触发行为,或者是为了交换事件、能量和数据。IBD中引用属性的标识法是带有虚线边框的矩形。显示在矩形中的名称字符串和BDD中模块的引用分隔框中显示的字符串格式相同:“<reference name> :<type>[<multiplicity>]”。和组成部分属性一样,可以选择在矩形的右上角显示引用属性的多重性。

连接器

  IBD中两个属性之间的连接器表示,那两个结构在正确组装且可操作的系统中, 拥有某种方式可以互相访问。可以选择为一个连接器指定名称和类型,以传达更多 关于连接那两个结构的媒介的额外信息。名称字符串的格式如下:“<connector name> : <type>”。;连接器(connector name)的名称是可选的,并且是建模者定义的。类型(type)也是可选的,但是,如果选择指定一种类型,那么它必须是你在系统模型两个模块之间某处创迚的关联的名称。关联必须连接同样的两个模块,而那两个模块会指定连接器两端的两个属性的类型。
  两个相互连接的属性可以都是组成部分属性、引用属性,或者一样一个。如果两 个相互连接的属性拥有兼容的端口——标准端口或者流端口——可以选择把连接器与那些端口连接,而不是直接与属性连接。这样做表示那些属性是在边界的特殊交互点处连接的。如果通过流端口连接两种属性,那么就可以通过那些端口传递能够在属性之间流动的事件、能量或者数据的类型(其中:共轭意味着流规格中的流属性的方向和端口相反)。如果通过标准端口连接两种属性,那么就可以传递一种属性在那些端口提供, 另一种属性需要的服务。还可以在IBD的外框上显示端口。这样的端口代表IBD代表的模块(其名称在图的头部显示)边界上的交互点。为了表示复合模块的一个内部组成部分通过边 界上的交互点与组合连接,可以把边框上的端口和组成部分属性的一个端口连接起来。这种设计表示复合结构的一个实例可以为行为和项目流传递请求,或者是从 外部客户端到那个内部组成部分,或者是从那个内部组成部分到外部的提供者。

项目流

  项目流代表在系统中两种结构之间流动的事件、能量或者数据的类型。IBD中项目流的标识法是实心的三角箭头,它位于连接两个流端口的连接器上。项目流的类型显示在连接器箭头旁边的标签上;标签必须包含系统模型中某处存在的模块、值类型或者信号的名称。项目流代表的类型必须和连接器两端流端口的类型兼容。如果两端的流端口都是原子流端口,那么对于连接器上的项目流类型,那些端口的类型通常是唯一的。如果两端的流端口是非原子流端口,那么它们的类型会由流规格指定。流规格必须包含一个流属性,它的类型和方向要和连接器上的项目流相匹配。

内嵌组成部分和引用

  IBD可以显示内嵌在其他属性中的属性。内嵌使得可以在单独视图中表示系统层级结构的多个层级。利:可以看到内嵌组成部分之间的关联关系,弊:IBD可读性变差。
  SysML没有限制在IB D中对属性可以进行多少层内嵌:唯一的限制是画布的维度,以及图的可读性。属性中的内嵌属性会占据图的很大空间,SysML为了克服空间限制,提供了另一种表达内嵌属性的标识法:点标识法。点标识法使得建模者能够以字符串的形式简洁地表示结构化层级关系。内嵌可以有任意深度,使得点标识法的字符串也可以任意长。对于表示系统层级关系的大量信息以及不同层级上组成部分之间的关联,这是一种非常高效的方式(点标识法存在缺陷:不能正确表达组成部分所属类型的模块名称;不能很好表达组成部分属性的多重性)。
  当需要为内嵌属性添加连接器的时候,有两种选择:跨越封装内嵌属性的边界绘制连接器,或者在那个边界的端口处停止,并从指向内嵌属性的那个端口再绘制一 条连接器。基于对设计原则决定是跨边界绘制连接器,还是在边界上的端口处停下。

小结

  IBD可以很好地展示在构建的系统中存在的特殊部分,以及那些组成部分之间的关联。同时很好地补充了在BDD中表达的信息,所以通常会依次创建BDD和IBD。IBD可以表示特定组成部分为另一部分提供的服务,以及能够通过它们的关联流动的事件、能量和数据。这对于系统利益相关者而言非常有价值。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zszyejing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值