《消息顺序图MSC讲义课件.ppt》由会员分享,可在线阅读,更多相关《消息顺序图MSC讲义课件.ppt(71页珍藏版)》请在三一办公上搜索。
1、消息顺序图,MSC,Message Sequence Chart,演讲人:周刚 电话:38639815 E_mail:,学习的目标及任务,1、熟悉MSC的基本概念,2、熟悉常用的MSC做图方法及相应文字文法的表示,3、能够阅读分析较复杂的MSC图,4、能够自己分析相关案例,画较简单的MSC流程图,3.1 概述3.2 MSC基础3.3 MSC文档3.4 MSC结构概念,3.1.0 MSC是什么3.1.1 MSC特点3.1.2 MSC实体类型3.1.3 定义图形文法的符号说明,3.1 概述,主菜单,3.1.0 MSC是什么,是用来描述多个实体之间和实体与环境之间消息交互顺序的一种形式语言。,形式语
2、言:通用建模语言 Unified Modeling Language UML消息顺序图 Message Sequence Chart MSC规格与描述语言 Specification and Description Language SDL,二、MSC的文法:,文本文法 Textual Grammar图形文法 Graphical Grammar,一、MSC的定义:,返回,3.1.1 MSC的特点,MSC是一种形式语言(自然语言与形式化共同描述)MSC是一种实用语言(可用于软件开发的整个生命周期)MSC是一种消息跟踪语言(它是专门用来描述通信及事件的发生顺序)MSC支持不完整的规范说明(需求分析
3、初,可以描述不完整的系统行为)MSC是一种图形化语言(它用二维图形来概括通信实例的行为)MSC支持结构化设计(基本MSC图组合成高级MSC图)MSC可与其他方法和语言联合使用(比如与SDL、TTCN的联合)MSC可以描述不允许出现或不可能出现的行为(通过自然语言),返回,3.1.2 MSC的实体类型,MSC文档 MSC图 实例 状态,定时器 消息 通道 变量,视见域(SCOPE)MSC文档、MSC图,1、实体名称的相异性2、实体名称的局部性,返回,3.1.3 图形方法的符号说明,括号内的符号为非终结符,需进一步定义 括号内的内容有关联性*括号内可选,可以为零或任意次+括号内必选,可以出现一次或
4、任意次:=定义符。左边为非终结符,右部为非终结符/终结符串|或符,两边为并列关系。,符号,3.1.3 图形方法的符号说明(续),contains is followed by is associated with is attached to above set,词组,3.1.3 图形方法的符号说明(续),contains,词组,意义 包含,MyMSC,:=contains,3.1.3 图形方法的符号说明(续),is followed by,词组,意义 与具有上下关联关系,:=is followed by,:=is followed by,is followed by,:=is followe
5、d by is followed by,3.1.3 图形方法的符号说明(续),is associated with,词组,意义 附属于,而且一般为文字内容,msg,:=is associated with,消息标识符,消息符,3.1.3 图形方法的符号说明(续),is attached to,词组,意义 与相连,而且必须为一个或一组图形符号,msg,:=is attached to,消息结束域,消息开始域,3.1.3 图形方法的符号说明(续),is attached to,词组,意义 与相连,而且必须为一个或一组图形符号,:=is attached to*set,Sys,ICONreq,ICO
6、Nind,MSC ABC,3.1.3 图形方法的符号说明(续),above,词组,意义 位于垂直上方相连,:=above,:=above,3.1.3 图形方法的符号说明(续),词组,set,例::=*set表示:文本层是一个包含零个或多个文本域的无序集合:=set表示:是由花括号内的元素组成的一个无序集合,返回,Sys,ICONreq,ICONind,MSC ABC,3.2 MSC 基础,3.2.1 消息顺序图3.2.2 实例3.2.3 消息3.2.4 条件3.2.5 定时器,3.2.6 动作3.2.7 进程创建3.2.8 进程终止3.2.9 调用与回复3.2.10 环境与通道,主菜单,3.2
7、.1 消息顺序图(MSC图),功能:描述系统中若干组件之间的通信和组件与外部环境之间的通信,系统组件在MSC图中以实例的形式出现,一张MSC图只描述系统的部分行为。其图形文法定义:,:=|:=contains:=contains containing-clause,说明:1、简单的MSC图由标题部分和主体域组成。2、高级MSC图由标题部分和MSC表达式域组成,子句是可选项,3.2.1 消息顺序图(MSC图)(续),:=contains,3.2.1 消息顺序图(MSC图)(续),:=contains,3.2.1 消息顺序图(MSC图)(续),:=set,说明:MSC主体域包括实例层:=*set文
8、本层:=*set通道定义层:=*set事件层:=|above 连接器层:=*|*|*|*|*|*set,3.2.1 消息顺序图(MSC图)(续),msc,例题一:MSC图的一般形式,方框符frame symbol,关键字key,MSC图名,MSC主体部分,代表系统的内外部环境分界线,3.2.1 消息顺序图(MSC图)(续),例题二:建立连接的简单MSC图,calling_party,called_party,process digite,process digite,When Idle,Seizure,Talking,off-hook,dial-tone-on,digit,dial-tone-
9、off,digit,seizure-int,ack,ring-back-tone-on,off-hook,anwer,connetion,internal-ringing-on,msc connection,3.2.1 消息顺序图(MSC图)(续),例题二:建立连接的简单MSC图(续),1、两个实例之间交互一条消息被定义为两个事件发送消息事件(对发出该消息的实例而言)消耗消息事件(对接收并处理该消息的实例而言),2、主叫方(calling_party)事件发生顺序in(off_hook)out(dial_tone_on)in(digit)out(dial_tone_off)in(digit)o
10、ut(seizure_int)in(ack)out(ring_back_tone_on)in(answer)out(connection),3、被叫方(called_party)事件发生顺序in(seizure_int)out(ack)out(internal_ringing_on)in(off_hook)out(answer),4、主叫与被叫之间的事件发生顺序out(seizure_int)in(seizure_int)out(ack)in(ack)out(answer)in(answer),返回,3.2.2 实例,定义:代表某种实体,具有该实体的所有属性。构成:实例头部、实例轴、实例结束符
11、、终止符。,:=,:=,:=,:=,:=,说明:1、实例轴符有两种表现形式:单线、双线形式2、结束符仅代表该实例在本MSC图中要描述部分的结束。而终止符则代表实例真正的结束。终止符仅适用于进程类型的实例。,3.2.2 实例(续),例一:实例标题的表现形式。,inst,inst:process digit,说明:标题部分仅给出实例名,实例名,实例类型,类型名,process digit,inst,实例名放于实例头部符中,全部放于标题部分,或,3.2.2 实例(续),例二:实例的分解(decomposed)。,process digit decomposed,inst decomposed,ins
12、t,decomposed as,inst,说明:表示将inst分解成另一个MSC图,对应图名为inst,说明:分解后采用新的图名,优点:通过这种MSC分解机制,可以构成层次化的MSC图结构,3.2.2 实例(续),例二:实例的分解(decomposed)(续)。,msc Sys,返回,3.2.3 消息,定义:消息(message)用来在两个实例之间或实例与环境之间交换信息。简介:1、消息的两个事件:消息入(message in)消息出(message out)2、消息的异常情况:消息丢失 输入异常消息3、消息的域:消息事件域 消息域 不完整消息域,消息事件域:在实例轴上标出消息入事件和消息出事
13、件的发生点。消息域:给出消息发送的方向和消息名及参数。不完整消息域:用来表示消息丢失和来源不明的消息。,ICONreq,消息事件域,消息事件域,消息域,in,out,3.2.3 消息(续),例:消息入与消息出事件,msc Sys,消息1,消息2,消息3,消息入,消息出,消息入,消息出,3.2.3 消息(续),有关消息的图形表示,:=说明:消息符,:=说明:消息丢失画图注意事项:消息实例名位于丢失消息符上方,目的地实例名或通道名位于实心黑圈旁边。可以反向使用。,:=说明:检到消息画图注意事项:检到消息符的箭头与消息结束域(实例或通道)相连,消息的实例名位于检到消息符上方。可以反向使用。,3.2.
14、3 消息(续),例一、消息丢失的例子,Responder,Initiator,When Disconnected,Disconnected,ICONreq,Wait_For_Resp,msc failure,IDISind,Responder,ICON,T,说明:消息ICON从实例Initiator发出后丢失。未能到达实例Responder,结果导致超时,连接请求失败。,3.2.3 消息(续),例二、检到消息的例子,game,When odd,odd,even,msc change_status,说明:当系统处于“奇(odd)”状态时,如果收到消息“none”,则状态改为“偶(even)”。当
15、系统处于“偶(even)”状态时,如果收到消息“none”,则状态改为“奇(odd)”。,none,none,典型应用:系统状态的改变靠随机事件产生,常用于游戏程序中。,返回,3.2.4 条件,用途:用来描述系统的全局状态或局部状态图形文法的定义:,:=contains is attached to*set,:=,CON1,CON2,CON3,图例,CON4,中间的实例与条件CON4无关,3.2.4 条件(续),条件符的“连接符”的作用:条件符除了用来描述系统状态外,还可以起到连接符的作用。当MSC图要描述的系统行为比较多时,往往在一页纸上画不下,这时可以将该MSC图分解成多个MSC图,分别画
16、在多张纸上,图与图之间用同名条件来连接。,条件起连接作用的应用:1、全局状态连接全局状态2、局部状态连接全局状态3、全局状态连接局部状态,3.2.4 条件(续),CON1,inst a,inst b,inst c,msc MSC1,inst a,inst b,inst c,msc MSC2,When CON1,说明:消息顺序图MSC1的结束条件为CON1,而消息顺序图MSC2的初始条件也为CON1,所以,MSC2可以看成是MSC1的继续。,例一、条件起连接作用的例子(全局状态连接全局状态),结束状态,起始状态,3.2.4 条件(续),inst a,inst b,inst c,msc MSC4,
17、When CON2,说明:MSC4可以看成是MSC3的继续。,例二、条件起连接作用的例子(局部状态连接全局状态),inst d,3.2.4 条件(续),说明:MSC6可以看成是MSC5的继续。,例三、条件起连接作用的例子(全局状态连接局部状态),CON3,inst a,inst b,inst c,msc MSC5,inst b,inst c,msc MSC6,When CON3,3.2.4 条件(续),说明:分解后的图的页码按“v-h”方式编排。v 对应纵向分页,采用阿拉伯数字h 对应横向分页,采用大写英文字母,例四、画在多张纸上的页码表示,返回,1-A,1-B,2-A,2-B,3.2.5 定
18、时器,定义:用来监视某一事件(一般为等待接收消息)的到达。,定时器的符号表示,一、启动定时器:就是在系统中创建一个定时器的实例,:=,:=,:=,说明:定时器由实例来启动的,所以定时器启动符和再启动符的一端必须与启动该定时器的实例轴相连,而另一端则与定时器终止符(复位定时器)或定时器超时符相连。,3.2.5 定时器(续),二、复位定时器(定时器终止符),:=,:=,说明:当定时器启动符不便与定时器终止符相连时。例如:启动定时器与复位定时器不在同一页时。,说明:用于一般情况。即竖直线连到定时器启动符,水平线连到实例轴。,3.2.5 定时器(续),二、复位定时器(定时器终止符),说明:实例Init
19、iator发出消息ICON前设置定时器T,用来监视消息ICONF的到达。当收到消息ICONF后复位定时器。,例,Responder,Initiator,When Disconnected,Connected,ICONreq,Wait_For_Resp,msc connection,ICONconf,ICON,T,ICONind,ICONF,ICONresp,3.2.5 定时器(续),三、定时器超时,:=,:=,说明:定时器超时是一种输入事件,定时器必须有一个箭头与实例轴相连,:=,跨页的情况,同页的情况,3.2.5 定时器(续),三、定时器超时,例,Responder,Initiator,Wh
20、en Disconnected,Disconnected,ICONreq,Wait_For_Resp,msc failure,IDISind,Responder,ICON,T,说明:实例Initiator发出消息ICON前,设置定时器T,用来监视实例Responder响应消息的到达。但消息ICON从实例Initiator发出后超时,导致请求失败,未能到达实例Responder。,返回,3.2.6 动作,说明:MSC除了用来描述通信实体之间的消息交互顺序外,还可描述通信实体在通信过程中需完成的一些动作(操作)。,文法定义如下:,:=is attached to contains,:=,说明:1、
21、当实例轴线采用双线形式时,动作符的宽度与双线宽度一致。2、动作符描述的动作仅限于实例内部。,返回,3.2.7 进程创建,说明:在MSC中,进程创建分两种:静态创建:系统初始化时创建的进程。动态创建:在系统运行过程中创建的进程。,文法定义如下:,:=is associated with is attached to is connected to,说明:1、进程创建的动作是立即执行的,由执行创建动作的实例创建另一个进程实例。2、创建线符无箭头一端与实例轴相连,被视为创建事件。创建线符有箭头的一端与被创建进程实例的头部符相连。3、创建进程时,创建者可以向被创建者传递参数。,返回,:=,3.2.8
22、进程终止,说明:进程终止是指终止进程实例。执行了进程终止的进程实例在系统中就不存在了。,说明:实例manager收到环境发来的消息HKoff,创建实例subscriber,同时向实例subscriber传递参数lineno,进程实例subscriber收到消息terminate后执行终止操作。,返回,manager,HKoff,HKon,terminate,subscriber,lineno,msc example4,3.2.9 调用与回复,说明:在MSC的两个实例之间,除了可以通过交互一条消息来交换信息和控制两个实例的执行顺序外,还可以通过调用一个方法(method)和回送结果来达到同样的目
23、的。调用和回复使用同一个方法名。分为:同步方式:调用者发出调用信号后要等对方回复信号到达后才能继续往下执行,在等待期间,该实例处于挂起状态。异步方式:调用者发出调用信号后不等回复信号,继续往下执行。,图形文法的定义:,:=,:=,:=,3.2.9 调用与回复(续),说明:回复符与方法调用符成对出现,并紧跟在方法符下。,:=,:=,:=,:=,说明:方法符被视为实例轴的一种特殊形式。可以发生在实例轴上的事件均可以发生在方法符上。,说明:在挂起期间,实例处于不活跃状态,不能处理事件,只可以接受方法调用请求和产生回复信号。,3.2.9 调用与回复(续),例一、方法调用与回复,call Method1
24、,Method1,TC,SUT,msc method_call,说明:TC以同步方式调用SUB中的方法。TC发出调用信号Method1,等待SUT回复,在等待期间,TC处于挂起状态,用挂起符来表示。在此段时间,SUT用方法符来表示,方法符可以被视为实例轴的一种特殊形式。,3.2.9 调用与回复(续),例二、方法的嵌套调用,call MethodB,call MethodA,A,B,msc method_nest,说明:实例A先以同步方式调用实例B中的方法MethodB,实例A被挂起。实例B在执行方法MethodB过程中,又需要调用实例A中的方法MethodA,也是采用同步方式,实例B被挂起。这
25、时,虽然实例A被挂起了,但仍然可以接收方法调用请求,执行方法过程。方法执行完后仍回到挂起状态。实例B收到方法MethodA的回复消息后,继续执行方法MethodB,直到结束,送出回复消息。,MethodA,MethodB,返回,方法是可以嵌套的,3.2.10 环境与通道,说明:MSC图的主体是实例,MSC图的边框是MSC系统的环境,实例可以从环境输入消息,也可以向环境输出消息,实例与环境交互的消息通过通道来完成。通道名可以是显式的,也可以隐式的。,MyMSC,i,j,k,s1,s1,s4,s3,s2,g,h,msc gates,说明:该图定义了五个通道,两个显示,三个隐式的。,返回,3.3 M
26、SC 文档,MSC文档:包括MSC系统中用到的实例名、简单MSC图名、高级MSC图名、消息名及其参数、定时器及变量等。其图形方法定义如下:,:=contains 文档标题部分 is followed by 定义部分 is followed by 实用部分,说明:1、MSC文档的内容也包括在方框符内,共包括三大部分:文档标题部分、定义部分和实用部分。2、文档中的定义部分和应用部分需用虚线分开。参见书本:Page 62-63,主菜单,3.4 MSC 结构概念,主菜单,3.4.1 并发3.4.2 MSC引用3.4.3 线内表达式3.4.4 高级MSC(HMSC),3.4.1 并发,问题:某通信实体在
27、某状态下需要收到两条或更多消息后才能够往下进行,而这些消息到达的时间顺序是任意的,即实例消耗这些消息的顺序是任意的。实例轴上无法表达这种无序的情况。解决:并发是用来描述在实例轴上发生时间无序的事件。其图形文法表示如下:,:=,:=,应用范围:单线形式实例轴:图一、二均可双线形式实例轴:图二,3.4.1 并发(续),说明:主叫进程(caller)在号码分析得出出局呼叫类型后,向资源管理进程发出申请出中继和MFC收发器(采用中国1号信令)。当两种资源均有空闲时(同时消耗消息trunk_ok和mfc_ok,但与消息到达顺序无关),创建出中继进程(ogt)。,返回,trunk_ok,mfc_ok,og
28、t,trunk_no,ogt_confirm,msc wait_trunk,caller,例:并发的例子,3.4.2 MSC引用,定义:MSC引用是指在MSC图中引用别的MSC图,被引用的MSC图用一个引用符来表示。,使用:1、引用符上有实际通道,通过它们与新的MSC图中的实例和环境交互消息。2、与引用无关的实例的实例轴可以穿过引用符。3、如果被引用的MSC图定义了参数,则在引用时需给出一对一的实际参数。4、MSC引用不能递归引用。,引用符的图形文法::=,优点:通过引用MSC,可以形成层次化结构,简化设计。,3.4.2 MSC引用(续),说明:被引用的MSC图中,从环境输入消息在被引用时必须
29、从实际通道输入相同的消息,输出到环境的消息在被引用时也必须从实际通道输出相同的消息。,引用别的MSC图的例子,被引用的MSC图,返回,3.4.3 线内表达式,功能:用线内表达式符(inline expression symbol)将MSC图中的一部分包起来,加上不同的操作符,构成不同的结构。可以在MSC图中构造分支结构、并行结构、循环结构等。,图形文法的定义:,:=线内表达式符,:=异常线内表达式符,3.4.3 线内表达式(续),分支结构的MSC图,说明:图中线内表达式符包含的内容是二选一的关系:1、定时器超时(未收到消息“ICONresp”)。2、正常(收到消息“ICONresp”)。,3.
30、4.3 线内表达式(续),超时情况,正常情况,分支结构MSC图分解以后,前图相当于这两张图的合成,3.4.3 线内表达式(续),功能:异常线内表达式符包含的内容为异常情况,而符号以下的内容为正常情况。,画法不一,但功能完全等效,3.4.3 线内表达式(续),操作符介绍:异常线内表达式符只用于异常操作符,如exc;线内表达式符适用于其它操作符,如alt、loop、opt、par等。,opt:选项操作符。指在线内表达式符内的内容是可选的,含义与“alt”操作相同,只是另一分支的内容为空。,3.4.3 线内表达式(续),loop:循环操作符。指在线内表达式符内的内容将循环若干次,循环次数可以指定。,
31、例如:loop 表示最少循环n次,最多循环m次。loop 与 loop 等价。loop与loop等价,表示最少循环1次,可以循环无限次(inf)。,说明:该图引用了MSC message_lost 或 MSC time_out。它表明,只要连接建立请求不成功,就一直发送连接建立请求“ICONreq”,直到成功。,3.4.3 线内表达式(续),par:并行操作符。指在线内表达式符内有两部分内容,它们在时间上是同时发生的。它们之间用分隔符分开。,说明:实例Station_Res向环境发出消息ICONind的同时,环境向实例Station_Res发出消息IDISreq。这样,实例就收不到消息ICON
32、F,而是收到消息MDAT(DR),连接建立请求不成功,复位定时器,向环境发送拆除连接指示IDISind。,返回,3.4.4 高级MSC(HMSC),作用:是把一组MSC图组合成更复杂的MSC。HMSC是有向图。,图中涉及到的节点表示:,开始符:=,结束符:=,MSC引用符:=,条件符:=,连接点:=,并行框:=,3.4.4 高级MSC(HMSC)(续),说明:该图是一个顺序结构的例子,HMSC con_setup说明了连接建立成功的情况;图中引用了两个简单MSC图Connection_request和Connection_confirm,分别对应连接建立请求过程和连接建立证实过程。系统起始状态
33、为未连接状态Disconnected,经过一个中间状态Wait_For_Resp,连接建立成功,系统进入已连接状态Connected。,例一 顺序结构,3.4.4 高级MSC(HMSC)(续),说明:在系统起始状态Disconnected下,连接建立请求可能成功(Connection),也可能失败(Failure)。如果成功则系统进入连接状态Connected;如果不成功,则系统将循环请求建立连接,直到连接成功。,例二 循环结构,3.4.4 高级MSC(HMSC)(续),说明:在HMSC par_HMSC中,被引用的两个简单MSC CR 和 DR是并行执行的。,例三 并行结构,返回,MSC文本文法的总结,参见 Page 187,谢 谢Thanks!,