• 415.50 KB
  • 2022-06-17 14:50:44 发布

基于领域特征的aop编织实现方法

  • 6页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
万方数据第36卷第2期计算机科学V01.36No.22009年2月ComputerScienceFeb.2009基于领域特征的AOP编织实现方法李淼1白(重庆工业职业技术学院重庆400050)1勇2张波1(重庆电力高等专科学院重庆400053)2摘要面向方面编程(AOP)通过横切关注点和编织技术来实现软件。基于领域特征的领域分析、设计过程获得领域的特征和特征关系,并在领域实现的前期实现特征的代码编制。采用面向方面编程技术,对领域特征中任务(Role)的关系分析、归类后,按面向方面编程技术提供的关注点(Concerns)、通知(Advice)、横切(Crosscutting)、编织(Wea-ving)等方法,针对领域特征中的Role进行编织,组成完整的可变化特征,以适应不同软件产品的需要。采用面向方面编程技术不会对已封装的Role产生耦合,增强了代码的易用性和可维护性。关键词面向方面,AOP,领域特征AOPWeavingMethodBasedOilDomainFeatureLIMia01BAIYon92ZHANG1301(DepartmentofComputerScience.ChongqingIndustryPolytechnicCollege,Chongqing400050,China)1(ChongqingElectricPowerCollege,Chongqing400053.China)2AbstmctAspect-orientedProgrammingprovidescrosscuttingconcernsandweavingmethodtoimplementingsoftware。Domainanalysisanddomaindesignprocessbasedondomainfeatureprovidedomainfeatureandfeaturerelationship,Andprophaseofdomainimplementingcompletedcodingofanyfeature.Usingaspect-orientedprogrammingtechnique.analyzingroleandrelationshipofrolesofdomainfeature,usemethodthatconcerns,adviees,crosscuttingandweaving,weavingroleofdomainfeature,composingfeatureofvariation.Adaptrequirementofdifferentsoftwareproduct.Usingaspect—orientedprogrammingstriveforlowestpossiblecoupling,andincreasingusabilityandmaintainability.KeywordsAspec卜oriented,AOP,Domain-feature1引言载体,在’ava平台下芋现领域特征的编织实现方法。软件复用的研究和实践表明领域工程是其中的关键,即可复用软件资产(包括体系结构和构件等)的生产阶段,主要包括领域分析、领域设计和领域实现这3个活动[1]。经过领域分析与设计,形成领域特征Feature[2’33;领域实现的软件制品是软件体系结构(Architecture)、组件(Component)和类(Class)[5],组件和类是实现级的较小粒度的可复用软件制品。AOP(Aspect—OrientedSoftwareProgramming)技术,是由XeroxPaloAlto研究中心(XeroxPARC)的研究人员于20世纪90年代末提出的一种新的程序设计思想和模型[6],它使用关注点(Concerns)、通知(Advice)、横切(Crosscutting)、编织(Weaving)等技术[6]。这些新技术、新思想在软件编程中,对减少代码混乱、软件功能灵活组织等方面都显示出了突出的优越性L6]。在领域工程的最后阶段,即领域工程实现阶段,需要对各种可复用软件制品进行组装和维护[2]。本文论述了采用AOP技术来实现这一目标的~种方法。本文第2部分论述了特征的相关内容,并归类整理。第3部分讨论AOP技术的关键部分。第4部分综合本文的第2,3部分,以AspectJ为到稿IB期:2008—07—10李淼副教授,主要研究方向为软件复用技术、面向方面编程等。2领域特征2.1特征的内容领域特征(Feature)是系统中用户最终可见的、显著或特色的行为、能力、特点等[1],描述的是用户对系统的理解。领域特征不是对传统需求规约模型的完全替代,而是形成了一种互补的关系。特征包含一系列的任务(Role)。例如,一个音像出租系统中的视频出租特征如表1所示[51,完成每一个任务又由若干个实现方法组成。表1领域特征构成合同Contract视频出租合同维护VideoRentaIContractmaIntenan傀setCustomer(Customer)CustomergetCustomer()setVideo(Video)VideogetVideo()addContraet(Contract)removeContraet(Contract)Contract[-]getAllContracts租借垫态b00leanisRentedORenteditern⋯⋯‘⋯⋯租借人Renterintrents(Video[])·299· 万方数据领域分析与设计完成后,就会得到某一领域的一系列特征(Feature)以及这些特征的任务(Role)。2.2特征分类不变特征:领域内,所有软件产品共有的特征。可变特征:领域内,不同的软件产品具有不同的特征。2.3特征的关系:朝表2特征关系关系名称关系说明图示强制Mandatory可选OptionaI选一AIternative或Or如果选择了特征A.强制特征B必须被它的父特征A包含如果选择7特征A,特征B可以被它的父特征A有选择的包含如果选择了特征A,必须从可选择的特征B、C、D中选择一个特征如果选择了特征A,必须从可选择的特征B、C、D中选择一个或多个特征特征中的任务Role也会有强制、可选、选一、或这样的关系,这里不作详细的讨论。3AOP技术面向方面程序设计(Aspect-OrientedProgramming)和面向对象结合起来可以很好地完成对真实系统的横向和纵向的两个维度的建模,从而更加容易地构建稳定且易维护的软件系统。3.1AOP提供的技术支持‘6.7.91切人点(Pointcuts)切人点是指一个或多个连接点,可以理解成一个点的集合。切入点的描述比较具体,而且一般会跟连接点上下文环境结合。通知(Advice)指定到达特定切入点处应执行的代码。主要有3种基本类型。前通知(beforeadvice)是指在连接点之前,先执行通知中的代码。后通知(afteradvice)是指在连接点执行后,再执行通知中的代码。后通知一般分为连接点正常返回通知和连接点异常返回通知等类型。环绕通知(aroundadvice)是一种功能强大的通知,可以自由改变程序的流程、连接点返回值等。介绍(Introduction)介绍是指给一个现有类添加方法或字段属性。介绍还可以在不改变现有类代码的情况下,让现有的类实现新的接口,或者为其指定一个父类,从而实现多重继承。织人(weaving)织入是把解决横切问题的切面模块,与系统中的其它核心模块通过一定策略或规则组合到一起的过程,并且不影响原系统的模块。·300·拦截器(interceptor)拦截器是用来实现对连接点进行拦截,从而在连接点前或后加入自定义的切面模块功能。目标对象(Targetobject)指基于拦截器机制实现的AOP框架中,位于拦截器链上最末端的对象实例。A()P代理(proxy)是指在基于拦截器机制实现的AOP框架中,实际业务对象的代理对象。这个代理对象一般被切面模块引用,AOP的切面逻辑正是插入在代理对象中来执行的。3.2AOP的技术优势AOP为开发者提供了一种描述横切关注点的方法,它允许定义程序代码执行顺序的关系,我们可以从几个方面来阐述它的优点。(1)代码集中易于理解。使用AOP技术可以将需要出现多次的公用代码集中到一处实现,这样代码的修改范围就可以得到严格的控制,减少代码修改对系统稳定性的影响,减少代码的冗余度和耦合度,增强可读性,提高软件质量,解决了面向对象编程跨模块造成的代码混乱和代码分散问题。(2)模块化横切关注点。每个关注点都使用最小耦合来进行处理,这样模块化处理的系统更容易理解和维护。(3)系统容易扩展。Aspect模块根本不知道横切关注点,因此很容易通过建立新的方面加入新的功能。另外当向系统中加入新的模块时,已有的方面自动横切进来,使系统易于扩展。(4)更好的代码重用性。AOP把每个方面实现为独立的模块,模块之间是松散耦合的。松散耦合的实现通常意味着更好的代码重用性,AOP在实现松散耦合这方面比00P做得更好。4实现方法4.1AOP与OOP结合的领域特征实现方法面向对象编程(OOP,Object-OrientedProgramming)能很好地将问题简化,并封装成类,能很好地实现抽象。但是在类封装后,实现商务规则的复杂关系,组合成软件产品的过程中,类之间会形成耦合,使得原有的类形成复杂的关系,更严重的情况将会形成代码混乱。如本文第3部分描述,面向方面编程(AOP,Aspect-O-rientedProgramming)提供了横切、通知技术,能将一段程序切入到其它软件程序中而不会影响原模块,使得附加的程序代码可以独立于原系统模块。从原系统模块的角度看,没有任何变化。将AOP技术与OOP技术结合,应用到领域实现阶段。从代码层入手,将两者的优势结合到一起。并找到了领域特征关系与AOP技术实现的方法。本文认为,实现领域特征关系的关注点是如何在不影响原模块特征代码的前提下,将新的实现特征关系的代码编织到软件产品中。从特征关系的分析发现,当FeatureA执行后,会以一种方式执行FeatureB。传统的实现方式是在原系统内建立一个链接关系类,当关系发生变化时,例如,需要执行FeatureC,必然会修改原系统的链接关系类。类之间产生了新的耦合关系,不利于软件的维护。采用AOP技术,只关注横切位置,特征关系的实现代码17日亩吕冒罟旨卣酉 万方数据独立于原系统代码之外。任何关系的增、减、变化,都不会影响原系统代码。4.2特征(Feature)和任务(Role)的实现通过本文第2,3部分的论述,领域工程中分析设计完成后,就得到了某个领域的特征集Featurel,Feature2,⋯⋯。组成每个特征的是一些任务Role,Featurel的任务集用rolell,rolel2,rolel3,⋯⋯表示,Feature2的任务集用role21,role22,role23,⋯⋯表示。这些任务(Role)均独立设计完成,在Java平台下,仍然以传统的面向对象编程(Object—OrientedProgramming)的类形式实现。如此代码实现的原因有3个:(1)领域工程还没有完善、成熟的分析、开发工具。(2)目前的软件开发工具提供的是面向对象的开发方法。(3)软件的代码级重用仍然以封装类和组件为主。用于本文的测试代码片段如下:packageFeature;publicclassRole(publicstaticvoidmain(String[]args){newRole().rolell()l"publicstaticvoidrolell(){//DoanybusinessruleoutMessage(”rolell1\n”);)publicstaticvoidrolel2(){//DoanybusinessruleoutMessage(”rolel2\n”)l}publicstaticvoidrolel3()(//DoanybusinessruleoutMessage(。rolel3\n”):)publicstaticvoidoutMessage(StringoutputMessage){System.out.println(outputMessage);})以上代码片段省略了实际应用系统的商务处理规则代码,仅以显示语句代码作为实际代码的仿真输出。4.3横切特征关系实现本文以Mandatory关系为例,其它关系的实现只需要增加判断代码,这里就不作更详细的描述。FeatureA的任务rolel2依赖rolell而需要强制执行,在AOP中增加横切点(pointcutMandatory),在rolell执行之后增加通知(afteradvice)并执行rolel2。在Java平台下,采用AspectJ实现。本文的Aspect测试代码如下:packageCrossCutting;publicaspecteutrole{publicpointcutMandatory():call(voidFeature.Rol己rolell())Iafter()returning:Mandatory(){Feature.Role.outMessage(”AfterRolell.Mandatory:”);Feature.Role.rolel2()1)}运行结果如下:rolell1AfterRolel1,Mandatory:rolel2测试的结果可以看出(1)本文叙述的方法达到了关系代码独立于原系统代码的目的,如图1所示。图1代码独立从图1中可以看出,特征包Feature和横切包CrossCut—ring相互独立,在没有CrossCutting包时,Feature包程序仍然能独立运行,但是有依赖关系的程序没有运行;采用As—pect加上横切包CrossCutting后,具有依赖关系的程序得以运行。(2)横切点和横切关系清晰,如图2所示。r宙CrossCutting白⋯0cutrolc}·冗Mandatory()i⋯kaflerRcturnin西)图2横切点及横切关系从图2可以看出,横切点名称Mandatory,执行通知Af—ter,清晰地展现了横切点和横切关系。结束语本文提出的基于领域特征的A()P编织实现方法能保持原系统的代码独立性,实现领域特征关系的编码。同时可应用到AspectC#,Aspect(;++。不足之处在于对Aspect的支持工具还不完善,而且与程序实现的语言相关;后续研究包括对复杂的交织关系进行深入研究;根据领域工程的研究进展,发现新的领域特征关系,研究新的实现方法。研究特征关系到代码实现的映射。参考文献[13张伟,梅宏.一种面向特征的领域模型及其建模过程.软件学报,2003。14(8):1345—1356.http://www.jos.org.en/1000—9825/14/1345.htm[2]KangKC,LeeJ.PatrickDonohoe.Feature-OrientedProductLineEngineering.IEEESOFTWARE.July/August20021-33BeueheD.PapajewskiH.Variabilitymanagementwithfeaturemodels.ScienceofComputerProgrammingarchive。2004,53(3)[4]SoehosP,PhilippowI,RiebischM.Feature—OrientedDevelop—mentofSoftwareProductLines:MappingFeatureModelstothe·301· 万方数据Architecture∥NoDe2004.LNCs3263.BerlinHeidelberg:Springer-Verlag,2004:138—152Es3JansenAGJ,SmedingaR,vanGurpJ,eta1.Firstclassfeatureabstractionsforproductderivation∥IEEPro巴一Softw.2004,151(4)E6]FilmanRE。ElradT,C1arkeS,eta1.Aspect—OrientedSoftwareDevelopment.ISBN:0-321—21976—7.October2004E71AspectJ.inaction:PRAcTIcALASPECT一0RIENTEDPRo—GRAMMING.RAMNIVASLADDAD.ISBN1-930110—93—6PrintedintheUnitedStatesofAmerica[8]LeeK.KangKcFeatureDependencyAnalysisforProductLineComponentDesign{}ICSR2004.LNCS3107.BerlinHei—delberg:Springer-Verlag,2004:69—85[93刘小龙.王忠.面向方面编程研究.开发研究与设计技术.武汉工程大学计算机科学与工程学院(上接第290页)与Pajek,JUNG等大型网络分析工具相比,JPAC采用XML文件保存网络的结构信息,具有简单易用的特点,通用性也更好。JPAC功能强大,可以分析大型Java系统的结构,并生成与复杂网络相对应的随机网络,比较二者的异同。JPAC可以计算基于复杂网络的各度量值,并用模拟退火算法分离出社区结构,亦即软件的拓扑意义上的模块结构。通过对生成的模块结构与原结构的比较,可以分析各种模块划分方法的优劣,从而对软件系统更好地理解、评估、预测、控制和改进。结束语如何提高软件的质量,始终是软件工程领域研究的重要方向。基于度量的量化管理是目前最有效的质苣保证手段之一。随着面向对象方法的日益流行,软件系统规模的不断增大,如何度量面向对象大规模软件系统,成为一个亟待解决的问题。本文运用复杂网络理论解决这个问题。研究发现,软件系统中存在大量复杂网络现象。通过研究复杂网络所共有的一些特征,从元素级、模块级、网络级3个不同的粒度提出基于复杂网络的软件系统的各种度量。介绍了大型Java程序复杂网络描述和度量工具JPAC。JPAC可以分析大型Java系统的结构,并计算基于复杂网络的各度量值。通过计算这些度量值,可以定量地刻画和分析软件的结构和行为,以便更好地理解、评估、预测、控制和改进。用JPAC分析了JDK各版本,我们发现其JSCG图具有明显的复杂网络的特征。我们计算了基于复杂网络中度量,并分析了JDK的演化。下一步的工作是研究尽可能多的软件系统,提出度量的定量标准,并指导于实际的软件开发中。我们可以计算出各结点类的z—score的值和参与系数的值,并按分散系数的值将各结点分类,从而与面向构件的软件开发有效地结合起来。我们的工作也可应用于遗产系统构件的识别与提取、构件的度量等问题。参考文献EliFentonNE.PfleegerSLSoftwareMetricsARigorousandPracticalApproach.SecondEdition.Boston:PWSPub.,1997[2]ChidamberSR,KemererCF.AMetricsSuiteforObject—orien—tedDesign.IEEETrans.onSoft.Eng.,1994,20(6):476—493·302-[3]BritoeAbreuF-TheMOODMetricsSet//Proe.ofECOOP’95WorkshoponMetrics.Aarhus,Denmark,1995E4]StrogatzSH.Exploringcomplexnetworks.Nature.2001,410:268—276[5]AlbertR,BarabasiA—L.Statisticalmechanicsofcomplexnet~works.Rev.Mod.Phys.,2002,74:47—97[63DorogovtsevSN,MendesJFF.EvolutionofNetworks:FromBiologicalNetstOtheInternetandW聊.Oxford:OxfordUni-versityPress.2003[73NewmanMEJ.Thestructureandfunctionofcomplexnet—works.SIAMReview,2003,45:167—256[83PotaninA,NobleJ,FreanM,eta1.Scale-freeGeometryinOb—ject—orientedPrograms.Comm.ACM,2005,48:99—103[93ValverdeS,Ferrer-CanchoR,Sole’RScale-freeNetworksfromOptimalDesign.EurophysicsLetters,2002,60:512—517[10]MyersC.SoftwareSystemsasComplexNetworks:Structure,Function,andEvolvabilityofSoftwareCollaborationGraphs.PhysicalRev.E.2003,68r113WheeldonR,CounsellsPowerLawDistributionsinClassRela—tionships∥Proc.ThirdIEEEInt’lWorkshopSourceCodeA—nalysisandManipulation.2003[12]TamaiT,NakataniT.AnalysisofSoftwareEvolutionProcessesUsingStatisticalDistributionModels∥ProaInt’lWorkshopPrinciplesofSoftwareEvolution(IWPSE).2002:120—123[13]ConcasGMPower-LawsinaLargeObject—orientedSoftwareSystern.IEEETrans.onSOft.Eng.,2007,33(10):687—708[14]李冰,王浩,等,基于复杂网络的软件复杂性度量研究.电子学报.2006,34(B12):2371—2375[15]McCabeTAComplexitymeasure.IEEETrans.onSoft.Eng.,1976,2(4):308—320[16]GuimeraR,AmaralLCartographyofcomplexnetworks:rl刊u-lesanduniversalroles.Nature,2005,433(7028):895—900[17]NewmanMEJ,GirvanM.Findingandevaluatingcommunitystructureinnetworks.Phys.Rev.E,2004,69:026113[18]NewmanMEJ.Modularityandcommunitystructureinnet—works{}Proc.NatkAcad.Sci.USA,2006,103:8577—8582[193陈焘,王树森.基于复杂网络的JDK代码结构演化研究.NA—SAC,2006[203K/J"帆,李翔,陈关荣.复杂网络理论及其应用.北京:清华大学出版社,2006 基于领域特征的AOP编织实现方法作者:李淼,白勇,张波,LIMiao,BAIYong,ZHANGBo作者单位:李淼,张波,LIMiao,ZHANGBo(重庆工业职业技术学院,重庆,400050),白勇,BAIYong(重庆电力高等专科学院,重庆,400053)刊名:计算机科学英文刊名:COMPUTERSCIENCE年,卷(期):2009,36(2)被引用次数:1次参考文献(9条)1.张伟.梅宏一种面向特征的领域模型及其建模过程[期刊论文]-软件学报2003(08)2.KangKC.LeeJPatrickDonohoe.Feature-OrientedProductLineEngineering20023.BeucheD.PapajewskiHVariabilitymanagementwithfeaturemodels2004(03)4.SoehosP.PhilippowI.RiebischMFeature-OrientedDevelop-mentofSoftwareProductLines:MappingFeatureModelstotheArchitecture20045.JansenAGJ.SmedingaR.vanGurpJFirstclassfeatureabstractionsforproductderivation2004(04)6.FilmanRE.ElradT.ClarkeSAspect-OrientedSoftwareDevelopment20047.AspectJinaction:PRACTICALASPECT-ORIENTEDPRO-GRAMMING.RAMNIVASLADDAD8.LeeK.KangKCFeatureDependencyAnalysisforProductLineComponentDesign20049.刘小龙.王忠面向方面编程研究.开发研究与设计技术相似文献(10条)1.期刊论文周晓聪.郑汉雄.罗达.ZHOUXiao-cong.ZHENGHan-xiong.LUODa事件驱动算法演示技术的面向方面实现-计算机科学2008,35(12)算法演示系统是利用图形和动画来表现算法的运行过程的系统.一直以来人们采用事件驱动技术进行算法演示系统的开发,但传统的实现方案容易导致代码混乱和分散,以及可重用性和可维护性低等缺点.提出使用面向方面技术开发算法演示系统的方案,与传统实现方案相比,基于面向方面技术的实现方案具有系统模块松散耦合、可重用性高等优点.2.学位论文范武基于AOP的J2EE性能测试框架的设计和实现2006随着互联网的蓬勃兴起,企业应用从传统的客户机/服务器模式开始面向互联网,面向分布式应用。作为企业级应用程序解决方案之一,J2EE被认为是当今可用于企业软件开发的最佳平台。然而,这一承诺并未完全实现。由于J2EE和企业业务的复杂性和分布性,经常可以看到编写完成的企业应用程序设计复杂,结构臃肿庞大,运行起来耗费大量系统资源且系统响应缓慢。为了寻找系统中存在的性能瓶颈和冗余代码,人们通过各种性能测试工具对系统进行各种压力测试和回归测试。然而这些测试工具和测试本身往往只能从系统的外围来对瓶颈进行检测和识别,为了找出有问题的代码,程序员常常只能手动向应用程序中添加代码来判断系统的瓶颈点,然而由于J2EE系统常见的庞大性和复杂性,这种做法无异于杯水车薪。问题不在于缺少基于J2EE平台的性能测试工具,类似于JMeter、JProbe这样的工具可以从外部模拟用户调用,统计系统的响应和资源的占用。问题出现在如何具体定位有性能问题的程序代码。传统的面向对象开发方法很难有效的解决这一问题,人们往往只能以手动和原始的方法来猜测、判断系统的性能问题所在。这是由于系统监视是经典的横切关注点问题,因此任何非模块化的实现都会让它混乱。本文的目标就是通过设计和实现一个基于AOP技术的性能测试框架——SimpieProfiler,来解决这个脱节问题。作为近年来新兴的技术,面向方面是当前程序设计技术发展的一个新方向,目的就是为了解决传统的面向对象无法解决的横切关注点问题。运用AOP技术,可以将系统监视这一功能从具体的企业应用程序中抽取出来予以模块化,进而使得系统监视代码同业务代码的分离,乃至成为单独的应用软件从而增加了代码的清晰度,可适应性、可重用性。本文共分六个部分。第一部分详细阐述了论文选题的目的和意义以及研究的主要内容。第二部分主要介绍面向方面编程技术。第三部分结合实际开发中的性能问题,提出了性能测试框架的设计功能和总体设计。第四部分是本文的重点,具体且详细的论述了SimpleProfiler测试框架的实现和关键技术问题的解决。第五部分主要通过将SimpleProfiler与当前业界的同类型软件进行横向比较来论述SimpleProfiler的优势和缺点。最后第六部分是整个全文的总结,论述了测试框架的系统特点和有待提高之处。目前,传统的测试工具往往是基于系统外部调用和性能统计分析,它们适用进行压力负载测试或是回归测试。然而一旦发现性能问题,对如何精确定位系统的瓶颈点并无太大帮助。商业的性能采样工具又由于价格昂贵,可定制性低,测试时占用大量资源等问题,使得开发人员往往都是采用手工编写测试代码。SimpleProfiler作为不依赖于具体应用的性能监视器,在功能上具有很强的独特性和实用性。与传统的性能测试和性能采样工具相比,SimpleProfiler有以下特点:运用AOP技术完成系统调用监测,相较原来的JVMTI/JVMPI方式更加灵活,软件更加轻便,程序也更容易部署。通过AOP将性能测试功能从具体的应用抽取出来成为独立的AOP软件,目前此种软件还不多,具有较新的独特性。AspectJ在pointcut的可配置性和独立性相较JBOSSAOP和AspectWerkz等AOP实现还有较大不足,利用Annotation和ASM字节码编织工具,成功的弥补了这一不足。软件具有较强的可定制性。除了软件的实用性和功能,SimpleProfiler的开发本身即是对AOP应用程序开发技术的一次有益的探索和尝试。3.学位论文马欣基于AOP技术的核心架构的研究与实现2009大多数软件系统由横切多个模块的一些关注点的组成。使用面向对象技术来实现这些关注点将导致系统不易实现、难于理解和进展缓慢。面向方面 程序设计(AOP)可以使横切关注点更容易模块化。使用AOP能使系统更容易设计、理解和维护。更进一步说,AOP可以保证更高的生产力,改善软件质量,并且可以更好地实现新的特性。
  本文针对以上问题设计并实现了一个全新的AOP框架,Flying.AOP。Flying.AOP支持Java语言和C#等.Net语言,是基于多语言平台的。Flying.AOP运用面向对象方法来设计和实现,由六个子系统组成,它们是AOPXML装载器、AOP处理器、AOP文件监测器、代理类生成器(动、静)、Java适配器和DotNet适配器。其中,AOPXML装载器、AOP处理器、AOP文件监测器属于AOP引擎。它们的功能是对描述AOP的信息进行定义、采集和检索。在代理类生成器中又分为两种不同的生成模式,动态代理模式和静态代理模式。代理类生成器会和AOP引擎之间实现代码拦截。两个适配器用于对Java语言和DotNet语言进行接口转换。
  文章首先介绍了Flying.AOP所采用的理论和技术,然后讨论了Flying.AOP的总体设计、AOP引擎和代理类生成器的设计与实现,最后讨论了多语言环境下Java适配器和DotNet适配器的工作原理。4.期刊论文唐祖锴.彭智勇.TANGZukai.PENGZhiyong面向方面程序设计语言研究综述-计算机科学与探索2010,4(1)作为控制软件复杂性、提高软件模块化程度、增强软件开发灵活性的重要技术手段之一,面向方面程序设计语言经过十多年的发展,日益受到软件研究者和实践者的关注,并发展成为软件工程的一个重要的研究领域.基于该领域近十年来的研究进展,分析总结了面向方面程序设计语言中的主要语言特性和关键实现技术;按照不同的语言特性对面向方面程序设计语言进行分类,并探讨了其发展与研究方向.5.期刊论文张海峰.ZHANGHi-feng面向对象语言的AOP扩展-嘉应学院学报2006,24(6)随着AOP日益广泛的应用,几乎所有的OO语言都进行了面向方面的扩展,然而这些语言无法实现对非正交方面的有效表达,方面调节模式通过一组类实现了联结器的基本任务,在该编程模式下能使用通用OO语言支持AOP,同时它的分层应用模式支持更大粒度的方面描述,能作为各种轻量级AOSD框架的基础,其简洁性和扩充性也能适应面向对象软件的方面挖掘工程的需要.6.学位论文贾仰理面向方面软件开发方法及其在分布式系统开发中的应用研究2006一个复杂的软件系统可以看作是诸多关注点的集合,因此关注点分离是软件工程领域中极为重要的原则。人们先后提出了结构化的开发方法和面向对象的开发方法以在软件开发过程中更好的实现关注点分离,促进了软件开发技术的不断进步。然而,这些传统方法仍难以实现如安全性、日志等称之为“横切关注点”的分离。面向方面软件开发(Aspect-OrientedSoftwareDevelopment:AOSD)方法从更高的抽象层次上对软件系统进行规约,根据系统的特定行为进行程序模块的划分,实现了横切关注点的模块化。该方法以其能有效地处理关注间的横断现象的特有功能,较好地解决了用传统的方法设计和实现软件的过程中存在的关注点分离困难、代码交织、可跟踪性差、重用困难,软件难以维护等问题,实现了各构件或模块的弱耦合性,使软件开发过程的复杂度也随之下降。在应用方面,由于当今的软件正朝着以正面功能为核心向兼顾侧面约束的方向发展,AOSD方法必将得到更广泛的应用。采用面向方面的软件开发方法处理分布式系统中常见的横切关注点如日志记录、用户身份验证、事务的处理、持久化、性能的优化、资源池,数据库连接池的管理等,可以在很大程度上降低软件开发的复杂度,同时有效的提高代码的可读性、可复用性,从总体上提高软件的质量和可维护性。本文分析了面向对象软件开发方法对系统级关注点处理的缺陷,讨论了面向方面软件开发方法及其在复杂系统开发中的优越性,对当前AspectJ,JbossAOP等各种AOP技术的语言机理进行了深入的分析、比较,并基于Java动态代理实现一个AOP模型。基于统一建模语言UML的扩展机制,对AOSD建模(AOM)进行了研究,并利用一个分布式系统的AOM进行了实际应用。同时,针对分布式多层企业应用系统横切关注点的广泛存在的特点,将面向方面软件开发方法和相关技术引入到分布式系统的开发,给出了一个应用的过程实例并进行了分析,提出了一种面向方面软件开发方法的过程模型。7.期刊论文陈生庆.CHENSheng-qing面向方面联结器的形式化及应用-嘉应学院学报2006,24(6)目前各种主要的面向对象语言都进行了面向方面的扩展以支持AOP,由于联结器对语义和语法结构的限制,这些语言不提供对非正交方面的支持,提出了方面联结器的形式化定义,并依此实现了通用OO语言的AOP支持,该模式的归纳定义方式支持更大粒度的方面表达,能作为各种轻量级AOSD框架的基础,同时其简洁性和可扩充性适合面向对象软件的方面挖掘工程的需要.8.期刊论文陶宏伟.TAOHong-wei基于AspectJ的一种新型程序设计方法AOP的研究-电脑知识与技术2010,06(20)现在大多数的软件项目都选择OOP的编程方式,但OOP技术也有其局限性,它对有些需求并不能很好的进行描述.介绍了一种全新的程序设计方法--面向方面的程序设计(Aspect-OrientedProgramming,AOP),这种编程技术可以有效地描述OOP方法不能描述的关注点;介绍了面向方面程序设计的基本思想以及面向方面程序设计设计语言以及Aspec0的基本概念.它是对面向过程、面向对象方法的进一步发展.通过引入方面概念,可以改进关注点的分离(separationofconcerns),减少代码缠结(codetangling)和解决横切关注点(crosscuttingconcerns)问题,提高软件质量和效率.9.期刊论文罗达.张远舟.周晓聪.LuoDa.ZhangYuanzhou.ZhouXiaocong中介者模式的面向方面实现-计算机应用与软件2008,25(11)中介者模式常被应用于多个对象需要交互的场合.使用传统的面向对象技术的实现方案容易导致代码分散,冗余代码多,可维护性低.使用面向方面技术实现中介者模式的方案,用方面来表达中介者对象,并把构建模式的同事对象所需要的代码也封装到方面中,对象的交互则使用切入点的定义与通知来实现.与传统实现方案相比,基于面向方面技术的实现方案具有代码集中、可读性强、可扩展性强等优点.10.学位论文黄雷面向方面技术在UP中的应用2007近年来,继面向过程编程和面向对象编程之后,又一种新的编程思想被提出,并被《MIT技术评论》杂志评为21世纪十种对经济和人类生活工作方式最具影响力的技术之一,这就是面向方面编程。面向方面编程将系统的横切关注点抽象为方面单独实现,可以避免面向对象方法导致的代码混杂和代码分散的问题。面向方面方法是面向对象方法的有益补充,面向方面不仅提供了系统化地抽象、模块化横切关注点的思想,使得系统建模与系统实现之间的过渡更加平滑,而且面向方面编程对于面向对象的设计模式、用例驱动思想都带来了新的元素。本文介绍了AOP的由来,AOP的核心思想,其中主要涉及了一些AOP的主要也是基础的概念以及AOP的两种主要横切方式,然后介绍了目前主流的一些AOP工具,并比较了这些工具的异同。重点以一个实例分析了如何在实际的系统中应用AOP,也就是利用AOP的本质,提取系统的横切关注点,将横切关注点单独做为系统的模块。这样一来就有效的解决了OOP所难以解决的问题,使系统更专注于实现自己的核心业务逻辑,减少了系统的代码冗余和代码耦合,使系统具备更好的可扩展性、可重用性以及可维护性。最后,介绍了统一过程这个软件开发过程,并通过实践将AOP与统一过程相结合,从更高的层次体现了AOP的价值。本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjkx200902073.aspx授权使用:北京林业大学(bjlydx),授权号:de3938bc-9072-4221-8c72-9e3400a5e99e下载时间:2010年11月20日