欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    SDL软件设计技术.ppt

    • 资源ID:2876116       资源大小:1.80MB        全文页数:305页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    SDL软件设计技术.ppt

    SDL软件设计技术,一 通信软件,1.通信软件的特点 什么是通信软件?凡是用来实现两个或多个实体(计算机,电信终端,交换设备等)之间相互通信的软件都可称为通信软件。通信软件主要有两大类:电信软件和计算机网络软件。电信软件主要包括:电话交换软件、移动通信软件、智能网软件等。网络软件主要包括:各种网络协议和网络应用软件。,电信软件和计算机网络软件的特点不尽相同,电信软件具有以下特点:(1)实时性强 电信软件系统属于实时系统,系统对外部事件能做出及时响应,如电话交换机用户在任何时刻拿起话机都能听到拨号音(300ms以内),用户拨完号码后,系统就会马上为其找到被叫,如果被叫空闲,就可接通被叫(向被叫振铃,向主叫用户送同铃音)。被叫摘机后,双方即可通话。(2)运行时间长 电信软件系统一旦投人运行,就要一直运行下去,除非发生故障。因而要求系统具有很高的可靠性。,(3)并发性强 电信软件系统能够“同时”为成千上万的用户服务,必须具有很强的并发处理能力。(4)结果可预期 用户在接受电信软件系统提供的服务时,对其结果是可预期的,如电话用户拿起话机应该听到拨话音(作为主叫时)或可以与对方通话(作为被叫时),如果不是这样,说明系统出故障了,用户只好挂机。用户拨完一号码后,可以听到回铃音(被叫空闲)或忙音(被叫忙)或空号音(号码错)或相应的语音提示。否则可认定系统发生故漳了。(5)离散性电信软件系统是离散系统,支持离散事件,系统行为可以用有限状态机来描述。,网络软件具有以下特点:(1)网络软件采用分层结构,如TCP/IP协议栈把计算机网络分成四层。即应用层、传输层、网络层和数据链路层,上下层之间通信采用原语形式,每层使用不同的协议。(2)网络软件实时性要求较低而可靠性要求高。网络技术的发展趋势是电信与计算机网络的融合。如VoIP就是利用IP来承载语音信息;软交换就是利用计算机网络来取代传统电话交换机,实现语音和多媒体信息的交换;XDSL技术则是利用现有电话网络承载宽带业务。,2.通信软件的开发过程与开发其他软件一样,开发通信软件也需要经历以下阶段:需求分析;概要设计;详细设讨;编码;单元测试;集成测试;系统测试;运行维护。,(1)需求分析需求分析的主要任务是把用户对软件产品的需求和软件产品的运行环境搞清楚,经过对要求和环境的分析,采用某种形式化语言对需求进行描述,最后形成需求规格说明书。用户的需求分为功能性需求和非功能性需求。对于通信软件而言,功能性需求主要包括:软件系统应其有的功能、采用协议或信令系统的情况、与硬件环境的接口关系、与其他系统交互信息的情况等。非功能性需求主要包括:软件的可移植性、可靠性、实时性、可用性、安全保密和可重用性等。,在需求分析阶段,可以采用对象建模技术(OMT)把分析结果抽象成不同的对象,并描述对象之间的关系。统一建模语言 UML是一种比较成熟的标准建模语言。非常适合于实时系统、特别是通信软件系统的分析建模。UML具有完备的语法和语义定义,具有两种语法表示:图形语法和文本语法。图形语法直观易懂,便于交流,设计人员一般采用图形语法来建模。UML的主要内容可归纳为静态建模机制和动态建模机制。静态建模机制主要用来构造系统的结构。而动态建模机制主要用来描述系统的行为。,由于通信软件的特殊性,在需求分析阶段,除了要描述系统的结构和系统行为以外,还需要对系统与应用环境之间交互信息的情况以及系统组件之间交换信息的情况进行描述。Msc(消息顺序图)是一种形式化语言,特别适合于描述通信软件系统与外部环境之间以及系统内个功能模块之间的消息交互情况。,需求分析阶段的文档是需求规格说明书。需求规格说明书主要包括以下内容:1引言 说明本项目的背景,如项目的委托单位和开发单位、本软件系统一与其他系统的关系等:给出缩写词的原文和专用术语的定义;列出参考文献。(2任务概述 说明本软件系统的设计目标、运行环境、条件与限制等。(3功能需求 说明本软件系统的功能划分情况、类的定义、系统类图、系统与外部环境之间的消息(信号)交互图等。(4)性能需求 说明本软件系统的可移植性、可靠性、实时性、可用性、安全保密性和可重用性等。(5)数据描述 给出本软件系统用到的数据项(包括静态数据和动态数据)的描述。如果用到数据库,还要给出数据库的名称和库表结构等。,(2)概要设计 需求分析阶段解决了系统应该“做什么”的问题,而概要设计和详细设计阶段就是要解决系统“如何做”的问题。概要设计的任务就是根据需求规格说明书,采用合适的形式化语言给出系统的结构设计,划分功能模块,给出模块间接口定义,定义主要的数据结构,设计主要算法等。,ITU-T z.100建议中给出的SDL(规范说明和描述语言)也是一种形式化语言,该语言基于扩展的有限状态自动机(EFSM)模型,特别适合于描述软件系统的离散过程。SDL既适用于概要设计阶段,也适用于详细设计阶段。由于已有工具支持SDL到C语言或C+语言的翻译,即代码自动生成,使得SDL语言在通信软件设计中得到越来越多的应用。如果在设计阶段采用SDL.语言,则在概要设计阶段需设计出SDL系统图(含功能块划分),给出必要的信号(消息)定义,设计必要的进程类和功能块类,明确各功能块的功能等。,本阶段的文档是概要设计说明书,概要设计说明书的主要内容包括:(l)总体设计 说明软件系统的总体结构和功能模块划分情况,以及各模块的功能分配。(2)接口设计 设计系统与环境的接口(包括软件接曰和硬件接口)和各功能模块之间的接口。(3)数据结构设计 设计数据的逻辑结构和物理结构,定义必要的新的数据类型,说明静态数据的加载方法等。(4操作维护管理设计 定义故障信息,设计系统故障监测和故障处理策略,设计系统维护操作等。,(3)详细设计 概要设计完成后,系统功能已划分清楚,系统结构也已确定。详细设计的任务就是细化各功能模块的功能,详细设计系统行为,并用形式化语言来描述设计结果。详细设计分功能模块进行,一般将功能模块分解成多个有限状态自动机(FSM),先画出状态机的状态转移图,然后用SDL语言来描述这些状态机。一个状态机对应SDL.的一个进程,进程间的信号(消息)交互情况可用MSC来描述。对于一些复杂的算法,可以定义过程来实现。编写测试计划也是详细设计阶段的任务,测试计划包括测试方法的设计和测试用例的设计。,本阶段的文档是详细设计说明书。详细设计说明书的主要内容包括:(1软件结构 说明进程划分情况和进程间的消息交互情况,定义本模块内使用的消息。(2)数据定义 定义本模块内使用和各进程内使用的数据类型和数据结构,声明变量等。(3)行为描述 用SDL进程图详细描述系统行为,定义必要的过程,提供变量和过程的共享机制。(4)测试计划 设计各进程单元测试的测试方法和测试用例,设计本模块集成测试的测试方法和测试用例。,3.通信协议开发过程,开发协议有两个含义:一是指为了满足新的通信需求,研究开发新的协议,指定协议标准;二是指在一个特定的应用环境下,实现某个已经成熟的协议。对于第一个含义,开发协议的目标是形成新的协议文本,重点是说明本协议应该具有什么功能,其协议开发过程包括:协议分析:协议环境分析包括用户要求、通道性质、工作模式等;,协议功能分析,根据环境分析结果明确本协议应具有的功能;协议设计:协议结构设计、协议机制设计协议元素设计,设计服务原语,PDU格式等;形成协议文本,用自然语言描述协议结构即协议元素之间的关系;协议描述,用一种形式化语言来描述协议内容,包括建议的软件系统结构、模块划分、系统应具有的行为等;协议验证,在开发环境下仿真运行协议软件,验证协议的正确性。,二、规范说明和描述语言SDL,1.SDL 概述,SDL语言是CCITT推荐的规格与描述性语言(Specifical and Description Language),是一种用来说明和描述系统的国际通用的标准化语言。它将简明的图形与固定的格式结合起来,使开发人员可以将规范与协议以一种清晰而明确的格式描述出来。这种简洁有效的描述语言能够极大地加速标准与协议的开发制定过程。,ITU将SDL描述为“实时系统的特性描述语言”。绝大多数SDL概念有文本和图形两种表述形式。由于缺乏某些范围内的高层结构和一些象C语言的概念,SDL并非编程语言。SDL并不描述系统发展进程。SDL具有两种不同的语法SDL/GR(图形表示法)与SDL/PR(文本表示法),两者之间可以互相转换。SDL中的数据定义只能采用文本表达方法。SDL允许嵌入高级语言或者转换为高级语言,如C、C+。在实际开发中,开发人员可以应用SDL图形化表示法来描述系统,再由SDL工具将其转化为C语言代码或者CHILL源代码,最后嵌入到实际开发环境中。,SDL既可以用来说明一个系统所应该具有的行为,也可以用来描述一个系统实际具有的行为。因而,SDL可以用来制作以下文档:需求说明、系统设计说明、系统设计描述(结构设计和详细设计)、系统测试说明等。,SDL主要用于电信领域,描述实时、交互式和分布式系统的行为,对于能用扩展的有限状态机描述的系统都非常适用于用SDL描述,如电话、用户电报、数据交换、信令系统、信令系统与数据协议的互通等。,2.SDL开发的优点,1)开发周期可以缩短4075;2)可以明显改善软件质量;3)作为正式规范描述语言,可以提高质量在1015。4)可以大幅降低系统的差错率。5)可以快速原型化,验证实现是否满足需求,并在开发的早期进行测试,即使系统未完全实现。6)对系统图形化、直观、易于维护。,3.工具支持,目前最流行的支持SDL语言的开发工具是瑞典公司Telelogic提供的TAU开发套餐,此工具被全球客户广泛验证。Telelogic TAU工具是行业公认的用于实时及其他先进软件开发和测试的可视化软件环境。它可在开发环境中实现仿真、测试、执行、自动代码生成、早期错误检测及最小化后期开发维护扥功能。,TAU中包含了UML Suite、SDL Suite、TTCN Suite 3个部分,可以融合UML、SDL、TTCN等语言元素来构建面向实际目标环境的系统。,SDL把应用领域分为两部分:SDL系统和环境,SDL系统是设计者关注的对象,系统以外的部分都被视作环境,系统与环境之间可以通过交换信号来通信,保证系统能对外部事件作出反映。系统与环境的关系可抽象成下图:,4.SDL系统行为,SDL描述系统行为的基础是扩展的有限状态自动机,系统行为由系统内的所有进程实例对应的有限状态机协同工作并通过与环境的交互来实现。SDL 的每个进程实例就是一个有限状态机。进程实例之间的通信由交换信号来实现,发送信号时可以明确地给出目标地址。每个进程实例都有一个私有存储空间记录该实例的状态和一些变量,因而系统的所有进程实例可以并发地工作。SDL系统与环境之间也能通信,SDL把环境视为一个进程,可以通过信号交互信息。,在SDL系统中,进程实例是基本单位,系统行为主要用进程实例来描述。具有相同特性的进程实例构成进程集,进程集与进程集之间可以信号方式交互信息,进程集之间用信道相连,交互的信号都通过信道来传递。功能相近的进程集构成功能块,系统则由若干功能块组成,功能块之间也用信道相连。信道说明了功能块之间的通信关系,没有用信道相连的功能块之间不能以信号方式进行通信。从层次关系来看,SDL系统结构可用图1-1来表示,即SDL系统由系统、功能块和进程3个层次的实体组成,系统由功能块组成,功能块可以由进程组成,也可以由功能块组成。,5.SDL系统结构,图 1-1 SDL 层次结构图,图1-2 SDL系统包含关系,从包含关系上,SDL系统结构可用图1-2来表示,即进程图被包含在功能块图中,功能块图又被包含在系统图中。,例:用“helloword”来说明SDL图的包含关系:工作方式:系统启动以后,当从环境向系统发送信号”helloworld”时,系统将向环境回送“helloworld”;当从环境向系统发送信号“terminated(结束)”时,系统会终止工作。系统图如下图所示:,System helloworld,Signal hellworld;Signal terminated;,blk,Helloworld,terminated,helloworld,etos,stoe,SDL系统图,下图是功能块“BLK”的功能块图。该功能块只包含一个进程集,而且该进程集最多只有一个进程实例。“Procs”是进程集的名称,进程集名后的“(1,1)”表示该进程集将由系统在初始化时静态创建一个进程实例(第一个1),系统在运行过程中最多允许存在的该进程集的实例数也是1(后一个1)。进程不能直接从环境得到信号,所以进程图的边框不代表环境,只是该功能块的边界,功能块通过与之相连的信道与外界通信,所以在边框上需标注与其相连的信道名。功能块内部也需要定义信道,负责连接外部信道与进程集,当功能块由多个进程集组成时,内部信道也用来提供进程集之间的通信通道。,SDL 功能块图,下图是进程集“Procs”的进程图,只有一个状态,只接受两条信号,当收到信号“helloworld”时,输出信号“helloworld”。由于该信号可以在两条信道上传递,输出时必须指出从哪条信道传输,Sdl进程图,1.包把系统图中需要定义的信号等放到包里。在SDL中,包(package)的作用类似于C语言中的“.h”。包中包含的内容都是可以重用的,即可以被多次引用(如C语言中的#include*.h)。SDL允许各层次的图和过程图引用包,包内可以包含所有图中可以定义的内容,如类型定义、信号定义、数据结构定义等。,6.SDL语法,*,Package,包引用部分,表明在定义包时可以引用其他已经定义过的包,是可选项。,包定义:关键字package 开头,由用户给出包名;包中可以定义文本内容,在部分给出;包中也可以画图,在部分给出;,包的一般定义格式如图所示:,Package sig_def,Syntype dev_no=integer constants 0:127Endsyntype dev_no;Syntype dial_no=integer constants 0:9,11,12Endsyntype dial_no;Signal off_hook(dev_no),on_hook(dev_no),digit(dev_no,dial_no);Signal dial_tone_on(dev_no),ring_back_tone(dev_no),tone_off(dev_no),busy_tone_on(dev_no),null_tone_on(dev_no),tone_off(dev_no),ringing_on(dev_no),ringing_off(dev_no),path_connect(dev_no,dev_no),disconnect(dev_no,dev_no);Signallist from_env=off_hook,on_hook,digitSignallist to_env1=dial_tone_on,ringback_tonf_on,busy_tone_on,null_tone_on,tone_off,path_connect,disconnect;Signallist to_env2=ringing_on,ringing_off;Synonym sec duration=external;,包的定义内容,2.系统,SDL系统完整地描述一个真实系统或一个真实系统中相对独立的一部分。在SDL/GR中,系统由系统图来定义或由系统类图实例化得到。,图 简单的SDL系统图,一个SDL系统就是用SDL规格所描述的一个具体物理存在,也就是从SDL语言的角度所关注的一切,对于目前不用SDL语言描述的,都作为SDL的环境看待。用SDL描述的系统是一个层次化的结构。最高一层成为系统System层。SDL系统通过信道与环境连接。,每个系统可以划分为多个功能块(Block),功能块之间通过信道相连,各功能块相对于其他功能块而言是独立的,功能块之间以及功能块与环境之间的通信是靠发送信号来实现的。块的内部可以进一步划分为进程Process,进程之间通过信号进行通信。,SDL中在各个结构层次中均可定义信号。信号在text symbol中加以定义。信号的定义由信号名和信号携带的参数构成。系统层中定义的信道对应于协议层的上下SAPs;信号则对应于ASPs。,3.功能块(Block)SDL的功能块是在SDL系统内的部分功能集合。通常情况下,功能块是一些关联较为密切的功能的集合。一个功能块又可根据需要划分为子功能块,以便在不同程度上对系统进行描述。子功能块与进程处在同一级,他们都通过一定的路由与信道相连。功能块所包含的功能最终是由在功能块内的进程来实现的。一个功能块又可有多个不同的进程来分别实现不同功能。,Block代表了系统的静态结构,Process规定了系统的动态结构。Block中定义的信号对应系统的协议数据单元PDUs或者控制信息。功能块由功能块图来描述。功能块图与系统图基本相同,只是在功能块图的边界上要标出与本功能块相连的信道标识。,图 由功能块组成的功能块图,SDL系统中的功能块最终都需要用进程来定义。如:,图 由进程集组成的功能块图,P1,P2两个个进程集之间存在创建关系,即进程集P2的实例由进程集P1的实例来创建。创建符的定义如下:=图中还用到了进程符,其定义如下::=,进程符中包含进程名和进程实例数,进程实例数由两个数组成,格式为:(N1,N2),其中N1表示初始化时系统创建的该进程的实例数,N2表示系统在运行过程中允许动态创建的该进程的最大实例数。如P1(l,l)表示系统初始化时创建一个P1实例,由于允许创建的最大实例数为1,在系统运行过程中就不能再创建P1实例了;P2(0,128)表示系统初始化时不创建P2实例,但在系统运行过程中,最多可以同时存在128个P2实例。进程实例数可以不写出来,缺省的进程实例数为(0,inf),inf表示不受限。,4.进程(Process)进程是系统的基本组成单位,系统的行为主要由进程来描述。进程是一种扩展的有限状态机,它规定一个系统具体的动态行为。也就是讲,只有到达了进程级,系统详细的动态行为才得以描述。进程一般处于等待信号状态,当收到一个信号时,进程作出响应,执行特定的动作,在执行完相应的全部动作以后,进程进入下一个状态等待信号或者停止(杀死)。,进程用进程图来定义,进程图的标题部分由关键字“proccess”和进程名“”组成,后面还可以有参数定义,进程的参数在创建进程实例时由创建者传递给被创建者。进程图的内容主要是状态机图。,Process procs,ready,helloworld,terminated,Helloworld via c2,Sdl进程图,图 进程带参数的例子,图 创建进程实例时传递参数的例子,进程图是针对进程集的,进程集中的每个实例都执行进程图描述的动作。进程图中每个进程实例都有一块私有存储空间,记录进程图中定义的变量的数值及实例所处的状态。同一个进程集中的进程实例不是并行运行而是交替运行的,即一个实例在迁移过程中不能被同一个进程集里的实例打断,只有当它进入下一状态或进程终止,另一个实例才可以进人迁移过程。进程实例一旦被创建,就拥有了一个自己的pid,通过以下四种pid表达式可以得到进程实例的pid:,Self:返回本进程实例的pid;Sender:返回发送最近被消耗信号的进程实例的pid;Parent:返回创建本进程实例的进程实例(父进程)的pid;.offstring:返回最近被本进程创建的进程实例(子进程)的pid;对于每个进程实例,都可以利用者4个函数得到相应的进程实例pid。进程实例的pid主要用于京城间的通信。,5.过程过程只是进程的一部分。过程不存在过程实例,它可以由定义该过程的进程集的所有实例来调用。过程由过程图来定义,执行过程就是执行一遍过程图描述的动作。,SDL中的过程分为没有返回值与有返回值两种,有返回值时,返回值类似于高级语言中函数类型。,过程图形域是过程的主体内容,与进程的状态机图形域相似,不同点:,(1)起始符不同,过程起始符的定义为:=,(2)状态机图可以没有终止符,而过程图必须有至少一个返回符,返回符的定义为:=如果过程带有返回值,返回值将标在返回符旁。,(3)过程也可以定义状态.但过程没有独立的输人队列,过程处于状态中时,只能从调用它的进程实例的输入队列中得到输入信号。,Procedure set_div_no,;fpr in lno dev_no,in div_num;Returns flag boolean;,Dcl div_no dev_no;,Flag:=call numtodev(div_num,div_no),flag,Ldata(lno)!new_s_type:=diversion_c;Ldata(lno)!diversion_no:=div_no;,false,true,flag,带参数的过程图,一个带返回值的过程定义用SDL/PR表述如下:Procedure max fpar X,Y integer returns integer;start;output VW;return if XY then X else Y;endprocedure;,参数的类型有3种,其含义如下:In/out表示输入输出型参数,如果该参数的值在过程中被修改了,调用者(进程或过程)中对应变量(传给该参数)的值也将被修改;In 表示输入型参数,调用者通过该参数向过程传递数值,该参数的值即使在过程中被修改了也不会影响调用者中对应的变量。out表示输出型参数,过程返回后,该参数的值将被带回调用者。,6.远端过程在进程集内定义的过程申明成“可出口的”(exported),允许其他进程的进程实例来调用,这就是远端过程。远端过程调用就是调用其他进程集中定义的远端过程。为方便,把发出远端过程调用命令的进程称为“客户端”,把定义该过程的进程称为“服务器端“。,要实现远程过程调用,需要进行必要的定义:首先,在”客户端“进程和”服务器端“进程的共同的上层中定义远端过程名。共同上层是指在该层定义的内容,两个进程均能看见,如功能块、系统。,Remote procedure;,远端过程名在文本定义域中定义,格式如下:,Block call_handle,Remote procedure dgt_ana;Fpar in dial_no;Returns ana_rslt;Remote procedure numtodev;Fpar in num,in/out dev_no;Returns boolean;Remote procedure set_idle;Fpar in dev_no;,Syntype idx4=integer constants 0:3Endsyntype;Newtype num array(idx4,dial_no)Endnewtype;,Newtype ana_rsltLiterals NORMAL_C,SET_NEW_S,RESET_S,WRONG_NOEndnewtype;Synonym S_IDLE character=“0”;Synonym S_IDLE character=“0”;,远端过程定义,在这里只是定义了一个远端过程名及参数,过程体须在“服务器”进程中定义。在“服务器”进程中,远端过程的定义与一般过程的定义基本一致,只需要把远端过程定义为“可出口的”(exported).,Procedure dgt_ana,;fpar in code dial_no;Returns ana_rslt;,code,11,3,else,12,SET_NEW_S,NORMAL_C,WRONG_NO,RESET_S,号码分析过程图,Exported Procedure numtodev,;fpar in cd_num num,in/out cd_dev dev_no;Returns boolean;,Dcl dev_int integer;,Dev_int:=cd_num(3)+cd_num(2)*10+cd_num(1)*100,Dev_int128,cd_dev:=dev_int,Cd_dev:=0,true,false,true,false,地址翻译过程图,2(6),Process manage,init,ready,管理进程起始域:在进程中声明过程,在客户端,执行远程过程调用,需要“进口”(imported)远端过程。,上述定义完成后,就可以进行远端过程的调用。,7.信号与信道信号是SDL系统中进程之间通信的主要形式,要利用信号来通信,必须先做两步工作:(1)在系统图或功能块图中定义信号(在文本符中signal定义);(2)在信道上给出信号列表,表明信号可以在哪些信道中传递。,信号可以定义参数,定义信号时给出参数的类型即可。定义过的信号可以用来定义信号列表。,在SDL中,信道分延迟信道和非延迟信道两种,延迟信道表示经过该信道传递的信号可能经过一定的延迟才能到达目的地,非延迟信道表示经过该信道传递的信号可以立即到达目的地。延迟信道上表示方向的箭头位于信道中部,一般用在系统图中。非延迟信达上表示方向的箭头位于信道两端,一般用在功能块图中。,SDL 功能块图,8.SDL Service进程描述的系统动态行为可以进一步划分为服务Service,服务定义了进程行为的一个部分。服务由服务图定义。同一进程中每个服务拥有的输入信号集互不相交。对于每一进程实例,其内部均包含定义进程类型时所包含的服务类型的实例。服务实例是进程实例的一部分,不能被单独引用。服务与其从属的进程共享输入端口和进程实例的self,parent,offspring和sender等部分。,服务也是一扩展的有限状态机。进程执行时,进程实例中包含的所有服务实例的初始迁移被顺序执行,任一时刻,一个进程实例中只能有一个服务实例执行内部包含的状态迁移。服务始于start symbol.,9.SDL的扩展有限状态机扩展有限状态机模型(EFSM)是有限状态机模型(FSM)的一个扩展,它在FSM模型的基础上增加了变量、操作以及状态迁移的条件.任意一个状态迁移都必须由类的一个方法作为条件.比如状态为i时,若发送消息激活方法A,从而使状态转变为j,则从状态i到j的跃迁是以方法A作为条件的.,EFSM形式化地表示为1个6元组S,S0,I,O,T,V.其中,S为非空的状态集合;S0为初始状态;I为非空的输入集合;O为非空的输出集合;T:SIS为状态转换集合;V为变量的集合.,5.如何用SDL进行开发,使用SDL开发主要由以下步骤构成:1)进行系统需求分析,确定系统需求。需求阶段包括标识构造系统所需的所有需求:首先,考虑来自客户的需求:低成本、可靠性、确定性等;其次,考虑来自环境的需求:将来的扩展、用户、技术等。确定需求之后,利用UML(Unified Modeling Language,标准建模语言)对系统需求进行建模,对需求进行细化。,2)根据需求,确定SDL系统与环境的关系。如图所示。,图:系统与环境关系图,3)根据需求,进行SDL系统设计。对系统进行划分模块功能图,即把系统SYSTEM规划为多少个功能块BLOCK实现;对功能块进行设计,即通过什么进程及如何通过进程来实现功能块;对进程进行设计,即如何设计进程的状态及在各种状态如何对消息进行处理状态转移处理;在进行进程设计时可以调用过程或进一步细化为服务,通过设计实现过程(服务)来实现进程。,完成过程设计,针对每个过程进行单元测试,确保每个过程的正确性。针对每个进程进行单元测试,确保每个进程的正确性。针对每个功能块进行单元测试,确保每个功能块的正确性。,4)设计环境函数。通过环境函数把环境与SDL系统联系起来。5)应用SDL开发工具把SDL系统生成C代码。利用VxWorks的集成开发工具Tornado把SDL系统生成的C代码与环境函数进行联合编译,并利用Tornado的Simulator与集成测试工具ITT或TCL进行SDL系统的测试,保证SDL系统的正确性。,实例:基于SDL的自动售票系统,1、目标系统实现的功能购票过程自动化,中间无需人工介入。系统根据输入的目的地信息(此时已知始发),及用户输入的购票数量,计算出所需支付的金额,并显示给用户。用户根据显示的金额,输入钱币,若成功,则返回车票以及找回的余额。转若输入的钱币金额不足,则系统退还用户投入的全部钱币。系统等待下一位顾客的使用。,2系统流程用户输入目的地及购票数量系统计算所需支付的金额并显示输出,同时等待用户投币判断接受的金额与需要支付的金额的大小,若前者小于后者,则将接受的金额退还给用户,同时转入;若前者大于后者,则转入下一步;若前者等于后者,则转入返回车票并退还多余的钱给用户返回车票,3、设计与实现3.1信号量Destination 目的地Ticketnumber 购票数量Cash 投入系统的钱币Payment 需要支付的金额Banlance 系统退回的金额Ticket 系统返回的车票Resetsys 操作结束后的复位操作,可以重新进行输入其中Destination、Ticketnumber、Cash、resetsys是从环境输入给系统,Banlance、Ticket是从系统输出给环境。,3.2信道及信号路由定义3.2.1信道C0 环境系统 环境 系统C1 系统环境 系统 环境3.2.2信道路由R0 环境process subway 环境 process subway R1 Process Charge环境 Process Charge 环境,R2 环境Process Charge 环境 Process ChargeR3 Process SubwayProcess Charge Process Subway Process ChargeR4 Process Chargeprocess Subway Process Charge process Subway,3.3各模块的功能3.3.1 block SubwaySystem定义的block,实现系统所需的所有功能,并从环境中接收Destination、Ticketnumber、Cash,经过相关处理后,向环境送出Banlance、Ticket。全部操作完毕后可以输入resetsys信号以进行下一次的循环操作。3.3.2 process Subwayblock级定义的process,接收从环境中输入的Destination、Ticketnumber,并根据它们,计算出所应支付的金额Payment,将该信号输出给process Charge。然后等待process送回的returnback信号。,3.3.3 process Charge接收从process Subway送来的Payment,接收从环境中送来的Cash,将Payment与Cash进行比较,若CashPayment,则系统返回多余的钱和车票。若CashPayment,则系统全额退回投入的钱,然后等待环境输入resetsys信号,此时发送returnback信号给process Charge。,3.3.4 System级定义System级定义,如图所示。,3.3.5 block级定义 如图所示。,Destination,Ticketnumber,Payment,Returnback,Cash,Resetsys,Balance,Ticket,3.4测试与仿真设计完成后,就可以对系统进行测试和仿真了。首先需要把设计输入到TAU提供的SDL/GR的编辑器。编辑后,再进行语法和语义分析。分析过程正确结束时可以产生仿真代码,然后把仿真代码载入TAU提供的SDL Simulator中进行整个SDL系统的仿真。仿真可以采用SDL/GR形式,或者使用MSC记录系统仿真的轨迹。最后,使用Validator进行系统验证。,6.系统行为描述,1.开始域:进程开始执行的地方。一旦进程实例被创建(动态或静态),就从开始域开始执行。每个状态机都有一个而且只能有一个开始域,开始域可以画在进程图的任意页上。开始域由开始符下接迁移过程组成。开始符的定义如下:,:=,迁移过程就是状态机从一个状态转移到下一个状态之间的过程,在迁移过过程中,进程可以执行一系列动作。迁移过程也可以是空的,即开始域可以从开始符直接进入状态,迁移过程不做任何操作。,图 最简单的开始域,图 开始域的一般情况,2.状态域:系统行为的描述以扩展有限状态自动机(EFSM)为模型,因而,每个状态机都包含若干种状态。状态用状态域来描述。,:=,状态符与开始符的主要区别:(1)形状不同;(2)一般情况下,开始符内是空的;而状态符不能为空。,状态域用来定义状态机在当前状态下对可能收到的信号的处理。状态符下接一个输入符,表示在当前状态下,如果输入符中的信号到达本进程实例,本状态机被激活,进入迁移过程。状态符下接一个优先输入符,表示在当前状态下,如果有限输入符中的信号到达本进程实例,不管在该信号到达之前是否已有其他信号到达,本状态机将被激活,优先进入优先输入符下接的迁移过程。,状态符下接一个保存符,表示在当前状态下,如果保存符中的信号到达本进程实例,本状态机将该信号保存下来,等本状态机被其他条件激活,经过迁移过程进入下一状态时,再根据新的状态对该信号进行处理。如果该信号出现在新状态下的输入符中,该信号会得到优先处理。也就是说,被保存的信号比优先输入符中的信号优先级要高。状态符下还可以接连续信号符,连续信号并不是真的信号,而是一个布尔表达式,用尖括号括起来。,状态符下只能连接输入、优先输入、连续信号符和保存等四种图形符号,如下图所示。,当一条信号到达一个进程实例(状态机),如果该信号没有出现在输入符、优先输入符或保存符中,则该信号将被丢弃掉。从上面的定义可知,状态符包含一个状态列表,状态列表可以有以下4种情况:,单个状态名,表示该状态域描述的情况只涉及一个状态;多个状态名,表示在这几个状态下,同一触发事件引起的迁移过程是相同的,如下图所示:,图 信号”msg“在多状态下引起相同的迁移过程,*,表示某一事件在本状态机所有状态下引起的迁移过程是相同的;*(状态列表1),表示某一事件在本状态机除状态列表1列出的状态以外的所有状态下引起的迁移过程是相同的,一般情况下,状态机经过迁移过程后进入下一状态,进入下一状态一般有两种情况:(1)改变状态;(2)不改变状态。,true,Process manage,ready,On_hook(lineno),Lineno128,Ltopid(lineno)=NULL,On_hook(lineno)to ltopid(lineno),false,true,false,管理进程对挂机信号的处理,5(6),3.触发事件当状态机处于某一状态时,如果不发生触发事件,就不会发生迁移和状态变化。触发事件包括输入、优先输入、连续信号等。,(1)输入输入表示状态机接受并消耗信号。输入用输入符来表示,输入符的定义如下::=,输入符上接状态符,下接迁移域。输入符的缺口可以朝向左边,也可以朝向右边。在画图时,可以利用缺口的朝向不同区别来自不同方向的信号。一般情况下,输入符内只包含一条信号。如图所示:,输入符内可以包含多条信号,表示在本状态下,输入这几条信号引起的迁移过程是一样的,如图所示。,输入符中包含一个星号“*”,表示在本状态下,除了已在本状态下其他输人符中列出的输入信号外,本状态机所有其他有效输人信号在本状态下引起的迁移过程都是一样的,如图所示:,如果输入符下接使能条件符,表示当输入符内的信号到达本状态机输入队列队首,状态机处于目前状态时,系统要先计算使能条件符内的布尔表达式,若计算结果为真”,则消耗该信号,否则该信号保留在队列中,只要状态机处于本状态,系统就会不停地计算布尔表达式,直到计算结果为“真”为止。在这期间,状态机也可由其他触发事件引起状态改变,状态改变后,系统就不再计算该布尔表达式了,对应的信号也将被丢弃。使能条件

    注意事项

    本文(SDL软件设计技术.ppt)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开