面向方面程序设计语言研究综述
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ISSN 1673-9418CODEN JKYTA8
Journal of Frontiers of Computer Science and Technology 1673-9418/2010/04(01)-0001-19
DOI :10.3778/j.issn.1673-9418.2010.01.001
E-mail :fcst@
http :// Tel :+86-10-51616056
*The Major Research Program of National Natural Science Foundation of China under Grant No.90718027(国家自然科学基金重大研究计划项目);the Major State Basic Research Development Program of China under Grant No.2007CB310806(国家重点基础研究发展规划(973));the Major Program of Natural Science Foundation of Hubei Province of China under Grant No.2008CDA007(湖北省自然科学基金重点项目).
Received 2009-04,Accepted 2009-07.
面向方面程序设计语言研究综述*
唐祖锴1,3
,彭智勇2+
1.武汉大学软件工程国家重点实验室,武汉430072
2.武汉大学计算机学院,
武汉4300723.武汉理工大学计算机科学与技术学院,
武汉430063Survey of Aspect-Oriented Programming Language *
TANG Zukai 1,
3
,PENG Zhiyong 2+1.State Key Laboratory of Software Engineering ,Wuhan University ,Wuhan 430072,China puter School ,Wuhan University ,Wuhan 430072,China
3.School of Computer Science and Technology ,Wuhan University of Technology ,Wuhan 430063,China +Corresponding author :E-mail :peng@
TANG Zukai ,PENG Zhiyong.Survey of aspect-oriented programming language.Journal of Frontiers of Computer Science and Technology ,2010,4(1):1-19.
Abstract :After more than 10years development ,
aspect-oriented programming (AOP )languages have been an im -portant means to control the complexity of software systems ,to improve software modularity and to support software development flexibility ,and it has become a mainstream research field in the software engineering community.This paper surveys the update-to-date research of AOP languages on the main language features ,implementation tech -nologies ,specific classification ,and discusses the potential research directions of AOP languages.Key words :aspect-oriented programming (AOP
);aspect ;join point ;pointcut ;advice ;weave 摘要:作为控制软件复杂性、提高软件模块化程度、增强软件开发灵活性的重要技术手段之一,面向方面程序
Journal of Frontiers of Computer Science and Technology计算机科学与探索2010,4(1)
1引言
近年来,面向方面程序设计方法(aspect-oriented programming,AOP)[1]的研究与应用在国内外都得到了极大重视,并迅速发展。作为对面向对象程序设计方法(object-oriented programming,OOP)的补充,AOP解决的是软件系统中的横切关注点(crosscutting concern)问题,以此进一步提高软件系统的模块化程度。
如同其他软件开发方法的演化过程一样,对AOP的研究最早也是从程序设计语言的变化开始的,其中最具代表性的当属PARC研究中心对Java扩展后所开发的AspectJ[2],并在其后出现了大量面向商用或学术研究的AOP语言以及技术文献,从而为相关研究奠定了强大的发展基础和动力。近年来,针对AOP的研究早已超出传统的程序设计语言领域,并逐步扩展到整个软件生命周期以及各种支持工具和开发环境的研究和应用,而被统称为面向方面的软件开发方法(asepct-oriented software development)[3]。AOP 语言作为一种技术基础和核心,则一直是最活跃、发展最迅速的领域,并推动着AOP相关研究的发展。有必要对目前国际上的研究成果进行系统地总结和整理,以期为今后更深入地研究打下基础。文章特别针对AOP语言这一领域,对其主要语言特性和关键实现技术进行综述,并探讨了今后的发展与研究方向。
2AOP语言的技术背景
一般而言,可以认为软件系统是由若干满足用户需求的关注点(concern)组成的,而一个关注点就是软件要解决的一个问题。在OOP方法中,这些关注点往往被映射为规模不等的模块或类。实际开发过程中,关注点可以被分为两类:核心关注点(core con-
cern)和横切关注点(crosscutting concern)。核心关注点通常涉及的是软件系统的核心业务逻辑,如ATM 系统中的取款、查询、打印等功能。而像身份认证、交易日志等功能虽然不是系统的核心业务逻辑,但也是系统的重要组成部分,并且其功能所覆盖的范围往往横跨多个业务逻辑模块,因而被称为横切关注点。尽管目前的OOP方法能够让开发人员在需求分析和设计阶段将核心关注点和横切关注点较好地分离开,但是在实现阶段,它们的代码却往往交织在一起。典型的表现就是,对横切关注点中的功能调用语句显式地散布于各个相关的核心关注点的实现代码中。在复杂的软件系统中,这种现象会造成代码的交织与混乱(code tangling and scattering)[1],进而为系统的重用、维护和扩展带来负面影响。造成这种现象的原因在一定程度上是由OOP的局限性所带来的。虽然OOP能够通过继承机制较好地解决模块之间的纵向关系,但是却缺乏有效的手段来封装模块之间的横向关系,从而使得核心关注点和横切关注点之间的交互关系无法很好地从业务功能中分离出来。
针对上述问题,研究人员对“separation of concerns”提出了很多不同的解决方案,如meta-level program-ming[4]、adaptive programming[5]、composition filters[6]、subject-oriented programming[7]、design patterns[8]等。但这些技术要么由于其实现机制过于复杂,要么由于缺乏编程工具的直接支持而使得一般用户不易理解和使用。随着研究的进展,Gregor Kiczales et al[1]在1997年的ECOOP大会上提出的AOP方法以及在此基础上开发的AspectJ[2]语言,作为对OOP的一种补充,日益受到广大学者与技术人员的重视,逐渐成为当前的研究热点。在AOP中,原本分散或交织在核心
设计语言经过十多年的发展,日益受到软件研究者和实践者的关注,并发展成为软件工程的一个重要的研究领域。基于该领域近十年来的研究进展,分析总结了面向方面程序设计语言中的主要语言特性和关键实现技术;按照不同的语言特性对面向方面程序设计语言进行分类,并探讨了其发展与研究方向。
关键词:面向方面程序设计;方面;连接点;切入点;通知;织入
文献标识码:A中图分类号:TP311
2