SysML语言之序列图应用

  • A+
所属分类:安全开发

1.序列图的作用

在系统需求和架构设计中,经常需要表达不同实体之间的消息交互行为,如一个软件组件请求另一个软件组件的服务,一个实体模块与另一个实体模块之间的消息交互。采用SysML语言的序列图来表示模型中不同结构元素之间的消息交互(interaction)是一种比较好的方法,它可以表示系统与其所在环境的,或是系统内部不同组件之间的交互,作为各组件之间交互行为的需求规范,或表示一组测试用例。

SysML语言中的序列图采用不同的有明确语义的符号来表示系统不同组件交互的行为,通过这些符号的组合嵌套可以描述各种复杂的系统行为。交互可以分为三种类型:

  • 消息的发送和接收;

  • 动作和行为执行的开始和结束;

  • 实体的创建和终结。


2.简单消息交互

下图是一个简单的序列图示例,表示调度员与调度工作站之间的消息交互,调度员和调度工作站作为两个实例(instance),它们之间交互的线是消息(message),消息可以从一个实例发送给另外一个实例,也可以由某个实例发给自己。消息在序列图上显示为带有不同箭头和注释的线,具体取决于消息的类型。

图中体现了两种不同消息类型:同步消息(synchronous message)和异步消息(asynchronous message)。异步消息的发送方在发送消息后可以继续执行,而同步消息的发送方在继续执行之前需要等待它从接收方收到已经完成对消息处理的答复。在图1中,调度员输入用户名和密码是一个同步消息,他需要等待调度工作站确认用户名和密码正确后才能继续执行,同步消息用实心箭头表示,对同步消息的回复用虚线箭头表示。获取某条轨道的状态是一个异步消息,他无需等待调度工作站的回复可以继续执行其它行为。异步消息用空心箭头表示。调用消息和发送消息可以包含与相关操作的输入参数或发送信号的属性相对应的参数。

SysML语言之序列图应用


3.复杂消息交互

复杂场景序列图将使用组合片段(combined fragments)来建模复杂的系统行为。不同的组合片段为消息及其关联事件的顺序指定了不同的规则,如并发、循环、判断行为。组合片段的标识是一个矩形,矩形左上角的标识来指定组合片段所表示的控制逻辑,称为交互标识符(interaction operator)。常用的交互标识符有par, opt, alt和loop。

  • par:带有par的组合片段有两个以上的操作数,它们并行发生,没有前后的顺序关系;

  • opt:带有opt的组合片段表示一系列可选的事件,在一个操作数内,它会有一个判断条件,称之为守卫(guard),如果守卫的判断为真,组合片段中的事件发生,如果不为真,则跳过;

  • alt:带有alt的组合片段有两个以上操作数,它们之间通过虚线分隔开,每个操作数有一个守卫,只有一个守卫的判断可以为真,那个守卫下的操作数中的事件将会执行,其它操作数将会跳过。alt可以与else配合使用,当其它守卫都为假时,执行else事件;

  • loop:带有loop的组合片段代表的一系列事件,可以在交互的一次执行过程中发生多次,跳出的条件依赖于它的守卫判断条件。

总结起来,par和alt有两个以上的操作数,par表示并发的控制行为,alt是依赖于判断条件的选择性行为,类似于C语言中的if/else语句。opt和loop只有一个操作数,opt有判断条件选择性执行,而loop可以循环多次执行,类似于C语言的while语句。下面通过一些示例来解释如何使用组合片段来描述复杂的系统交互行为。

图2是一个线上下单的序列图,会员发起线上订单,订购的商品将根据会员身份(VIP or 普通会员)通过快递或邮递送达会员。当会员在订单中选择了通知选项,订单系统将向会员发送确认通知。

SysML语言之序列图应用

图2 线上下单序列图


图3是软件组件的变量初始化序列图,每个生命线代表不同的软件组件,通过不同的操作数loop,alt的组合,可以组成复杂的组合片段,表示不同软件组件之间的交互。为每个现有变量存储检索相应的配置,有了这些信息,FrameworkManager 通过shm_open 函数通过 ISharedMemory 接口打开共享内存,并使用 mmap 函数执行内存的映射。在内存被镜像的情况下,则镜像共享内存也被打开并映射。此外,对于每个已配置的变量,如果该变量是要读取或写入的,则在发生并发访问时执行循环消息初始化,初始化和配置互斥锁。

SysML语言之序列图应用

图3 变量初始化序列图

4.交互引用

系统设计中,不同组件的交互存在某个事件的集合对于高层次的交互是通用的,或者把一个复杂的序列分解为几个低层次序列以提高可读性。为了支持大规模的交互,序列图采用交互引用(interaction reference)的方式,其引用描述在另外一个序列图上的一个已存在的交互。

交互引用的标识符是矩形,左上角用ref标识,说明引用了模型中某处定义的另一个交互,矩形放在参与被引用交互的生命线上。

SysML语言之序列图应用

图4 交互引用序列图

5.总结

本文介绍了SysML语言中序列图的常用语言符号用法,用于描述系统中不同组件一系列事件的顺序,由生命线表示。通过生命线、消息和组合片段可以描绘出复杂的系统行为,适合于定义系统行为发生的顺序,不同组件各执行了什么动作,以及组件行为的触发条件。因此,在跨系统的场景分析,不同系统之间的行为交互,可以采用序列图来辅助进行系统设计,提高设计的可读性。


Reference:

  1. A practical guide to sysml, the systems modeling language by sanford friedenthal, alan moore.

  2. Report on ‘TCMS framework concept’ design, security concepts and assessment.

本文始发于微信公众号(薄说安全):SysML语言之序列图应用

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: