×

面向方面的协作编程。 (英语) Zbl 1184.68180号

概要:面向方面编程(AOP)寻求通过分离横切关注点来改进软件模块化。AOP的支持者通常提倡一种开发策略,即程序员编写主应用程序(基本代码),忽略横切关注点,然后方面程序员,即他们特定关注点的领域专家,为这些更专业的横切关注点织入逻辑。然而,经验表明,这种完全不经意的策略在许多情况下会将方面与基础代码紧密耦合,阻碍方面模块化和重用。本质上,横切关注点和基础代码之间的编织越复杂(词汇和/或语义上),就越难:(a)严格指定如何在所需点编织方面,(b)捕获方面和基础代码间的交互,以及(c)随着基码的发展保持正确的编织。
我们提出了另一种方法,称为合作面向方面编程(Co-AOP),其中关注点的完全词汇分离不是绝对要求。相反,横切关注点通过显式连接点(EJP)显式建模为抽象接口。程序员通过显式词法引用或传统的不经意方面指定这些接口与基础代码的交互位置。这种明确的意识允许基础代码和方面以以前不可能的方式进行合作:可以通知任意代码块,可以显式参数化通知,基础代码可以指导方面在何处应用通知,而方面可以对其建议的基础代码静态实施新的约束。这些新技术允许方面模块化和程序安全性的提高,并使我们走向合作AOP范式。
我们通过一个事务实例说明了我们的方法,并通过对传统AOP方法和合作AOP方法进行程序可扩展性比较的实证研究,对合作AOP进行了初步评估。初步结果表明,协作AOP技术可以降低代码的复杂性,降低整体耦合度,从而促进可扩展性。

MSC公司:

68N99型 软件理论

软件:

方面J
PDF格式BibTeX公司 XML格式引用
全文: DOI程序

参考文献:

[1] abc项目。AspectBench编译器。http://aspectbench.org
[2] 奥尔德里奇,J.:《开放模块:关于建议的模块化推理》(2005)
[3] Avgustinov,P。;Christensen,A.S。;亨德伦。;库津斯,S。;霍塔克,J。;欧·霍塔克。;De Moor,O。;塞雷尼·D·。;Sittampalam,G。;Tibble,J.:Abc:一个可扩展的aspectj编译器,面向方面软件开发学报1,293-334(2005)·Zbl 1165.68356号
[4] Beck,K.:《用极限编程拥抱变革》,《计算机32》(1999)
[5] Bonér,J.:Aspectwerkz–Java的动态AOP,(2004)
[6] L.Bussard,基于AspectJ的CORBA服务语用组合模型,收录于:关于ECOOP'02关注的方面和维度的研讨会,2000年
[7] 巴特勒,M。;霍尔,T。;费雷拉,C.:《通信顺序过程》,计算机科学讲稿3525/2005,133-150(2005)
[8] 北卡罗来纳州卡乔。;桑塔纳,C。;Figueiredo,E。;加西亚,A。;巴蒂斯塔,T。;Lucena,C.:撰写设计模式:面向方面编程的可伸缩性研究(2006)
[9] M.Ceccato,P.Tonella,《衡量软件方面化的影响》,摘自:荷兰代尔夫特第一期方面逆向工程研讨会,2004年
[10] 奇丹伯,S。;Kemerer,C.:面向对象设计的度量套件,IEEE软件工程事务20,第6期,476-493(1994)
[11] 克利夫顿,C。;Leavens,G。;遗忘:模块化推理和行为子类型类比(2003)
[12] Colyer,A.:走向AOSD的广泛采用,(2003年)
[13] Fetzer,C。;霍格斯特德,K。;Felber,P.:非原子异常处理的自动检测和屏蔽,IEEE软件工程事务30,第8期,547-560(2004)
[14] Filho,F.C。;北卡罗来纳州卡乔。;Figueiredo,E。;马兰豪,R。;加西亚,A。;Rubira,C.M.F.:例外与方面:细节是魔鬼,(2006)
[15] 菲尔曼,R。;Friedman,D.:面向方面编程是量化和遗忘,(2005)
[16] Fuad,M。;Deb,D。;Oudshoorn,M.:将自愈功能添加到传统的面向对象应用程序中,(2006年)
[17] 伽玛,E。;赫尔姆·R。;约翰逊,R。;Vlissides,J.:设计模式:可重用面向对象软件的元素,(1995)·Zbl 0887.68013号
[18] 加西亚,A。;桑塔纳,C。;查韦斯,C。;Da Silva,V.T。;德卢塞纳,C。;Von Staa,A.:多代理系统的软件工程II(2004)
[19] 加西亚,A。;桑塔纳,C。;Figueiredo,E。;Kulesza,美国。;Lucena,C。;Von Staa,A.:用方面模块化设计模式:定量研究(2005)·Zbl 1165.68361号
[20] Ghosh,S。;法国,R.B。;Simmonds,D.M。;Bare,A。;卡马拉卡尔,B。;Shankar,R.P。;Tandon,G。;维尔,P。;Yin,S.:开发分布式应用程序的中间件透明方法,《软件:实践与经验》35,第12期,1131-1154(2005)
[21] 高盛,S。;Detlefs,D。;德维尔,S。;Russell,K.:Java热点虚拟机中的新编译器优化,(2006)
[22] 戈斯林,J。;乔伊,B。;斯蒂尔,G。;Bracha,G.:Java语言规范(2005)
[23] 戈斯林,J。;乔伊,B。;斯蒂尔,G。;Bracha,G.:Java语言规范(2005)
[24] 格林伍德,P。;巴托洛梅氏菌(Bartolomei,T.)。;Figueiredo,E。;Dosea,M。;加西亚,A。;北卡罗来纳州卡乔。;桑塔纳,C。;苏亚雷斯。;博尔巴,P。;Kulesza,美国。;Rashid,A.:关于方面分解对设计稳定性的影响:一项实证研究,(2007年)
[25] Griswold,W。;沙利文,K。;Song,W。;肖恩勒,M。;Tewari,N。;蔡,Y。;Rajan,H.:具有横切接口的模块化软件设计,IEEE软件23,No.1,51-60(2006)
[26] S.Gudmundson,G.Kiczales,用切入点接口解决AspectJ中的实际软件开发问题,在:ECOOP’01的高级关注点分离研讨会,2001·Zbl 1038.68715号
[27] T.Harris,原子块中的例外和副作用,计算机编程科学58(3)·Zbl 1080.68544号 ·doi:10.1016/j.scico.2005.03.005
[28] K.Hoffman,P.Eugster,AspectBench编译器的EJP扩展。http://www.cs.purdue.edu/home/kjhoffma/
[29] 霍夫曼,K。;Eugster,P.:通过显式连接点桥接Java和aspectj(2007)
[30] 霍夫曼,K。;Eugster,P.:面向具有方面的可重用组件:模块性和遗忘性的实证研究(2008)
[31] IBM、BEA Systems、Microsoft、Arjuna、Hitachi、IONA、Web服务交易规范,2005年
[32] 爪哇宠物店。https://blueprints.dev.java.net/petstore/
[33] Kiczales,G。;Hilsdale,E。;胡古宁,J。;克尔斯滕,M。;Palm,J。;Griswold,W.:aspectj概述(2001)·Zbl 0982.68552号
[34] Kiczales,G。;兰平,J。;Menhdhekar,A。;Maeda,C。;Lopes,C。;Loingtier,J.-M。;Irwin,J.:面向方面编程(1997)
[35] Kiczales,G。;Mezini,M.:面向方面编程和模块化推理,(2005)
[36] Kienzle,J。;Guerraoui,R.:AOP:这有意义吗?并发和故障案例,(2002)·邮编:1049.68800
[37] S.Kuzins,高效实现AspectBench编译器的around-advice,硕士论文,牛津大学,2004
[38] Laddad,R.:Aspectj的作用:实用面向方面编程,356-390(2003)
[39] Parnas,D.L.:关于将系统分解为模块时使用的标准,《ACM通信》15,第12期,1053-1058(1972)
[40] 普雷霍弗(Prehofer,C.):《面向特征的编程:对象的新视角》(Feature-oriented programming:A fresh look at objects)(1997)
[41] 拉詹,H。;Sullivan,K.:类观点:统一面向方面和面向对象的语言设计,(2005)
[42] C.SantAnna、A.Garcia、C.Chavez、C.Lucena、A.von Staa,《面向方面软件的重用和维护:评估框架》,载于:2003年第17届巴西软件工程研讨会
[43] Smaragdakis,Y。;Batory,D.:Mixin layers:一种面向对象的实现技术,用于细化和基于协作的设计,ACM软件工程和方法论事务11,No.2,215-255(2002)
[44] M.Stochmialek,Aopmetrics公司。http://aopmetrics.tigris.org/
[45] 斯托泽,M。;Graf,J.:使用切入点增量分析支持面向方面软件的发展,(2005)
[46] 沙利文,K。;Griswold,W.G。;Song,Y。;蔡,Y。;肖恩勒,M。;Tewari,N。;Rajan,H.:面向方面设计的信息隐藏接口,(2005)
[47] Tarr,P.L。;Jr.,S.M.Sutton:为软件开发环境编写异构事务,(1993)
[48] 托内拉,P。;Ceccato,M.:重构可分界面:实证评估,IEEE软件工程事务31,第10期,819-832(2005)
[49] 张,C。;Jacobsen,H.-A.:中间件平台中的量化方面,(2003)
[50] Zhao,J.:面向方面系统中的测量耦合,(2004)
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。