通信软件设计-05SDL语言.ppt
SDL 语言,SDL mechine,SDL语言中的语法构件,定义包(Package)代理(Agent)系统图 System功能块图 Block进程 Process通信信道 Channel信号 Signal状态机动作/迁移过程定时器,SDL系统组成,System&Environment,SDL规格定义了系统(System)对来自环境(Environment)的事件的反应环境通过信号(Signals)向系统发送事件信号是SDL中描述系统和环境间通信的唯一形式,SDL System,ENVIRONMENT,signals,SDL的描述和具体系统的关系,SDL Overview-Process,在SDL中的进程(Process)通常是一个eFMS系统由一系列互相通信的进程(process instances)实例组成,System Instance,ProcessInstance,ProcessInstance,signals,signals,signals,SDL Overview-Blocks,当一个系统由大量的进程组成时,没有适当的静态结构会导致无法快速获得系统的整体目标功能块(Blocks)用于在SDL中适当的进行结构化和层次化的定义在进程间使用信号路由(Signal routes),在 功能块间采用信道(channels)来描述通信路径,Block,System(or another block),ProcessInstance,signal routes,Block,Block,channels,Block,在SDL中的通信方式,signal:信号时SDL中最基本的通信表达方式由发送代理所发送(Output)由接收代理所接收(Input)channel:信道是代理间通信的路径stimulus:激励是导致代理自发转移的一种事件,SDL 概览总结,环境,指在SDL规格之外的一切东西如人(用户),其他互联系统等不是SDL中的一个元素SDL system 是针对真实世界所建立的模型用于定义系统中的各个组成部分采用层次化的方式System 包含blocks,功能块之间用信道连接Block 包含processes,进程间使用信道连接blocks,子功能块Process 含有使用变量和过程所定义的属性使用状态(states)和迁移过程(transitions)所定义的行为Types 可用于定义system系统类,block 功能块类和processes 进程类,1 定义包(Package),含义用于定义代理类型、信号、变量、数据、过程等,解决可重用性在SDL的各个层次的代理图和过程图中用来进行SDL的结构化用来使用外部定义和提供给其他系统和包使用,可含有系统类,功能块类,进程类的定义信号定义,例子:定义包,例子:定义包(续),包的图形语法,:=contains*set is associated with,包的图形语法(续),:=package:=contains*:=use,包的图形语法(续),:=contains|*,包的图形语法(续),:=|,2 代理(Agent),一、代理图1、代理是SDL 2000中的概念2、代理可以表示为系统、功能块、进程3、图形语法,代理图包括三种类型:=|,代理图的图形语法,:=*|set:=,系统 System,一个SDL规格所定义的全部内容完整地描述一个真实系统或真实系统中相对独立的一个部分可划分为若干功能块,功能块之间用信道来连接功能块和环境之间用信道来连接不包含任何行为只包含抽象的结构,即black boxes通常含有信号和数据类型的定义用于定义系统中的内部数据类似头文件定义,例子:系统图,系统图的图形语法,:=contains is associated with:=system,系统图使用注意,系统图分页时,系统名不变页码格式系统图包括:包引用域、头部、文本域、交互域系统方框图的边界是与环境的交界定义部分可放在包中再引用,例子:系统和包,功能块 Block,可定义子功能块和进程图形语法:=contains is connected to*set is associated with,例子:功能块图,进程图引用符进程创建,创建符进程名(N1,N2)N1为初始化创建的进程实例数N2为运行时允许创建的进程最多实例数例:Manager(1,1)Caller(0,1000),功能块图中使用进程,Static&Dynamic SDL,SDL语法中包括静态构件和动态构建静态构件描述和规定系统的结构功能分解功能间的连接关系功能间通信的信号动态构件描述和规定系统的运行-行为SDL的迁移过程,迁移中的动作通信进程的生命周期,创建、运行和终止,Static SDL,在进行系统模型化分析是,用于对系统进行高层的抽象描述一个SDL的系统(system)可以包含一个或多个功能块(block)一个SDL的功能块(block)可以包含进程和功能块进程即eFSM,用来定义动态行为,System的功能分解原则,当面对一个复杂系统时,最好的办法是:大事化小,将系统分解为可以处理的复杂程度的逻辑单位:BLOCKs功能分解时按照系统的自身规律来进行:BLOCKs要反应真正的软件/硬件模块将功能块间的接口最小化:减少功能块间交换的信号的数量和种类,Structuring of the System Description,Decomposition Rules:No Limit in number of Block levels,Decomposition Rules:Blocks and Process cannot share a level,进程 Process,用于对真实世界进行建模的基本组件采用FSM作为其数学基础进程包含属性(data)行为(state machine)进程间通信可以发生在进程间,进程和环境之间通常使用信号signals来进行通信通过信道来进行通信通信是以异步方式进行的其他通信方式远端过程调用(remote process)和远端变量(remote variable)进程的行为和信号之间有关联关系行为是由一系列信号引起的状态转移,用Input-Action-Transition来定义行为 a signal is receivedsome tasks are carried out,signal(s)sent outtransition to another state每个进程都有一个或多个实例进程标识类型:PId4个保留字self(constant)本进程的PIDparent(constant)父进程的PIDsender(varies)最近被消耗信号的进程的PIDoffspring(varies)最近被本进程创建的进程的PID,进程 Process(续),进程的图形语法,:=contains is associated with:=process,过程,进程的一部分,可被进程调用过程符号,在进程和过程中说明一个被调用的过程1、图形语法:=contains*set is associated with,:=procedure:=(,*):=,:=in/out|in|out:=,*:=:=-:=contains|:=|,说明:过程图不是代理图,但可以使用包过程头包括:关键字、过程名、可带形式参数和返回值形式参数可包括:参数类型、变量名、数据类型过程文本域中定义局部变量2、举例过程调用符,3 通信,通常在通信中,有两种对通信的抽象描述:异步通信Asynchronous同步通信Synchronous在同步通信中:要求参与通信的进程同时参与通信,如果进程A准备发送信息而进程B没有准备好接收,进程A必须等待直到进程B准备好接收。,3 通信,在异步通信中:参与通信的进程不需要同时参与如果进程A准备发送信息而进程B没有准备好接收,进程A无需等待直接发送如果进程B准备接收信息,而进程A没有发送,进程B必须等待在异步通信中,必然要用到缓冲区来保存信息在协议通信中,绝大多数是采用异步通信的,在异步通信中的FIFOs,在绝大多数通信系统中,采用FIFO(First In First Out)的原则来处理信息的发送和接收在发送一个信息时,把信息附加在FIFO的队尾在接收时,从FIFO的队头取走,在异步通信中的FIFOs,在通信系统中,可采取一些办法来进行有优先级别的通信如优先级队列带外信道在实际的通信过程中,FIFO队列可以用来吸收通信时延的变化处理时延抖动,将抖动平滑的基本方法,3 通信,一、SDL中的通信方式异步信号同步远端过程调用共享变量,远端变量(remote variable)1、异步方式功能块之间、进程之间的信号收发无需等待确认2、同步方式一个进程实例调用另一个进程实例中定义的过程,等待返回,通信(续),二、信道(channel)1、含义代理之间、代理与系统环境之间传递信号的通路单向和双向信道延迟和非延迟信道2、图形语法4种信道符,标有信道名称、信关、信号列表信道符与代理域、状态机域或图边界信关连接,:=is associated with set is connected to|set,:=|:=:=:=:=,信号,三、信号(signal)代理之间、代理与环境之间传递的信息是进程间通信的基本单位信号可以定义参数抽象数据结构定义的参数信号列表,signal list可使用定义过的信号定义信号列表相似含义的一组信号的集合在信道上使用时,要用()来括起来和信号进行区别,信号的文本语法,:=signal,*:=(,*),信号的文本语法,:=signallist=:=,*:=|(),信号的图形语法,2、图形语法:=contains:=3、举例门控系统功能块:控制面板、卡校验器、门控制器内部信道、外部信道,例子:信号,FSM例子(VS-FSM),进程图中的几个核心组件,状态(STATEs):在进程(PROCESS)中监视输入队列,获得输入信号(SIGNALs)的点等待输入的状态状态迁移后的下一个状态 输入(INPUT):当 到达的信号和输入中的“信号”一致时,将执行输入下面的状态迁移过程INPUTs 可以指定信号和信号中的值INPUTs 可以是一个特定的定时器的超时输出(OUTPUT):规定了发送给另外一个进程的信号(SIGNAL),FSM例子(VS-FSM),VS-FSM的进程图(Process Diagram),用EFSM描述时,转移函数扩充t=e/p:ae输入事件,p谓词,a动作若t=e,则收到e,不执行动作就转移若t=e/a,则收到e,无条件执行动作并转移若t=e/p:a,则收到e,根据守护条件决定是否执行动作,同时状态转移,动作 任务TASK判断和转移分支DECISION,进程图中增加的组件,任务(TASK):表示对变量操作和其他操作在动作的符号内部来表示,如赋值语句、定时器设置等分支(DECISION):根据其内部表示的判断条件来决定进程的下一个分支汇接:相当于GOTO,进程图例子,process,calling 2/5,wait_for_num,T1,busyTone,VIA,uG,wait_for_onHook,num,(toNum),reset,(T1),getUserPid(toNum,otherPid),otherPid=NULL,True,msg(Sorry,wrong number),wait_for_onHook,False,wait_for_connRepl,onHook,reset,(T1),A1,在SDL中描述系统行为的组件,通过状态机(EFSM)描述系统行为状态机的启动状态、后继状态触发事件自发转移保存迁移过程输出、创建、任务、过程调用、分支、定时器、汇接,一、启动,1、图形语法:=is followed by:=2、举例启动符后可接初始状态或迁移过程。,状态,1、图形语法:=contains is associated with|*:=,状态域可定义为状态符,包含状态列表:=,*|:=(,*):=*,在状态列表中表示状态的几种形式,单个状态名多个状态名,如S1,S2,S3所有状态*除一些状态外的所有状态*(S1,S2,S3)下一个状态是自身状态时-,状态符可接输入符、优先输入符、连续信号符、保存符 状态机转移的结果是进入后继状态:=contains:=|-,触发事件,三种触发事件输入事件、优先输入事件、连续信号事件在SDL machine中隐含着输入队列例子:键盘输入,触发事件输入事件,1、输入状态机接收并消耗信号 图形语法:=contains is connected to is followed by:=,:=,*|:=(,*):=允许条件(使能条件)True:消耗信号,False:保存信号:=contains:=输入信号可带参数使用变量接收参数值,输入接允许条件(使能条件),当状态在S1时,收到输入信号msg后,系统计算“XMAX”的结果结果为真,消耗msg信号,继续进行后续状态转移过程;结果为假,不消耗msg信号,msg信号依然在输入队列中,系统持续计算表达式“XMAX”,直到结果为真或系统由于其他输入信号而执行了其他状态迁移过程,触发事件优先输入事件,2、优先输入信号队列FIFO原则处理,但优先输入除外不接允许条件符 图形语法:=contains is followed by:=,*:=(,*):=,触发事件输入事件,3、连续信号状态转移由布尔表达式取值引起图形语法:=contains;priority is followed by:=:=注意连续信号和允许条件的区别,自发转移,非外部激励也能使状态机发生转移1、图形语法:=contains none is followed by 进程实例PId值:Sender=Self2、举例,none,保存,1、图形语法:=contains:=|:=2、举例,保存例子,保存(上一个例子的处理过程1),注:从上到下表示处理的顺序,保存(上一个例子的处理过程2),注:从上到下表示处理的顺序,在输入中表示信号,单个信号多条信号S1,S2,S3除了在本状态下已经列出的信号外的所有信号*,输入、连续信号、保存,迁移过程,状态机受到激励之后,执行的一系列动作1、输出通过信道一个代理实例发信号给另一个代理实例 图形语法:=contains:=,迁移过程-输出,:=,*:=():=expression,*:=to|*:=|this:=via|,迁移过程-输出,说明输出体中信号标识符可带参数,可以为数值、表达式、变量等信号最终要被一个进程或过程消耗(to)pid expression:self、sender、parent、offspringagent identifier:进程实例名this:本进程类型通过的路径(via)承载信号的信道名经过的信关to和via不能同时使用;都不使用时,通过唯一的信道发送出去举例:门控系统的控制面板进程,用户通过,迁移过程-创建进程,2、创建静态创建,在系统初始化时创建动态创建 图形语法:=contains:=:=|this 举例,动态进程处理,在SDL中可以动态创建和撤销(created and destroyed)可以使用创建符号来创建一个进程;在创建符号内包含着被创建的进程类型用offspring保留变量来返回被创建的进程ID在SDL中用终止符号(Stop)来表示进程结束,The User ServerInitialisation Procedure,迁移过程-任务,3、任务执行与变量有关的动作 图形语法:=contains:=:=|,迁移过程-任务,说明任务符包含语句列表赋值语句、条件语句、分支语句、复合语句、设置语句、复位语句a)赋值:=,x:=1;y:=x+1,迁移过程-任务,b)IFIf()else c)DecisionDecision()():+else:d)组合语句e)非形式化文本描述,if(x 0)x:=1;else x:=x+1;,decision(a)(=0):b:=1;(1:9):b:=2;else:b:=3;,迁移过程-过程调用,4、过程调用在进程或过程中都可以调用过程进程图和过程图的区别 图形语法:=contains:=,过程图Procedure,PROCEDURE:和子程序类似 用于在SDL进行代码重用减少SDL进程图的大小,将注意力集中在主要迁移过程可以通过value(IN)或reference(IN/OUT)的方式传递参数,迁移过程-调用和返回,:=:=is associated with:=说明过程调用符中的实参与过程图中定义的形参匹配过程图中定义的形参为in、out、in/out型过程可有返回值,标在返回符旁调用过程可认为是一个任务,过程与进程,起始符不同过程必须有返回符进程可以没有结束,即没有终止符过程可以使用状态过程没有信号输入队列,信号来自调用者(调用过程的进程)的信号输入队列,迁移过程-分支,5、分支分支操作是一个动作,通过计算条件表达式选择不同迁移过程 图形语法:=contains is followed by:=,迁移过程-分支,:=|any:=+set:=is associated with is followed by:=|():=is associated with elseis followed by:=|:=,分支,process,calling 2/5,wait_for_num,T1,busyTone,VIA,uG,wait_for_onHook,num,(toNum),reset,(T1),getUserPid(toNum,otherPid),otherPid=NULL,True,msg(Sorry,wrong number),wait_for_onHook,False,wait_for_connRepl,onHook,reset,(T1),A1,迁移过程-定时器,6、定时器在状态机图中,监视激励信号是否在定时器规定时间间隔内到达。若无激励到达,则触发超时事件,作为激励输入。定时器操作包括:设置和复位执行一个定时器操作即执行一个任务超时作为一个触发事件,引起状态的迁移过程,迁移过程-定时器,文本语法:=timer,*;:=:=:=(,*)图形语法设置定时器、复位定时器超时事件,迁移过程-定时器,:=contains:=set(,):=now+:=(,*):=contains:=reset(),迁移过程-汇接,7、汇接两种方式:连接符、合并 连接符入连接域和出连接域对每个出连接域,必须有且仅有一个同名入连接域与之对应多个出连接域可汇接到一个入连接域连接符只用于迁移过程,不可连接状态和触发事件,迁移过程-汇接,图形语法:=contains:=:=contains is followed by:=,迁移过程-合并,合并迁移过程对进程图中某一状态,不同触发事件引起不同迁移过程,若最终迁移到同一状态时,可先合并迁移过程图形语法:=is connected to:=举例,SDL图形符号连接关系小结,启动符可接初始状态、迁移过程连接符不可连接状态符和触发事件迁移过程为一系列动作符号迁移结果进入后继状态、进程终止区别进程图和过程图的起始符和结束符进程图和过程图只能始于启动符、状态符、入连接符,图形符合连接关系,注释和正文扩展,1、正文扩展2、注释,SDL-Summary,Structure关注功能块和进程间的组成关系引入结构化可以使整个系统的内部组成易于理解能更好的反应和真实系统的情况结构化和接口(interface)直接相关Behavior关注信号的发送和接收关注在进程内的状态转移的描述通过进程的动态描述和信号的通信过程来达到系统的行为描述,SDL-Summary,Data关注信息的保存在信号中保存在进程内保存是eFSM中进行谓词逻辑运算的基础,从而在进程中可以进行判断和转移Interfaces关注信号和信号间的通信路径SDL中的通信行为是异步通信,在SDL的通信中:信号传递是有延迟的信号在接收端是有可能被排队的通过在接口上的通信将SDL系统的行为向外界表现出来,SDL-Summary,Structure 用系统、功能块、和进程来对被描述(和定义)的系统进行层次化定义的手段Channels 用来承载在代理(Environment,System,Blocks,Processes)间通信的信号(information&stimulus)SDL的目标是描述和规定系统的所有行为通过包含在系统内的功能块或进程的行为来进行描述和定义一个系统,