基于corba软件体系结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
摘要
随着软件开发的愈来愈复杂,构件化开发是提高软件复用的重要的技术。
软件体系结构提供了种自顶向下实现基于构件的软件复用的途径。
它的ADL描述提供了一种描述整个系统构造的能力。
而当前的UML只安为其提供一些扩展也能够描述软件体系结构。
构件化的开发目前已经有很多成熟的技术,而CORBA规范充分利用了现今软件技术发展的最新成果,在基于网络的分布式应用环境下实现应用软件的集成,使得面向对象的软件在分布、异构环境F实现可重用、可移植和互操作。
我们提出~种基于CORBA的袍灶珏菇摸式,这是~种三层结构的开发模式,先粟用UML描述整个系统的体系结构,建模出该系统的基本信息。
然后采用CORBA的二层结构开发模式实现它。
这种方J℃可以把大系统划分为很多独立的构件.可以更改某些构件而不会对系统的其他部分造成影响。
从而能够极大的提高软件的开发效率和复用。
关键字:软件体系结掬ADLUML构件技术CORBA
Vv∥。
√
ABSTRACT
WiththecomplexityofSoftwaredevelopment,Component—BasedSoftware
DevelopmentisanimportangtechniqueofSoftwareReuseSoftwarearchitectureafrortsawaytorealizeaup-to—downsoftwareresuebasedoncomponents.it’SADL
discriptionaffortsacompetence/abilitytodescribetheconstructionofthewholesystem,thecurrentUMLneedonlytobeaffordedsomcextendtodescribesoftwarearchitecture.
Component—BasedSoftwareDevelopmenthaspossessedmanymaturationaltechnologies,butCORBAavailsofthelatestproduceofcurrentsoftwaretechnologydevelopment,Realizesintegrationofapplicationsoftwareinthenet—distributed—usebasedcircumstance,makestheSoftwarerealizereuse,transplant,andinteractivemanipulation.
WeadvanceacomponentdevelopmentmodelbasedonCORBA.it'sadevelopmentmodelincludingtllleestratificationstructures.firstlyituseUMLtodescribethewholesystem’Sarchitecture.modelthebasicinformationofthesystem.thenitrealizesthe
systembythecorbatllreesatratificationslructuresdecelopmentmodelthesystembythecorbathreesatratificationstructuresdecelopmentmodel.ThiskindofmodeCallde_idethebigsystemintomanyindependentcomponents,Canmodifysomecomponentswithoutanyaffectiontootherpansofthesystem.SOitcanextremelyimprovethedevelopinge币ciencyandreuseofthesoftware.
Keyword:SoftwareArchitecture,CORBA,Compdent,ADL,UML
Ill
基1:CORBA的软件体系结构
引言
近儿年来,面对日益复杂的软件系统,人们开始认识到,要真LE实现软件的T业化生产力式,达到软件产业发展所需要的软件生产率和质量,软件复用是一条现实可行的途径。
软件复用可以分为产品复用和过程复用两条途径,其中产品复用是指复用已有的软件构件,通过构件集成(组装)得到新系统,这也是目前现实的、主流的途径。
在基于构件复用的开发方式巾,构件组装是一个非常关键而且困难的问题,”系统开发的重点从程序设计变成构件组装”。
构件组装技术的研究可追溯到70年代的模块互联语言(MIL),80年代的构件捕述语言(CDL)和90年代的体系结构描述语言(ADL)则是解决构件组装问题的主要努力。
在本质上,软件体系结构(SA)提供了一种自顶向下实现基于构什的软什复用的途径。
任何软件开发技术和方法学的目标是支持有效和高效地生产可执行的系统,因此ADL应该更多地关注体系结构描述的求精和实现,提供支持转换或组装自动化的能力。
遗憾的是,当前SA的研究大都是局限r体系结构的建模和描述,以及一些商层的性质验证,对体系结构的求精和实现的支持能力明显不足。
另一方面,基于构件的软件开发(CBSD)提供了一种利用现存的中间件基础设施白底向上地实现基于构件的软件复用的途径,强调使用己经开发好的构件来构造系统。
但是,当前讨论的重点局限于cOM、CORBA、EJB等二迸制构件,这砦r卜问件技术仅仅提供了在实现层次上支持构件交互的基础机制,缺少指导CBSD过程的系统化的方法学,特别是对高抽象层次的构件组装无能为力。
一种自然的解决方案是将这两种途径组合起来实现基于构件的软件复崩,因此我们提出了基于软件体系结构的构件组装(Architecture—BasedComponent
Composition,ABC)方泌。
基丁CORBA的软件休系结构
第1章软件体系结构的发展
随着软件系统规模和复杂性的不断增大,为保证软件质量,提高软件可靠性、呵重用性和可维护性,软件设计的核心已从“算法+数据结构=程序”的佶统计算模式转向对系统的总体结构即软件体系结构(SoftwareArchitecture)的殴计和规范。
这类方法土接着眼于软件系统的全局组织形式,在更高层次上把握系统各组件之问的内在联系。
并从全局的、整体的角度去理解和分析穆个系统的行为和特性,有助于解决当前开发复杂的大型软件所1竽在的困难。
1.1软件体系结构的定义
软件体系结构的概念最初由E。
W。
D日ks仃a在1968年提出的,当时他用分层的体系结构设计了THE操作系统,并提出人们应更加关注软件是如何分解与组合的,而不仅限于编程,这样将更有利于软件的开发与维护。
真正对软件体系结构迸fJ系统的研究贝Ⅱ始于20世纪90年代,国际软件工程界学者(如CMU的D。
Garlan,M。
Shaw等)认识到软件体系结构的选择在很大程度影响所设计的软件系统质量。
他们对各种体系结构进行系统的整理.形成完整的方法论。
目前软什体系结构_已发展为软件工程领域的一个独立的分支,是软件工程的一个新的研究方向。
什么是软件体系结构?目前还没有标准定义。
本节给出有关软件体系结构的~些重要定义:
定义l(D.E.Perry&A.L.Wolf,1992)软件体系结构由组具有特定形式的部件(compoment)构成.部件分为加工部件、数据部件和连接部件三类。
这是关于软件体系结构早期的定义。
定义2(D.Garian&M.Shaw。
l993)软件体系结构是软件设计过程中的一个层次,在计算过程中的算法设计和数据结构之上,处理总体系统结构设计和描述方面的~些问题。
包括总体组织与全局控制结构、通讯协议、同步、数据存取、设计元素的功能分配,物理分布,设计元素的复合,设计方案的选择、评估和实现等。
这一定义较定义l吏贴近实际,也为目前学术界所广泛接受。
定义3(HayesRoth,1994)软件体系结构是南功能部件组成的系统的抽象规范,对部件的行为、接口和部件之问的连接进行描述。
定义4(Soni,Nord&Hofmeister,l995)软件体系结构至少包含①概念体系结构:描述系统的主要部件及它们之间的关系;②模块体系结构:包括功能分解和分层;③执行体系结构:描述系统的动态结构;④代码体系结构:描述在开发环境中源代码二进制码和各种库是如何组织的。
上述定义虽然各有其侧重点,但其核心部分是基本一致的,均包含一组计算部件、部件之问的交互—~连接件(connect)、部件和连接件如何结合在~起的约束限制。
4
墓丁CORBA的软件体系结构
1.2软件体系结构风格
软件体系结构风格(style)是指不同系统所拥有的共同的结构组织模式和语义特性。
也即,一种体系结构风格决定了部件、连接件和一组如何将它们结合在~起的约束限制,包括拓扑限制(如无循环等)、执行语义限制(如过滤器不能共享等1。
实质卜,一种体系结构风格决定了~种体系结构的框架,根据现行的系统∽对体系结构风格进行了分类:
1.2.1管道———过涎器(peplesfilters)
在这种风格中,每~部件有一组输入和输出流,并在其输出端产生数据流,连接件依次把部件的输入。
通常,部件对输入流作局部转换,…可并发执行。
这里将部件称为“过滤器(filters)”,部件从其输入端读取数据个部件的“输出”传送到另
并不断计算,以使输入和输,连接件uq做“管道(pipes)”。
图1.1管道过滤器模型
典型的管道一过滤器结构例子有UNIXnqshell程序,传统的编译器等;另外在分布式系统、函数程序设计等领域中也常应用此结构。
管道一过滤器结构具有下列特点:
第一、过滤器的设计是独立的,不受前、后部件的影响.由这些部件简单复合得到的输入,输出行为显然是容易理解的。
第二,任何两个过滤嚣只要能保持它们之间传输数据的致,均可进行连接。
因而该结构能较好地支持软件系统一级的重用(reuse)。
第三、允许新的过滤器添加到现有系统上,而老的过滤器也可被经过改进的过滤器所替代,因而系统易于维护和不断完善。
第四、|qJ以分析软件的某些特性,如吞吐量、死锁检测等。
第五、支持并发执行。
每一过滤器执行单独的任务并与其它的过滤器并发执行。
1.2.2面向对象组织(ObjectOrientedOrganizafion)
在这种风格中,数据表示及相关的基本操作被封装在对象中。
这种风格的部件就是一种称之为“管理器(manager)的对象。
对象既有模块的封装特竹,
又有进程的动态信息传递特性。
在串千J:环境下,对象之问的引用是通过函数/过程的调刖实现的,其语义是静态的:在并发环境下,对象之间的交互作用是通过通讯来实现的,其语义是动态的。
这种风格有两种重要特点。
:其一是一个对象保证其表示的完整性:其二是这种表示对其它对象是隐蔽的。
面向对象的系统有许多众所周知的优点,这里不再赘述。
但该结构也有一些缺点。
如一个对象要引用其它对象,须知道这些对象的身份,一旦一个对蒙身份改变,则必须修改所有与之相关的对象,进-咖可能带来副作用问题。
即如果对象A引用对象B,对象C也引用对象B,则C
基TCORBA的软件体系结构
对B的影响可能给A带来意想小到的副作用。
图l。
2面向对象组织
1.2.3基于事件的隐式调用(event-basedimplicitinvocation)
基于事件与面向对象类似,不同的是,在这种风格中,部件之问的交互不是直接调用,而是通过一种称之为“隐式调剧(implicitinvocation)”的方式来实现的,每个部件提供若干进程及它感兴趣的事件,并把每个事件与一个过程联系在一起,当某个部件产生一个事什时,若其它部什定义了这个事什,那么与该事件联系存一起的过程将被自动调用,从而间接地完成了过程的调用。
这种风格的一个主要优点是有利于部件重用。
因为部件之间的交互是通过事件的广播来实现的,所以只需简单地注Jj|}几个它感兴趣的事件,就可把部件添加到系统中。
I2.4分层系统(1ayeredsystem)
一个分层系统就是把整个系统组织成层次结构.每一层都提供若干服务给上一层使用,并日.它也使用其下一层所提供的服务。
该风格广泛应用于软件系统设训中,其典型代表是网络通讯协议(如OSI/ISO七层协议等)及数据库系统、操作系统等。
1.25其他典型结构
除上述已介绍的体系结构风格外,还有一些较典型的结构,如仓库
(Repositories)、表驱动解释器、分布式进程、土程序/子程序结构、状态转换系统、进程控制系统等;其中状态转换系统是在并发与反应(程序)系统中常见的一种基本模型结构。
卜述列fII的种种体系结构风格均属于一般的、抽象的、通用的体系结构范围。
除此之外,还有更多的专门的应用领域的软件体系结构(如航.空控制系统、智能网等)及异质体系结构等。
1.3软件体系彗拇描述语言ADL
研究软件体系结构的首要问题是如伺表示软件体系结构,其主要研究对象是体系结构描述语言ADL(ArchitecmreDescriptionLanguage)。
它不但是形式化描述软件体系结构的基本工具,而且也是对软件体系结构进行求精、验证、演化和分析的前提和基础,目前已成为软件体系结构的研究热点。
国际软件工程界现已提出多种ADL,它们大多是面向特定领域的,如
Aesop支持虚用软件体系结构描述风格;Adage支持对电子导航系统体系结构框架的描述;MetaH为实时电子控制软件的设计者提供明确的指导;Unicon支持异构型部件和连接,并针对体系结构有一高层编译器;Rapide专门为系统体系结构建立快速原型设计的,这是一种基于事件的、并发的、面向对象的语言;Wright支持定义和分析部件问的相互作用。
为了精确描述体系结构,现有ADL通常包含一形式化语言(如Pe砸网、Z、OBJ等)。
如wrist采用CSP,Rapide采用偏序事件集合等。
我们知道,这些彤式化语言往往只适合描述系统行为的某些方面,如CSP较适合描述和分析软件体系结构的动态行为特性,如连接件在’定条件下满足无死锁性等:而z较适合描述软件体系结构的某些静态性质,如风格、子风格的定义,但难以描述和分析系统的动态性质。
我们介绍关于wright标记表述软件体系结构的方法[21。
在系统体系结构的Wright描述中,有两个基本的部分:结构(Structure)和行为(behavior)。
wright把软件体系结构表达为由部件和连接器组成的图。
其叶1,部件代表了系统中的计算和数据存储有关的结构单元,而连接器代表了部什之问发生的交互作用。
在Wright中,小见和连接器都是有类型的,因此在定义一个系统之前,必须先定义一套部件和连接器的类型,形成一个风格(Style),然后基于这些类型定义一套实例,并给出他们的组合方式。
(1)lXl格(S印le)。
但)部件(Component)。
(3)连接器(Linker)。
(4)端日(Ports)。
部件具有各自的接口,在Wright中被称为端口。
任何部件都可以具有多重的端u,每个端u定义了与周围的环境进行交互使用的逻辑分隔点。
(5)角色(Role)。
连接器同样具有接口,称作角色。
一个连接器的角色说明了连接器在部件之间进行交互作用时的逻辑参与方式。
并且我们很快将看到,它也表现了在一个特定的交互作用中系统期望每个参与者表现出来的特忭。
(6)约束条什(Constraints)。
约束条什定义了所有遵从该风格的配置所必须满足的一套谓词集。
(7)配置(Configuration)。
Wright的体系结构的行为(behavior)
1.行为
Wright偏重于定型地描述部件的”行为”。
”行为”指在部件训算时发生的显著事件,以及有连接器说明的,在部件之间发生的交互作用。
Wright允许用户形式地说明行为。
例盘l,当客户发出的个请求被服务器收到后,服务器应该向客户提供一个反馈:这样一个动作的序列可以被重复多少次?这种
说明基于是近灼行为的标记法是从CSP中移植而来的。
每个CSP的处理过程定义了一个时间表和改处理过柠允许的事件模式。
这些过稗通过公共的事件进行同步。
在Wright中,这样的描述被用于讣算(computation),端口,角色和胶结(Glue)的说明中。
2.计算(computation)
一个computation定义了部件的行为,即该部件如何处理又一个特定的端口发出的~个特定的事件并在某个输山端u产生新的事件。
更进一步,因为我们对部件如何控制器交互感兴趣,Wright用上化纤来区分发出事件和监听事件。
3.决议
端口定义了一个部件与它的环境进行交互的局部协议,该协议实际上是部什的计算存一个特定的界面上的投影。
4.角色
一个角色制定了所由J’该交色相连接的端口所必须满足的协议。
一般地说,端口并不要求具有和角色一样的习性,而可以在连接器的功能种选择…个子集。
5腋结
胶结定义了连接器之间是如何发生交互作用的。
下面为一个wri@t标记实例。
标记一个客户端一服务器程序。
岛,kCL料n-S盯vf’
C●_●●叫CI‘●耻
Mp一—忡卜·’呻Ir一-rI
o—■■_■_。
翻tt蚋bIP·啪。
’p,-q雌¨—-^¨plr_.☆-—■岫0
C●●■_●■3●fRl
●_^P一·‘’帅l叫r—p0
c_■_■-。
^。
qm●_.呐,-K岫"h—’m·.Pl,一cH__h■一L
C●_■_Lit■
■●十一nq_坩。
'曲··r0
■●·。
^q-¨。
确·--o
B■●。
^-'_rq··。
‘H■_-_日-
0·叫,‘-c.d’一0●_
lj
C●●■t■■■
宣c-∈C咖砷D-_·Vc(c嘲呷咄mItyp馥r竹t“,‘Ty州-‘玳‘c’—∞-^蝌td‘c.·’由哪k
o-“‘·—■-Sh山
■^C1.一,.一s.M
h■■_l-cttli‘一‘L-l皿llS-S·rwr
舢h^-_匕●¨L.P·Spnk‘
t●dr●--■·■■I-
存围内,中科院软件所唐稚松院士提出的时念逻辑诰言xY到E能够描述和分析软件体系结构的静态与动态语义口J。
它基于MannaPnueli时态逻辑理论,将时态逻辑算子溶进程序设计语言之中,使其既是~个逻辑系统又是一个柙序设计语言,可同时支持抽象描述和可执行程序,能在统的程序框架下表示静态与动态语义,从对时态逻辑性质的研究中不难知道,xYz厄具有很强的描述和分析静态和动态性质的能力。
由)(Yz,E及围绕该语言的一组软件工程工具
构成的XYZ系统,将逐步求精、程序规范、验证和速成原型(模型检验)表示在一下滑过渡过稃中,可支撑软件开发全过程。
XYZ/ADL是唐稚松院士及其领导的中科院软件所XYZ研究组基于xYZ/E设训的一种以可视化图形表示的软件体系结构描述语言[101。
它以组件为核心,每一组件由两方面构成:其外部界面即静态规范,其内部结构由其子组件界面与连结件组成。
每步设计即将其组件的外部界脚(规范)替换成其相应的内部体系结构.这就形成一步过渡。
体系内部又包含子组件。
还需将其外部界丽的规范过渡到相成的内部体系结构.如此构成逐步过渡过程即逐步求精过程。
该语言能在统一的时态逻辑框架下完成不同抽象层次体系结构设计之间的逐步过渡,支持软件开发设计的逐步求精全过程,从而将XYZ系统中原有的两种支持软件开发的方法即支持模块化程序设计的方法和支持从规范到算法实现的逐步求精方法有机地结合起米,进~步促进XYZ系统更好地、全面地麻用到实际工程领域。
xⅥ犰协L具有以下几个特点:
(11xYZ/ADL是可视化的体系结构描述语言,可作为应用XYZ系统设计软件的用户语言,支持软件系统的体系结构设计。
(2)XYZ/ADL支持逐层设计软件体系结构,整个设iI_过程是从组件的外部界面到内部体系结构的不断求精过程。
(31在体系结构的每步设计中,X'YZ/ADL能生成相应的XYZ,/ADL程序,由此可通过XYZ/ADL程序与外部界面的静态规范相配合来研究每一次过渡的语义一致忭检验问题。
北大青鸟以青鸟软件牛产线的实践为背景,提出了基于层次消息总线的软件体系结构风格JB/HMB【4】【5l,并设计了相应的体系结构摘述语言JB/SADL,该语言支持从接口、静态结构和动态行为三个方面刻画构件。
采用JSB/SADL,可以方便地进行软件体系结构的构造、细化和验证,井具有快速生成原型的能力,还支持代码框架的自动生成和系统体系结构的动念演化。
1.4基于UML的软件体系培相描述
1.4.1UML简介
由于软件体系结构所支持的构件及构件之问的话义非常丰富,仅用图和自然语言的方法(如OMT方法,Booth方法等)很难摘述清楚。
UML是当前主流f1勺面向对象软件开发方法,它的一个重要特点是引入了形式化定义(对象约束语肓),这有利于描述软件体系结构.I划时。
uML又具有很好的扩充机制,众多的工具支持,与具体程序设计语言和开发过程无关,因此,口J选择uML作为描述软件体系结构的基础[6】17J。
UML是明确定义了语法和语义的可视化建模语言,它基小主流的软件开发方法及开发经验,语法和语义由元模型、自然语言和约束来说明。
UlvfI。
是4层元模型的体系结构,即用户对象层、模型层、元模型层、元元模型层。
在4
基TCORBA的软件体系结构
层元模型中,UML的结构主要体现在元模型中,分为3个逻辑包:基础包、行为兀素包、~般机制包,这些包依次又分为若干个子包。
语义约束由对象约束语言(OCL)表示,OCL基于一阶谓词逻辑,每一个OCL表达式都以UML模型元素为背景。
UML模型从以下几个方面说明软件系统:类及其属性、操作和类之间的静态关系,类的包和它的依赖关系,类的状态及其行为,对象之间的交互行为,使用事例,原码的结构以及执行时的实施结构ISl【9J。
UML提供了丰富的建模概念和表示符号以满足典型的软件丌发,但是,用户自时需要另外的概念或符号来表示其特定领域的需求,因此,需要uML具有一定的扩充能力。
UML提供了3种嵌入的扩充机制:StereoTypes,
Constraints,Taggedvalues。
(1)Stereotypes足UML中最重耍的扩充机制,提供了一种在模型层中加入新建模元素的方式,可以在Sterotypes定义相关的
Cons仃a/nts和Taggedvalues以说明特定的语义和特征。
定义Sterotypes必须满足以下规则:
①Sterotype名小能与其基类重名;
②Sterotype.oclAlllnstances一>forAll(st.baseClass<>selLname);
L§)Sterotype名不能与它所继承的Sterotype重名;
④self.allSuperTypes->forAll(st.Sterotypetst.name<>self.name);
⑤Sterotype名不能与元类命名空问冲突:
⑥Sterotype所定义的Tag名不能与其基类元素的元属性命名空间冲突,也不能与它所继承的Sterot3雠的Tag名冲突。
(2)对于模型巾的建模元素,Tagvalues允许加入新的属性。
Tag表明了建模元素的可扩展特性的名称.value可以是任意的值,值的范围取决于用户或工具对Tag的解释。
对每一个Tag名,~个建模元素至多有一个给定的Tagvalue。
Self.taggedvalue->forAB(t1,t2:TaggedValueltl.tag-t2.tagim#lest]=t2)。
(3犯onstraints是埘建模元素语义上的限制。
1.4.2用UML描述软件体系结构
随着软件系统的复杂度和规模的增加,整个系统结构的说明和设训显得更为重要。
软件体系结构在较高层次将系统定义为~组相互交互的构件和连接,包括系统各构件的组织,全局控制结构,通讯的协议,设计元素的功能,物理分布等。
在目前通用的软件开发方法中(OMT,Booch,Fusion,UML等),其描述通常是用非形式化的图和文本,难以被开发人员理解,更不能用来分析其一致性和完整性等特性。
针对这些问题,一些工业界和学术界的研究者提出了体系结构的形式化捕述:ADL用来表示和分析体系结构的设计,同时提供了显示、分析、模拟软件体系结构的相应上具。
主要的体系结构描述语言有Aesop,MctaH,C2,Rapide,SADL,UNICON和Wright等。
尽管它们都描述软什体系结构,却有不同的特点。
这些ADL强调了体系结构不同的侧面,对体系结构的研究起到了重要作用,但也有负面的影响。
每一种ADL都以独立的形,℃存在,描述语法不同且互不兼容,同时又有许多共同的特征,这使设计人员很难选择一种合适的ADL,若设计特定领域的软件体系结构(DSSA),义需要从头开始描述,因此,可以将它们的共同特征提取出来,作为体系结构描述的核心模型,其优点在于:可以作为各种ADL在UML中进行描述的共同纂础,
若要描述某一ADL,必需描述与其相关的约束,也为描述DSSA奠定了基础。
1.4.2.1软件体系结构的核心模型
体系结构的核心模型由5种元素组成:构件、连接、配置、端口和角色。
其中构件、连接和配置是最基本的元素。
(1)构件是具有某种功能可重用的软件模板单元,表示了系统中主要的计算元素的数据存储。
构件有两种:复合构件和原子构件。
复合构件由其他复合构件和原予构件通过连接构成;原子构件是不可再分的构件,底层由实现该构件的类组成,这种构件的划分提供了体系结构的分层表示能力,自助于简化体系结构的设计。
典型的构件如client,server,filter,database等。
(2)连接表示了构件之间的交互,简甲的连接如pipes,procedurecall,
eventbroadcast等。
更为复杂的交互如clientserver通讯协议,数据库和应用之问的SQL连接。
(3)配置表示了构件和连接的拓扑逻辑和约束。
另外,构件作为一个封装的实体,只能通过其接口与外部环境交互,构件的接口由一组端口组成,每个端口表示了构件和外部环境的交互点。
通过不同的端口类型,个构件可以提供多重接口。
个端口可以非常简单,如过程调用,也可以表示更为复杂的界面(包含一些约束),如必须以某种顺序调用的一组过程调用。
连接作为建模软件体系结构的主要实体,同样也有接u,连接的接口由一纽角色纽成,连接的每一个角色定义了该连接表匀i的交百的参与者。
二元连接有两个角色。
如RPC的角色为caller和callee,pipe的角色足reading和writing,消息传递连接的角色是sender和receiver。
有的连接有多于两个的角色,如事什广插有一个事件发布者角色和任意多个事什接受者角色。
1.4.2.2在UML中的描述
软件体系结构包含的构件具有多重的、丰富的接口,连接描述和封装了构件之间复杂的交互协议。
对象是对外提供了接口.将数据和行为封装在一起,对象之间的连接是抽象的消息传递。
尽管埘向对象的设计概念也描述了软件体系结构的一些问题,但与软件体系结构所强调的能力有较大区别。
例如,在pipeandfilter体系结构巾,构件filter用于转换数据流并提供特定类型的输入输出接口,连接pipe描述了构件之间的二元关系和数据转换协议。
首先,连接pipe具有明确的、_卡富的语义,其次构件filter和连接pipc都有多重接口,再加上相关于该体系结构拓扑结构的约束.故可以在设计阶段分析、评估软件系统的某些特性。
阂此,用传统的面向对蒙概念很难描述软什体系结构的丰富概念[20l。
使用UML描述软件体系结构,可以通过定义新的元素作为UML元模型中某元类的子类,但是这种方法需要修改UML元模型,难以获得UML相关工具的支持,而使用UML嵌入的扩充机制对UML进行定制,则可以避免修改UML元模型。
因此,在UML中选择与软件体系结构元素语义相近的元类,定义它之卜的Stereotype作为该元类的实例,并用对象约束语言描述软件体系。