(计算机软件与理论专业论文)基于构件相关性的构件交互冲突检测研究.pdf_第1页
(计算机软件与理论专业论文)基于构件相关性的构件交互冲突检测研究.pdf_第2页
(计算机软件与理论专业论文)基于构件相关性的构件交互冲突检测研究.pdf_第3页
(计算机软件与理论专业论文)基于构件相关性的构件交互冲突检测研究.pdf_第4页
(计算机软件与理论专业论文)基于构件相关性的构件交互冲突检测研究.pdf_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

基于构件相关性的构件交互冲突检测研究 摘要 基于构件的软件开发作为一种新的软件开发方式在软件开发过程中得到了 广泛的使用。该方法通过对已有构件的组装来开发新的应用软件,而应用软件 的功能是通过其内部组成构件之间的交互来实现的。构件是由不同构件开发者 封装,能够完成特定功能的基本单元,其开发过程与具体应用软件的开发是相 互独立的,软件开发人员在使用构件时并不需要了解构件内部的具体运行机制。 因此,在构件的组装交互过程中,构件之间可能因为某些因素产生相互影响, 导致应用系统表现出非期望的行为,也就是构件交互冲突问题。如何很好的解 决构件交互冲突问题在基于构件的软件开发中具有重要的意义。 构件交互冲突的产生不仅与构件的内部实现有关,而且和构件之间的交互 连接方式密切相关。形式化检测技术对于构件交互冲突的检测具有很好的效果, 但是该方法目前受到“组合状态爆炸 等诸多问题的制约。因此本文在已有构 件系统扩展的前提下,对构件交互冲突问题以及其相关影响因素进行了研究, 提出了一种新的构件交互冲突检测方法。 文本首先对构件的模型以及构件的交互过程进行分析和总结,将构件的交 互连接方式概括为四种基本交互类型,并对每种类型的交互进行了抽象描述的 分析。 其次,本文针对构件之间的相关性进行研究,提出了构件系统接口矩阵的 概念,通过接口矩阵在更细的粒度上对构件之间的交互关系进行描述;并提出 了一种基于接口矩阵的构件相关性检测方法,通过该方法可以在构件系统变化 时,检测出系统中可能发生冲突的构件,从而缩小了系统构件的检测范围,减 小了“组合状态爆炸”等问题的影响,也避免了一些不必要的假设。 最后,本文提出了一种新的构件交互冲突检测方法,该方法利用了构件的 相关性检测精简状态空间,并根据构件的交互方式进行了特征冲突检测;同时 本文还利用了一个电子邮件客户端系统进行了相关实验和分析,对该方法的有 效性进行了验证。 关键词:构件构件交互冲突接口矩阵构件相关性冲突检测 r e s e a r c ho nt h ec o n f l i c td e t e c t i o no fc o m p o n e n ti n t e r a c t i o n b a s e do nc o m p o n e n t r e l a t i v i t y a b s t r a c t c o m p o n e n tb a s e ds o f t w a r ed e v e l o p m e n th a sb e e nw i d e l yu s e di ns o f t w a r e d e v e l o p m e n t i nt h ep r o c e s so fc bs d ,a p p l i c a t i o ns y s t e mi sc o m p o s e do ft h e c o m p o n e n t st h a ta r ed e v e l o p e db yd i f f e r e n td e v e l o p e r s c o m p o n e n ti st h eb a s i cu n i t i nc bs d ,w h i c hi m p l e m e n t ss p e c i a lf u n c t i o n t h ef u n c t i o no f a p p l i c a t i o ns y s t e mi s e x p r e s s e db yt h ew a yo ft h ei n t e r a c t i o n so fc o m p o s e dc o m p o n e n t s b e c a u s eo ft h e e n c a p s u l a t i o no fc o m p o n e n t s ,u s e rc o u l dn o tk n o wt h eh o wt h e ya r ei m p l e m e n t e d s ot h a t ,o n ec o m p o n e n tm a yi m p a c to t h e r sw h e nt h e ya r ei n t e r a c t i n g a n dt h e r e w o u l db es o m ee x p e c t e da c t i o n se m e r g i n gi nt h es y s t e m ,w h i c hi sc a l l e dc o m p o n e n t i n t e r a c t i o np r o b l e m i ti sm e a n i n g f u lf o ru st ow o r ko u ta ne f f e c t i v em e t h o dt o s o l v ec o m p o n e n ti n t e r a c t i o np r o b l e mi nc b s d c o m p o n e n ti n t e r a c t i o np r o b l e mi sa s s o c i a t e dn o t o n l y w i t ht h ei n n e r i m p l e m e n t a t i o nb u ta l s ow i t ht h ea s s e m b l i n gp a t t e r n f o r m a lm e t h o di so n eo ft h e m o s te f f e c t i v em e t h o d st od e t e c tc o m p o n e n ti n t e r a c t i o np r o b l e m a l t h o u g hf o r m a l m e t h o di s e f f e c t i v e ,i ti sr e s t r i c t e db ym a n yf a c t o r s ,s u c ha s “c o m b i n a t i o ns t a t e e x p l o s i o n ”i no r d e rt or e s o l v et h i sp r o b l e m ,w eh a v e d o n ead e e pr e s e a r c ho n c o m p o n e n ti n t e r a c t i o np r o b l e ma sw e l la si t sr e l a t i o n a lf a c t o r si nt h i sd i s s e r t a t i o n u n d e rt h e p o s t u l a t i o no fe x p a n d i n g e x i s t i n gc o m p o n e n ts y s t e m t h e n t h i s d i s s e r t a t i o nh a sp r o p o s e dan e wm e a nt od e t e c tt h ec o n f l i c to fc o m p o n e n t i n t e r a c t i o n f i r s to fa l l ,t h ed i s s e r t a t i o na n a l y z e st h ec o m p o n e n tm o d e la sw e l la st h e p r o c e s so fi n t e r a c t i o n i th a ss u m m a r i z e dt h ec o m p o n e n ta s s e m b l i n gp a t t e r na sf o u r b a s i ct y p e s ,a n dg i v e sa na b s t r a c td e s c r i p t i o no fe a c ht y p ei nf o r m a lm e t h o d s e c o n d l y , i no r d e rt or e d u c et h ei n f l u e n c eo ft h e “c o m b i n a t i o ns t a t ee x p l o s i o n ” t h er e s e a r c ho nc o m p o n e n tr e l a t i v i t yh a sb e e nd o n ei nt h es e c o n dp a r to ft h i s d i s s e r t a t i o n t h e nt h e c o n c e p to fi n t e r f a c em a t r i xh a sb e e np r o p o s e d 。w h i c h d e s c r i b e sc o m p o n e n ti n t e r a c t i o ni nam o r er e f i n i n gg r a n u l a r i t y b a s e do ni n t e r f a c e m a t r i x ,t h ed i s s e r t a t i o np r e s e n t sam e t h o dt od e t e c tt h er e l a t i v i t yo fc o m p o n e n t , w h i c hc o u l dd y n a m i c a l l yf i n do u tt h o s ec o m p o n e n t st h a tw o u l dc o n f l i c tw i t he a c h o t h e r , w h e nt h es y s t e m i cc o m p o n e n t sh a v e b e e nt r a n s f o r m e d s ot h a ti tc o u l d r e d u c et h ed e t e c t i n gs i d e ,a v o i ds o m eu n n e c e s s a r yp o s t u l a t i o n sa n dd e c l i n et h e i n f l u e n c eo ft h ef a c t o rt h a ti sc o m b i n a t i o ns t a t ee x p l o s i o n f i n a l l y , b a s e do na b o v es t u d i e s ,t h ed i s s e r t a t i o np r e s e n t san e wc o n f l i c t d e t e c t i o nm e t h o dofc o m p o n e n ti n t e r a c t i o n ,w h i c ht a k e sa d v a n t a g eo ft h e c o m p o n e n tr e l a t i v i t ya n dd e c r e a s et h er a n g en e e dd e t e c t e d t h em e t h o dp r e s e n t e d i nt h i sd i s s e r t a t i o na l s om a k e su s eo ft h ea s s e m b l i n gp a t t e r n ,i no r d e rt od e t e c tt h e i n t e r a c t i o nm o r ep r e c i s e l y m o r e o v e r , a ne x p e r i m e n to ne - m a i lc l i e n ts y s t e mh a s b e e np e r f o r m e dt ov a l i d a t et h ee f f e c to fm e t h o di nt h er e s e a r c h k e y w o r d s :c o m p o n e n t ,c o n f l i c td e t e c t i o n ,r e l a t i v i t y ,f o r m a lm e t h o d ,i n t e r f a c e m a t r i x 图表清单 图2 1 基于构件的软件开发过程9 图3 1 系统模型m = ( s ,p ,l ) 的有向图表示1 6 图3 3n u s m v 程序对应的转移模型1 7 图4 1 - 1 顺序结构交互图a b 1 9 图4 1 - 2 分支结构交互图a ( bc ) 2 0 图4 1 - 3 汇聚结构交互图( ab ) c 2 0 图4 1 - 4 循环结构交互图a b c ( a d ) 2 0 图5 2 构件变化检测关系图2 8 图6 1 基于构件相关性的构件冲突检测方法流程图一3 1 图6 2 电子邮件系统的客户端构件交互图3 3 图6 3 待检测子系统交互图3 4 图6 4 死循环现象3 4 表6 1 邮件系统客户端构件冲突检测表3 5 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。 据我所知,除了文中特别加以标志和致谢的地方外,论文中不包含其他人已经发表或撰 写过的研究成果,也不包含为获得 金鲤王些太堂 或其他教育机构的学位或证书而 使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的 说明并表示谢意。 学位论文作者签字:鹤叫n 签字日期:加刁年尹月s 日 学位论文版权使用授权书 本学位论文作者完全了解 金胆王些盔堂 有关保留、使用学位论文的规定,有权 保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅或借阅。本人 授权 金月曼王些盔堂 可以将学位论文的全部或部分论文内容编入有关数据库进行检 索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 靴做槛孙转嗍 签字e l 期:厶年中月卵 签字期:厶7 年甲月f 日 学位论文作者毕业后去向: 工作单位: 通讯地址: 导师签名: 解嗍:叩争月咖 | 致谢 衷心感谢我的导师李心科副教授,在本论文的选题、写作和修改的过程中, 自始至终得到了导师的指导、关心和帮助,他们为此投入了大量的时间和精力。 没有导师的培养和指导,本论文是不可能完成的。在我的研究生学习和生活期 间,得到了导师的极大帮助和关心,给我创造了很多条件和机会,使我倍感温 暖。导师渊博的学识、敏锐的思维、严谨的治学态度,高尚的道德情操和平易 近人的人格魅力,给我留下了深刻印象,使我终身受益。 感谢软件工程实验室的邵垄副教授对我的关心和帮助,感谢计算机与信息 学院的老师们,感谢他们给我提供的学习条件和机会。 感谢我的父母和家人,是他们的支持才让我顺利的完成学业。 感谢合肥工业大学软件工程研究室的所有师兄弟们,他们的交流帮助我完 成了学业。 作者:严鲁明 2 0 0 9 年3 月 第一章绪论 1 1 研究背景及意义 基于构件的软件开发( c o m p o n e n tb a s e ds o f t w a r ed e v e l o p i n g ,c b s d ) 作为软 件工程发展的一种新形式为软件开发以及软件复用提供了一种新方法。在1 9 6 8 年n a t o 软件工程学术会议上,d m c l l r o y 在报告中首次提出了软件构件的概念, 同时提出了通过大规模生产的软件构件的组装和演化来构造软件系统的思想。 自此以后,软件构件和软件复用成为了众多学者研究的对象,软件构件的概念 也从早期的可复用的程序代码片断逐渐演变成了可复用的函数,类,模板,封 装模块等。基于构件的软件开发使传统的软件开发过程发生了革命性的变化。 构件组装技术使软件技术人员摆脱了以往的低效编程方式,而直接采用集成组 装构件的方式来构造软件系统。 基于构件的软件开发是实现软件工业化生产的可行途径。该方法从根本上 改变了软件的生产方式,大大提高了软件的开发效率,提高了软件的质量以及 可复用程度,增加了软件的可维护性,降低了软件的开发成本;同时基于构件 的软件开发使得开发者可以更多的关注系统业务流程和业务规则,减少了以往 过多的关注编程细节的问题。 在基于构件的软件开发过程中,构件是软件开发的基本单元,开发者在软 件开发过程中通过对已有构件的组装和集成来产生新的软件系统,可以说在 c b s d 中,软件系统的功能是通过其所包含构件之间的相互协作体现出来的。 但是,由于构件是软件组成的基本元素,其开发过程是独立于软件开发的;不 同的、甚至相同功能的构件都可能是由不同的构件设计者和构件开发者预先封 装好的黑盒或灰盒单元。因此,构件的使用者无法了解构件的具体运行过程, 这就造成了构件之间的交互可能存在着一定的不可知性,而这种构件之间的不 可知性会使得构件在交互时可能会产生相互影响,导致一些非期望行为的产生。 例如当不同的构件之间共享相同的信号量和数据时,可能会因为控制信号量和 共享数据的原因使得构件之间的行为产生抑制,或者产生一些期望需求以外的 行为。这种构件交互的影响就是“构件特征交互问题 ( f e a t u r ei n t e r a c t i o n p r o b l e m ) 。 如何正确的检测系统构件之间是否存在交互冲突问题是保障基于构件的软 件开发的关键。关于这一问题,许多学者已经进行了大量的研究,并针对软件 开发的不同阶段提出了许多不同的检测技术和方法。但是,这些方法在应用上 仍然存在着缺点和不足,例如有些方法缺乏整体性检测,有些方法在对大量构 件检测时会产生“组合状态爆炸”问题。因此本人针对构件的交互问题进行了 进一步的研究,在采用了形式化技术的基础上,提出了一种基于构件相关性的 构件交互冲突检测方法。 1 2 国内外研究现状 针对构件交互冲突问题,国内外学展开了广泛的研究,发表了许多的研究 成果,提出了大量检测方法。目前,国内外对于构件交互问题的研究主要集中 在三个方面: 软件工程方法:通过制定严格的开发控制流程并应用到软件开发过程中, 将软件开发过程标准化,限制特征交互冲突产生的可能性。 形式化方法:通过制定相应的规约对特征交互进行检测。形式化方法着眼 于直接检测特征的交互过程,同时该方法可以对系统进行有效的模拟。 在线检测和消除的方法:主要在运行时( r u n t i m e ) 对系统行为进行检测和反 馈。该方法包括检测和消除两部分,其最大优势在于无需对现有系统进行任何 改变,能够处理运行时刻系统中的附加功能,并且允许系统的开放和扩展。 在国内外众多的研究中,形式化方法被认为在现有方法中最有效的地方法, 因此其也得到了广泛的研究。但是该方法存在着许多制约因素,例如“组合状 态爆炸 问题。软件工程方法作为一种的开发管理方法,在理论上可以在开发 过程中有效地制约冲突因素的产生,但是目前并没有制定出可行的方法。在线 检测和消除的方法作为检测冲突因素的最后防线也在国内外学者中得到了一定 的研究,但是该方法并不是试图在系统开发的早期发现冲突因素,因此可能会 产生额外的维护代价。 1 2 1 国外研究现状 在国外学者的研究中,l i 和k r i s h n a m u r t h i 等人提出了一种模块化的模型检 测技术,将特征建模成有穷状态机,通过接口状态的组合来检测特征交互; v e l t h u i j s e n 等人分析系统扩展时的非单调性扩展现象,并提出了相关解决方法 口1 ;t s a n g 等人提出了一种基于特征交管理器( f e a t u r ei n t e r a c t i o nm a n a g e r ,简称 f i m ) 的在线检测方法,该方法中的f i m 包括了学习和管理两种模式,f i m 通过 学习产生正确的触发响应规则,通过管理模式对系统行为进行监督,分析当前 行为是否与正确行为相符,如果当前行为产生偏离则会以冲突的形式产生报告 1 ;p f e l t y 和s n a m j o s h i 等人针对构件系统的特征,在时序逻辑和自动机的基础 上提出了一种形式化分析检测语言,并开发了相应的检测工具f i x ( f e a t u r e i n t e r a c t i o ne x t r a c t o r ) ,该语言类似于s m v 语言h 】;j a c k s o n 和z a v e 提出了一种 使用分布式特征组装( d f c ) 来管理特征交互问题的方法,d f c 是一种“管道一过滤 器 体系结构风格,其核心是一个虚拟体系结构,所有特征在这个体系结构 中都有对应的构件类型拍3 ;k e c hd 和k u e h np j 提出了一种在设计阶段和运行阶 段特征交互问题检测方法,并设计了一种基于a o p 的消除方案。他们的核心思 想是进行“关注点分离”,用一个2 层模型来封装构件核心功能和a s p e c t 。同时, 2 他们还引入反射式中间件以实现系统的自适应和重配置哺1 。 1 2 2 国内研究现状 在国内学者的研究中,北京大学的梅宏教授是目前国内的主要研究者之一。 他针对特征交互问题提出了一种向模型中添加约束的检测方法和一种分析构件 交互模式的检测方法凹。1 ,在对构件交互模式的分析中,梅宏教授利用j a v a 语 言和开发工具根据需求和运行环境模拟出相应交互场景,把抽象的构件交互在 交互场景中进行模拟并检测;同时,梅宏教授还针对通信软件中特征冲突现 象,提出了一种特征检测模型,该模型中包含了一系列优化规则,同过这些规 则可以对系统的检测范围和检测路径进行简化,避免了许多冗余的检测,优化 了检测效率;西安交通大学的覃征教授采用了p r t 网对系统进行动态建模,并 用抽象代数队模型进行分析,进而提出了一种基于线性时序逻辑的动态检测方 法n 羽;北京大学的黄罡研究了i n t e r n e t 软件中的非预期交互问题,对系统交 互方式进行分类,提出了一种以运行时软件体系结构为核心,基于中间件的在 线冲突检测与消除方法n 引;中科院软件所针对系统描述提出了一种x y z a d l 时 序逻辑语言,并被广泛的应用到了构件交互的检测中n 卜1 6 1 。 1 3 论文研究内容 本文主要针对已有系统组成构件变化时的构件交互冲突检测进行研究;也 就是当已有系统的构件发生变化时,检测新加入的构件或者修改后的构件是否 会对系统中的其它构件产生影响,发生交互冲现象。具体来说本文包括以下主 要内容: 对构件的交互模型进行形式化的描述,提出交互约束规则; 对构件交互冲突进行总结和归纳,分析构件交互的类型和产生冲突的 原因: 利用优化检测方法对系统构件变化后的变化影响范围进行追踪检测, 缩小待检测的构件范围;也就是通过分析系统构件的接口关系,产生构件的接 口矩阵,利用接口矩阵查找与变化构件相关的系统构件,即可能产生交互冲突 的构件。 利用构件接口的连接方式( 即顺序,分支,循环和汇聚) 对待检测构 件及其关系进行建模,建立构件交互的约束机制,产生交互模型;在已有的构 件交互冲突分析的基础上对构件交互模型进行检测,检测构件之间是否存在的 冲突,并进行相应的实验,以验证方法的效率和方法的正确性。 1 4 论文组织结构 根据本文的主要研究内容,现将本文组织结构安排如下: 第一章介绍本文的研究背景和意义,对国内外学者的相关研究现状进行分 析和总结,阐明本文的研究目标和主要内容。 第二章对基于构件的软件开发( c b s d ) 进行介绍。在本章中,本文将对软件 构件技术,基于构件的开发过程等方面进行介绍。 第三章主要对形式化方法进行介绍。介绍一些常用的形式化技术,并对本 文中使用的检测工具n u s m v 进行的介绍。 第四章分析构件的交互模型以及构件间的交互类别。在本章中将对构件的 交互模型进行形式化描述,提出了一些形式化的交互约束规则;同时,还对构 件间的交互类别进行总结和分析,提出了四种基本的交互结构。 第五章针对构件的相关性以及构件变化后的影响范围问题进行研究,提出 了一种基于接口矩阵的检测方法。在本章中,首先提出了接口矩阵的概念,并 对接口矩阵进行形式化的描述和分析;然后,提出了一种构件变化检测方法, 该方法详细描述了如何利用接口矩阵来检测构件变化的影响范围。 第六章在第四章和第五章分析研究的基础上,详细描述了基于构件相关性 的构件冲突检测方法;并对该方法进行实验验证。 第七章将对本文的工作进行总结,并提出了下一步的工作展望。 4 第二章基于构件的软件开发 构件技术的发展和应用为软件开发提供了一种全新的设计、开发方法即基 于构件的软件开发( c b s d ) 。基于构件的软件开发使得软件可以通过集成许多来 源于不同开发者的可复用构件而获得,而构件本身可以通过不同的程序语言开 发、运行于不同的系统平台上。基于构件的软件开发能够减少软件开发活动中 大量的重复性工作,提高软件生产率,降低开发成本,缩短开发周期,同时还 有助于改善软件质量,提高软件的灵活性和可维护性。 在本章中,本文将对构件的基本概念,基于构件的软件开发主要过程的相 关理论、技术和方法进行介绍。 2 1 构件技术的概念与发展 2 1 1 构件的概念 构件( c o m p o n e n t ) 是可复用软件的主要元素,是基于构件的软件开发的关 键。构件可以是被封装函数,类,功能模块,软件框架等基本元素。本文中把 日常中所说的软件构件、组件、插件等元素都当作构件来看待。 对构件的认识是一个不断发展的过程。由于不同时期研究人员所关注的软 件复用类型不同,对于构件的定义也并不一致。 2 0 世纪8 0 年代,构件主要指可复用的程序代码片断,一般称为代码件,这 一时期软件生产考虑的主要问题是如何充分地利用已有的源程序代码、子程序 库和类库来提高软件开发的效率。此时的代码件主要有子程序、程序包等。到 2 0 世纪9 0 年代,构件包括分析件、设计件、代码件、测试件的概念被广泛认同。 随着计算机科学的不断发展,产生了许多新的概念,如设计模式、软件框架、 软件体系结构等,同时学术界对于构件也有了新的认识,出现了许多关于构件 的新定义。 1 9 9 5 年w i l1 t r a c z 提出构件应该具有以下属性:有用性,构件必须提供有 用的功能;可用性,构件必须易于理解和使用;质量,构件及其变形必须 能够正确工作;适应性,构件应该易于通过参数化等方式在不同语境中进行 配置;可移植性,构件应该能够在不同运行平台和软件环境中工作。 b r o w n 和w a l l n a u 将构件描述为“一个非平凡的、几乎独立的、可替换的系 统组成部分,它在定义完善的体系结构环境中实现某一清晰的功能( a n o n t r i v i a l ,n e a r l yi n d e p e n d e n t ,a n dr e p l a c e a b l ep a r to fas y s t e mt h a tf u l f i l sac l e a r f u n c t i o ni nt h ec o n t e x to faw e l ld e f i n e da r c h i t e c t u r e ) 。同时他们进一步认为软件 构件只能是“一个说明了约束并且明显地与语境无关的组合单元 ( au n i to f c o m p o s i t i o nw i t hc o n t r a c t u a l l ys p e c i f i e da n de x p l i c i tc o n t e x td e p e n d e n c i e s o n l y ) 。 c l e m e n ss z y p e r s k i 对构件的定义是:构件是一个独立部署的单元,是一个 5 第三方合成的单元,构件没有一致性的状态( ac o m p o n e n ti sau n i to f i n d e p e n d e n t d e p l o y m e n t ac o m p o n e n ti sau n i to ft h i r d p a r t yc o m p o s i t i o n ac o m p o n e n th a sn o p e r s i s t e n ts t a t e ) 。他认为构件“可以独立部署,易于第三方整合 。这个定义指 出了构件的独立性和可组装性。根据这个观点,可以认为构件可以提供块平台 服务且不依赖于单一语言心l2 羽。 o m g 的定义更通俗详细,它们对于构件的定义是:构件是一个物理的、可 替换的系统组成部分,它包装了实现体且提供了对一组接口的实现方法。构件 表示了系统实现体的一个物理片段,包括软件代码( 源代码、二进制代码或可 执行代码) ,或者等同体,例如脚本或命令文件。因此,构件自身必须相容于 接口且实现接口,接口表示了驻留在构件内的成分所实现的服务。这些服务定 义了的一个整合的行为,从一些构件实例提供给其它客户端构件实例。u m l 里, 构件是一个分类器( c l a s s i f i e r ) ,是一个建模成分的聚集,它也许实现了接口,有 着可执行的行为和状态,在执行时驻留在一个节点上乜朝。 著名的行业独立咨询调查组织g a r t n e rg r o u p 的定义是:运行时软件构件是 一个可动态绑定的、含一个或多个程序的软件包,它作为一个独立单位,通过 运行时可辨别的文档化接口加以管理和存取乜钔。 卡内基梅隆大学软件研究所( c m u s e i ) 认为: “软件构件是一个不透明的 功能实现,能够被第三方组装,符合一个构件模型”心们。 b e r t r a n dm e y e r 定义了构件的七个条件:也许被其它软件成分使用( 客 户) ;也许客户的使用并不干扰构件的开发者;包括以来的全部说明( 硬 软件平台、版本、其它构件) ;包括它提供功能的精确说明;说明是它的 唯一使用依据;可以和其它构件合成;可以快速且平滑地集成到系统口 。 杨芙清院士认为:构件是软件的构成元素,具有一定的功能和结构,并符 合一定的标准,可以完成一个或多个特定的服务。构件隐藏了具体的实现,通 过接日对外提供服务。一般而言,构件是软件系统中具有相对独立功能、可以 明确辨识、接口由契约指定、和语境有明显依赖关系、可独立部署、可组装的 软件实体。广义上讲,构件既可以是数据,也可以是被封装的对象类、软件构 架、文档、测试用例等8 1 。 以上对于构件的定义都是从不同角度和层次对于构件基本特征的描述。他 们都反映了构件是一个具有复用特征和单元特征的功能模块。本文对于构件的 认识是: 构件符合特定规范( 即符合特定的构件模型) ,具有规范的接口和完整 的约束; 构件实现了特定的功能: 构件是可复用的软件单元; 构件具有跨平台性,不依赖于特定的开发语言。 6 2 1 2 构件的理论模型 在构件技术发展的过程中,不仅构件的定义在不断的更新,构件的理论模 型也在不断的发生变化。为了促进构件技术的发展,研究人员从不同方面提出 不同的构件模型。事实上,在构件技术发展过程中,学术界对于构件模型的争 论就从没有停止过。在这些模型中具有代表性模型主要有:3 c 模型,r e b o o t 模型( 刻面模型) 和青鸟模型。 3 c 模型 3 c 模型是学术界普遍认同的一个具有指导性作用的构件模型。该模型从概 念( c o n c e p t ) 、内容( c o n t e n t ) 和语境( c o n t e x t ) 三个不同方面来描述构件。概念对于 “构件做什么”进行了抽象描述,可以通过概念去理解构件的功能。概念包括 接口规约和语义描述两个部分;内容是概念的具体实现,它描述了构件如何完 成概念所刻画的功能;语境描述了构件和外围环境在概念级和内容级的关系, 语境刻画构件的应用环境,为构件的选用和适应性修改提供指导,语境可进一 步划分为: 概念级语境一描述构件间接口和语义方面的关系; 操作级语境一刻画构件中被操作数据的特征( 如类型和操作) ; 实现级语境一描述构件间在实现方面的依赖关系。 3 c 模型主要是描述了构件的可复用信息,并着重描述了构件的接口信息。 r e b o o t 模型( 刻面模型) r e b o o t 模型是基于已有软构件的一种刻面分类和检索模型。该模型从构 件的各个角度,即若干个刻面( f a c e t ) 来描述软件构件的属性,将构件的描述术 语空间划分成不同的刻面的方法使其有利于构件的查询检索。一组典型的刻面 可能包括:对象、功能、算法、类型、语言和环境。在对一个构件进行分类时, 不一定所有的刻面都出现。刻面术语具有同义词关系,一组同义词表达一个概 念,术语空间由这些术语构成,具体到r e b o o t 模型中是其提出的4 个刻面: 依赖、抽象、操作和操作对象。 青鸟模型 青鸟模型源自于我国的青鸟工程,该模型以三个视角( 形态、层次和表示) 和九个方面定义构件模型。九个方面包括了: a 概念:即对构件功能的抽象描述; b 操作规约:用来指称构件对外提供的、可被请求的服务; c 接口:给出了构件的对外行为描述; d 类型:用于定义“什么值可用作为操作参数”; e 实现体:这是构件的具体实现部分,是实际完成被请求服务的系统; f 构件复合:构件通过复合组成系统; g 构件性质:指明构件的形态、层次和表示; 7 h 构件注释:描述和构件库相关的其它性质; i 构件语景:描述构件的软、硬件使用环境和实现依赖。 青鸟构件模型注重构件的易理解性、封装性,通过给构件提供明确的对外 接口实现服务提供者和其服务请求者的分离,该模型更多地关心构件及其使用 者间的交互,特别是对构件使用者有意义的部分。青鸟构件模型的主要优点在 于其描述的简单性,支持构件的复合以及构件模型易扩展。 从上述模型可以看出不同的构件模型在对构件的描述上存在着很大的差 异。除了这三种最具代表性的模型外,还存在着很多其它模型:这些基于不同 模型的构件的交互将是基于构件的软件开发面临了一个重要问题。 2 2 基于构件的软件开发过程 基于构件的软件开发( c b s d ) 是指通过组装可复用软件构件的方法来构造 应用程序的开发方法。它包含了系统分析、构造、维护和扩展的各个方面,在 这些方面中都是以构件方法为核心的。基于构件的软件工程的主要目标是通过 集成已有构件来开发系统、开发可复用的构件及通过定制和替换构件为维护和 更新系统等提供支持;开发过程中使用的构件可以是 c o t s ( c o m m e r c i a l o f f - t h e s h e l f ) 构件,也可以是通过其它途径获得的构件( 如 自行开发) ;基本宗旨是软件系统可以通过选择构件,在一个定义良好的软件架 构内进行构件组装以生成系统。这不同于传统的方法,即系统开发一切从零开 始。c b s d 将软件开发的重点从程序编写转移到了基于已有构件的组装上来, 从而可以更快地构造系统,减轻用来支持和升级大型系统所需要的维护负担, 从而降低软件开发的费用。 2 2 1 基于构件的软件开发的特点 基于构件的软件开发的关键思想来自于计算机硬件的设计,即希望在软件 框架或软件体系结构( s o f t w a r ea r c h i t e c t u r e ) 下实现“即插即用 式的软件开 发方式。与传统的软件开发方法相比,基于构件的软件开发有以下特点: 即插即用 在构件的复用过程中,用户只使用构件时不需要对构件源代码进行修改, 甚至在某些构件的重用过程中连重新编译都可以省略。 有标准化的统一模型 在c b s d 中,构件的开发必须遵循一定标准和统一的模型,以便集成时增 加构件之间的匹配程度和易使用性。 以接口为核心 构件的接口与实现时分析的,构件通过接口实现它们之间的交互与连接, 而构件的具体实现是被封装在内部的,使用者只关心接口信息,而不关心内部 的实现细节。 8 构件的获取渠道的多样性 在c b s d 中,构件的获取不是单一的,可以通过对开源软件的复用,也可 以通过商业购买或者开发者自己的开发来获得。 生命周期的区别 与传统的软件开发方法相比,基于构件的软件开发的生命周期主要包括构 件的创建,评价,维护,构件的需求分析,检索,组装( 适配) ,软件的测试, 部署与配置,维护和演化。( 图2 1 ) 图2 1 基于构件的软件开发过程 由图2 1 可以看出,在基于构件的软件开发的生命周期中主要有三个阶段, 即构件生产阶段,构件检索与匹配阶段和软件生产阶段。 基于构件的软件开发主要受到以下几方面因素的影响:构件质量与构件 种类;构件所遵循的标准和模型;描述构件的说明文档;构件的组装集 成技术。 目前国际上对于基于构件的软件开发的研究已经取得很大的成就,并产生 了许多交互的技术,具有代表性的有o m g 的c o r b a ,m i c o r s o f t 的c o m d c o m , s u n 的j a v a b e a n e j b 。其中,c o r b a 是一种解决分布式异构软件环境下互操作 问题的中间件技术,它主要有两个特点:面向对象技术和分布式计算的结合, 代理机制的中间件技术。c o m d c o m 是一种基于二进制标准的构件技术,它 们使构件的应用可以不依赖于任何开发语言。j a v a b e a n e j b 主要是为了解决构 件的平台依赖性问题提出的一种软件构件技术,通过j a v a b e a n e j b 技术可以方 便的实现不同平台下的构件使用。 9 2 2 2 构件组装技术 在基于构件的软件开发过程中,构件通过组装形成应用系统。构件的组装 受到了构件模型、构件粒度、构件运行环境等要素的影响。构件组装 ( c o m p o s i t i o n ) 是指在不修改部分( 构件个体) 的前提下把部分组装成一个整体 ( 复合构件) 。根据对构件内部结构的了解可以将构件组装分为黑盒组装,白盒 组装和灰盒组装。黑盒组装是最理想的方法,它不需要对构件实现细节有任何 了解,也不需要对其进行配置和修改;白盒组装要求将构件的所有细节都展现 出来,让使用者理解后再进行组装,并可对构件按应用的需要进行修改;灰盒 方法介于黑盒、白盒之间,是当前技术发展的合适选择。灰盒方法通过调整构 件的组装机制而不是修改构件来满足应用系统组装的需求,既实现了构件组装 的灵活性,又不至于过于复杂。 目前主要的构件组装技术主要有以下几种: 源代码组装 该方法将现有构件中的可复用代码复制到新的构件中,并进行适应性修改 以满足需求,开发人员必须可以完全访问构件的源代码。这种技术是最原始的, 它不支持构件自适应和体系结构配置。 接口组装 构件通过接口隐藏了模块的内部实现,所以在系统中模块可以互换而不影 响其它模块,支持系统配置,模块的一个连接点可以是一次过程调用,也可以 是全局变量的一次访问,这是目前普遍使用的一种构件组装方式。 脚本语言组装 与标准的编程语言类似,脚本语言是解释型语言。脚本语言只能说明构件 如何交互和数据结构如何在构件间交换,它的执行效率比编译型的语言低,而 且没有提供底层系统功能的函数,所以不适合用来编写完整的应用系统;此外 脚本语言使用动态类型,只有在执行阶段才能检测到类型错误。在构件组装中, 脚本只表示构件连接的抽象。 封装器组装 封装器组装是一种传统的方法用于扩展现有的类或者转换接口,其主要的 包装形式有子类、继承、聚集等,包装技术主要解决组装中出现的不匹配问题, 一个构件可以以一定的透明方式被封装成另一个构件,代理对其它构件的调用, 而且封装器可以用简单的方式修改构件的行为。事实上封装器方式是接口组装 的变体,只不过是在原有构件粒度上进行了进一步的封装,赋予了构件新的接 口。 中间件组装 中间件组装是基于其它代码如接口定义语言、二进制代码等的一种组装方 式,它通过严格限定系统中使用的构件形式,尽可能的避免组装不匹配的出现。 1 0 中间件组装形式通常清楚地说明构件接口如何定义,何种数据实体可以在构件 之间互换,构件的交互机制以及使用何种体系风格,通常基于中间形式的系统 适用于特定的应用领域和体系结构。 中间形式的典型例子是软总线,与硬件系统中的总线类似,软总线定义了 用于数据交换标准化的通信协议如数据类型集合、服务调用机制等信息,并且 负责消息的处理和必要的数据转换。 2 3 本章小结 基于构件的软件开发是在一定构件模型的支持下,通过组装和适配多个构 件来开发软件的一种新方法。构件技术是基于构件的软件开发的基石,本章中 首先对构件的概念以及相关模型进行了分析,分析了目前几种主要的构件模型; 其次本章介绍了基于构件的软件开发的具体过程,并与传统的开发方法进行了 比较,总结了该方法的特点以及影响该开发方法的关键因素。通过本章的论述, 可以对基于构件的软件开发建立起总体的认识。 第三章构件交互的形式化检测方法 形式化方法( f o r m a lm e t h o d ) 的基本含义是借助于数学的方法来研究计算 机科学中的问题。通过形式化方法可以为基于构件的软件开发提供一个研究框 架,该框架为构件描述、系统开发以及验证的研究提供了支持。形式化方法不 但在描述上具有准确性和无二意性,而且有利于实现软件开发中的自动化过程。 本章中将对形式化方法,时序逻辑语言以及本文研究所使

温馨提示

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

评论

0/150

提交评论