1、,四、协议的形式描述语言,Slide 1,主要内容,形式化方法,协议的形式化模型,协议的形式描述语言SDL,Slide 2,1、形式化方法,Slide 3,形式化方法的引入,系统行为的复杂性增大了行为描述的难度,必须借助一种语言或一种技术来准确的描述系统的行为。,自然语言具有冗长、不完整、语句容易产生二义性、结构性差和没有描述标准等缺点。,国际标准化组织建议用形式化方法来描述复杂的系统。形式化方法使得对通信系统的描述、实现和测试变得容易。,Slide 4,与自然语言相比,形式化方法具有以下的特点:,形式化的语法形式化的语义,清楚的概念模型界面统一表示,强大的表达和描述功能有助于系统的实现和完善
2、,形式化方法的特点,Slide 5,形式化方法的最终目的,为开发者提供一种分析、设计的方法作为对开发结果进行验证、测试的基础为设计和应用人员提供交流的途径,作为开发文档易于今后的维护和再开发,Slide 6,2、协议的形式化模型,Slide 7,协议的形式化模型,有限状态机(FSM)Petri网,时态逻辑TL,通信进程演算,Slide 8,有限状态自动机可定义为一个四元系统 ,其中:,S:系统状态集,状态数有限; i:系统初始状态,i S; E:输入字母集;,T:转移函数集,是从 SE到S的映射;,有限状态自动机(1),有限状态自动机(2)单比特奇偶检验器的有限状态自动机,偶,奇,1,1Sli
3、de 9,0,0,Slide 10,扩展有限状态自动机(1),扩展有限状态自动机定义为一个四元系统 ,其中:,S:系统状态集,状态数有限; i: 系统初始状态, i S; E:输入事件集;,T:转移函数,是从SE到S的映射,扩展有限状态自动机(2)转换函数的定义:,Si,Sj T, Si,SjS,t = e / p:a;或t = e / a;或t = e其中:eE,p为谓词,表示条件;a表示动作Slide 11,t,等AK,扩展有限状态自动机(3)等待DC,等CC,DC未连接,AK,TDTreq/DT,CC/TCONconf,TDISreq/DR已连接,TCONreq/CR,传输层协议机Sli
4、de 12,Slide 13,可通信的扩展有限状态自动机,系统的行为通过可通信的扩展有限自动机来描述,系统由扩展的有限状态自动机组成,扩展的有限状态自动机具有与外界通信的能力:,输入/输出动作,Slide 14,Petri网,Petri网的概念最早是由德国的Carl Adam Petri 于1962年提出的。,它是一种适合于并发、异步、分布式系统描述与 分析的图形数学工具。,Petri网已成为网络协议分析和设计的典型形式 化模型之一。,Slide 15,时态逻辑(TL),它涉及含有时间信息(现在、过去、将来、之前 、之后等)的事件、状态及其关系的命题、谓词 和演算。,P1=a.(c.NIL+b
5、.NIL)P1=Q2 I Q3,(选择)(并行),通信进程演算(CCS)是计算机通信系统的基本理论模型,也是许多形式化语言的基础。CCS的基本成分是事件和进程,而进程是通过顺序、选择和并行三个基本算子来定义的。P1=a.b.NIL P2=a.b.P2 (顺序),Slide 17,3、协议的形式描述语言,Slide 18,ESTELLE,为准确描述OSI协议,ISO的FDT(形式描述技术)小组于20世纪80年代初开 始进行形式描述语言的开发研究。最初提出了20多种方法,大致可归结为2 类:基于有限状态机语言类和基于代数方法语言类。ESTELLE(一种扩充的 有限状态机语言)是前一类语言的典型代表
6、。1989年,ISO公布了作为形式 描述技术国际标准之一的ESTELLE。,ESTELLE是基于扩展的有限状态机,是一种形式化、数学化,并且与具体实 现相独立的描述技术。它具有良好的结构和定义,并且具有很强的表达能力 ,可以完整、一致、简练、准确的描述分布、并行信息处理系统。,ESTELLE的特点:基于扩展有限状态机,专为描述协议而设计;是Pascal 语言的扩充,是面向协议实现的FDL;模块之间的通信方式为异步通信;对 并发、不确定性、超时、异步通信状态转换有较强的表达能力,但对递归、 共享通道、同步通信的表示不足;其所描述的协议很容易转换为FSM、Petri 网模型,不容易转换成TL、 C
7、CS模型。,Slide 19,ISO的FDT(形式描述技术)小组经过8年多时间的努力,于 1988年8月完成了作为国际标准的形式描述语言(LOTUS, Language of Temporal Ordering Specification)。,LOTOS的基本思想是:外部可观察到的系统行为由一系列的 交互作用组成,通过对这些交互作用的时间关系进行定义,从 而描述整个系统。,LOTOS的特点:基于进程代数CCS和多类代数的FDL;进程 通信为同步通信;不是面向协议实现的语言;其所描述的协议 很容易转换为CCS模型,也比较容易转换成TL、FSM、Petri 网模型。,LOTOS的不足之处:无异步通
8、信机制、无清晰的记录型数据 结构的描述手段、无常量描述手段、可读性差。,LOTOS,Slide 20,SDL,SDL(Specification and Description Language) 是ITU-T提出的一种形式化描述语言,由Z.100建议定 义。,SDL的版本:, SDL-88:是后续版本的基础 SDL-92:引入面向对象的概念 SDL-96:对SDL-92的完善, SDL-2000:对面向对象的特征作了进一步的扩展;引入了其,它语言,如ASN.1、ITU-T ODL、UML等,Slide 21,SDL的特点,可用于需求分析到具体实现的整个开发过程。适应于实时系统,基于扩展的有限
9、状态机,图形化表示方式,可视性强具有面向对象的特征,Slide 22,4、SDL,Slide 23,内容,SDL语言概述SDL基本概念SDL中的数据,Slide 24,4-1、SDL语言概述,Slide 25,SDL的应用(1),SDL主要应用于电信领域,适用于描述活性离散系 统。,活性:是指系统对外来的信号(输入)是有反应,(输出)的,离散:是指系统与环境的信息交互不是连续的,Slide 26,SDL的应用(2),既可以用来说明(specification )一个系统 应具有的行为(behaviour);又可以用来描 述(description )一个系统实际具有的行为 (behaviour
10、)。,SDL可用来制作以下文档:,需求说明,ITU-T建议,系统设计说明 系统设计描述 系统测试说明,SDL的系统和环境系统环境交互信号,SDL系统,环 境,信号,SDL系统层次关系系统,功能块,功能块,进程,功能块,进程进程,功能块进程,Slide 29,SDL系统包含关系,SDL系统,功能块图,进程图,Slide 30,SDL中的主要术语,代理(agent),系统(system) 功能块(block) 进程(process) 信号(signal),信道(channel) 状态(state),实例(instance) 过程(procedure) 数据类型(sort) 进程标识(pid),Sl
11、ide 31,SDL文法概述,graphical grammar,abstract grammar,common textual grammar,SDL/GRSDL/PR,textualgrammar,Slide 32,4-2、SDL基本概念,Slide 33,系统(1),SDL系统:完整地描述一个真实系统或一个真实系统中相对 独立的一部分。,一个系统可以划分为若干个功能块;功能块之间以及功能块 与环境之间用信道相连。,系统各功能块之间以及功能块与环境之间可以使用信号通信 ;信号通过信道来传递。,系统的文本域:用来定义信号、信号列表、数据类型、变量 等,这些定义包含在文本符内。,系统的交互域:
12、描述系统图中功能块的划分情况以及信道的 设置情况。,Slide 34,系统(2),Slide 35,功能块(1),功能块包括一个或多个并发的功能块或进程;功能块文本域定义本功能块内部信号、信号列表、 数据类型等内容;,功能块的交互域描述本功能块中功能块或进程的组 成及交互关系;,在功能块图的边界上,要标出与本功能块相连的信 道标识。,Slide 36,功能块(2),Slide 37,功能块(3),Slide 38,进程(1),进程是系统的基本组成单位,系统的行为主要由进 程来描述;,进程图中每个进程实例都有一块私有存储空间,记 录进程图中定义的变量的数值及实例所处的状态。,Slide 39,进
13、程(2),进程实例一旦被创建,就拥有了一个自己的pid,通 过以下四种pid表达式可以得到进程实例的pid:,self返回本进程实例的pid;,sender返回发送最近被消耗信号的进程实例的,pid;,parent返回创建本进程实例的进程实例(父进程,)的id;,offspring返回最近被本进程创建的进程实例(子,进程)的 pid。,Slide 40,进程(3),进程中可以定义过程,过程图可被包含在进程图中 ,也可单独定义。,在进程图中用过程符来说明定义关系。,如果在进程图中包含了过程符,则在SDL描述中必 然有具有相同过程名的过程图存在。,过程只能由包含该过程的进程的实例来调用,如果 该进
14、程以外的代理实例要调用该过程,就必须把该 过程声明为远端过程(remote procedure)。,proc1,状态机图,进程(4)use process 定义变量等,Slide 42,过程(1),过程是进程的一部分,过程不存在过程实例,它可由包含该过程的进程集 的所有实例来调用,过程用过程图来定义,过程中还可以定义过程,过程可以带参数,参数类型有三种:in/out,in, out;过程还可以定义成返回型过程,返回值类型定 义跟在形参定义后面,过程可以有状态,但过程没有独立的输入队列,Slide 43,过程(2),procedure Proc1,in/out x integer, in y i
15、nteger,- rslt char,定义变量、定时器等,过程图形域,use ,Slide 44,过程(3),过程图形域是过程的主体内容,与状态机图形域基 本相同,但有以下不同:,起始符不同,过程起始符定义为:,状态机图可以没有终止符,而过程图必须有至少,一个返回符,返回符定义为:,带表达式的返回符仅用于要求返回值的过程,表达 式的值即为本次过程调用的返回值,Slide 45,通信,SDL系统的通信手段包括,系统与环境之间或系统中的各代理之间交互信号 远程过程调用 使用远端变量,Slide 46,信道(1),信道是用在代理与代理之间或代理与系统环境或信 关之间传递信号的通道。,信道分为单向和双
16、向两种,在每个方向上需列出在 该方向上传递的所有信号,这些信号用方括号( )括起来,标在信道的箭头处。 信道分为:,延迟信道:表示信号从源端到目的端要经过一定,延迟,延迟时间是不确定的,但信道上的信号仍 是有序的,非延迟信道:表示信号从源端发出后直接到达目,的地,没有延迟,Slide 47,信道(2),延迟信道(单向),延迟信道(双向),非延迟信道(单向),非延迟信道(双向),Slide 48,信号(1),信号是SDL系统中代理之间通信的基本单位 信号必须在信道中传输,要利用信号来通信,必须:,信号定义:在相关代理图的文本域中定义信号; 信号与信道关联:在信道的信号列表域中列出信,号,说明信号
17、可以在哪些信道中传递,信号可以定义参数,定义过的信号可以用来定义信 号列表。信号列表的定义也在文本符中定义。,在信道上列出信号和/或信号列表时,信号列表标识 符要用圆括号括起来,以区别于信号,Slide 49,信号(2),定义举例,signal call_hkof,call_hkon,dial_number(integer);signal called_hkof,called_hkon;Signal timeout(char,integer);signallist call_input=,call_hkof,call_hkon,dial_number,timeout;,signallist c
18、alled_input=,called_hkof,called_hkon,timeout;,Slide 50,信号(3),Slide 51,状态机开始域(1),每个状态机有且仅有一个开始域开始域由开始符下接迁移过程组成开始符,迁移过程:迁移过程由一系列动作组成,如输出信 号、变量赋值、调用过程、创建实例等。,Slide 52,状态机开始域(2),开始域的一般情况,最简单的开始域是从开始符直接进入状态,in i_ s ta te,Slide 53,状态机状态(1),一个状态机包含若干种状态状态符,状态符下面可以连接的图形节点,输入符,优先输入符 连续信号符 保存符,Slide 54,状态机状态(
19、2),状态符与其它图形符号的连接关系图,s1,Slide 55,状态机状态(3),状态列表的四种情况,单个状态名,s1,msg,Slide 56,状态机状态(4),多个状态名:表示在这几个状态下,同一事件引,起的过程迁移是相同的,s1,s2,msg,Slide 57,状态机状态(5),*:表示某一事件在本状态机所有状态下引起的迁,移过程是相同的,*,msg,Slide 58,状态机状态(6),*(状态列表1):表示某一事件在本状态机除状态列表1中列出的状态以外的所有状态下引起的迁移过程是相同的,*(s1,s2),msg,状态机状态(7)下一状态:状态机经过迁移过程后进入下一状态,s1s2,s1
20、-,s1s1,Slide 60,状态机触发事件(1),触发事件是激发状态机从当前状态迁移到下一状态 的事件。,触发事件包括:输入、优先输入、连续信号,状态机消耗一条信号后,用sender函数可得到发送 该信号的代理实例的pid;但如果该信号来自环境, 则sender函数返回的值将不同于系统内的任何一个 pid值。,Slide 61,触发事件输入(1),输入表示状态机接收并消耗信号一个状态机对应一个输入队列,状态机输入队列按先进先出的原则排序输入用输入符表示,输入符内可以包含多条信号,表示在本状态下,输 入这几条信号引起的迁移过程是一样的,触发事件输入(2),msg,msg1,msg2,T,触发
21、事件输入(3)多信号输入引起同一迁移过程,msg2,msg1,*,触发事件输入(4)信号可以带参数,对于带参数的信号输入,在输入符中,除给出信号标识外,还需给出具有相应数据类型的变量名来接收参数值,msg(x,y,z),msg(,z),msg(x),Slide 65,触发事件输入(5),带使能条件的输入,msg1,xmax,触发事件输入(6)自发输入,none,oddnoneeven,Slide 67,触发事件优先输入(1),优先输入可以使信号在某状态下一旦输入就立即处理优先输入用优先输入符表示优先输入符,优先输入符下不接使能条件符,触发事件优先输入(2)S1,sig1,sig2,Slide
22、69,触发事件连续信号(1),通过计算布尔表达式的值来触发状态机,ymax,触发事件连续信号(2)带优先级的连续信号:当多个连续信号的布尔表达式计算结果为“真”时,取优先级最高者作为触发信号,x,y,Slide 71,状态机保存(1),保存可以将提前到达输入队列的有效信号保存下来保存用保存符来表示,被保存下来的信号在下一状态中将优先得到处理,但前提是 下一状态的输入符中包含了该信号,如果在新的状态下,被保存的信号没有出现在该状态的输入 符中,则该信号将被丢弃。,状态机保存(2),S1,sig2sigbS2,sig1,S2,sig3sigcS3,sig1sigaS4,信号到达顺序:1)sig1,
23、 sig2, sig3;2)sig2, sig3, sig1Slide 72,Slide 73,迁移过程概述(1),状态机所要完成的动作集中在迁移过程中 这些动作包括:,任务,输出信号,设置定时器 复位定时器 输出变量值,创建代理实例 调用过程,调用远端过程等,Slide 74,迁移过程概述(2),迁移过程结束于以下几种情况:, 到达状态 仅适用于从开始域进入的迁移过程; 到达下一状态 完成状态转移;, 到达分支域 产生多个分支,每个分支将开始一个新的迁,移过程;, 到达终止符 进程实例到此终止(stop);, 合并到另一个迁移过程中 合并点以下的操作对两个迁移,过程是相同的;, 遇出连接符
24、后续动作将在具有相同连接名的入连接符开,始的迁移过程中继续;, 到达返回符 适用于过程返回的情况,Slide 75,迁移过程输出(1),输出的作用是通过信道把信号发送到另一代理实例输出操作是代理之间通信的基础输出符定义:,输出信号可以是一个或多个,带参数的信号在输出符中需要给出实际参数值,迁移过程输出(2)输出举例,to ,status1,s3p1_pid:=senders2 to p1_pidstatus2Slide 76,Slide 77,迁移过程输出(3),to ,status1,s3,status2,s1 to p3,Slide 78,迁移过程输出(4),via ,status1,s3
25、,status2,s1 via c2,via c1,Slide 79,迁移过程输出(5),P1,P2,P3,S1,S2,S5,S6,S1,S7,C1,C2,S3,S4在进程P2中,以下输出是允许的:,S1 to P3,S1 via C1,S7 via C2,S2,via C2在进程P2中,以下输出是不允许的:因为,信号S1可通过两条信道C1和C2发送出去,S1,Slide 80,迁移过程输出(6),信号中参数的使用, 声明信号时,按顺序给出各参数的数据类型,signal s1(integer,boolean,octet);, 输出信号时,为每个参数赋值,s1(var_send_int,var_
26、send_bool,var_send_octet);, 输入信号时, 使用同类型变量来接收各参数值,s1(var_rece_int,var_rece_bool,var_rece_octet);, 定义信号列表时,信号名后不需要带参数,signallist sig_list=s1,s2,s3;, 保存信号时,信号名后不需要带参数,s1,s2,s3,Slide 81,迁移过程创建代理实例,代理实例的创建分为两种:, 静态创建 动态创建,实例创建符,代理实例被创建后,该实例的self和parent就被赋好了值。创建是否成功的判断,caller(0,128),S1,C1,manager(1,1)cal
27、lercaller_pid:=offspring,caller_pid=NULL,falseS1 to caller_pidSlide 82,true,Slide 83,迁移过程任务(1),任务执行与变量有关的动作,如给变量赋值、计算表达式等 任务符,一个任务符中可以包含多条语句,语句之间用分号(;)隔开;在任务 符中的语句可以有下列几种:, 赋值语句 IF语句, 分支语句 组合语句, 设置语句(设置定时器) 复位语句(复位定时器),x:=9;Flag:=true;y:=119.5赋值语句decision (a) (=0): b:=1; (1:9): b:=2; else: b:=3; 分支语
28、句,if (n100) m:=n;else m:=n+1IF语句a:=b+1; if (b7) b:=1; else b:=b+1组合语句,Slide 85,迁移过程任务(2),任务符中还可以包含非形式化文本,非形式化文本是用单 引号括起来的字符串,非形式化文本被视为注释内容,不会被执行 在下列场合下可使用非形式化文本:, 在开发过程中,当部分功能描述还未细化时,可用非形,式化文本来说明这部分功能;, 系统中需要说明一些对硬件的操作时,可用非形式化文,本来说明;, 当SDL文档不需要详细描述时,可用非形式化文本做简,要说明;, 当SDL文档主要用来供人阅读理解时,可用非形式化文,本来说明, 在
29、SDL图中嵌入编程语言语句,Slide 86,迁移过程过程调用(1),允许有任务的地方都可使用过程调用过程调用就是执行一遍过程描述的功能过程与任务的区别, 过程可以有状态,过程使用调用该过程的代理实例的输入,队列, 过程中可以发送信号,过程发出的信号相当于调用该过程,的代理实例发出的信号,过程的调用,x:=call ,process caller,1(18),setdataSlide 87,迁移过程过程调用(2)过程调用方法步骤1在包含该过程的进程中声明该过程,procedure setdata,1(1),fpar in/out number integer;number:=128Slide
30、88,迁移过程过程调用(3)步骤2 描述该过程的功能,process caller,8 (18),idle,s1(send_data)setdata(set_number)s2(set_number) to p1State_nSlide 89,迁移过程过程调用(4)步骤3 调用该过程,Slide 90,迁移过程分支操作,分支操作用来结束一个迁移过程,然后根据表达式的值产生 多个新的不同迁移过程分支符:,分支符有一个入口,两个或多个出口 可以为表达式、非形式文本或any,“any”表示将随机产生分支。这种分支操作可用来描述一些不 确定或不可靠的情况,具有多个出口的分支操作x+y,0,0,1,2,
31、else,ab,a,false,true,1,else,具有两个出口的分支操作,any,Slide 92,迁移过程连接,连接的功能是把属于同一迁移过程的两部分连接起来连接符,process,p1,8(18),s1setupSetup_ack to p21Slide 93,process,p1,12(18),1set(T)Setup to p3wait_ackSlide 94,迁移过程合并迁移过程s1,T,signal1reset(T)signal3s2,signal2reset(T)signal4set(T)s3,Slide 96,定时器操作(1),定时器用来设置等待某事件发生的时间 定时器的
32、操作, 设置定时器:在系统中启动一个定时器 复位定时器:停止计时,定时器的应用方法, 声明定时器:,定时器可以带参数,参数主要用来区别不同的监视对象:,timer wait_sig_time(user_id):=wait_duration;,如果定时器每次设置的时间都一样,可以在定义时给其赋值:,timer T,T1=60.0;, 定时器设置:,set(now+var_duration,T) set(T1), 复位定时器:,reset(T); reset(T1); reset(T2(1),定时器操作(2)定时器超时用包含定时器名的输入符来表示,对于带参数的定时器,需用具有相同数据类型的变量来接
33、收参数值,T,T2(X),T1,Slide 98,4-3、SDL中的数据,Slide 99,内容,概述,数据的定义数据的使用,Slide 100,SDL中的数据概述,数据类(Data Type):,数据类型(Sort)+ 操作(Operation),数据类型:数据项或元素的集合,数据类型元素:数值(value)、对象(object)、 进程标识(pid)布尔数据项:, 布尔数据类型包含两个元素:false,true, 支持的操作:=,/=,not,and,or,xor,=,数 据 定 义,数据类(data type)定义预定义数据类,结构(struct)选择(choice)通过特殊化(spec
34、ialization)定义新数据类同义类(Syntype)定义同义词(Synonym)定义Slide 101,定义新数据类通过使用预定义生成器定义新数据类串(String)数组(Array)通过使用数据类构造器定义新数据类字面量(literals),Slide 102,预定义数据类(1),SDL中预定义的数据类包括:,Boolean:布尔型 Character:字符型,Charstring:字符串型 Integer:整型,Natural:自然数型 Real:实数型,Pid:进程标识型,Duration:时长类型,Slide 103,预定义数据类(2),Boolean类,= : Boolean,
35、 Boolean - Boolean, 蕴涵操作:如果第一个操作数为true,第二个操作数为false,则操作结果为false;否则操作结果为true。既:,true = true = truetrue = false = falsefalse = true = truefalse = false = true,Slide 104,预定义数据类(3),Character类,num : Character - Integer;,num(A)=65,chr : Integer- Characterchr(65)=“A”,Slide 105,预定义数据类(4),Charstring类,first:C
36、harstring-character;first(hello)=h,mkstring:Character-charstring;length:Charstring-integer;length(Hello)=5;,last:Charstring-character;last(hello)=o,Slide 106,预定义数据类(4),Real类,float : Integer-Real;float(100)=100.0fix:Real-floatfix(138.6)=138,newtype S1,元素类为整型,string(Integer, Empty)endnewtype;Empty代表空串
37、Slide 107,预定义生成器串(String)S1是一个由Integer 构成的串,newtype A1,为Character,Array(Character, Integer)endnewtype;元素类型为IntegerSlide 108,预定义生成器数组(Array)A1是一个通过字符值来索引的数组数据类的索引类型,Slide 109,数据类构造器,字面量(Literals),newtype colors,Literals red, yellow, blue, green,endnewtype;,使用Literals定义的数据类支持以下操作:,赋值操作、比较操作、first、last
38、、succ、pred、num,dcl color colors;,数据类构造器通过列举或构造数据类型中元素的方法来描,述数据类型的内容。,Slide 110,数据类构造器结构(Struct),例:newtype Person Struct,Name Charstring;Age Integer;,Address Charstring;,PhoneNumber Charstring;endnewtype,dcl p1 Person;,Slide 111,数据类构造器选择(Choice),例:newtype C1 choice,a Integer;,b Charstring;c Boolean;,
39、endnewtype;,dcl var C1;var!a=5;,定义新的数据类 特殊化(Specialization)newtype this_struct structa Integer;b Character;endnewtype;newtype that_struct structa Integer;b Character;endnewtype;dcl str1 this_struct; dcl str2 that_struct;,str1:=str2 X,str1!a:=str2!a,SDL认为这是完全不同的两个数据类型,各自变量不能在 结构一级进行数值操作Slide 112,Slid
40、e 113,定义新的数据类,特殊化(Specialization),在SDL中,可以采用从另一个数据类型继承信息的方法来 创建新的数据类型,可以指定需要继承的操作和数据项,也可 以在新数据类中增加新的操作和数据项。,但通过继承不能改变数据类的结构。,Slide 114,定义新的数据类,特殊化(Specialization),newtype Newint inherits Integer adding,operators str: Int - Charstring;,endnewtype;,例: str(123)=123,newtype Int inherits Integer,operator
41、s (“+”、“-”、“*”);,endnewtype;,Slide 115,附加数据定义结构,同义类(Syntype)定义,特点:与基本数据类型完全兼容的新的数据类型作用:, 给已有的数据类型取个有特殊意义的名字 限定变量的取值范围,例:,syntype countnum = integer constants 0:10endsyntype,syntype countnum = integer constants =13endsyntype,Slide 116,为代表数据类型中某个数据项的常数表达式取,一个名字,类似编程语言中的常量定义。 例,synonym S_Idle Integer=0
42、;synonym S_Busy Integer=1;,synonym MaxNum Natural = external;(由外部,定义),附加数据定义结构,同义词(Synonym)定义,Slide 117,SDL中的数据数据使用,变量,远端变量表达式,变量声明:,dcl b1,b2 dcl a1,a2,integer;this_struct;,Slide 119,远端变量,访问远端变量的步骤:, 在“服务器”进程和“客户”进程的共同上级中定义远端变量,remote x real;, 在“服务器”进程中声明该远端变量,dcl exported x real;, 在“服务器”进程中通过出口(export)操作将远端变量的值,复制到一个隐含的变量中,export(x);, 在“客户”进程中通过进口(import)操作得到该复制的值,other_var := import(x to P_pid);,Slide 120,表达式,条件表达式 命令表达式,now表达式,import表达式 pid 表达式,定时器激活检查表达式,active(T1),带返回值的过程调用,