面向侧面的程序设计.docxVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE PAGE 1 / 5 面向侧面的程序设计 Aspect Oriented Programming 什么是面向侧面程序设计 面向侧面的程序设计(aspect-oriented programming,AOP,又称作面向方面的程序设计、观点导向编程)是计算机科学中的一个术语,指一种程序设计范型。该范型以一种称为侧面 (aspect,又译作方面)的语言构造为基础 ,侧面是一种新的模块化机制,用来描述分散在对象、类或函数中的横切关注点(crosscutting concern)。 面向侧面程序设计起源 Xerox(施乐)公司 PARC 研究中心在 1997 年的欧洲面向对象编程大会(ECOOP97)上首次提出 Aspect-oriented programming(AOP)。自 2002 年起,每年分别在欧洲和美国轮流召开专门的面向侧面软件开发(AOSD)国际会议。与会者包括美国、加拿大、荷兰、英国、法 国、丹麦、日本、以色列等。我国一些学校也对AOP 给以关注并开展了一些研究工作。从AOP 概念提出经过了近十年的时间,这种技术现在已经开始被工业界采用。 AOP 产生的背景 计算机软件设计的一个重要原则,就是要清晰分离各种关注点(separation of concerns),然后分而治之,各个击破,最后形成统一的解决方案 例如:信用卡处理系统核心关注点是处理付款;系统级关注点包括日志、事务、认证、安全和性能等等。 软件系统中,某个行为,例如操作日志的记录,存在于软件的各个部分中,这个行为可以看作是横向存在于软件之中,他所关注的是软件的各个部分的一些共有的行为。在很多情况下,这种行为不属于业务逻辑的一部分。这种操作并不是业务逻辑调用的必须部分,但是, 我们却往往不得在代码中显式进行调用,并承担由此带来的后果。 在目前的技术框架下,通常系统级关注点在逻辑上相互之间彼此正交(相互独立),同时在实现上趋向于和若干核心模块交织。 例如:信用卡管理系统的每个核心业务关注点都和安全、日志等系统关注点相联系。 纵切关注点 纵切关注点 操作日志业业 操作日志 业 业 务 务 安全检测 逻 逻 辑 辑 事务处理 业 业 横 务 务 切 关 逻 逻 注 点 辑 辑 现有软件技术的不足 目前的实现技术只提供了一维方法学实现系统的关注点,该单一维度一般是核心需求和关注点的模块化实现,其他类型的需求也被迫和该主导维度一致。 问题空间是n 维的,而解空间是一维的。这种失配必然导致需求和实现之间的失配。缠结现象是现有软件系统中许多不必要的复杂性的核心。’ 源程序就会变成一些为不同关注目的而编制的 ,指令的缠结混乱物 它增加了功能构件之间的依赖性,分散了构件原来假定要做的事情,提供了许多程序设计出错的机会,使得一些功能构件难以复用,源代码难以开发、理解和发展。 某一应用的领域专家,不太可能对分布、认证、访问控制、同步、加密、冗余等问题的复杂实现机制很熟悉,所以就不能保证他们在程序中进行正确的调用。开发人员很难正确预见到 未来对程序的新需求 相关概念 关注点(concern):是指一个特定的目标、概念或者兴趣域。关注点对软件工程有意义的小的、可管理的、可描述的软件组成部分,一个关注点通常只同一个特定概念或目标相关 联。从技术的角度,软件系统分别包括核心级和系统级的关注点。 核心级关注点(业务)多数情况下可以被很好地分解,并通过编程语言模块化实现(子模块或软构件)。核心级关注点是系统要完成的业务功能。 系统级关注点(横向关注点),使用当前的程序设计方法导致在许多构件中要重复包含 (扩散)这些代码。 关注点分离(separation of concerns,SOC):标识、封装和操纵只与特定概念、目标相关联的软件组成部分的能力,即标识、封装和操纵关注点的能力。 方法(method):用来描述、设计、实现一个给定关注点的软件构造单位。 系统级关注点是完成核心级关注点所必须的配套设施,这些配套设施通常被认为是整个系统的系统特性,或者是业务功能的功能约束。 横切(crosscut):两个关注点相互横切,如果实现它们的方法存在交集。 横切关注点(crosscutting concerns):在传统的程序设计语言中,除了主关注点可以被支配性分解方式捕捉以外,还有许多没有被支配性分解方式捕捉到的关注点,这些关注点的实现会弥散在整个软件内部,这时这些关注点同主关注点是横切的。 支配性分解(dominant decomposition):将软件分解成模块的主要方式。传统的程序设计语言是以一种线性的文本来描述软件的,只采用一种方式(比如:类)将软件分解成模块; 这导致某些关注点比较好的被捕捉,容易进一步组合、扩展;但还有一些关注点没有被捕捉, 弥散在整个软件内部。支配性分

文档评论(0)

tianya189 + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档