欢迎来到天天文库
浏览记录
ID:18141802
大小:76.59 KB
页数:5页
时间:2018-09-14
《面向侧面的程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、面向侧面的程序设计AspectOrientedProgramming什么是面向侧面程序设计面向侧面的程序设计(aspect-orientedprogramming,AOP,又称作面向方面的程序设计、观点导向编程)是计算机科学中的一个术语,指一种程序设计范型。该范型以一种称为侧面(aspect,又译作方面)的语言构造为基础,侧面是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscuttingconcern)。面向侧面程序设计起源Xerox(施乐)公司PARC研究中心在1997年的欧洲面向对象
2、编程大会(ECOOP97)上首次提出Aspect-orientedprogramming(AOP)。自2002年起,每年分别在欧洲和美国轮流召开专门的面向侧面软件开发(AOSD)国际会议。与会者包括美国、加拿大、荷兰、英国、法国、丹麦、日本、以色列等。我国一些学校也对AOP给以关注并开展了一些研究工作。从AOP概念提出经过了近十年的时间,这种技术现在已经开始被工业界采用。AOP产生的背景计算机软件设计的一个重要原则,就是要清晰分离各种关注点(separationofconcerns),然后分而治之,各个击破,最后形
3、成统一的解决方案例如:信用卡处理系统核心关注点是处理付款;系统级关注点包括日志、事务、认证、安全和性能等等。软件系统中,某个行为,例如操作日志的记录,存在于软件的各个部分中,这个行为可以看作是横向存在于软件之中,他所关注的是软件的各个部分的一些共有的行为。在很多情况下,这种行为不属于业务逻辑的一部分。这种操作并不是业务逻辑调用的必须部分,但是,我们却往往不得在代码中显式进行调用,并承担由此带来的后果。在目前的技术框架下,通常系统级关注点在逻辑上相互之间彼此正交(相互独立),同时在实现上趋向于和若干核心模块交织。5/
4、5例如:信用卡管理系统的每个核心业务关注点都和安全、日志等系统关注点相联系。纵切关注点软件模块软件模块软件模块软件模块业务逻辑业务逻辑业务逻辑业务逻辑操作日志横切关注点安全检测事务处理现有软件技术的不足目前的实现技术只提供了一维方法学实现系统的关注点,该单一维度一般是核心需求和关注点的模块化实现,其他类型的需求也被迫和该主导维度一致。问题空间是n维的,而解空间是一维的。这种失配必然导致需求和实现之间的失配。缠结现象是现有软件系统中许多不必要的复杂性的核心。’源程序就会变成一些为不同关注目的而编制的,指令的缠结混乱物
5、它增加了功能构件之间的依赖性,分散了构件原来假定要做的事情,提供了许多程序设计出错的机会,使得一些功能构件难以复用,源代码难以开发、理解和发展。某一应用的领域专家,不太可能对分布、认证、访问控制、同步、加密、冗余等问题的复杂实现机制很熟悉,所以就不能保证他们在程序中进行正确的调用。开发人员很难正确预见到未来对程序的新需求相关概念关注点(concern):是指一个特定的目标、概念或者兴趣域。关注点对软件工程有意义的小的、可管理的、可描述的软件组成部分,一个关注点通常只同一个特定概念或目标相关联。从技术的角度,软件系统
6、分别包括核心级和系统级的关注点。核心级关注点(业务)多数情况下可以被很好地分解,并通过编程语言模块化实现(子模块或软构件)。核心级关注点是系统要完成的业务功能。系统级关注点(横向关注点),使用当前的程序设计方法导致在许多构件中要重复包含5/5(扩散)这些代码。关注点分离(separationofconcerns,SOC):标识、封装和操纵只与特定概念、目标相关联的软件组成部分的能力,即标识、封装和操纵关注点的能力。方法(method):用来描述、设计、实现一个给定关注点的软件构造单位。系统级关注点是完成核心级关注点
7、所必须的配套设施,这些配套设施通常被认为是整个系统的系统特性,或者是业务功能的功能约束。横切(crosscut):两个关注点相互横切,如果实现它们的方法存在交集。横切关注点(crosscuttingconcerns):在传统的程序设计语言中,除了主关注点可以被支配性分解方式捕捉以外,还有许多没有被支配性分解方式捕捉到的关注点,这些关注点的实现会弥散在整个软件内部,这时这些关注点同主关注点是横切的。支配性分解(dominantdecomposition):将软件分解成模块的主要方式。传统的程序设计语言是以一种线性的文
8、本来描述软件的,只采用一种方式(比如:类)将软件分解成模块;这导致某些关注点比较好的被捕捉,容易进一步组合、扩展;但还有一些关注点没有被捕捉,弥散在整个软件内部。支配性分解一般是按主关注点进行模块分解的。侧面(aspect):在支配性分解的基础上,提供的一种辅助的模块化机制,这种新的模块化机制可以捕捉横切关注点。从主关注点中分离出横切关注点是面向侧面的程序设
此文档下载收益归作者所有