




已阅读5页,还剩61页未读, 继续免费阅读
(计算机科学与技术专业论文)基于范例推理的特征领域构件复用技术研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于范例推理的特征领域构件复用技术研究与实现 专北: 硕士生: 指导老师: 计算机技术 王宽 姜云飞教授 摘要 如何对一个特征领域进行快速有效的软件再工程,是当前软件工程领域所关注 载一个重要谦题,本文主要逶遘对软 拳复搏、获终捣传窝较 警孬工程戆技术帮方法 的全面阐述,研究了种面向范例推理的特征领域构件模型及基于此进行特镊领域 大粒麓构俘再工程静策略。 本文将首先介绍软件复用技术、软件构件技术和软件再工程的一般方法,在全 面介绍以上三种技术的基础上,针对本文的姘究背景,探讨了一种基于特征颥域大 粒度梭 牛复用的软件瓣工程方法,并攒述了磷向特征领域进行软 牛再工程时遂行软 件复用活动的蔽略。 接下来本文开始探讨一秘舞l 纯敬佟复鼹方法一藤蠢范铡雄理翡技术, ;l 便予 进行特征领域软件构件的有效复用。针对范例推理技术,本文研究了一种特征领域 空溺内豹棱佟语义表零方法,萋予这释语义挨整,对藩铡莲融方法耧范镬检索算法 进行丁研究,借鉴并改造了一种范例检索算法。以上这些工作,为面向特征领域软 褐 牛笺用兹套渤亿和工程仡掇供了基础。 文意最后对中国银行海外分行应阁系统大集中案例进行分拆,展示了这种策略 的实施方式。 关键键:软体复熙,软馋梅韩,软传薅王程,范倒攥疆,镊符综合照务系统 s t u d y a n d i m p l e m e n t o n c b r - b a s e d s p e c i a l d o m a i ns o f t w a r ec o m p o n e n tr e u s e t e c h n o l o g y m a j o r :c o m p u t e r s c i e n c ea n d t e d a n o l o g y n a m e : w a n g k u a n s u p e r v i s o r :p r o f e s s o rj i a n g y u n f e i a b s t r a c t a tp r e s e n t , h o wt oc a r r yo i lf a s ta n de f f e c t i v es o w a r er e e n g i n e e r i n gi naf e a m r ed o m a i ni sa l l i m p o r t a n ts u b j e c tt h a tt h es o f t w a r e - e n g i n e e r i n gf i e l dp a y sc l o s ea n e n d o n t o i nt h i sg a p e r , t h r o u g ht h e o v e r a l le x p o s i t i o no fs o f t w a r er e u s e ,s o f t w a r ec o m p o n e n t , a n ds o f t w a r er e e n g i n e e r i n gt e c h n o l o g y , a s e m a n t i c si n t e n s i v ec o m p o n e n tm o d e l ,w h i c hi so r i e n t e dt oc a s e b a s e dr e a s o n i n g ,i sp r o p o s e d f r o m t h i sm o d e l ,w ep r o p o s e dam e t h o do f r e e n g i n e e r i n gw h i c hi so r i e n t e dt ot h eh i g h - l e v e ld e s i g n si nt h e f e a t u r ed o m a i n i nt h eb e g i n n i n g t h ep a p e rm a i n l yi n t r o d u c e dt h eb a s i cn o t i o n so fs o f t w a r er e u s e ,s o f t w a r e c o m p o n e n t a n dag e n e r a lm e t h o do f s o f t w a r er e e n g i n e e r i n g o f lt h e s e b a s i sa n dd i r e c tt ot h er e s e a r c h b a c k g r o u n do ft h ep a p e r ,w ed i s c u s s e das o f t w a r er e e n g i n e e r i n gm e t h o dw h i c hi s o r i e n t e dt ot h e h i g h l e v e ld e s i g n si nt h ef e a t u r e d o m a i na n das o f t w a r er e l l s et a c t i c sw h e nw ei m p l e m e n t i n gs o f t w a r e r e e n g i n e e r i n g w h i c hi so r i e n t e dt ot h eh i g h - l e v e ls o f t w a r ec o m p o n e n t i nt h ef o l l o w i n g ,w ed i s c u s s e dt h ew a yo fu s i n gak i n do fi n t e l l i g e n tm e t h o dt oi m p l e m e n t s o f t w a r er e u s e - 一- c a 5 圮- b a s e d r e a s o n i n gm c h n o l o g y , s ot h a t w ec a nd oi n o r ee f f e c t i v e l ys o f t w a r e c o m p o n e n tr e a s ei nt h ef e a t u r ed o m a i n a i mt o c a s e - b a s e dr e a s o n i n gt e c h n o l o g y , w ep r o p o s e da d o m a i nf e a t u r es p a c eb a s e ds e m a n t i cr e p r e s e n t a t i o no fc o m p o n e n td e p e n d e do l lt h i sr e p r e s e n t a t i o n ; w es t u d yt h es e a r c h e sm e t h o da n dm a t c h i n gm e t h o do fc a s e - b a s e dr e a s o n i n g ;w ec o n s u l t e da n d r e b u i l das e a r c h e sm e t h o do f c a s e - b a s e dr e a s o n i n g t h e s ew o r ko f f e r e daf o u n d a t i o nf o ra u t o m a t i o no f t h ef e a t u r ed o m a i ns o f t w a r er e i s e a tl a s t , w ea n a l y s i sar e a lc a s e t h ec e n t r a l i z ep r o j e c to fe o m p n t e rs y s t e mo fo v e r s e a sb r a n c h o f b a n ko f c h i n a , e x p a t i a f i o nt h ei m p l e m e n to f t h et a c t i c sw eh a v es t u d i e d k e yw o r d s :s o f t w a r er e u s e ,s o l t w a r ec o m p o n e n t ,s o f t w a r er e e n g i n e e r i n g ,c a s e - b a s e dr e a s o n i n g , b a n k i n gi n t e g r a t e ds e r v i c es y s t e m 4 第1 章研究的背景 6 0 年代开始出现的软件危机导致了软件复用技术的诞生。随着计算机硬件的飞 速发展,爆炸性的软件需求推进了对软件复用理论和技术的研究。所谓软件复用是 指利用现有的软件成分( 资源) 来构造新的软件系统。该软件成分可能是已有的软件, 也可能是专门开发设计的可复用的软件。其中,可复用的现有软件成分是软件复用 技术的核心;复用成分的获取、管理和使用则构成软件复用的三个要素。构件技术 是软件复用思想切实可行的技术实现。 近年来,越来越多的行业开始进行领域内的应用系统大集中工程,通过实现行 业应用系统在逻辑上与数据上集中,来获得更大的市场占有率、更高的服务质量和 更好的客户满意度。成功进行大集中项目的关键,是如何通过把具备相同领域特征 的旧系统再生为新的系统,以减少投资、加快项目进度。这样,以软件复用 ( s o f t w a r e r e u s e ) 和软件构件( s o f t w a r ec o m p o n e n t ) 为核心的软件再工 程方法在不同特征系统的大集中项目中越来越多地得到采用。 在具有相同特征的领域系统中,如金融、证券、医疗等行业应用系统,尽管各 系统所使用的平台与开发语言千差万别,但由于同一行业内的业务需求与设计相差 不大,对原系统进行再工程时,为了满足业务方面的平稳过度,常常只对系统的高 层设计的构件进行复用。面向高层的软件复用不同于代码级的软件复用技术,它所 面向的通常是系统的需求与设计阶段,往往进行的是大粒度构件的建模、检索与复 用技术,在系统的高层次上进行软件系统的再工程。基于此,对大粒度构件的软件 复用方法的研究,将是本文的一个重点。 显然软件再工程的关键技术是软构件复用,软件复用的本质是对知识的复用, 要成功地实现面向特征领域一的大粒度构件复用,我们必须提供合适的可复用软件构 件模型和构件知识库组织检索方式,解决软件复用过程中对构件语义匹配和理解的 问题,并且要使软件复用过程尽量自动化和工程化,这也是本文需要进行的研究和 探讨一个主要课题。 7 第2 章软构件复用技术研究 2 1 软件复用技术 实施软件复用的目的是要使软件工程进行得”更快、更好、更省”。”更快”是指 在市场竞争的环境中,软件产品能够及时满足市场的要求;”更好”是指开发出来的 软件产品在未来的使用中少出差错:”更省”是指在开发和维护过程中能够节省成本。 1 1 对建立软件目标系统而言,所谓复用( r e u s e ) ,就是利用某些早先开发的对建立 新软件系统有用的软件元素来生产新系统。它是一项活动,而不是一个对象。这里 所说的软件元素可以包括需求规格说明、设计过程、设计规格说明、程序代码、测 试用例、度量等等。对于新的软件开发项目而言,它们或者是构成新软件系统的构 件,或者是在软件开发过程中发挥某种作用。通常将这些软件元素称为可复用构件。 2 1 1 软件复用的概念 早在5 0 年代用机器语言编写程序的时期,计算正弦、余弦、对数等的标准予程 序包就开创了复用的先河。到7 0 年代的早期,在语言、数据结构、操作系统、程序 变换等方面各种技术的发展,都与代码的复用有关。当时,复用的应用领域有限, 软件的复用问题没有提到很重要的位置上来讨论。7 0 年代的中期和后期开始,为了 缓解软件危机,许多人寄希望于软件复用技术,因为在提高软件生产率与质量,以 及减少软件开发时间和成本的努力中软件复用已经成了关键因素。一般来说,软件 复用技术是以下一般因素的附属品:一种资产开发和资产使用过程之间的独立性度 量,控制可复用资产的生产、存储和检索的一种系统化过程:对可复用资产形式的 认识( 如果不是其源代码,至少是其主机系统中的调用协议) :最后是被检索资产用 做开发过程构件的条件。其概念可以简单定义为以下描述:软件复用是机构用于定 义一组系统化操作的规则,并在开发活动中使用这些规则说明、生产、分类、检索 和适配软件【1 0 】。 当前,美、日一些大公司的资料表明,软件复用率最商可望达到9 0 ,而且软 8 件复用使得企业在及时满足市场、软件质量、软件开发费用和维护费用等方面得到 显著的改进 2 】。 为了保证软件的复用,需要注意解决的问题主要有: 复用必须以对被复用对象的理解为基础; 如何表达对软件构件的需求; 如何寻找有关的软件构件; 如何识别是否满足要求; 如何调整或修改构件使之满足要求; 如何组装到新系统中; 如何保证结果的正确性; 如何进行效益的定量估算。只有当复用能带来效益时人们才会考虑复用。 为了能够在软件开发过程中复用现有的软件构件,必须在此之前不断地进行可 复用构件的积累,并且将它们组织成可复用构件库。因此,软件复用不但要讨论如 何检索所需的软件构件以及如何对它们进行必要的修剪,而且还要解决如何选取可 复用构件、如何组织可复用构件库等问题。 近年来,出现了许多新的应用软件开发技术和工具,都是以”构件”为关键,快 速开发应用软件为其特征的。这些新技术包括微软公司的v i s u a lb a s i c ,a c t i v e x , o l e :s u n 公司的j a v a ,o m g 的c o r b a ,i d l 等。软件构件的商业市场正日益发 展,市场上出现了比传统的对象类更大的功能块,叫做a c t i v e ) 构件,o l e 构件 ( o c x s ) 。非面向对象语言( 如c o b o l 和f o r t r a n ) 在复用实践中已经取得较大的 成功。这些非面向对象语言构件技术的成功实践说明:实现软件复用并不限于面向 对象语言构件或类库。 2 1 2 软件复用活动 软件复用技术可以区分为横向复用和纵向复用。横向复用是复用不同应用领域 中的软件元素,例如数据结构、排序算法、人机界面构件等。标准函数库是一种典 型的原始的横向复用机制。纵向复用是在一类具有较多公共性的应用领域之间复用 软件构件。由于在两个截然不同的应用领域之间进行软件复用潜力不大,所以纵向 复用受到广泛关注。 纵向复用活动的主要关键点在于领域分柝:根据应用领域的特征和相似性,预 测软件构件的可复用性,从而界定潜在的可复用资产。一旦根据领域分析确认了软 件构件的可复用价值,即可进行软件构件的开发,并对具有可复用价值的软件构件 做一般化处理,使它们能够适应新的类似的应用领域。然后将软件构件和它们的文 档存入可复用构件库,成为可供未来开发项目使用的可复用资源。这些步骤构成软 件构件的构造活动。这是一个不断积累、不断完善软件构件的渐进过程。 随着可复用构件的不断丰富,可复用构件库的规模会不断扩大,这样,必须考 虑如何组织库的结构以保持较高的检索效率。可供选择的软件构件从库中被检索出 来之后,用户还必须理解它的功能或行为,以判定它是否真正适合于当前的应用。 必要时,可考虑对某个与期望的功能或行为匹配程度最好的可复用构件进行少量修 改,甚至可将修改后的构件再加刮可复用构件库中。上述的软件复用的方法如图i 所示。 论域知识 二圈 用户 图2 - 1 构件复用活动过程 2 1 3 软件复用的类型 软件复用的范围不仅涉及源程序代码,c a p e r j o n e s 定义了十种可能复用的软件 要素: ( 1 ) 项目计划软件项目计划的基本结构和许多内容都可以跨项目复用。这样 可减少制定计划的时间,也可降低与建立进度表、风险分析及其他特征相关的不确 定性。 ( 2 ) 成本估计 由于不同项目中常包含类似的功能,所以有可能在极少修改或 不修改的情况下,复用对该功能的成本估计。 ( 3 ) 体系结构即便应用领域千差万别,但程序和数据体系结构大同小异。因 此,可以创建组体系结构模板( 例如事务处理结构) ,将这些模板作为可复用的涉 及框架。 ( 4 ) 需求模型和规格说明类和对象的模型和规格说明显然可以复用。此外, 用传统软件工程方法开发的分析模型( 如数据流图) 也可以复用。 ( 5 ) 设计用传统方法开发的体系结构、数据、接口和过程化设计都可以复用。 另外,复用系统和对象的设计是屡见不鲜的。 ( 6 ) 源程序代码验证过的程序构件( 用兼容的程序设计语言书写) 是可以拿 来复用的。 ( 7 ) 用户文档和技术文档即便特定的应用不同,但也经常有可能复用用户文 档和技术文档中的大部分内容。 ( 8 ) 用户界面这可能是最广泛的可复用的软件资产。如经常复用g u i 的软件 构件。因为它可占到一个应用的6 0 的代码量,所以复用的效果最明显。 ( 9 ) 数据结构经常被复用的数据结构包括:内部表、列表和记录结构,以及 文件和完整的数据库。 ( 1 0 ) 测试用例只要将设计或代码构件定义成可复用构件,相关的测试用例 就应当成为这些构件的”从属品”。 表1 给出的数据( 来自军方的一些系统项目) 表明1 美元投资在4 年后的回报。 j o n e s 对复用的整体影响给出高度评价:”复用所有1 0 种软件要素的总计值可以产生 可能是任意已知的软件技术种的最好回报。” 可复用软件要素4 年后的回报可复用软件要素4 年后的回报 项目计划$ 2 。0 0源程序代码$ 6 。0 0 成本估计$ 3 。0 0用户文档和技术文档$ l 。5 0 体系结构$ 1 。5 0用户界面$ 1 。o o 需求模型和规格说明$ 3 。0 0数据结构$ 3 。5 0 设计$ 5 。0 0网试用例$ 3 。5 0 l 复用还可以扩展到以上所讨论的可交付的软件要素之外,它还包含了软件工程 过程中的元素。特定的分析建模方法、检查技术、测试用例设计技术、质量保证过 程,以及很多其他软件工程实践都可以被”复用”。例如,如果某项目组有效地应用 了某种软件工程方法,那么在开发其他项目时可以复用该方法。为帮助潜在的该方 法的使用者选择这个方法,应定义一组功能描述,以帮助人们做出适当的决策。 2 2 领域工程介绍 在大多数的软件复用中,设计创建过程的一个重要活动,即界定潜在的可复用 资产。在此活动中需要一整套的界定方法和确保可复用资产将被复用的一个体系结 构。这个活动就是领域工程。 2 2 1 针对复用的过程模型 针对复用的过程模型如图2 所示。这种过程模型强调并行的工作方式。以这种 方式,领域工程和基于构件的应用开发同时进行。 图2 2 针对复用的过程模型 领域工程反映了共享的思想,即在相关的应用之间进行共享,这些应用出现在 一至多个应用领域中,先有共享思想的指导,才会在基于构件的应用开发中出现可 复用资产的复用。 有时,可以将领域工程通俗地描述与普通的”系统工程”一样,诸如结构化分析 结构化设计,或面向对象分析面向对象设计。所不同的是,领域工程要适合于一族 系统,而不只是论一个系统。它的确像普通的系统工程,但它比一个系统工程的内 容要多。它超出了一个系统,要寻求一个领域中的一族相似的诸多系统。因此,领 域工程普通的系统工程要复杂。至今为止,人们尚不能充分理解它,故往往不能事 先很好地计划,也很难实施管理。 领域工程创建应用领域的模型,这个模型将成为软件工程中分析用户需求的基 础。软件体系结构( 及相应的结构点) 为应用的设计提供了输入。最后,当可复用 构件构造好并放入可复用构件库中( 在领域工程中进行) 之后,它们就可以在软件 构造活动中供软件开发人员使用。 2 2 2 领域工程 领域工程的目的是界定、构造、分类和发布一组可复用的软件构件知识库。从 软件工程的观点来看,领域就是向应用软件提供应用需求的问题和背景知识。领域 工程的主要任务就是针对单个或一族相似的领域,以软件复用为目标,探寻并挖掘 领域或领域族中能够为多个应用软件系统共用的软件要素,并对它们进行结构化组 织,放入可复用构件库,以备复用。 领域工程包括三个主要的活动:分析、构造和发布。 领域工程的基本行为: 领域分折:为领域内的系统定义一组可复用的需求 领域设计:建立领域内系统通用的构架 领域实现:实现可复用资产,包括复用构件、领域规约语言、生成工具、复用 基础设施等。 卡耐基梅隆大学软件工程研究所1 9 9 0 年提出一种基于特征分析的领域分析方 法f o d a ,其核心是通过信息分析( e r 模型) 、特征分析、操作( 功能) 分析,标 识领域中的构件,而后给出领域内通用的构架模型;韩国浦项科学与技术大学1 9 9 7 年在f o d a 的基础上,提出了面向特征的复用方法f o r m ;惠普实验室1 9 9 8 年在 f o d a 的基础上,提出了特征复用驱动的软件工程方法f e a t u r s e b ;m a r ks i m o s l 9 9 6 年提出组织领域建模的领域工程方法o d m ,它主要关注既有系统的领域工程,也 可能应用于新系统。o d m 是可裁剪、配置的,它能和其他的软件工程方法集成。 2 2 3 领域分析过程 领域分析与常规的需求分析活动有相似之处,它们都是软件开发中直接基于应 用领域的开发活动,并且都要完成程度不同的领域建模任务。但是领域分析必须具 有比需求分析更为广阔的视角:不仅要服务于当前的应用,而且要从领域的历史项 目中发现这些项目之间的共同点和差异点,并放眼于同类或相似应用领域的未来软 件项目。 领域分析的过程如下: ( 1 ) 定义将要研究的领域: ( 2 ) 分类从领域中抽取出来的项; ( 3 ) 收集领域中应用的有代表性的样本; ( 分析样本中的每一个应用; f 5 ) 开发对象的分析模型。 领域分析适合于任何一种软件工程范型。 p r i e t o d i a z 扩展了上面领域分析的第2 个步骤,建议了一个有8 个步骤的标识 和分类可复用软件构件的方法: ( 2 a ) 选择特定的功能或对象; ( 2 b ) 抽象功能或对象; ( 2 c ) 定义分类方法; ( 2 d ) 标识公共特征: f 2 e ) 标识特定的关系; ( 2 0 抽象关系; 1 4 ( 2 9 ) 导出功能模型; ( 2 h ) 定义领域语言。 目前已经出现五、六种领域工程的方法,每种方法都突出自己特殊的主题。有 的方法关注的是如何利用现有的领域、体系结构和系统专业技能,有效地界定”领域 ”;有的方法关注的是如何从领域中挑选实例、如何分析需求和趋向:有的方法关注 如何收集各项特性、如何表述它们、如何对它们进行分组。不同的方法在如何界定 领域和领域范围方面、在如何匹配其目标软件工程和技术方面各有差异。多数应用 系统由若干可识别的或特殊的子问题组成,其中只有一部分子问题是值得复用的。 2 2 4 领域特征 有时很难确定一个潜在可复用的软件构件在某种特定的情况下是否确实可以使 用。为了解决这个难题,有必要定义一组可以为领域中所有软件共享的领域特征。 领域特征定义了存在于领域中的所有产品的类属属性。例如,类属属性可能包括有: 安全 ! 阿靠性的重要性、程序设计语言、处理中的并发性,以及其他许多内容。 若设某一可复用软件构件p 的领域特征的集合为 d p l ,集合中每一项d p i 表 示某一特定的领域特征。赋予d p i 的值d w i 表示该领域特征对软件的相关程度,共 分为5 个等级: ( 1 ) 与新软件是否可复用没有相关性。 ( 2 ) 仅在不寻常的情况下相关。 ( 3 ) 相关。此时可以修改软件构件以使其可以被复用。 ( 4 ) 显著相关,且若新软件不具有此特征则复用是低效的。但复用仍有可能。 ( 5 ) 显著相关,且若新软件不具有此特征则复用是无效的。此时不推荐复用。 如果想要在某应用领域构造一个新软件w ,可为它导出一组领域特征,然后在 d w i 与d d i 之间进行比较,以决定既存的软件构件p 是否可以有效地在应用w 中复 用。 2 3 软件构件技术概述 构件( c o m p o n e n t ) 是指应用系统中可以明确辨识的构成成分,而可复用构件 ( r e u s a b l ec o m p o n e n t ) 是指具有相对独立的功能和可复用价值的构件。 可复用构件应具备以下属性【3 】:有用性( u s e m l n c s s ) :构件必须提供有用的功 能;可用性( u s a b i i i t y ) :构件必须易于理解和使用; 质量- ( q u a l i t y ) :构件及其变 形必须能正确工作;适应性( a d a p t a b i l i t y ) :构件应该易于通过参数化等方式在不 同语境中进行配置:可移植。眭( p o r t a b i l i t y ) :构件应能在不同的硬件运行平台和软 件环境中工作 4 】。 随着对软件复用理解的深入,构件的概念已不再局限于源代码构件,而是延伸 到需求、系统和软件的需求规则约、系统和软件的构架、文档、测试计划、测试案 例和数据以及其他对开发活动有用的信息,这些信息都可以称为可复用软件构件。 2 3 1 构件模型 软件构件模型是研究构件本质特征及构件问关系,提供创建和实现构件的指导 原则。 在学术界和产业界出现了多种构件模型。3 c 模型是一个指导性构件模型,由概 念、内容、环境三部分组成: ( 1 ) 概念( c o n c e p t ) 描述软件构件做什么。为此,需要完全地描述构件的接口和表示语义( 表示在前 置条件和后置条件的上下文中) 。概念将传达构件的意图。 ( 2 ) 内容( c o n t e n t ) 描述软件构件的概念如何实现。一般来讲,内容是对外来用户隐蔽的信息,是 只有试图修改或测试该构件的人才需要了解的信息。 ( 3 ) 上下文( c o n t e x t ) 将可复用的构件安置到它的应用领域中。就是说,上下文将通过定义概念的、 操作的和实现的特征,使软件人员能够找到合适的构件以满足应用的需求。为了在 实际背景下使用,必须把概念、内容和上下文转换成具体的规格说明模式。 r e b o o t 模型是基于已有软构件的种刻面分类和检索模型,从各个角度,即 刻面( f a c e t ) 刻画软构件属性。北京大学青鸟工程以三个视角( 形态、层次和表示) 和九 个方面( 概念、操作规约、接口、类型、实现体、构件复合、性质、注释和语景) 定 6 义构件模型。代表性的实现级工业标准构件模型有o m gc o r b a 的构件模型c c m 、 m i c r o s o f t 的构件对象模型d c o m c o m 、s u n 公司的j a v a b e a n e j b 构件模型,三足 鼎立构成竞争与互操作并存的格局。 2 3 2 构件规约 构件规约以构件模型为基础,解决构件的精确描述、理解及组装问题。 描述构件的语言和符号体系有:构件描述语言c d l 、构架描述语言a d l 和接 口定义语言i d l ,现今u m l 作为构件描述语言成为研究和应用热点。c d l 的基本 思想是将构件视为黑盒,通过描述构件接口的语法和语义向外界提供构件的结构和 行为信息,使构件复用者不必关心其内部细节。实践中,c o r b a i d l 、d c o m o d l 等接口定义语言都能够描述构件接口的语法,并且具备编译和浏览工具的支持:但 是现有的接口描述语言在描述构件接口语义和构件间复杂的交互协议方面缺乏进一 步的支持。 2 3 3 构件分类与检索 构件分类与检索是本文研究的重点,主要研究构件分类策略、组织模式及检索 策略,建立构件库系统,支持构件的有效管理; 需要对收集和开发的软件构件进行分类,然后把它们放入到可复用构件库的适 当位置。软件构件的分类方法和相应的构件库结构对构件的检索和理解有极为深刻 的影响,就是说,可复用构件库的组织应当便于构件的存储和检索。 复用技术对可复用构件库组织方法的要求是: ( 1 ) 支持构件库的各种维护操作。增、删、更新构件库应当尽量不影响构件库 的结构; ( 2 ) 不仅能够支持精确匹配,还应能支持相似构件的查找; ( 3 ) 不仅能够进行简单的语法匹配,而且能够查找在功能和行为上等价或相似 的构件; ( 4 ) 对应用领域( 族) 有较强的描述能力和较好的描述精确度; ( 5 ) 便于库管理员和用户使用; ( 6 ) 具备可自动化的潜力; 2 3 3 1 构件分类方法 以下是几种常用的构件分类方法: ( 1 ) 枚举分类此方法通过定义一个层次结构类描述构件。在这个层次中定义 软件构件的类以及不同层次的子类。真实的构件都被罗列在枚举层次中任一路径的 最低层。枚举分类模式的层次结构使得它易于理解和使用。但在建立层次之前,必 须进行领域工程,这样层次中各个项可以有充足的知识以供使用。 ( 2 ) 关键词分类此方法的基本思想是:根据领域分析的结果,将应用领域( 族) 的概念按照从抽象到具体的顺序,逐步分解树形结构或有向无回路图结构。每个概 念用一个描述性的关键词表示。不可再分解的原子层的包含隶属于它的某些软件构 件。下图给出了可复用构件库的关键词分类结构,它支持图形用户界面设计。 当加入新的构件时,库管理员必须对构件的功能或行为进行分析,在浏览上述 关键词分类结构的同时,将构件置于最合适的原了层关键词之下。如果无法找到构 件应从属的关键词,可以扩充现有的关键词分类结构,引进新的关键词。但库管理 员必须保证新关键词有相应的领域分析的结果作为支持。 ( 3 ) 多面分类此方法由3 部分构成:多面分类机制、同义词v 库和概念距 离图。如下图所示: 多面分类机制 e 构件,磷述子 - ( t i a t h 。,t m ) f i b h 卜_ 面 , t i l 己i + 一骶 t 辩1 t i jb 一觥 t m t 1 3t 同义调慝 n y n , t i l s 1 1 1 s 1 1 2 ,g l l l t l2 s i2 1 s i 乃,s l k t 1 3 - 4s 1 3 1 s l 南s l x 概忿距篱圈 图2 3 多面分类法 采用多面分类法进行可复用构件库的组织,必须在存储软件构件的同时,表示 并存储多面分类机制、同义词库和概念距离图。例如,可以采用关系数据库中的表 格来描述它们。多面分类法的所有语法构件( ”面”、”概念”、同义词、一般化概念、 瓜 h0 差异性权值) 均取材于领域分析的结果。当需要在可复用构件库中加入新的构件时, 库管理源必须对构件的功能、行为进行深入分析,利用现有的多面分类结构确定构 件的描述子,对每个”面”选取合适的”概念叶 为特征描述。必要时可以考虑增加新 的”概念”,此时必须根据新”概念”完善同义词库和概念距离图。 ( 4 ) 超文本组织法超文本方法与基于数据库系统的可复用构件库组织方 法不同,它基于全文检索技术,其基本思想是:所有软件构件都必须辅以详细的功 能或行为说明文档,说明中出现的概念和软件构件以网状链接方式互相连接。检索 者在阅读文档的过程中可按照人类的联想思维方式任意跳转到包含相关概念或软件 构件的文档中去。全文检索系统将用户给出的关键词与说明文档中的文字进行匹配, 实现软件构件的浏览式检索。 超文本是一种非线性的网状信息组织方法,它以结点为基本单位,链作为结点 之间的联想式关联,如下图所示。 图2 - 4 超文本结构示意图 一般地,结点是个信息块。对于可复用构件库而言,结点可以是领域的概念、 功能或行为名称、构件名称等,在图形用户界面上,结点可以是字符串,也可以是 图像、声音、动画等。超文本组织方式为构造可复用构件提供了友好、直观的多媒 体方式。由于网状结构比较自由、松散,因此,超文本方法更容易修改可复用构件 库的结构。 w i n d o w s 环境下的联机帮助系统就是种典型的超文本系统。为了构造可复用 构件库的文档,首先要根据领域分析的结果,在说明文档中标识超文本结点,并在 相关文档中建立链接关系。然后用类似于联机帮助系统编译器的工具对构件的说明 文档进行编译,最后用相应的工具运行编译后的目标程序代码即可。 2 3 3 2 构件的检索方法 构件的检索机制的研究一直是构件库研究的热点,目前有很多方法,从构件表 示出发可以分为人工智能方法、超文本方法和信息科学方法三类:而根据复杂度和 检索效果的不同则可以分为基于文本的、基于词法描述予的和基于规约的编码和检 索。信息科学方法是实际复用项目中应用较为成功的一类,并且以枚举、刻面、属 性值、关键词和正文检索几种方法较为常见,以介绍几种检索方法: ( 1 ) 基于关键词的检索 这种检索方法的基本思想是:系统( c a s e 工具) 在图形用户界面上将可复用构件 库的关键词树直观地展示给用户,用户通过在树上的逐级浏览寻找需要的关键词并 提取相应的构件。当然,用户也可以直接给出关键词( 其中可含有通配符) ,由系统 自动地给出合适的候选构件清单。 这种方法的优点是简单,易于实现。但在某些场合没有应用价值,因为复用者 往往无法用构件库中已有的关键词描述期望的构件的功能或行为。对构件库的浏览 也容易使复用者迷失方向。 ( 2 ) 多面检索 这种检索方法基于多面分类法。步骤如下: ( 2 a ) 构造查询。用户提供待查构件在每个”面”上的特征,生成构件描述予。此 时,用户可以从可复用构件库已有的”概念“中挑选,也可以将某些特征值置为空。 系统在库中检索时将忽略特征值为空的”面”。在构造查询的过程中,可以利用同义 词库和概念距离图来帮助用户正确选择特征值。 ( 2 b ) 检索构件。实现多面分类法的c a s e 工具利用同义词库和概念距离图,在 可复用构件库中寻找相同的或相近的构件描述子及相应的构件。 ( 2 c ) 对构件进行排序。按照相似程度对被检索出来的构件进行排序,还可以按 照与复用有关的度量信息( 如构件的复杂性、可复用性、成功复用的次数等) 进行排 序。 这种方法的优点是易于实现相似构件的查找,但复用者在构造查询时比较麻烦。 ( 3 ) 超文本检索 这种检索方法的步骤是:用户首先给出一个或若干个关键词,系统在构件的说 2 0 明文档中做精确的或模糊的语法匹配。匹配成功后,向用户提供相应的构件说明。 这些构件说明是含有许多超文本结点的正文。用户在阅读这些正文时可实现多个构 件说明文档之间的自由跳转,最终选择合适的构件。为了避免用户在跳转过程中迷 失方向,系统可以通过图形用户界面显示浏览历史图,允许将特定画面定义为有名” 书签”并可随时跳转到”书签”。此外,还可以帮助用户逆着跳转路径逐步返回。 这种方法的优点是用户界面友好,但在某些情况下,复用者难以在超文本浏览 过程中正确选择软件构件。 ( 4 ) 其他检索方法 上述检索方法都是基于语法匹配,要求用户对可复用构件库中的出现的众多词 汇有较全面的把握,较精确的理解。理论上,理想的检索方法是语义匹配:可复用 构件库的用户以形式化的手段描述所需要的构件的功能或行为的语义,系统通过定 理证明或基于知识的推理过程寻找语义上等价的或相近的构件。本文将就这一点进 行研究和探讨。 2 3 4 构件评价 构件评价是量化人们对构件判断力的规范化过程。 构件评价方法是用形式化的方法,显式地对构件的选择赋值,通过同适当的标 准比较,作为c b d 可靠地、可重复地选择高质量构件的保证,它是开发基于构件 的软件系统的基础。构架评价相关问题包括确定被评属性、度量量纲、基于组合原 理的评价方法、评价过程活动、评价对检索的支持。 准确地理解构件,对于正确地使用和修改构件,都是至关重要的。考虑到设计 信息对于理解构件的必要性和构件库的用户逆向发掘设计信息的困难性,要求构件 的开发过程必须遵循公共的软件工程规范,并在构件库的说明文档中全面、准确地 说明下列内容: ( 1 ) 构件的功能和行为: ( 2 ) 相关的领域知识; ( 3 ) 可适应性约束条件和例外情况; 【4 ) 可以预见的修改部分和修改方法。 但是,如果软件人员希望复用那些原先并非为复用而设计的构件,上述要求不 能满足。此时软件人员必须借助c a s e 工具对待选构件进行分析。这种c a s e 工具 对构件( 包括相应的文档) 进行扫描,将各类信息存入某种浏览数据库,然后回答构 件用户的各种查询,进而帮助理解。 例如,对于以c 或c + + 源程序形式出现的构件,用户可借助于c a s e 工具查 询标识符( 包括变量、常量、宏、函数等) 的定义和引用。如果源程序中以结构化注 解的形式给出函数的前置条件、后置断言、约束与例外情形、算法描述,用户也可 以实现对这些信息的直观浏览。 逆向工程是理解构件的另一种重要手段。通过对构件进行分析,结合领域知识, 半自动地生成构件的设计信息,然后借助设计信息完成对构件的理解和修改。 对软件构件的可复用性进行评价,主要通过收集和分析构件的用户在实际复用 构件的过程中所得到的各种反馈信息,按照某种领域模型来完成。这些反馈信息包 括:复用成功的次数、对构件的修改工作量、构件的健壮性度量( 如出错数量) 、性 能度量( 如执行效率和资源消耗量) 等。 2 3 5 构件组合方法 构件组合方法是在构件模型的基础上研究构件组装成为应用系统的方法,理论 界集中研究组合原理的逻辑基础,产业界它包括源代码级的组装和运行级组装。 基于合成的复用理论认为复用是软件构件的组合过程,这种观点认为系统行为 是软件组合的结果。构件组装可以看作是用构件实例将软件构架具体化的过程,成 功的组装必须以开放构件模型和规范的构架描述为基础。构件合成技术大致可分为 基于功能的、基于数据的和面向对象的合成技术。下面简单介绍前两种: ( 1 ) 基于功能的合成技术 基于功能的合成技术采用子程序调用和参数传递的方式将构件结合起来。它要 求在库中的构件必须以标准子程序( 标准过程或函数) 的形式出现,并且接口说明必 须准确、清楚。当使用这种合成技术进行软件开发时,必须开发人员必须对目标软 件系统进行自顶向下的功能分解,将系统分解为高内聚、低褐合的功能模块,然后 根据各模块的功能需求提取构件,对它们进行适应性修改后,再纳入到上述功能分 解的层次框架中。 ( 2 ) 基于数据的合成技术 基于数据的合成技术首先根据当前应用问题的核心数据结构设计出一个框架, 然后根据框架中各结点的需求提取构件并进行适应性修改,再把它们逐个分配给框 架中的适当位置。此后,构件的合成方式仍然是传统的子程序调用与参数传递。这 种合成技术也要求库中的构件以子程序的形式出现,但它所依赖的软件设计方法不 再是功能分解,而是面向数据结构的设计方法,如j a c k s o n 系统开发方法。 2 3 6 构件适配 构件适配是为了在特定的应用系统中使用而改变构件的过程。 构件复用的独到之处是把构件原封不动对插入应用系统,然而有些学者指出, “原样”( a s i s ) 的复用大多数情况下是不现实的,应用的构建者需要适配构件以满足 构件的需要。构件的适配缘于两个方面原因: ( 1 ) 构件接口语法的不匹配; ( 2 ) 构件的功能和行为不完全满足需求,即语义不匹配问题。适配的困难在于构 件的规格说明无法精确定义构件逻辑,构件的制作者无法预测全部的可能使用环境。 适配的目标是应用系统的构建者不需阅读源代码,即可改造第三方构件成为合适的 系统组成。 2 - 3 7 构件演化 构件有其生命周期,演化是指构件部署之后经过用户需求和允许环境影响而产 生的变化过程。 当系统部署完成后,就进入了维护、管理和演化的过程中,这个过程会持续很 多年直到系统终止运行为止。这个部署以后的过程是周期最长的,因此是整个软件 生命周期中代价最大的阶段。一个软件组织提供的维护、升级、更新以及管理和用 户支持的能力可以决定一个软件产品在功能上和经济上是否成功。 理想的情况是对库中的构件不做修改就可以直接用于新的软件项目。但是,在 多数情况下,需要对构件做或多或少的修改以适应新的需求。 为了减少修改的工作量,要求构件的开发人员尽量使构件的功能、行为、接口 抽象化、通用化、参数化。这样,构件的用户可以通过对实参的选择来调整构件的 功能或行为。如果这种调整仍不能使构件适应新的软件项目,用户就必须借助设计 信息和说明文档来理解、修改构件。因此,与构件有关的说明文档和抽象层次更高 的设计信息对于构件的修改至关重要。例如,如果需要将用c 语言编写的构件( 源程 序代码) 改写为其他语言的形式,构件的算法描述就十分必要。 有人在软件复用领域中尝试使构件的修改自动化。例如,可以利用不同数据结 构( 如链表和数组) 之间的相似性自动修改构件外部接i - - i 中的参数类型。但是,这种 自动修改方式还远远不能取代人工修改方式。 2 3 8 基于构件的软件体系结构 基于构件的软件体系结构( 又称软件构架) 是研究如何快速、可靠地从可复用 构件构造系统的方式,注重于软件系统自身的整体结构和构件间的互联。 软件构架是对系统宏观结构的描述,是由一组构件( c o m p o n e n t s ) 、连接件 ( c o n l e c t o r ,表示构件间的交互关系) 以及配置( c o 血g u r a t i o n ,表示构件和连接件约束 的组合描述) 组成。软件构架理论对软件复用具有非常重要的意义: 在较高级别上抽象出不同系统的共性,促进对软件系统结构的理解: 有助于软件工程师在设计早期正确选择软件构架: 便于对软件系统的性质进行描述和分析: 构架本身是可复用资产,软件构架设计的复用会促进软件代码复用,即软件构 架为构件的组装提供了框架和语境。 2 4 软件再工程 2 4 1 软件再工程的定义 l i n d ah r o s e n b e r g 博士这样定义软件再工程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-湖南-湖南保安员四级(中级工)历年参考题库典型考点含答案解析
- 城市轨道交通建设规划与新型运营管理技术应用研究报告2025
- 2025年事业单位工勤技能-湖北-湖北农机驾驶维修工一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北中式面点师一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-海南-海南热力运行工三级(高级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-河南-河南水工监测工五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-河南-河南中式面点师五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-江西-江西食品检验工一级(高级技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏工程测量工二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-江苏-江苏保健按摩师五级(初级工)历年参考题库含答案解析
- 派出所签订治安调解协议书范文
- 《冠心病病人的护理》课件
- 牧场物语-矿石镇的伙伴们-完全攻略
- 中建三局社招在线测评题
- 2024年甲醇合成及精馏操作理论试题题库
- 外科学-第三十六章-阑尾疾病
- 旅游规划行业旅游目的地规划方案
- A特种设备安全管理考试题库及答案
- TCNPA - 景区玻璃栈道建设规范
- 股权估值协议书模板
- 顺丰快递合同
评论
0/150
提交评论