(计算机应用技术专业论文)基于xml的刻面树构件描述语言xftcdl.pdf_第1页
(计算机应用技术专业论文)基于xml的刻面树构件描述语言xftcdl.pdf_第2页
(计算机应用技术专业论文)基于xml的刻面树构件描述语言xftcdl.pdf_第3页
(计算机应用技术专业论文)基于xml的刻面树构件描述语言xftcdl.pdf_第4页
(计算机应用技术专业论文)基于xml的刻面树构件描述语言xftcdl.pdf_第5页
已阅读5页,还剩61页未读 继续免费阅读

(计算机应用技术专业论文)基于xml的刻面树构件描述语言xftcdl.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

旗rx m l 的刻面树构f j _ 描述沿寿x f f c d l y t 6 7 a 8 基于x m l 的刻面树构件描述语言x f t c d l 【摘要】 本文从软件复用思想出发,通过对构件库管理的分析,指出了恰当的构件 描述方法对于构件检索的重要性。通过对各种基于刻面的构件描述语高的研究 以及对x m l 技术的探讨,结合刻面树分类方法,提出了一种新的基于x m l 的刻 丽树构件描述语言x f t c d l 。 x f t c d l 使用了刻面树构件描述方法。即用一个树形结构来描述构件的本 质特征。通过对舆型的刻面描述模型的比较综合,确定了x f t c d l 的刻面分类 方案。x f t c d l 包括 个一级刻面:依赖、适用性、质量、构件形态和构件功 能。这些一级刻面又分别包括一些子刻面,更详尽的描述了构件的特征。同时, 文中也指出了这些刻面的术语空问。 x f t c d l 是种领域无关的构件描述语占,为了增强它描述构件功能的能 力我们分析了以 的构件描述语言中描述构件功能的方法。然后从简单的f 然语言命令句 1 发,确定了它的“构件功能”刻面的子刻面。并从实际应 j 角 度考虑,指 构件功能应该山若干功能项组成,每一个功能项由子刻面柬描述。 川叫为j 山他构抛 i 肖提供这些】二刻| f l j 的值,指i uj 一些确l 扛的发l 胤! j | j 。 最后,dj 二刻j f i i 时方案描述的构f q - 数掘非常适合于川x m l 语言+ 来描述,我 们给了x f t c d l 的x m ls c h e m a 。同时利用j a v a 语言丌发了一个使用x f t c d l 的构什怍系统,以便更好n 改进我们的理论方案。 【关键字】 构什描述t 螽,软f | :新i :,软什复试刻砷j 刻面树,予刻呖,构件功能 7 , 基丁x m l 的刻面树构1 ,| = 描述语言x f t c d l x m l b a s e df a c e tt r e ec o m p o n e n t d e s c r i p t i o nl a n g u a g ex f t c d l a b s t r a c t i nt h i sp a p e r ,w ef i r s ti n t r o d u c et h em a i ni d e ao fs o f t w a r er e u s ea n dt h e np o i n t o u tt h ei m p o r t a n c eo fc o m p o n e n td e s c r i p t i o nl a n g u a g et os o f t w a r er e t r i e v a lb y a n a l y s i so fc o m p o n e n tl i b r a r ym a n a g e m e n t t h e nw ep r e s e n tan e wx m l - b a s e df a c e t t r e ec o m p o n e n td e s c r i p t i o nl a n g i l a g e 一一x f l d lb yr e s e a r c ho fa l lk i n d so f c o m p o n e n td e s c r i p t i o nl a n g u a g ea n dx m l i nx f t c d l ,w eu s ef a c e tt r e ea st h ec o m p o n e n t d e s c r i p t i o nm o d e l t h a ti st os a y , w eu s eat r e e t od e s c r i b et h ef e a t u r eo fa c o m p o n e n t b ya n a l y z i n gt y p i c a lf a c e t d e s c r i p t i o nm o d e l ,w eg i v ef i v ef i r s tl e v e lf a c e t s :d e p e n d e n c e ,s u i t a b i l i t y , q u a l i t y , c o m p o n e n tf o r ma n dc o m p o n e n tf u n c t i o n t h e s ef a c e t si n c l u d es o m es u b f a c e t sw h i c h d e s c r i b em o r ep a r t i c u l a ri n f o r m a t i o no fac o m p o n e n t a l s o ,w eg i v et e r ms p a c eo f t h e s ef a c e t s x f t c d l a sad o m a i ni n d e p e n d e n tc o m p o n e n td e s c r i p t i o nl a n g u a g e ,m u s th a v e d o m a i ni n d e p e n d e n tf u n c t i o nd e s c r i p t i o nm e t h o d i no r d e rt ot o n eu pt h ea b i l i t yo f d e s c r i b i n gf u n c t i o no fac o m p o n e n t ,w eg i v et h es u b f a c e t so f f u n c t i o nf a c e tb y a n a l y z i n gs i m p l ei m p e r a t i v es e n t e n c e a tt h es a m et i m e ,c o n s i d e r i n gt h ed i f f i c u l t yo f a s s i g n i n gt h ef a c e tv a l u e ,w eg i v es o m es i m p l ec o n s t r a i n t sa n ds o m eh e u r i s t i c s ax m ls c h e m at ob eu s e di nt h ex f t c d lb e c a u s et h ef a c e tt r e es t r u c t u r ei sf i t f o rx m l t h e nw e d e v e l o pa na p p l i c a t i o nb yj a v at oe v a l u a t ex f t c d l 【k e y w o r d s c o m p o n e n td e s c r i p t i o nl a n g u a g e s o f t w a r ec o m p o n e n t ,f a c e t ,f a c e tt r e e ,s o f t w a r e r e u s e ,s u b f a c e t ,c o m p o n e n tf u n c t i o n 2 基y - x m l 的刻面树构仆描述语言x f t c d l 1 引言 在过去的三十年中,软件生产率一直稳步增长,但仍不能满足社会对软件 产业的需求。在这期间,软件工程的专家学者们在许多方面进行了深入的研究。 其中主要包括: 软件歼发方法学的研究。在软件的整个生命周期中,通过一套行之有效的 软件开发方法,来指导应用软件的丌发。 软件复用技术的研究。软件复用一开始就被作为解决软件危机的一种行之 有效的方法。 软件质量的研究。对软件的质量进行定量、定性的评估。 近些年来,人们丌始认识到,要解决软件的供不应求问题,真正实现软件 的工业化生产方式,保证软件生产的高效率和高质量,软件复用是一条现实可 行的途径。 所谓软件复用,就是使用已有的软件产品( 如设计、代码、文档等) 来开 发新的软件系统或软组件的过程。软件复用可以降低软件丌发和维护的成本, 提高软件丌发效率。同时,由于这些软组件往往已经过严格的测试,并经过广 泛的使用,因此它们的可靠性通常比较高,从而也提高了新软件的质量。此外, 软件复用技术也为大型系统提供了实现动态性和灵活性的可能。 随着软件复用概念的r 趋成熟,人们逐渐认识到:在不久的将来,大部分 应川程序“f 以通过组合町复川软构什水充成。凶此,个包含这类软构仆的构 件库将成为未来应用程序丌发的基础。而一个构件库中可能包含成千上万个构 件,所以对构件库中构件的合理描述、分类和组织,将有助于软件玎发人员从 构件库中找到他所需要的构件。这就是构件库管理系统的作用。作为构件库管 理系统的两个重要组成部分,构件描述与构件检索相互联系,相互依赖。 对软构件的适当描述有助于有效的表示、丌发、理解、修改和复用软t , j f l :。 另一方丽,适当的描述对软构件的分类、编日、存储和检索起关键性的作用, 是构件库管理系统中的基础和核心。也就是说,软构件描述方法影响可复用构 件的生成、检索和修改。有了恰当的描述,丌发人员才能从构件库i f j 抽取到所 需的构件,名能对收集和开发的软件构件进行分类,然后把它们放入到可复刑 构件库的适当位胃。 构件描述语言,以构件模型为基础,解决构件的精确描述、理解和组装问 题,从而与构件的检索也即与构件的最终复用密切相关。其基本思想是将构件 看成是一个黑盒,通过对构件的描述,使得复用者不必关心其内部细节。定义 基丁x m l 的刻面树构什描述语言x f t c d l 良好的构件描述语言,将对构件的检索与组装提供极大的便利。 作为软件复用中一个主要的研究方向,构件描述研究由来已久。包括早期 的模块、模块互联语言( m o d u l ei n t e r c o n n e c t i o nl a n g u a g e ) 以及现在的构件 描述语言( c o m p o n e n td e s c r i p t , i o nl a n g u a g e ) 。本文利用x m l 语言的描述特性, 提出了一种新的基于x m l 的刻面树构件描述语言x f t c d l 。这种构件描述语 言主要的目的是应用到构件库管理系统中,为构件检索服务。 文章的组织结构 本文在第二章介绍构件描述语言的分类及各种构件描述语言的优缺点。在 第三章中简单介绍了x m l 语言。第四章从已有的基于刻面的构件描述语占出发, 介绍了本文中提出的基于x m l 的刻面树构件描述语言x f t c d l 。提出了一种 新的构件描述模型并着重介绍了这种模型在构件功能描述方面的特征。第五章 介绍了一个使用x f t c d l 的构件库系统。第六章总结全文。 - 5 基丁x m l 的刻面树f f f l 描述语言x f f c d l 2 构件描述 2 1 构件表示模型 构件模型是关于构件本质特征的抽象描述。目前,学术界与产业界已经提 出了许多构件模型,典型的有3 c 构件模型,r e b o o t 模型,c o r b a o i 模型,o l e c 0 m 模型等。 1 3 c 构件模型 3 c 模型是在1 9 8 9 年的“r e u s ei np r a c t i c ew o r k s h o p ”中由一些系统工程 领域的专家提出的,它是关于构件的一个指导性模型。该模型由构件的三个不 同方面的描述组成,即概念( c o n c e p t ) 、内容( c o n t e n t ) 和语境( c o n t e x t ) 三个方面。 ( 1 ) 概念:概念是关于“构件做什么”的抽象描述,可以通过概念去理解 构件的功能。概念包括接口规约和语义描述两部分,语义描述和每个 操作相关联( 至少表示为前后置谓词形式) 。 ( 2 )内容:内容是概念的具体实现,描述构件如何完成概念所刻划的功能。 在本质上,内容是对一般用户隐蔽的信息,只有那些企图修改构件的 人j 需要了解这些信息。 r3 ) 语境:浯境椭述掬什和外阿玎境在慨念f :! 硼勺窬级的芰系。i 再境刻划 构件的应用环境,为构件的选用和适应性修改提供指导。例如:如果 构件a 使用了另一个构件b 中描述的资源( 类型或过程) ,则称构件a 依赖于构件b ,或者说构件a 的语境q ,包含了构件b 。语境可进一步分 为:概念语境( c o n c e p t u a lc o n t e x t ) ,操作语境( o p e r a t i o n a lc o n t e x t ) 和实现语境( i m p l e m e n t a t i o nc o n t e x t ) 。概念语境描述构件问接门和 语义方嘶的关系:操作语境刻划构件小被操作数据的特征( 如类型和 操作) ;实现语境描述了构件在实现方面的依赖关系。 2 r e b o o t 模型 r e b o o t ( r e u s eb a s e do no b j e c t o r i e n t e dt e c h n o l o g y ) 构件模型是一种 基于刻面( f a c t ) 的模型。对领域进行分析,并得到一组基本的椭述特征,这 些特征称为刻面。刻丽可以描述构件执行的功能、被操作的数掘、构件应门】的 语境或任何其它特征。描述构件的一组刻面称为刻面描述予( f a c e t d e s c r i p t o r ) 。通常刻面描述限制在不超过7 或8 个刻面。一个构件通常包括以 6 基rx m l 的刻丽树构什描述语言x f i c d l f 刻面: ( 1 ) 抽象( a b s t r a c t i o n ) :它是构件概念的抽象性描述。 ( 2 ) 操作( o p e r a t i o n ) :它是构件所提供的操作的描述。 ( 3 ) 操作对象( o p e r a t eo n ) :它描述操作的对象。 ( 4 ) 依赖( d e p e n d e n c y ) :它描述构件与外界的依赖关系。 3 c o r b a o m 模型 c o r b a ( c o m m o no b j e c tr e q u e s tb r o k e ra r c h i t e c t u r e ) 是由o m g ( o b j e c t m a n a g e m e n tg r o u p ) 定义的关于应用程序问可互操作性的一个丌放性标准。其 中o r b ( o b j e c tr e q u e s tb r o k e r ) 提供了基本的请求和响应消息机制,使得任 一对象可以跨平台跨语言地与另一对象进行通信。c o r b a 定义了一个 c l i e n t s e r v e r 交互模型,它将应用程序的接口与它们的实现分离开来,以保 证二进制级别上的可互操作性。接口用i d l ( i n t e r f a c ed e f i n i t i o nl a n g u a g e ) 定义,并存储在接口池( i n t e r f a c er e p o s i t o r y ) 中。在客户端应用中的对象 向o r b 服务器请求一个或多个服务,请求既可以静态地通过i d l 编译器产生, 也可以在运行时动态地产生。接口池则包含了所有关于服务请求和回答格式的 信息。 c o r b a o m 体现在以下方面: ( 1 ) 请求( r e q u e s t ) :由请求的操作、目标格式、参数、操作语境等组成。 ( 2 ) 操作( o p e r a t i o n ) :指可被请求的服务。 ( 3 ) 接口和属性( i n t e r f a c ea n da t t r i b u t e ) :接口刻划一组操作,用i d l 定义。接口可以有属性。 ( 4 ) 类型( t y p e ) :用于指定操作参数的值的范围。 ( 5 ) 实现( i m p l e m e n t a t i o n ) :指操作的具体实现。 4 o l e c o m 模型 o l e ( o b j e c tl i n k i n ga n de m b e d d i n g ) 是m i c r o s o f t 公司提出的一个关于 标准规格说明和规格说明实现的集合。m i c r o s o f t 开发了一个构件对象模型c o m ( c o m p o n e n to b j e c tm o d e l ) ,它提供了在单个应用中使用不同厂商生产的对象 的规格说明,0 i 。e 是c o m 的一部分,它定义了可复用构件的标准结构。定义这 一模型的日的在于让多个软件构件彼此协同工作,即使它们是来自不同的厂商, 】不同的语言编写或是在不同的操作系统上运行的。c o m 定义了二进制互操作 标准及结构独立的网络协议,从而支持构件的互操作性,软件进化,异构环境 下的分布式计算等特性。 7 基rx m l 的刻面树构什描述语言x f r c d l 2 2 构件描述语言发展历史 构件描述语占应该以一种严格而又易于理解的方式为复用者提供全面准确 的信息。 、 作为软件复用中一个主要的研究方向,构件描述的研究最早可以追溯到7 0 年代p a r n a s 所提出的模块。早期的研究工作主要集中在模块互联语言( m o d u l e i n t e r c o n n e c t i o i ll a n g u a g e ) 方面,如m i l 7 5 、i n t e r c o l 等。进入8 0 年代,研 究重点丌始转向构件描述语言( c o m p o n e n td e s c r i p t i o nl a n g u a g e ) ,其中具有 代表性的工作包括g o u g e n 丌发的o b j 和l i l ,“b e r l i na p p r o a c h ”丌发的a c tt w o , 以及m e l d 等。 l i t v i n t c h o u k 和m a s t s u m o t o 指出,两种语言的区别主要在于,模块互联语 言是描述性的( d e c l a r a t i v e ) ,而构件描述语言是强制性的( i m p e r a t i v e ) 。进 入9 0 年代,研究重点转向如何将模块互联语言的优点引入到构件描述语言当 中,即使构件描述语言同时具有描述构件和构件予系统的能力,主要的工作包 括兀、c d l 、c i d e r 、l i l e a n n a 、r e s o l v e 以及0 0 m i l 等。 较有影响的构件描述语言有l i l 、c d l 、c i d e r 和r e s o l v e 。 库互连语言l i l 是为开发大型软件系统设计的构件描述语言,支持代码复 用和经验复用。允许软构件的垂直合成( 不同抽象层次b j 软构件的组合) 和水平 合成( 同一抽象层次构件间的修改和组合) 。 c d l 是基于对象结构范型( o b j e c t s t r u c t u r e dp a r a d i g m ) 的构件描述语言。 奠幕木思想是将软构件看作黑龠,通过接口的语法和语望揣述向外界提供结构 和行为信息,使复用者不必关心其内部细节。构件包括两部分:构件接口和构 件本体。构件接口描述构件的输出以及与其它构件的关系;构件本体用类一a d a 符号描述,实现接口部分所体现的思想。c d l 语言是设计级语言,可通过本身 工具箱将c d l 转换为实现语言。 c i d e r 具有面向对象语言的特点,是一种面向对象的构件描述语言,允许 构件继承、输入和实例化。构件出接口和本体组成。接口定义方式可以足显式 或隐式的。 r e s o iv e 语言用基于方法的数学模型表达构件的形式化规格说明。它给出构 件的类型、操作所满足的前置条件和后置条件、实现、构件模型和表示法的对 应关系。r e s o lv e 用数学模型描述构件的接口需求、接口需求与一个可能的实 现删的关系,适合于可复用构件的设计。但是,r e s o l v e 语言无法用抽象的数 学模型描述两个构件概念问的继承关系。因此,从一个构件产生另一个构件就 会显露出很多弱点。 8 基丁x m l 的刻面树构什描述语言x f f c d l 此外,c o r b ai d l 、d c o mo d l 和i d l 等接口定义( 或描述) 语言都能够刻画 软构件接口的语法,并且具备编译和浏览工具的支持。然而,现有的接口描述 语言在刻画软构件接口语义和构件相互之间复杂的交互协议方面却缺乏进一步 的支持。 2 3 构件描述语言分类 目前的构件描述语言大致可以分为两大类。一类是规约型构件描述语言, 即以规约的形式描述构件的内容。另一类就是基于刻面的构件描述语言,即用 一组刻面来描述构件的基本特征。 2 3 1 规约型构件描述语言 规约型构件描述语言经过长期发展,当前已经有多种不同类型。根据它们 各自不同的侧重点,我们选取了其中的几种,以一个后进先出的堆栈( s t a c k ) 为例,分别对他们加以介绍。 假设这个堆栈有如下的基本操作: p u s h ,把一个元素加到堆栈顶,即进栈; p o p ,从堆栈的顶端移出个元素,即出栈; e m p t y ,测试当胁堆栈是否为空; c l e a r ,从堆栈中移出所有元素,即清空堆栈。 1 操作娥约型构件描述语言 当日i 的操作舰约型构件描述语言包括c s p ( c o m m u n i c a t i n gs e q u e n t i a l p r o c e s s e s ) ,u n i t y ,s o s ( s t r u c t u r a lo p e r a t i o n a ls e m a n t i c s ) 等。以c s p 为例,从其名称中可以看出,这种操作规约型构件描述语言适合于描述顺序的、 以消息o l $ f j 来通信的过程。图l 是c s p 描述堆栈的例子。 e 5 p r o c e d u r e 【n i n ? x ;f 1 - o u t g e t ? x :o u t ! x :e e n d f 2 p r o c e d u r e 【o u t o u t ! x ;e n 拍一p u t ! x :i n g x :f e n d 图lc s p 描述的堆栈实例 9 基丁x m l 的刻砸树构什描述语言x f r c d l 在这个例子中,我们只描述了单个堆栈元素的操作规约,没有涉及到e m p t y 和c l e a r 操作。但是可以看出,c s p 描述的是行为,这个行为的过程是可以从 外部观测的,而不是描述的构件如何完成指定的操作( 也就是说,它不描述数 据结构和数据类型等特征) 。构件的功能接口是通过操作描述隐式指明的。 2 接口规约型构件描述语言 接口规约型描述语言只描述构件的接口,而不描述构件的操作行为。c o r b a 的接口描述语言i d l ( i n t e r f a c ed e s c r i p t i o nl a n g u a g e ) 就是这样的一种构件描述 语言。图2 是用这种语言描述堆栈的例子。 + a na r c h e t y p i c a ll i f os t a c k + m o d u l es t a c k _ m o d u l e i n t e r f a c es t a c k :f i n i t e _ d a t a _ s t r u c t u r e ,c o n t a i n e r p u s han e wi t e r no n t ot h es t a c k + v o i dp u s h ( i na n y i t e m ) ; p o pt h et o pi t e mo f ft h es t a c k + a n yp o “) ; + i st h es t a c ke m p t y ? b o o l e a ne m p t y 0 ; 7 + c l e a rt h ec o n t e n t so ft h es t a c k v o i dc l e a r ( ) ; 图2i d l 描述的堆栈实例 从上图可以看出1 d l 只描述构件的语法接口。也就是说i d l 中只指明方 法的签名和类型结构。 3 表达式规约型构件描述语言 表达式规约型构件描述语言并不表示构件的操作语义,而是以谓词的形式 描述构件的状态。典型的谓词一般采用前后置条件的形式。有一些表达式型的 构件描述语苦提供对谓词结构的直接支持。例如,e i f f e l 语言中就有r e q u i r e s , e n s u r e s 和i n v a r i a n t 等结构。 o m g 的o c l ( o b j e c tc o n s t r a i n t sl a n g u a g e ) 就是一种表达式型的构件描述 语言。图3 是o c l 描述堆栈的例子。 1 0 - 基丁x m l 的刻面树构什描述语言x f r c d l a n a r c h e t y p i c a ll i f os t a c k s t a c k _ _ s i z ei sa ni n t e g e ra t t r i b u t eo ft h es t a c kc o m p o n e n t 1 p u s han e w i t e mo n t ot h es t a c k :p u s h ( o c l a n y :i t e m ) :v o i d p r e :。- n o n e p o s t :i t e m = s e l f t o p o s i z e = s i z e p r e + 1 _ 。r e a dt h et o pe l e m e n to ft h es t a c k :t o p o :o c l a n y p r e :s i z e = 1 p o s t :。n o n e 。一p o pt h et o pi t e mo f ft h es t a c k :p o p o :v o i d p r e :s i z e = 1 p o s t :s i z e = s i z e p r e 1 。i st h es t a c ke m p t y ? :e m p t y o :b o o l e a n p r e :。n o n e p o s t :r e s u l t = ( s i z e = 0 、 - - 一c l e a rt h ec o n t e n t so ft h es t a c k :c l e a r ( ) :v o i d p r e :。n o n e p o s t :s e l f e m p t y ( ) = t r u e s i z e = 0 图3 0 c l 描述的堆栈实例 从上图中可以看到,o c l 既指明了构件的接口,也描述了每个方法的外部 可观测的边界效应。但是。o c l 并不指明其中的实现细节。 4 混合型构件描述语言 混合型构件描述语言既支持对接口的描述,也支持对其功能行为的描述。这 一类语言包括z ,v d m 和l a r c h 系列语言,以及基于j a v a 的j m l 等。由于这 类语言要描述比较复杂的构件行为,因此它们本身一般都很复杂。下丽是一个 用o b j e c t z 描述堆栈的例子。 基rx m l 的刻面树构什描述语言x f r c d l s t a c k s i z e :n s i z e = 0 a na r c h e t y p i c a ll i f os t a c kc o n t a i n i n gi n t e g e r s s t a c k :s e q z 、 l n i t s t a c k = s z e = 0 p u s h s t a c k i t e m ? :z p o p s t a c k = “s t a c k s i z e = s i z e + 1 s t a c k r e s u l t ! :z s i z e = 1 r e s u l tf - h e a ds t a c k s i z e = s i z e 一1 e m p t y r e s u l t ! :b r e s u l t i - ( s i z e = 0 、 c l e a r s t a c k s i z e s t a c k = s i z e = 0 r e s u l t ! :z r e s u l t ! = s i z e 图4 用o b j e c t z 描述的堆栈实例 从上图巾可以看出,使用o b j e c t z 语言可以指明构件的行为和接口中的任 意部分,但是这种语言本身过于复杂,不便于实际使用。 5 规约型构件描述语言比较 在介绍了几种规约型构件描述语言并举例说明以后,可以对他们的优缺点作 r 一个比较。 1 2 基rx m l 的刻面树构f ,i = 描述语言x f t c d l 优点 缺点 操作规约型构件可以指明构件的完整的涉及了过多的细节,需要很多的 描述语言( c s p行为,并可以隐式的指 专业知识,并且不支持面向对象 为例) 明构件的接口模型。而且通常基于这类描述的 证明非常复杂。 接口规约型构件可以以语言独立的方式不能描述构件的行为,也不能描 描述语言( i d l指明构件的语法接口述构件的语义 为例) 表达式规约型构 可以指明构件的语法接对于没有基于方法调用的接口的 件描述语言口,同时也能指明方法构件而言,不能描述他们的特 ( o c l 为例)的外部可观测的行为 征。同时,没有指明构件的任何 内部行为 混合型构件描述可以指明所有上述构件 过于复杂,增加了掌握和使用的 语言( o b j e c t - z描述语言能指明的部分难度。并且其中的大部分都不支 为例) 持面向对象的概念 表l 规约型构件描述语言比较 晟后,上述的几种构件描述语言都不能描述构件的比较高级的语义。 2 3 2 基于刻面的构件描述语言 一个刻面分类模式由一组描述构件本质特征的刻面所组成,每个刻丽从不 同的侧面对构件库中的构件进行分类。例如,这组刻面可以是构件的应用领域、 功能、操作对象、使用环境等。每个刻面是由一组基本的术语( 即关键词) 所 构成的( 称为术语空问t e r ms p a c e ) 。一个构件可以被每个刻面中的一个或多 个术语所刻划( 刻面术语是一个确定的集合) ,而每个刻面则反映了对库中构件 的一种划分,l 捌此 jj o 可以通过指定一组刻面的术语值对构件库检索,寻找匹 d e 的构件。为了解决用户指定的术语值与库中构件所对应的术语值之| i 目j 的不一 致问题,可利用软件工具分析同义词,以提高查全率。 刻面分类方法具有下列特性: 刻面必须充分并明确地描述构件库中全体构件,即每一个构件都可以用 该刻面来分类。 每一个刻面与一个术语空问相关联。任意两个刻面的术语空删是币交 的,即个别面i 的术语发生变化不会影响到另一个刻面的术语空n d 。 1 3 基t - x m l 的刻面树构f ,| = 描述语言x f r c d l 一个刻面的术语空i 、日j 为有限的不定空问( f i n it e & i n d e f i n it es p a c e ) , 即可以随时间的演进而动念地增加和删除术语。 每一个构件的所有刻面必须予以定义,不允许在对构件分类时有未定义 的刻面;但查询时,用户可以利用任意数目的刻面来查询。、 构件库管理者对构件进行分类时,应该针对每一个刻面,从术语空间中 选择适当的( 多个) 术语,以完成构件的封装工作。 在个术语空i b j 中的术语按一般特殊关系形成树状的层次结构,每一 个术语附带有不定数目的同义词( 术语间可以具有同义词关系) 。 在刻面分类策略中,构件库管理者通过将刻面与对应的术语相联结,可以 在构件问建立复杂的联系。与一般的层次分类策略相比,刻面分类策略更易于 修改,更富有弹性,因为对一个刻面的修改不会影响到其它的刻面。同时,每 个刻面对应一个结构化的术语空间,避免了般的关键词分类策略的杂乱无章, 使得对关键词的管理更为方便和有序。 当前工业界已经有多种基于刻面的构件描述模型,我们将在后文中给出一 些具体的例子。 基丁x m l 的刻面树构仆描述语言x f t c d l 3x m l 简介 x m l 代表可扩展的标记语言( e x t e n s i b l em a 。r k u pl a n g u a g e ) 。它是一套定 义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。它 也是元标汜语言,即定义了用于定义其他与特定领域有关的、语义的、结构化 的标记语言的句法语言。 作为一种元标记语言,用户可以使用x m l 来定义自己需要的标记。这些标 记必须根据某些通用的原理来刨建,但是在标记的意义上,可以具有相当的灵 活性。x m l 允许各种不同的专业( 如音乐、化学、数学等) 丌发与自己的特定 领域有关的标记语言。这就使得该领域中的人们可以交换笔记、数据和信息, 而不用担心接收端的人是否有特定的软件来创建数据。特定领域的开发人员甚 至可以向本领域外的人发送文档,并且可以认为,接受文档的人能够查看文档 的内容。 x m l 对于大型和复杂的文档是理想的,因为数据是结构化的。这不仅使用户 可以指定一个定义了文档中的元素的词汇表,而且还可以指定元素之间的关系。 x m l 还包括了多种子语言,例如x l i n k ( x m l l i n k i n g l a n g u a g e ) ,d o m ( d o c u m e n t o b j e c tm o d e l ) x s l ( e x t e n s i b l es t y l e s h e e tl a n g u a g e ) ,x l l ( e x t e n s i b l el i n k i n g l a n g u a g e ) ,x p o i n t e r 等,每一种子语言都扩展了x m l 的数据描述或操作能力。 下图是x m l 的相关示意图。 圈5 x m l 相关示意图 i j - 基j - x m l 的刻面树构什描述语言x f f c d l 从图中我们可以看出,x m l 虽然可以用来产生w e b 页面,但是这只是x m l 文件众多应用中的一种。x m l 具有描述非文件化的信息模型的能力,软件构件 就是这种信息模型中的一种。 关于x m l 的更多内容,本文不作进一步的说明。在后面的部分中,将详细 说明x m l 作为构件描述语言的好处。 1 6 基t - x m l 的刻面树构什描述语言x f t c d l 4 基于x m l 的刻面树构件描述语言一一 x f t c d l 。 4 1x f t c d l 源起 从第二章中可以知道,当前已有多种构件描述语言且各有特点。规约型构 件描述语言一般有比较严格的语法用以描述构件的接口、行为等各个方面。基 于刻面的构件描述语言侧重于描述模型,即刻面的选择,但是比较少涉及详细 的描述方法。 尽管构件描述语言种类繁多,风格各异,但是一般都是为了应用到以下三 个方面: 1 在工具的支持下实现自动或半自动的构件复合: 2 利用接口描述中的形式化信息来进行构件验证: 3 利用规约匹配技术来进行构件查询。 从构件库的角度出发,构件库一般有如下图的管理流程: 图6 构件库管理流程 从一h 圈可以看小,构件库中构件描述部分和构件检索部分是十h 互依赖的。 - 1 7 - 基tx m l 的刻面树构1 ,| :描述语言x f f c d l 因此这罩的构件描述语言是为了应用到第三个方面,即构件查询方面。应用到 构件查询方面的构件描述语言应该有如下一些特征: 1 其数据结构本身比较适合一些高效的检索算法。这样才能从根本上提高 椒件检索的速度。 2 强调描述构件的功能而不是其行为或接口特征。因为从实际应用中看 来,用户在检索构件的时候最注重的是构件是否提供某种功能,而不是 这种功能的接口或如何提供这种功能。后一部分是在构件组装的时候要 考虑的问题。用户只有在找到满足功能要求的构件后才会考虑构件组 装。所以面向构件检索的构件描述语言一定要有有效的描述构件功能的 方法。 从对第二章中介绍的构件描述语言的分析中可以看出,当前几乎没有完全 面向构件检索的构件描述语言。我们的刻面树构件描述语言x f t c d l 就是 要力争成为这样的构件描述语言。它采用了刻面树描述方法,并以x m l 语言 为载体。那么构件数据就可以用树形结构来描述。而在构件检索的时候基于x m l 语言的查询语句也可以用树来描述,这就提示我们,可以采用比较成熟的树的 近似匹配算法束完成基于x m l 的查询。也就是说,x f t c d l 的数据结构从本 质上来说是树形结构,解决了第一个问题 对于第二个问题,构件功能的描述问题,我们会在后文中详细介绍。使得 x f t c d l 成为一种领域无关的构件描述语言,其功能的描述方案也是领域独立 的。 在详细介绍x f t c d l 之前,我们先介绍一下现有的各种刻面描述语言。并 从这些语言中吸取优点,得出我们的刻面树方案。 4 2 典型的刻面描述语言 当前已有很多基于刻面的构件拙述语言,我们选择其中比较有代表性的四 争p 口以介绍。 1 r e b o o t 模型 r e b o o t ( r e u s eb a s e do no b j e c to r i e n t e dt e c h n o l o g y ) 构件模型认为一 个构件通常包括以下刻面:抽象( a b s t r a c t i o n ) 、操作( o p e r a t i o n ) 、操作对 象( o p e r a t eo n ) 和依赖( d e p e n d e n c y ) 。如下图所示。 - 1 8 基丁x m l 的刻面树构什描述语言x f f c d l 图7r e b o o t 模型 其中的刻面分别表示这样的含义: 抽象:描述构件是什么。例如,对一个构件的抽象描述可以指明构件是一个 堆栈或者是一个队列。 操作:描述构件提供给构件使用者的操作。假设有一个堆栈构件,那么p u s h 、 p o p 、c l e a r 等都是该构件的操作。 操作对象:描述构件操作什么。仍以堆栈为例,堆栈构件的操作对象可能是 整数、实数、结构等。 依赖:描述构件正常工作所需要的一些特殊信息。例如,只能在u n i x 下工 作或者需要和其他构件协作才能运行等。 2 d s r s 模型 d s r s ( d e f e n s es o f t w a r e r e p o s i t o r ys y s t e m ) 模型是d i s a ( d e f e n s e i n f o r m a t i o ns y s t e m sa g e n c y ) 昕使呵1 的刻而分类模型 其中包扦1 1 个刻而有 资源类型( a s s e tt y p e ) 、功能( f u n c t i o n ) 、对象( o b j e c t ) 、认证级别( c e r t i f i c a t i o n l e v e l ) 、语言( 1 a n g u a g e ) 、使用环境( e n v i r o n m e n t ) 等。在认证级别刻面中, 构件被分为这样四种级别: a si s :不对构件的正确性做任何保证。 c o m p i l e s :构件的源代码被成功编译过。 t e s t i n gt e s td a t a ,a n dt e s tr e s u l t s :构件被测试过,并且有 测试数据和测试结果。 r e u s e r sm a n u a l :比前一绂多了复用手册。 3 k r y 模型 k r y 模型是在r e b o o t 模型和d i s ad s r s 模型上发展起来的,然后又加 入构件的质量信息和构件在应用程序中的适应性信息,从而形成了自己的构件 模型。 k r y 摸型包括止个刻面:质量、适应性、测试信息、设计文档和实现。迎 1 9 基rx m l 的刻面树构什描述语言x f t c d l 过给应用程序丌发者提供丰富的构件数据,使他们能对构件作出明智的选择。 下图就是k r y 模型中五个刻面的概念性表示。 o 舌 营 菪 0 、 腱 l o i r a li r l o t a a o q ! 托 k l 灿| 节o f k h a ne “ d i s d s 船l v e i i t h e c e w h r 删 w _ f m fh a m e w 玎t o fc a f n a c t c o h e z i o n r 匿r f 胁f 0 加“m ,“_ k 如- 图8 k r y 模型 上图中的第一层是构件本身,唯一包含的数据是构件的抽象,一般来说就 - 2 0 一 o o o o ()ooooc)o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论