• 821.65 KB
  • 2022-06-17 14:58:24 发布

一种面向方面软件体系结构中的编织机制研究 (1)new

  • 13页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
万方数据计算机研究与发展IssN1000—1239/cN11—1777/TPJournalofComputerResearchandDevelopment47(4):695—706,20lO一种面向方面软件体系结构中的编织机制研究倪友聪1’2应时1’3张琳琳1一’文静1叶鹏1’5赵楷h41(武汉大学软件T程国家重点实验室武汉430072)2(安徽建筑工业学院数理系合肥230018)3(武汉大学计算机学院武汉430072)4(新疆大学信息科学与T程学院乌鲁木齐830046)5(武汉科技学院计算机科学学院武汉430074)(nyc@mail.whu.edu.cn)ResearchonWeaVingMechanisminAspect—OrientedSoftwareArchitectureNiYoucon91仙,YingShilw,ZhangLinlinl”,WenJin91,YePen91¨,andZhaoKail’41(S£口抬KPj,Ln6Drd£D_o,So^伽rPE以譬i九PP一咒g·W柚彻‰iw捌砂,W如口疗430072)2(DP户口以舰e竹£o,M吐f_It已m口ficsn靠dP|Il弘ic5。A咒_jl“if咒s“f“把o,A”,li£Pff“re&f,ld越sfry,HF丘i230018)3(Sc^DoZo,C07咒户“£erSciP,zcP,1j【k矗口咒Lkit孵rsify,下矿“.Il口竹430072)‘(Sf^DDZD/I力加r撇fiD竹SciP理cP口行d骱gi九FPri丸g,慰可缸,lg‰iwrs幻,Ur“删i830046)5(Co££eg已o,CD优声“tPrSci已咒c已,Ⅵ‰^n咒【如iL咿,百i£yo,SfiP咒fP口恕dE起gi咒P已一九g,W“^Ⅱ咒430074)AbstractInthedesignofaspect—orientedsoftwarearchitecture,twokindsofelementsmaybeinvolved.oneistheaspectualelementswhich’encapsulatecrosscuttingbehaviorsandfeatures;anotherisbasicelementswhicharetraditionalcomponentsorconnectors.Furthermore,thetwokindsofeIementsneedtobewoventogethertoformintegratedmodeIbyspecifyingIocation,timepointandconstraintsofinjection,whichisveryimportantforanalyzingandverifyingoverallbehaviorsandqualityattributesofsoftwarearchitecture(SA).AkindofweavingmechanismatSA1evel,whichisbasedonanaspect—orientedsoftwarearchitecturedescriptionlanguagenamedAC2一ADL,isproposedinthispaper.ThisweavingmechanismincludesasetofweavingrulesandaweaVingprocess.Concretely,theserulesarecomposedofmatchrules,conflictdetectionrulesandinterweavingrules.ThematchrulesareusedtosearchforlocationofinjectionoverSAmodel.Theconflictdetectionrulescandeterminewhethertherearetemporalconflictsbetweencrosscuttingoperationsornot.Andtheinterweavingrulesareusedtoaddthecomputationwithincrosscuttingoperationintocorrespondingcomponent.What’smore,weavingprocessisdefinedbasedontheseweavingrules.Underguidanceoftheweavingprocess,aspectualcomponentsdesignedindependentlyinunwovenstageisexplicitlywovenintocomponents.ThenamodelofSAinwoVenstageonlycontainingcomponentsandconnectorsisacquired,whichiseasiertoanalyzeandverify.Finally,thisweavingmechanismis订lustratedindetailthroughcasestudy.Keywordsaspect—orientedsoftwaredeVelopment;aspect—orientedsoftwarearchitecture;aspect—orientedsoftwarearchitecturedescriptionlanguage;aspectweaving;weavingmechanism摘要在面向方面软件体系结构设计中,通过指定注入位置、时机及约束,将封装了横切行为和特征的方面组件与组成软件体系结构(SA)的组件、连接件编织起来,形成一个有机整体,这对SA整体行为和收稿日期:2009一O卜05;修回日期:2009—10一29基金项目:国家自然科学基金项目(60773006)l高等学校博士学科点专项科研基金项目(20060486045) 万方数据696计算机研究与发展2010。47(4)质量特征的分析和验证具有十分重要的意义.提出一种SA层编织机制,它基于AC2一ADL建立的编织前SA模型,通过明确定义的编织过程和相关编织规则,将编织前独立设计的方面组件显式地织入到组件中,使得最终形成的仅含组件、连接件的编织后SA模型更加易于分析和验证.最后结合案例进一步对该编织机制作详细解释.关键词面向方面软件开发;面向方面软件体系结构;面向方面软件体系结构描述语言;方面编织;编织机制中图法分类号TP311.520引言软件体系结构(SA)是软件工程学术界和产业界都十分关注的领域[1。2].在对SA的深入研究和广泛应用中,人们发现利用常规方法设计出的SA方案中始终存在着一些横切(crosscutting)的行为和特征,它们在不同位置、不同时机横切影响组成SA的组件、连接件,进而导致了SA层的混杂与散列.为了解决这一问题,面向方面SA的相关研究蓬勃发展起来【3q].运用关注点分离原理∞],将这些横切行为和特征用独立的设计单元进行封装已成为共识,但如何将这些封装好的设计单元与其他设计单元能够按确定的方式编织起来,形成一个有机整体,并使之体现正确的整体行为和质量特征仍是一个较难解决的问题.为了描述方面与SA其他设计元素的编织,许多面向方面软件体系结构描述语言[6。8]通过增加新的SA元素或对已有的SA元素进行扩展来达到这一目标,但它们描述的均是一种隐式编织.运用这些面向方面软件体系结构描述语言对编织建模时,存在以下几点不足:1.注入内容、注入位置、注入时机和注入约束等编织信息会分散在不同的SA元素中;2.缺乏有效检测横切行为之间是否存在时序冲突的方法;3.没有提供一种便捷、有效的方式,对量化机制所表达的多重注入点(pointcut),能显式、精确地给出其所对应的每一具体注入点(joinpoint).这些不足会造成难以理解、分析和验证SA整体行为和质量特征.针对上述的几点不足,本文提出一种SA层编织机制,它依照编织前SA模型所规约的注入内容、注入位置、注入时机及注入约束,通过明确定义的编织过程和相关编织规则,将编织前独立设计的方面组件显式地织入到组件中,最终形成仅含组件、连接件的编织后SA模型.这种编织机制不仅能在编织过程中有效检测出在同一注入点上横切行为之间可能发生的冲突,而且能用统一的时序逻辑在编织后SA模型上表示横切行为、组件内部行为以及它们在组件内部的交互与协作,从而使得编织后SA模型更加易于理解、分析和验证.1背景知识为了明晰本文所提编织机制的运作环境,需要简要介绍一下它在面向方面软件体系结构设计过程所处的运作阶段、所起的作用以及它在运作过程中所需AC2一ADL[9’10]的支持.1.1面向方面软件体系结构设计过程为了更加有效地解决SA层的混杂和散列问题,我们提出基于“1+X”多维关注点分离模型£11。13](简记为“1+X”模型)的面向方面SA设计过程.“1+X”模型由一个主维和若干个横切维以及相应的组合关系规约所组成.具体来说,主维描述了系统的核心功能关注点及其组合关系;横切维定义了系统的非功能性关注点及其组合关系;主维和横切维的组合规约描述了横切维上的非功能性关注点与主维上的核心功能关注点之间的注入关系.具体的设计过程如图1所示.sA设计人员首先根据需求规约,确定SA设计要求,再按照已确定好的SA设计要求,建立“l十X”模型.完成“1+X”模型的建立后,便可对主维、横切维进行单独设计,二者同时进行,互不干扰.这样,根据主维规约建立了基本SA模型,根据横切维规约建立了横切维模型.最后由“1+X”模型的主维和横切维组合规约来定义横切维模型与基本SA模型的具体注入关系,从而建立编织前SA模型.最后通过编织形成编织后SA模型,文中所提的编织机制正是在这一阶段发挥其作用.值得注意的是编织前和编织SA模型均由AC2一ADL予以描述,下面对其进行简单介绍. 万方数据倪友聪等:一种面向方面软件体系结构中的编织机制研究697厂DeteminedeSignrequirememsaccordhlg、、\t0requlrenlernsspecificaIIo“/‘/,EstabliShmⅢ.dimensionalsepa州onofconcemmodelwhich、、\‘nclude5ommajndimensionandm“tipkcrosScuningdimens沁fls/IV’,J·(篙裟黛?淼。怒等)(鼍黜≤篓震辫“:l}(Bui坩basicsAmode,)(B血umode-orcrosscu砸鸥aim哪ton二I‘/De6necrosscuttingrelatjonsandbuildingunwovenSAmodelin\l∞cordancewitIlcombinationa】speclficationbetwecncrossc眦ing)\dimenslonsandlTlaindimension/(weave)(叫a—nsAmoae-)Fig.1E}esignprocessofaspect_orientedsoftwarearchitecture.图1面向方面软件体系结构设计过程1.2AC2-ADL概述为了将独立设计的方面、组件和连接件编织到一起,形成协同工作的有机整体,我们需要扩充传统体系结构描述语言(architecturedescriptionlanguage,ADL)的语法成分,并在此基础上使之能够描述编织前和编织后SA模型.为此我们设计了一种新的ADL,它包含了方面组件(aspectualcomponent)、组件(component)、方面连接件(aspectualconnector)以及连接件(connector)等体系结构的建模元素,取这4种核心元素名称的首字母,将我们的ADL命名为AC2一ADL.编织前后所使用的AC2一ADL建模元素,以及它们所规约的内容有一定差异.在编织前,设计人员按照主维规约,用组件、连接件来建模基本SA;根据横切维的规约,用方面组件来封装横切基本SA的行为和特征;依据主维和横切维的组合规约,用方面连接件和SA配置来建模方面组件与基本SA的具体注入关系.根据编织前所定义的注入位置、注入内容、注入时机和注入约束,编织器将编织前SA模型编织为仅含有组件、连接件的编织后SA模型,编织后组件内部的功能得到增强,行为发生相应变化,以体现方面组件的横切影响.下面概要地阐述一下AC2一ADL中与编织相关的SA建模元素.1.组件为了将方面组件的横切影响反映到编织后的组件上,我们对传统ADI。的组件进行扩展,通过在组件规约中引入内部处理过程(InternalProcess)区,并用XYZ/E[14J中的条件元序列表示组件中操作的计算行为.下面对XYZ/E作简单介绍.XYZ/E是基于线性时序逻辑系统的一种时序逻辑语言,它结合了静态和动态语义的特点,因而适合用于对程序的逐步求精、抽象描述和验证等众多软件工程领域.它最重要的特色是能够用直言式逻辑公式表示出状态转换机制,在XYz/E中有一种最基本形式的命令,被 万方数据698计算机研究与发展2010,47(4)称为条件元(ConditionalElement),其形式如下所示.LB—y^Rj@(Q^LB一2),(1)其中,符号@可以是最终时刻算子◇或下一时刻算子$O,当式(1)中@为◇算子时,可用于表示程序的抽象规范,当@为$0算子时可用于表示程序相邻状态之间的转换关系.式(1)中的R,Q为一阶逻辑公式。分别称为条件元的条件部分和动作部分。符号净为蕴含词“一”在条件元这一语言层次的特殊表示,y,z分别表示条件元的定义标号和转出标号.2.方面组件方面组件用来封装混杂和散列在SA各个单元中的横切行为和属性.横切接口用于定义方面组件所能提供的横切服务.方面组件通过其横切接口中的横切操作来具体影响基本SA元素,横切操作的计算行为也是用XYZ/E的条件元序列予以描述.3.方面连接件方面连接件用来定义方面组件与组件、连接件之间横切交互方式以及横切交互规则.它由基本角色(baseRole)、横切角色(crosscuttingRole)及横切交互协议(crosscuttingProtoc01)所组成.基本角色、横切角色分别定义了横切交互中的被横切方和横切方.横切交互协议定义了横切角色与基本角色之间横切交互规则及约束.横切交互协议的种类有before,after,replace三种.横切交互协议定义的约束主要有优先级、前置条件、后置条件以及不变式等.4.SA配置SA配置用来定义SA结构元素实例间的连接关系.为了能表示方面组件对组件、连接件的一处或多处影响,通过引入切点指示器(PCD)明确指定一组SA层注入点.用PCD扮演方面连接件的基本角色。同时用方面组件的横切接口扮演方面连接件的横切角色,从而可以描述方面组件与基本SA元素的单点注入(一处)和批量式多重注入(多处)的连接关系.因而,方面连接件和SA配置隐式地反映了方面组件与组件、连接件的编织关系,第2节将给出本文所定义的编织机制。它是一种显式的SA层编织机制.2编织机制基于AC2一ADL建立的编织前SA模型。编织机制通过明确定义的编织过程和相关编织规则,将编织前独立设计的方面组件湿式地织入到组件中,形成仅含组件、连接件的编织后SA模型.2.1编织规则在编织过程中,只有运用预先明确定义好的编织规则才能准确地将编织前SA模型编织为所期望的编织后sA模型.编织规则分为匹配规则、冲突检测规则、织人规则3类,这些规则都可在程序/模型的条件转换框架¨5161下予以验证和实现.1.匹配规则匹配规则定义了根据给定的PCD,在SA实例上查找与其相匹配的组件操作时,所应遵循的语义约束.PCD的定义如图2所示:Fig.2I)e“nitionolPCD.图2PCD的定义从PCD表示的粒度大小上可将PCD分为原子PCD和复合PCD,前者是不含任何逻辑操作符的PCD,后者是用逻辑运算符(“and”和“not”)把其他PCD连接起来所形成的PCD.从PCD表示的内容上可将PCD分为ComPCD.ConPCD和and(ComPCD,ConPCD)三种.ComPCD所表示的注入点都与组件相关,它由组件级(componentJP)、接口级(interfaceJP)和操作级(operationJP)三种不同抽象层次及由它们所形成的复合PCD(and(ComPcD,ComPCD))所组成;ConPCD所表示的注入点都与连接件相关,它由连接件级(connectiorJP)、角色级(roleJP)和行为级(behaviorJP)三种不同抽象层次及由它们所形成的复合PCD(and(ConPCD,ConPCD))所组成;and(ComPCD,ConPCD)所表示的注入点既与组件又与连接件相关,它是一种混合PCD.PCD定义中符号comInstName,intfName和optName分别表示组件实例名、接口名和操作名;conInstName,roleName和behaName分别表示连 万方数据倪友聪等:一种面向方面软件体系结构中的编织机制研究699接件实例名、角色名和行为名;保留字PR()INTF,REQINTF,PR()RoLE以及REQR()I.E分别表示提供类型接口、请求类型接口、提供类型角色和请求类型角色.通过引入逻辑操作符、保留字及通配符“*”可方便、精确地定义一组SA层注入点,例如:PCD:and(comInstName.PR()INTF,*.REQROLE)表示名为comInstName组件实例的所有提供接口中的操作以及所有连接件实例的请求角色中的行为都为sA层的注入点,在这些位置上都要受到横切影响.根据上述PCD的定义,匹配规则可分为组件、接口、操作、连接件、角色、行为和复合匹配规则7种.前6种规则用于解决对原子PCD的匹配,最后一种规则用于解决对复合PCD的匹配,下面给出各种匹配规则的具体解释.1)组件匹配规则组件匹配规则用于对componentJP类型PCD进行匹配,如果查找到与其相匹配的组件实例,则匹配该组件实例所有接口中的所有操作.2)接口匹配规则接口匹配规则用于对interfacesJP类型PCD进行匹配,如果查找到与其相匹配的组件接口,将匹配该接口中的所有操作.3)操作匹配规则操作匹配规则用于对operationJP类型PCD进行匹配,如果查找到与其相匹配的操作,将匹配组件接口中确定的一个操作.4)连接件匹配规则连接件匹配规则用于对connectorJP类型PCD的匹配,如果查找到与其相匹配的连接件实例,将匹配一组操作,这些操作所在的接口扮演该连接件实例的某一角色.5)角色匹配规则角色匹配规则用于对roleJP类型PCD进行匹配,如果查找到与其相匹配的连接件角色,将匹配一组操作,这峰操作所在的接口扮演该角色.6)行为匹配规则行为匹配规则用于对behaviorJP类型PCD进行匹配,如果查找到与其相匹配的行为,将匹配粘附该行为的操作.7)复合匹配规则复合匹配规则用于对复合PCD进行匹配.对于用“and”连接的复合PCD,形如and(PCDl,PCD2),先对PCDl,PCD2分别用匹配规则进行匹配,各自的匹配结果再取并集.对于用“not”连接的复合PCD,形如not(PcD),先对PCD按匹配规则进行匹配,然后将SA实例中所有操作与该匹配结果取差集.可以看出,复合PCD的匹配是一个递归的过程.2.冲突检测规则冲突检测规则用于当多个横切操作同时影响同一个操作时,判断它们是否存在时序冲突,如有冲突,则给出冲突发生的位置;若无冲突,则按优先级进行相应调整.使用冲突检测规则之前。必须构造出advice(通知)链,下面先给出advice链的定义和构造,在此基础上再对冲突的advice链进行定义.1)advice链的定义advice链是由横切影响同一个操作的横切操作按一定顺序排列而成的链.根据横切影响的时机,将advice链分为3个链段,依次称为before链段、replace链段和after链段.2)advice链的构造假设不同的横切操作口d功,⋯,口dt,i,⋯,口du。(1≤i≤n)横切影响同一个操作。声f,按照口dvi对op£横切影响的时机,将口d口,放置到advice链中的某个链段,对任意口d让(1≤i≤以)都按上述方法进行放置,就可以构造出一条advice链.3)冲突的advice链的定义若在advice链的某段上出现两个或以上横切操作,并且它们所对应的横切交互协议中有任何一个没有定义优先级,或者有两个或以上所定义的优先级相同,则称该advice链是一条冲突的advice链.冲突检测规则就是通过对advice链的检测来判断是否存在时序冲突.当检测到advice链为一冲突的advice链时,则报告冲突发生,并给出冲突发生的位置;否则根据优先级调整advice链各段中横切操作的排列顺序,优先级大的排在前面.3.织入规则织入规则定义了如何将advice链上横切操作的内部计算过程织入到相应的组件中,并如何作相应的行为调整.织入规则分为功能织人规则和行为调整规则.1)功能织入规则功能织入规则定义了如何将advice链上横切操作的内部计算过程织入到受影响操作的内部计算过程中,以体现组件功能的增强.具体来说,若口du,为advice链上的任意一横切操作,对口dq所在的方面组件(可能是复合方面组件)进行递归遍历,查找 万方数据700计算机研究与发展2010.47(4)出该倪d可,的内部计算过程规约,将其织入到受影响操作的内部计算过程中,如此循环,直到advice链上所有横切操作均已织入,便完成了此次功能织入.2)行为调整规则行为调整规则是在完成功能织入后,对受影响操作的内部计算行为进行调整的规则.由于操作和横切操作的内部计算行为均是用XYZ/E的条件元序列来规约的,因此只需要修改相应的起始条件元和结束条件元就可完成相应的行为调整.下面给出具体解释.假设:(1)advice链为口d可1,⋯,口d口i,nd可i,⋯,口d仇,nd%,⋯,口d%,其中口d可1~口d让为before链段,口d奶一口d碘为replace链段,盘d。。一ndu。为after链段;(2)受影响的操作为op£,其内部计算过程中起始条件元和结束条件元分别为LB—S似R丁o。,^R。,。净@(Q。pI^LB=yopI)和LB—z。pt^R:,:≥@(Q:pt^LB—ST0.P。);(3)任意一个nd仉(1≤z≤靠)的内部计算过程中起始条件元和结束条件元分别为LB一5丁ARL^R,≥@(Q^LB=儿)和LB=z,^R:≥@(Q:^LB=S丁0P,);(4)对advice链的功能织入已完毕.则行为调整规则根据某个链段是否为空,也即i,足一.『+1及n一优+1的取值是否为O,会存在多条规则,下面仅给出i>O,忌一』+1=O且,2一优+l>o的情况,即before链段、after链段不空,而replace链段为卒的情况予以说明.整个行为调整按以下5个步骤依次进行:Stepl.将o∥内部计算过程中的起始条件元修改为LB=STAR丁。。。^尺opt净@(Q,。^LB—S丁AR丁l^R1);Step2.对每一个口du,(1≤户≤i~1)的内部计算过程,将其结束条件元修改为LB=z,^R:净@(Q:^LB=sTARTp+1^Rp+1);Step3.将口(f口i内部计算过程中结束条件元修改为LB=≈^R:兮@(Q,^LB=y。);Step4。将。户f内部计算过程中结束条件元修改为LB=zop。人R:,。净@(Q:。。^START,^R。);Step5.对每一个口d%(优≤g≤行一1)的内部计算过程,将其结束条件元修改为LB=‰^R:净@(Q:^LB=s似RL+,^R。+。).对于i,愚一j+1及竹一m+1取其他不同值时,行为调整也是类似的,只是对相应起始条件元和结束条件元的修改有所不同.2.2编织过程结合上面所定义的匹配规则、冲突检测规则、织入规则3类编织规则,编织过程将编织前SA模型编织为仅含组件、连接件的SA模型.在编织后SA模型上进行SA整体行为和质量特征的分析和验证时,由于不再含有方面组件、方面连接件,而且还消除了横切操作之间时序冲突,因而将会简化分析和验证的工作.整个编织过程由初始化、查找PCD、分析PCD、构造advice链、冲突分析、织入6个步骤所构成,如图3所示:Fig.3Weavingprocess.图3编织过程1.初始化初始化最主要的工作是建立一张窀白的编织表训e口uPnz.它确定了SA实例中所有的操作、横切操作以及各个操作所属接口类型(提供接口还是请求接口).在对编织前SA模型的AC2一ADI。描述文本进行词法分析和语法分析,建立了语法树、堆栈等其他相关数据结构之后,初始化工作开始建立空白的 万方数据倪友聪等:一种面向方面软件体系结构中的编织机制研究701硼P口uP丁16Z,如表1所示.叫P口可P丁们是一张二维表格,表格的行标题为方面组件实例横切接口中的横切操作名,列标题为组件实例接口中的操作名以及该操作所属接口类型,若行标题所指示的横切操作横切影响列标题所指示的操作,那么在由行、列所确定的单元格中所填的内容就是这种横切影响的时机和约束.例如,名为AspectInstNamel.crintfl.optl的横切操作横切影响名为comInstNamel.intfl.optl的操作,且影响的时机为before,其优先级约束为1,则对应单元格所填写的内容为“fi研P=before,户riD疵砂一1”.编织器通过扫描语法、词法分析已建立好的相关数据结构,先查找每个方面组件实例横切接口中的每一横切操作,从而确定训P鲫PnZ的行标题;然后查找每一个组件实例接口中的每一操作,同时找出操作所属的接口类型,从而确定硼P口uP丁6z的列标题,完成了空白硼Pn口PT6Z的建立.TablelWeaVingTable表l编织表wPnvPl训2.查找PCD查找PCD的主要工作是确定“谁”是PCD以及查找“谁”影响了该PCD,即找出PCD和该PCD上的注入内容.在初始化时已建立好的数据结构中,查找语法对象“PCD”,找到PCD后,再查找关联的方面连接件实例,由该方面连接件实例查找对应的SA配置说明,从而找到与该PCD对应横切角色的扮演者和行为粘附(attach),进而找到影响该PCD的具体横切操作,从而确定铷腿可PT6Z的行.3.分析PCD分析PCD的主要T作是决定PCD对应哪些操作以及在这些操作上的注入时机和注入约束.找到一个PCD后,按照上面定义的匹配规则进行匹配,对匹配的操作,根据其对应的横切交互协议,在叫P口伽丁6z中相应的单元格中填写注入时机和优先级等相关约束.4.构造advice链构造advice链的主要工作是对填写好硼眦w丁6z的各列构造出一条advice链.对编织前SA模型中的所有PCD查找、分析完毕后,整个叫P口口PnZ也就填写结束,按下来的工作就是构造advice链.具体方法是自上而下扫描硼e口w丁6Z的列,按照单元格所填写的注入时机,将对应的横切操作名(行标题指定)分别放置到before,replace和after三个adVice链段中的某一个,从而针对该列就形成了一条advice链,如此循环下去,直到对硼P盘可PnZ的各列均形成一条advice链.5.冲突检测冲突检测的主要丁作是按照冲突检测规则对已建好的各条advice链进行冲突检测.在对硼阳钾舶z的各列所构造出的advice链进行检测过程中如发现冲突,编织器将给出冲突的位置及发生冲突的原因,SA设计人员可依据提示信息修改编织前SA模型,修改完毕后,可重新进行编织.6.织人织入的主要工作是按照织人规则将无冲突的各条advice链上的各个横切操作的内部计算过程织入到受影响操作的内部计算过程中,并进行相应的行为调整.当冲突检测完成后,没有发现任何冲突,则训P口uPnZ的各列均对应着一条按时序排列、无冲突的advice链.对每一条这样的链,按照功能织入规则将链上的各个横切操作的内部计算过程织人到受影响操作的内部计算过程中,以增加其功能;再按照行为调整规则来调整和改变其内部行为,如此重复这一过程,直至所有的advice链均已完成功能织入和行为调整,最后就得到了仅含组件,连接件的编织后SA模型.3案例研究为了更好地理解文中的编织机制,现以自动取款机(ATM)系统中的一部分作为案例予以解释.在案例的ATM系统中,用户通过与ATM机交互,可以实现存取款、查询余额以及打印凭条等功能性需 万方数据702计算机研究与发展2010,47(4)求.此外,系统还要实现以下两项非功能性需求:记录ATM机上所作操作,保证ATM机与银行之间通信的机密性.设计组件ATM并让其通过连接件Con与组件Bank进行交互,以实现案例中的功能性需求,从而建立了基本SA模型;设计方面组件LogAspect和ConfidentialAspect分别用来封装记录日志和加、解密的横切行为,以实现案例中的非功能性需求,从而建立了横切维模型;最后通过方面连接件LogAC和ConfidentialAC以及相应的SA配置来指明横切维模型与基本SA模型的具体注入关系,从而建立了编织前的SA模型,如图4所示:Fig.4Partialsoftwarearchitecturemodelo{ATMsystembeforeweaving.图4编织前ATM系统部分软件体系结构模型为了简化讨论,仅以查询余额为例来简要说明编织过程.1.与编织相关的SA元素规约1)ATM组件如图5所示,请求接口Intfl中查询余额操作qryBal的计算过程规约在InternalProcess区.%componentATM==[%Atrribute[⋯]%InternalProcess[qryBal(%CHNoutCardNum:STRING。%CHNinBalance:FU)AT)=一口[%Loc[cardNum:STRING.balaJlce:FLoAT],LB=START—qryBal=}$OLB=L1l;LB=L11:争$()(outCardNum!cardNum^LB=L12);LB=L12=}$o(inBalance?balance^LB=L13);LB=L13辛·$()LB=STOP—qryBal];]%RequiredInterface[Intfl==[qryBal(%CHNoutCardNum:STRING,%CHNinBalance:FLOAT);⋯];]%ProvidedInterface[⋯]],19.5ArMcomponent.图5组件ATM2)方面组件如图6所示,方面组件LogAspect和ConfidentialAspect的横切接口分别提供了记录日志log和加密encript、解密decript服务,具体的计算过程规约在相应的InternalProcess区.为了节省篇幅,分别用logCmp,encryptCmp来抽象表示记录日志和加密的计算,可在设计过程中对它们进行逐步求精.%AspectI,ogAspect一=[%Aspect【二onfidentiaIAspect==[;%IntemalProcess[%InternalProcess[109(⋯)==口[,encrypt(⋯)=一口[%Loc[⋯];%LOC[..·];LB=START—I。og:争$0LB=L41ILB—START—enc。ypt=}$oLB=L51;LB=L41=》$()(109Cmp^LB=LB=L51:》$0(encyptCmp^LB=sToP—log)]sTOP—encypt)]idecrypt(⋯)==口[⋯]];%CrosscuttingInterface[]CRIntfl一=[109(⋯);⋯]%crosscuttingInterface[;CRIntfl==[encrypt(⋯);]decrypt(⋯);⋯]]i]Fig.6I。ogAspectandConfidentiaIAspect.图6方面组件LogAspect和confidentialAspect 万方数据倪友聪等:一种面向方面软件体系结构中的编织机制研究7033)方面连接件如图7所示,方面连接件LogAC定义了基本角色BRl和横切角色CRl,CRl中包含记录日志行为proLog,横切交互协议定义了proLog发生在BRl中行为之前,其优先级为lO.方面连接件ConfidentialAC定义也是类似的。值得注意的是加密行为proEncrypt一般发生在其他横切行为之后(否则就要在密文上处理),因而其对应横切交互协议中优先级规约为o(较小).%Aspect(:onnectorI.ogAC==[%AspectconncctorconfidentialAc==[%BaseRolc[%BaseRole[BRl==[⋯]BRl==[..·]]BR2一=[⋯]%CrosscuttingRole[]cRl==[proI,og();⋯]%crosscu”ingRole[]cRl==[proEncrypt();proDecrypt()]%CrosscuttingGlue==[]Before(CRl.proLog.BRl)%CrosscuttingGlue一=[wherePRI(JRITY=10BeforP(CR1.ProEncrypt,BRl)]wherePRI()RITY=O]Beforc(CRl.ProDecrypt,BR2)wherePRl()RlTY一100:]Fig.7LogACandConfidentialAC.图7方面连接件LogAC和ConfidentialAC’4)SA配置如图8所示,SA配置规约了编织前sA元素之间的连接,其中方面连接件LogAC实例logACInst的基本角色BRl由PCDl:atmInst.REQINTF来扮演,横切行为proLog是由方面组件LogAspect实例logAspectInst的横切操作log来提供.类似地,方面连接件ConfidentiaIAC实例confdACInst的基本角色BRl,BR2分别由PCD2:*.PR(JR()I。E和PCD3:*.REQROLE来扮演。横切行为proEncrypt和proDecryt分别由方面组件ConfidentialAspect实例confdAspectlnst的横切接口中的横切操作encypt,decrypt来提供.Fig.8ArchitectureconfigurationofATMSystem.图8ATMSystem的体系结构配置2.编织过程1)查找和分析PCD初始化工作完成后,编织器查找到PCDl,PCD2,PCD3三个PCD.对于PCDl来说,根据其关联的方面连接件实例logACInst的横切交互协议:“Before(CRl.proLog,BRl)⋯”,再由SA配置(如图8)中109ACInst.CRl扮演者和行为attach可以知横切操作log将影响匹配PCDl的操作,同理知横切操作encrypt和decrypt将分别影响匹配PCD2,PCD3的操作.查找到PCD并决定哪些横切操作影响该PCD后,按照匹配规则对它们进行分析:由接口匹配规则知PCDl匹配atmInst的请求接口Intfl中所有操作;由于atmlnst请求接口Intfl连接到连接件实例conl提供角色,因此根据角色匹配规则知PcD2匹配atmInst请求接口Intfl中所有操作;与PCD2类似,PCD3匹配bankInst的提供接口中的所有操作.查找、分析完P(、D后,也就填充好t蚴可乃z,其中atmInst.intfl.qryBal操作同时受到横切操作log和encrypt的“before”影响.2)构造advice链和冲突检测.对础P口ulbZ每列构造advice链,其中qryBal操作对应一条仅有before链段的advice链advCh,按照冲突检测规则,横切操作log的优先级要高于横切操作encrypt,因而被放置在encrypt的前面. 万方数据704计算机研究与发展2010,47(4)3)织入对于advCh来说,根据功能织人规则将横切操作log和encrypt内部计算过程将织入到atmInst的qryBal操作的内部计算过程中.根据行为调整规则,功能织入后qryBal的操作的内部行为调整按下列步骤进行:Stepl.将LB—ST码RT一口ryB口Z:》$OLB=L11修改为:LB—START—qryBal=>$oLB=START—Log,它表示查询余额前先要记录日志;St印2.将LB=L41辛$O(109Cmp^LB=ST()P.109)修改为:LB—L41≥$()(109cmp^LB=S私RtP竹f删户f),表示做完记录日志后,进行加密操作;Step3.将LB=L51=>$o(encyptCmp^LB—STOP~encypt)修改为:LB=L51≥$O(encyptCmp^.LB=L11),表示做完加密操作后再回到查询余额操作继续执行.编织后的ATM组件规约如图9所示,通过案例实证了文中提出的编织机制的有效性.可以看出:该编织机制不仅解决了SA整体行为间潜在的冲突,还将它们按照编织前的语义“内化”于组件中,使得对组件行为的理解、分析、验证可局部化于该组件,进而使得整个SA更加易于理解、分析和验证.Fig.9DescriptionofATMcomponentafterweaving.图9编织后组件ATM的描述4相关工作SA层方面与组件、连接件的编织对于理解、分析和验证SA的整体行为和质量特征具有十分重要的意义,已成为面向方面SA设计方法中的一个研究热点.FAC[60提出通过组件的拦截接口暴露注入点,利用其编织接口设置和解除组件与方面的绑定,通过方面绑定将方面与组件组合.DAOP-ADL[7]提出通过定义特殊的计算接白来规约方面如何影响组件,并通过SA配置来定义组件和方面的织入连接.AspectualACME[8一提出在连接件中引入横切角色和横切交互协议来定义横切角色对基本角色之间交互的横切影响,通过配置说明各种角色的扮演关系.连接件和配置结合在一起完成方面与组件的编织.以上的方法均是通过增加或(和)扩展已有的SA元素来隐式地表示方面与其他SA元素的编织,使得所建立的面向方面SA模型较传统的SA模型复杂,因此难以对其进行分析和验证.文献[17]将传统的体系结构描述语言和附加的协调模型相结合,建立一个面向方面系统的结构化规约.文中提出两级体系结构,即定义基本系统的组件级、定义方面组件以及它与基本系统交互的方面级.方面级不仅定义了方面组件,还定义了静态的公共条目(commonitem)结构、规则、控制过程和动态黑板结构等基础设施,利用这些基础设施,并基于通知协议完成方面与组件的编织.该方法的主要不足之处在于方面级模型过于复杂,而且只支持before和after两种注入时机,也没有提供对量化机制的支持,更为重要的是对SA模型的理解、分析、验证依赖于其所定义的基础设施.文献[18]系统阐述了XYZ/ADL的概念框架,并用XYZ/E给出了相关语义解释。但其没有将ADL与面向方面软件开发有机结合起来,因而缺乏SA层方面编织的相应表示机制.本文提出的方面编织机制,不仅较好地解决了方面时序冲突的检测问题,还能为编织后SA模型用统一的时序逻辑方法分析、验证SA模型的整体行为和质量特征奠定良好基础.5结论和未来工作基于AC2一ADI。建立的编织前SA模型,本文提出一种新的SA层编织机制,它通过明确定义的6个步骤和3类编织规则。将编织前独立设计的方面组件显式地织入到组件中,使得最终形成的仅含组件、连接件的编织后SA模型更加易于分析和验证.我们的下一步工作方向是进一步修改和完善编织规 万方数据倪友聪等:一种面向方面软件体系结构中的编织机制研究705则,优化编织过程,并证明编织前后SA模型的语义一致性.参考文献[1]MedvidovicN,TaylorRN.Aclassificationandcomparisonframeworkforsoftwarearchitecturedescriptionlanguage[J].IEEETransonSo“wareEngjneering,2000,26(1):70一93[2]GarlanD,ShawM.AnIn”oductiontoSoftwareAfchitecture[M].Pittsburgh,PA:worldScientificPubIishingCompany,1993[3]TekinerdoganB.ASAAM:AspectuaIsoftwarearchitectureanaj”jsmethod[c],/Procofthe4thworkingIEEE/IFIPConfonSoftwareArchitecture(WICSA’04).Piscataway,NJ:IEEE,2004[4]Kojarskis,Loref也DH.Modelingaspectmechanisms:Atop—dowIlapproach[C]//Procofthe28thIntconfonSoftwareEngineering(ICSE’06).Piscataway,NJ;IEEE,2006:212—221[5]TarrP,ossherH,Har“sonw,eta1.Ndegreesof靶paration:Multi—dimensionalseparationofconcerns[c]//Procofthe2lstIntconfonS0ftwareEngineering(ICSE).NewYork:ACM,1999:107—119[6]PessemierN,SeinturierL,coupayeT,eta1.Amodelfordevelopingcomponen卜basedandaspec卜orientedsystems[G]/,LNcs4089:Procofthe5thIntsymponsoftwareComposition.Berlin:Springer,2006:259—274[7]PintoM,FuentesL,TroyaJM.DAOP-ADL:AnarchitecturedescriptionIanguagefordynamiccomponentandaspect-baseddeveIopment[G]/,LNcsz830:Procofthe2ndIntConfonGenerativeProgrammingandCbmponentEngineerirlg.Berlin:Springer,2003:118—137[8]BatistaT,chavezc,GarciaA,eta1.Aspectualconnectors:supportingtheseamlessintegrationofaspectsandADLs[C]/,ProcoftheACMSIGSoftXXBrazilianSymponS0ftwareEngineering(SBES’06).NewYork:ACM,2006[9]wenJing,Yingshi,NiYou-cong,eta1.Architectural、[10][11]designoftheonlineauctionsyst亡mwithAOsAD[C]/,Procofthe2008IEEEIntConfone_Busine5sEngineering.Piscataway,NJ:IEEE,2008;5—1ZWenJing,YingShi,ZhangLin“n,eta1.AC2一ADLlArchitecturaldescriptionofaspect—orientedsystem[C]/fProcoftheIntConfonAdvancedSoftwareEngineeringandItsApplication(ASEA2008).Pi8cataway,NJ:IEEE,2008:147—152ZhangLinlin,YingShi,NiYoucong,eta1.Anapproachformulti—dimensionalseparationconcernatarchitectureIevel[c]/,Procof2008WorkshoponPowerElectronicsandIntelligentTransportationSyst锄.Piscataway,NJ:IEEE,2008:541—545[12]zhangLinlin。YingShi,NiYoucong,eta1.Agenericmodelformulti-dimensionalseparationofconcemsatarchitecturelevel[C]//Procofthe4thIntconfonwireIessCommunications,NetworkingandMobileComputing.Piscataway.NJ:IEEE,2008:1—4[13]zhangLinlin,YingShi,NiYoucong,eta1.Towardsmulti.dimensionals印aratingofNFRsin∞ftwarearchitecture[C]//Procofthe1stIntConfon(bmputerScienceandS0ftwareEngineering.PiscataWa,,,NJ:IEEE,2008:47-49[14]Tangzhisong,eta1.TemporalLogicProgrammingandSoftwareEngineering[M].Be玎inglSciencePress.2002:47—49(inChinese)(唐稚松.时序逻辑程序设计与软件工程[M].北京:科学出版社,2002:47_49)[15]KnjeseiG.Ajogicfoundationforconditionalprogra加transformations,IAI—TR一2006一ol[R].Bonn,Gennany:UniversityofBonn,2006[16]AppeItauerM,KnieselG.Towardsconcretesyntaxpattemsforlogic-basedtran“omationrules[J].ElectronicNotesinTheoretical(乃mputerScience,2008,219(20):113—132[17]NavasaA,Per昭MA,MurilJoJM.Aspectmodelingatarchitecturedesign[G]//LNCS3527:ProcoftheEuropeanWorkshoponSoftwareArchitecture(EWSA2005).Berlin:Springer,2005:41—58[18]zhuxueyang,TangzK∞ng.AtemporallogbbasedsoftwarearchitecturedescriptionlanguagexYz/ADL[J].JournalofSoftware,2003,14(4):714—720(inChinese)(朱雪阳,唐稚松.基于时序逻辑的软件体系结构描述语言xYz『ADL[J].软件学报,2003,14(4):714—720)NiY叫∞哩,bornin1976.Lecturer.Since2007,hehasbeenaPhDcandidateincomputersoft、vareandtheoryfromtheStateKeyLaboratoryofS0ftwareEngineering,WuhanUnivefsity,Wuhan,Hubei,China.Hiscurrentresearchinterestsincludesoftwarearchitectureandaspect-orientedsoftwaredevelopment.倪友聪,1976年生,博士研究生,讲师,主要研究方向为软件体系结构和面向方面软件开发.Yi雌轴i,bornin1965.ProfessorandPhDsupervisof.Hiscurrentresearchinterestsincludeservice—orientedandaspect—orientedsoftwaredevelopment,semanticWebtechnologies,softwarearchitectureandpauerns,softwarereuseandinteroperability.应时,1965年生,教授。博士生导师,主要研究方向为面向服务和面向方面的软件开发、语义web技术、软件体系结构和模式、软件的可重用性与互操作性. 万方数据706计算机研究与发展2010,47(4)ZhangLinIjn,bornin1974.PhDandlecturer.HercurrentresearchinterestsincludesoftwarearchitectureandasDect.orientedsoftwaredevelopment.张琳琳,1974年生,博士,讲师。主要研究方向为软件体系结构和面向方面软件体系结构.WenJing,bornin1982.PhDcandidate.HercurrentresearchinterestsincludesoftwarearchitectureandasDect—orientedsoftwaredeveloDment.文静,1982年生,博士研究生,主要研究方向为软件体系结构和面向方面软件开发.YePeng,bornin1976.PhDandlecturer.Hiscurrentresearchinterestsincludesoftwarearchitectureandaspect—orientedsoftwaredeveloDment.叶鹏,1976年生,博士,讲师,主要研究方向为软件体系结构和面向方面软件开发.ZhaoKai,bomin1976.PhDcandidateandlecturer.HiscurrentresearchinterestSincludeservice—orientedarchitectureandsernanticWebtechn0109ies.赵楷。1976年生。博十研究生,讲师,主要研究方向为面向服务软件体系结构和语义Web技术(nyc@mail.whu.edu.cn).ResearchBackgrOundTodesignaspect-orientedsoftwarearchitecture,thereisacommonrecognitionthatcrosscuttingbehaviorsandfeaturesneedtobeencapsulatedwithindependentdesignelementsbyusingtheprincipleofseparationofconcerns.However,itisadifficultissuetoweavethesedesignelements,componentsandconnectorstogetherinordertofomintegratedsoftwarearchitecture,whichembodiescorrectlyoverallbehaviorandqualitycharacte“stic.Inmostofaspect—orientedsoftwarearchitecturedescriptionlanguages(AOADLs),aspectandotherelementscanbeimplicitlywovenbyincreasingorex忙ndingexistingarchitecturalelements.TherearetwoshortcomjngsusingtheseAoADLstospecifyweaving.Oneisthatweavinginfomation,suchaslocations,contents,timesandconstraintsofinjection,isscatteredintodifferentarchitecturalelements.Theotherisshortofapproachesfordetectingtemporalconflictbetweencrosscuttingbehaviors.Asaresult,itismoredifficulttounderstand,analyzeandverifyoverallbehaviorsandqualitycharacteristicsofsoftwarearchitecture.Aimingattheseproblems,akindofweavingmechanismatsoftwarearchitecturelevelisproposedinthispaper.Throughweavingprocessandrulesdefinedinthisweavingmechanism,aspectualcomponentsdesignedindependentlyinunwovenstageareexplicitlywovenintocomponents.Thenanarchitecturemodelinwovenstageonlycontainingcom曲nentsandconnectorsisacquired,whichiseasiertoanalyzeandverify.0urworkissupportedbytheNationalNaturaIScienceFoundationofChinaundergrantNo.60773006andtheDoctoralFundofMinistryofEducationofChinaundergrantNo.20060486045. 一种面向方面软件体系结构中的编织机制研究作者:倪友聪,应时,张琳琳,文静,叶鹏,赵楷作者单位:倪友聪(武汉大学软件工程国家重点实验室,武汉,430072;安徽建筑工业学院数理系,合肥,230018),应时(武汉大学软件工程国家重点实验室,武汉,430072;武汉大学计算机学院,武汉,430072),张琳琳,赵楷(武汉大学软件工程国家重点实验室,武汉,430072;新疆大学信息科学与工程学院,乌鲁木齐,830046),文静(武汉大学软件工程国家重点实验室,武汉,430072),叶鹏(武汉大学软件工程国家重点实验室,武汉,430072;武汉科技学院计算机科学学院,武汉,430074)刊名:计算机研究与发展英文刊名:JOURNALOFCOMPUTERRESEARCHANDDEVELOPMENT年,卷(期):2010,47(4)参考文献(18条)1.KnieselGAlogicfoundationforconditionalprogramtransformations,IAI-TR-2006-0120062.唐稚松时序逻辑程序设计与软件工程20023.ZhangLinlin;YingShi;NiYoucongTowardsmulti-dimensionalseparatingofNFRsinsoftwarearchitecture20084.WenJing;YingShi;NiYou-CongArchitecturaldesignoftheonlineauctionsystemwithAOSAD20085.BatistaT;ChavezC;GarciaAAspectualconnectors:SupportingtheseamlessintegrationofaspectsandADLs20066.PintoM;FuentesL;TroyaJMDAOP-ADL:Anarchitecturedescriptionlanguagefordynamiccomponentandaspect-baseddevelopmentLNCS283020037.PessemierN;SeinturierL;CoupayeTAmodelfordevelopingcomponent-basedandaspect-orientedsystemsLNCS408920068.TarrP;OssherH;HarrisonWNdegreesofseparation:Multi-dimensionalseparationofconcerns19999.KojarskiS;LorenzDHModelingaspectmechanisms:Atop-downapproach200610.TekinerdoganBASAAM:Aspectualsoftwarearchitectureanalysismethod200411.GarlanD;ShawMAnIntroductiontoSoftwareArchitecture199312.朱雪阳;唐稚松基于时序逻辑的软件体系结构描述语言XYZ/ADL[期刊论文]-软件学报2003(04)13.NavasaA;PérezMA;MurilloJMAspectmodelingatarchitecturedesignLNCS3527200514.AppeltauerM;KnieselGTowardsconcretesyntaxpatternsforlogic-basedtransformationrules2008(20)15.ZhangLinlin;YingShi;NiYoucongAgenericmodelformulti-dimensionalseparationofconcernsatarchitecturelevel200816.ZhangLinlin;YingShi;NiYoucongAnapproachformulti-dimensionalseparationconcernatarchitecturelevel200817.WenJing;YingShi;ZhangLinlinAC2-ADL:Architecturaldescriptionofaspect-orientedsystem200818.MedvidovicN;TaylorRNAclassificationandcomparisonframeworkforsoftwarearchitecturedescriptionlanguage[外文期刊]2000(01)本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjyjyfz201004017.aspx