青鸟构件库概念模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

青鸟构件库概念模型

一、引言

二、语法结构

2.1功能移出部分

2.2模板参数

2.3特例化实例化描述

2.4协作规约、成员规约和规约互联

2.5协作对象、成员对象和对象互联

参考文献

附录

附录1--青鸟构件描述语言BNF

回页首

一、引言

在过去三十年中,软件生产率一直稳步增长,但仍不足以满足社会对软件产业的需求[1,2]。为了解决这一问题,科技人员在软件工程和人工智能领域进行了深入的研究。近几年来,人们开始认识到,要真正实现软件的工业化生产方式,保证软件生产的高效率和高质量,软件复用是一条现实可行的途径[3]。

作为软件复用中一个主要的研究方向,构件描述与复合的研究最早可以追溯到70年代

Parnas所提出的模块[4]。早期的研究工作主要集中在模块互联语言(Module Interconnection Language)方面,如MIL75[5]、Intercol[6]等。进入80年代,研究重点开始转向构件描述语言(Component Description Language),其中具有代表性的工作包括Gougen开发的OBJ[7]和LIL[8],“Berlin approach”开发的ACT TWO[9],以及Meld[10]等。Litvintchouk和Mastsumoto指出两种语言的区别主要在于,模块互联语言是描述性的(declarative),而构件描述语言是强制性的(imperative)[11]。进入90年代,研究重点转向如何将模块互联语言的优点引入到构件描述语言当中,即使构件描述语言同时具有描述构件和构件子系统的能力,主要的工作包括Π[12]、CDL[13]、CIDER[14]、LILEANNA[15]、RESOLVE[16]以及OOMIL[17]以及等。

青鸟构件描述语言的主要作用是描述构件接口,它可以应用在以下三个方面:1、在工具的支持下实现自动或半自动的构件复合;2、利用接口描述中的形式化信息来进行构件验证;3、利用规约匹配技术来进行构件查询。JB_CDL的设计目标是同时满足以上三个方面的应用,目前的实现方案主要针对第一方面应用,但同时也考虑了今后扩展的可能。JB_CDL的特点在于:1、以采用面向对象范型的代码件和设计件为描述对象;2、语言本身也采用面向对象范型;3、以一致的形式描述类和框架等不同形态的构件;4、与青鸟构件库系统紧密结合。

回页首

二、语法结构

JB_CDL分九个部分来描述规约,即功能移出、模板参数、特例化实例化描述、协作规约、成员规约、规约互联、协作对象、成员对象、对象互联,其BNF范式如表1所示。另外,需要注意的是规约声明必须以句号结束。以下分别介绍这几个部分的语法和语义。

表1. 规约声明的BNF范式

2.1功能移出部分

功能移出部分负责描述构件提供功能的基调及语义,但目前移出功能的语义还只能用文字来描述。另外,为了保证与CORBA标准[18,19]的兼容性,JB_CDL中的基本类型与CORBA标准给出的基本类型相一致。表2列出了功能移出部分的BNF。例1给出了一个用JB_CDL描述的堆栈构件。

表2. 功能移出部分的BNF范式

例1. 整数堆栈

2.2模板参数

当构件为规约模板时,模板参数部分给出了其所需的参数。我们可以将例1中描述的堆栈

修改为一个规约模板,如例3所示。模板参数部分的BNF范式如表5所示。

表3. 模板参数部分的BNF范式

例2. 堆栈模板

2.3特例化实例化描述

特例化实例化描述部分用于描述构件之间的特例化关系和实例化关系,其BNF范式如表4所示。例3、4在例2的基础上给出了Stack_Template的特例化Stack_Template_With_Top 和实例化Stack_Of_Integer。

表4. 特例化实例化描述部分的BNF范式

例3. 提供Top功能的堆栈模板

例4. 利用堆栈模板实现的整数堆栈

2.4协作规约、成员规约和规约互联

协作规约描述了外部协作规约;成员规约描述了内部成员规约;而规约互联描述了规约之间的静态关系,包括继承、组装、实例连接和消息连接。这三部分描述的主要作用是辅助用户对构件的理解,其BNF如表5所示:

表5. 规约级结构的BNF范式

2.5协作对象、成员对象和对象互联

协作对象并不指明具体的构件,而只是利用其规约描绘出协作者的虚象,为了正确地使用该构件,必须将这些虚象与一个满足需求规约的构件相连接。传统的模块互联语言只能在代码级进行复合,这使得复合而成的构件功能较为单一[3]。而协作对象的引入可以解决这一问题,它描述了构件协作者应具备的接口,而所有符合这一规约的实现都可以与该构件进行复合,从而提高了构件复合的灵活性,扩展了复合构件的功能范围。成员对象给出了该构件包含的成员构件,这些成员构件通过相互协作来完成该构件需要移出的功能。对象互联将以上两部分给出的构件进行适当的互联,使得每个构件都能够与它的所有协作构件连接起来。这三部分的BNF 如表6所示。

表6. 对象级结构的BNF范式

以下用一个在〖JBCDL14〗中给出的家庭供热系统的例子来表现JB_CDL对构件子系统的描述能力。该系统包括四个构件:时钟(clock)、控制器(controller)、温度计(thermometer)和加热器(heater)。该系统的工作流程如下:时钟定时触发控制器去检测当前温度,如果低于预定温度则打开加热器,反之则关闭加热器。

例5. 家庭供热系统

回页首

参考文献

1. B. Boehm, “Improving software productivity”, IEEE Software, pp. 43-57, Sept, 1987

2.Cox, “Planning the software revolution”, IEEE Software, vol. 7, no. 9, pp. 25-35, Nov,

1990

3.Hafedh Mili, Fatma Mili, and Ali Mili, Reusing Software: Issues and Research Directions,

IEEE Transactions on Software Engineering, Vol. 21, No. 6, pp. 528-562, June 1995

4.Parnas, On the criteria to be used in decomposing systems into modules, Communication of

相关文档
最新文档