欢迎来到学术参考网

rCOS的操作语义在程序分析中的应用研究

发布时间:2015-11-12 10:03

摘 要:本文给出了rCOS语言的一种操作语义。并说明该操作语义在程序分析中的一个应用,即模式识别。为了能够判断在以rCOS为元语言编写的程序中,是否正确地运行了某种设计模式,从而进一步能自动识别出程序中好的模式和坏的模式。

关键词:rCOS;操作语义;程序分析
  1、rCOS简介
  rCOS是A Refinement Calculus for Object Systems(对象系统的精化演算)的简称。它是由华东师范大学软件学院的何积丰院士、澳门联合国大学软件研究所的李小山、刘志明溥十于2005年合作提出的。rCOS是一种面向对象描述语言,定义了一种用于描述面向对象程序设计结构的形式规范。尽管rCOS没有考虑垃圾回收(garbage collection),属性隐藏(attribute hiding),多继承(multipl inheritance)和错误处理机制(exception handling)等。但它仍具有非常丰富的语言特征,包括子类(subtypes),引用类型((reference type),可见性(visibility),继承(inheritance),动态绑定(dynamic binding),多态(polymorphism)等。
  rCOS的语法包括面向对象系统,类声明,命令和表达式,其主要语法同java和C十+类似。rCOS以统一程序设计理论((Unifying Theories of  Programming,UTP)为基础,它的语义模型提供了一个演算用以支持面向对象设计中的结构和行为精化(refinement)。它能够很好地描述面向对象设计和程序,并利用精化规则从需求到分析到设计再到实现整个过程的求精化简。rCOS是用于推理验证不同抽象层次上的面向对象软件,包括规格说明,设计和程序。
  澳门联合国大学软件研究所的刘志明博士领导了一个团队致力于rCOS 工具的开发与研究。该工具支持rCOS方法用于建模、分析、验证和保持正确性的转换,以及从设计模式生成可验证的代码。它是在Eclipse平台上实现的,使用了UML的原形,同时与其他基于UML软件工程工具的兼容。
  2、rCOS的操作语义
  在程序的执行过程中,一个对象被创建时,对象池就会发生t一些变化。在对象创建的同时,对象的标识后由当前运行的系统自动产生,初始类型InitialType由相对应的对象类型填充,对象的初始属性值Attes则由类构造器产生。
  当一个“new C”动作发生时,结构中发生变化的仅仅只有对象图OG,对象图中的∑和E受到影响。由于创建了一个新的对象,那么对象池中将增加一个新的对象。与此同时,从当前对象到新对象之间会增加两条边,分为标记为creation和reference。
  3、设计模式的规范与性质
  假设无限集合是类的集合,用类的名字表示顶点。无限集合风表示属性的集合,用属性的名字表示边上的标签。
  类图的生成过程相对比较简单。由于rCOS语法结构中有很明确的类声明部分,为此只需要采用深度优先的算法分析下程序的类声明部分的代码就能得到对应的类图。此算法只需要从类的声明部分开始,然后不断的迭代探索它的属性即可。这个过程是静态的,在编译的时候便确定下来了。
  相比较而言,面向对象系统中对象间的关系在运行时刻是可以变化的,更具有动态性。为了从源代码中获得相应的对象图,需要一个实时的监视器来观察内存中的对象的变化。
  由于目前rCOS没有提供任何的运行环境,我们采用模拟的想法来实现这一目的,再以上一章中给出的rCOS操作语义为基础,按照变迁规则一步步的执行程序即可得到相应的对象图。
  4、设计模式的性质表示举例
  4.1抽象工厂模式
  在软件系统的设计和开发过程中,常常会遇到这样一类问题。我们需要针对不同的子系统进行相同或者相似的复杂操作,同时对系统的规模不能精确估计。在这种情况下,要考虑到系统良好的可扩展性,以满足用户需求的不断增大,往往采用抽象工厂设计模式。
  该模式是一种创建型模式,负责一系列对象的创建工作,其设计一意在于:提供一个创建一系列相关或者相互依赖的对象的接口,而不需要指定它们的具体类。这样我们设计的软件具有了灵活性,可以适应外部需求的可能变化。另一方面,为了给外界提供一个简单而稳定的访问接口,同时把灵活性所带来的复杂的软件内部结构封装起来,可谓是一举两得。
  软件系统中各实体模块的通信表现为接口或者抽象类的通信,变化的部分通过继承接口或者实现抽象类来进行封装,实现了软件系统的可扩展性。同时,由于系统底层的需求变动不会波及到其子系统或者模块,系统的上层有良好的稳定性和可维护性。在抽象工厂模式中,客户端可以根据实际情况提出不同的需求,系统设计者为客户端提供一个简单而稳定的接口。客户端在不必指定产品具体类型的情况下,创建了某产品族的各种产品对象。
  4.2组成模式
  组成模式是结构型模式中的一种模式,它体现了对象间部分与整体之间的层次关系,因此,组成模式采用树形结构将对象组织起来。它的定义中包含了基本元素对象和组合对象。组合对象中能够进一步包含其它组合对象或基本元素,就如同树形结构中的枝节点:
  基本元素如同树形结构中的叶节点,不能添加其它对象。组成模式以一个组合对象为根节点,对外表现为接口或抽象类,动态添加其所需要的功能节点,这些添加的功能节点可以是组合对象或基本元素。对于组合对象可以继续灵活添加其它功能节点。根节点是整个结构的抽象,其封装了整个树形结构的功能实现,并能够根据需求动态修改。通过对组成模式根节点对象的调用,实现对树形结构中各个节点的层次遍历调用(也可以实现其它遍历方式),适用于表示具有层次性的对象集合,例如:表格计算,部门组织结构建模等。
  4.3观察者模式
  观察者模式是行为型设计模式的一种,它关注的不是对象的行为,而是两个或多个互相协作的对象之间的依赖关系(一种订阅关系,如同RSS或邮件订阅)。它通过某种方式来维持这种依赖关系,在关注事件发生的同时产生相应的消息通知,进而达到修改依赖的类的行为或状态的目的。观察者模式的设计意图是定义对象间的一种一对多的订阅关系,让多个观察者对象同时监视一个主题对象,当这个对象的被关注状态发生改变时,所有依赖于它的对象都能自动得到通知并被给予更新。
  参考文献
[1] A. ;, A. Bundy and I. Stark, Automatic verification of design patterns in Java, Proc.20th IEEE/ACM Internati onal Conference on Automated Software Engineering, California, USA, 2005, 224-232.
[2] .L. Quan, Q. Zongyan and Z. Liu, Format use of design patterns and refactoring, Leveraging Applications of Formal Methods, Verification and Validation, 17, 2009, 323-338.
[3] L. Zhao, X. Zhao, Q. Long, Z. Yan, A type system for the relational calculus of object systems, 1 l th IEEE International Conference on Engineering of Complex Computer Systems (ICECCS'06), Stanford, California, 2006, 189-198.

上一篇:音响技术在广播中的应用探讨

下一篇:浅谈单片机的低功耗设计