网络通信 频道

用形式化语言开发3G协议栈的优势

 1.引言
  
  TD-SCDMA和UMTS/IMT-2000系统在未来的几年将会被广泛应用。以下几种形式化语言是3GPP方法的一部分,并且被广泛地应用于标准中:
  
  SDL,Specification and Description Language,规格和描述语言,描述系统结构和行为的图形化语言。
  
  MSC,Message Sequence Chart,消息顺序图,描述通信序列的图形化语言。
  
  ASN.1,Abstract Syntax Notation Number One,抽象语法表示法一,描述协议信息和编解码的语言。
  
  TTCN,Tree and Tabular Combined Notation,树表结合表示法,描述一致性测试的语言。
  
  所有这些语言都由ITU和/或ISO标准化。它们都可由计算机进行处理,在市场上已有优秀的集成开发工具。

  以下我们讨论用形式化语言进行TD-SCDMA和UMTS协议栈开发的诸多优势。

  2.启动迅速
  
  使用基于SDL/ASN.1工具实现由SDL和ASN.1描述的协议的优势是显而易见的。用户从计算机可处理的规范开始开发。该规范是完全正确的——因为它本身就是标准。

  TD-SCDMA和UMTS标准包含完整、详细的协议中使用的的协议数据单元(PDU)描述。当ASN.1在标准中使用时,ASN.1可以并且应该直接使用到实现过程中。3G标准中ASN.1已经详细到可以自动生成编解码器,可以直接作为实现语言,用于数据定义。

  然而,标准中的SDL规范还远没有详细到可以直接生成实现。有些行为是用状态机描述的,但限于那些直接影响协议实体外部特征的行为,并且采用的也是一种抽象的方式,从而不对协议实现有所限制。规范的很多语义描述在附加文本中,有时用SDL图形表示出来,作为不定义的过程。

  为了得到一个可执行的规范,实现者必须添加协议框架来创建、管理和删除协议实体。另外,许多体系结构方面的选择,如缓冲机制等也必须确定下来,使得标准的所有语义都由行为图和外部过程(必须被实现)表示出来。从标准中初始得到SDL描述,然后经过几个更加面向执行的后续阶段,直到产生实现。

  其优势是基于SDL/ASN.1的实现者不需要从零开始创建一个系统描述,因为它们在标准中已经有了一个起点。

  3.早期证实和验证
  
  第二个主要的优势是实现者不必等到完整的实现之前就能进行行为的观察和测试。即使是非常有限的SDL描述也能进行仿真。实现者在早期阶段就可以证实SDL行为确实符合标准。一种方法是将标准中的MSC图与仿真中生成的MSC图进行比较。

  另外,通过观察仿真描述的行为,给出特定输入,实现者还可以增进对协议的理解。

  4.成熟的方法
  
  从TD-SCDMA或者UMTS标准到实现是一个相当复杂的任务。要控制这种复杂性,分阶段进行开发是非常重要的,在每个阶段进行有限的、良好定义的和容易理解的增强。这种方法不仅有助于开发过程,它还使得体系和结构的选择更加明显、可见,并可公开进行讨论和改进,而不会隐含在和躲藏在复杂度后面,除了实现者之外别人都看不见。

  从这种意义上说,基于SDL的方法是成熟的。这种可追踪的可发过程已经有现成的课程、书籍和咨询服务。

  5.用TTCN进行早期测试
  
  TTCN测试是TD-SCDMA和UMTS一致性测试的技术选择,但在协议实现的早期阶段它也是非常有价值的。

  用TTCN测试集进行TD-SCDMA或UMTS协议实现的早期测试有以下两种方法:
  
  1.与SDL设计联合仿真。
  
  2.用可执行的TTCN测试套(ETS,Executable TTCN Test Suites)进行早期目标测试。

  5.1.SDL-TTCN联合仿真
  
  当系统的SDL模型准备好了,就可以通过下载形式化测试套(Formal Test Suites)到TTCN工具中,运行SDL-TTCN联合仿真,从而仿真系统。所有合适的测试例都可以通过MSC图进行跟踪。其他的TTCN-SDL联合仿真功能包括:

  单步跟踪测试套

  检查测试中各种变量和常量的值

  检查到达的数据包

  发送新的或修改的数据包

  插入断点

  得到测试后SDL代码覆盖率图

  5.2.用可执行TTCN测试套(ETS)进行早期目标测试

  在TTCN仿真器中运行的抽象测试套也可以被转化为可执行的测试套(ETS)。ETS可以对目标上的实现进行测试。一些在仿真过程中很难发现的代码生成错误和硬件依赖错误在这种测试中可以被检测出来。

  在开发的早期阶段,协议和其他部分还没有完全实现时,测试者也许需要对形式化测试套进行修改。这在市场上先进的TTCN工具中可以轻松地实现。

  6.代码生成以及目标测试
  
  当SDL系统语法和语义正确时,它可以被转化成C代码或者其他实现语言。对于最终的系统测试,总是需要转移到目标上进行。如前所述,系统的SDL逻辑可以用TTCN和SDL联合仿真的概念进行彻底地测试,或者使用TTCN ETS进行目标测试。然而,使用当前市场上的代码生成器也可以在目标上直接进行SDL模式的测试。这给出了以下几种可能性:
  
  错误重现
  
  开发者可以“记录”目标上运行的SDL系统中的动作,将它们储存在测试器上的文件中。这一文件可以日后“回放”,从而在相同的状态下重新运行系统,重新执行相同的动作。通过这种方式,之前由其他团队记录的错误也可以重现。
  
  MSC跟踪
  
  可以获得目标上SDL系统运行的MSC跟踪图,还可以定义过滤条件,从而只创建部分跟踪信息,如同在主机上进行测试。
  
  调试
  
  支持一些通用的调试功能,如:设置和重置断点,创建及中止过程,单步执行和监视信号队列等。

  7.回归测试
  
  回归测试是确保在系统其他部分增加了新功能、或者系统修改后,现有功能仍然继续可用。使用TTCN、SDL和MSC使开发者可以将整个回归测试过程自动化。

  8.总结
  
  因此,在使用形式化语言进行3G协议栈开发时,可以有如下优势:
  
  用标准中的实际规范直接开始描述系统。

  通过仿真早期证实系统规范,了解协议行为。

  在整个实现过程中使用成熟、集成的方法。

  开发或者输入测试套,进行早期联合仿真、子系统测试、回归测试和一致性测试。

文章转载地址:http://www.cnpaf.net/Class/otherprotocol/0610917414765203514.html

0
相关文章