面向方面编程 贾杏丹

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
从上述的比较中可以看到,AOP技术在处理系统横切关注点时是优于OOP技术的。但是,这并不意味着AOP技术是可以取代OOP技术的。相反,它的出现只是可以很好的弥补OOP在处理横切关注点时所表现的不足。对于系统中核心关注点的实现,仍然需要使用OOP技术。而在处理横切关注点时,可以使用AOP技术对横切需求进行模块化实现。从广义上说,AOP是OOP技术的发展。
摘要
面向方面编程是在现有的面向对象编程的基础之上,通过引入一个“方面”(相对于核心类而言)概念而产生的。它在实现上分离和模块化系统的横切关注点。先分离出方面模块,随后再织入到核心类中。面向方面的软件开发方法使横切于整个系统中的关注点的实现更具有模块性,容易实现系统的演化。系统功能构件设计时不需要考虑散杂在对象中的关注点,这样提高了模块的可追踪性、模块的可重用性、系统的可维护性。面向方面建模在软件开发的各个阶段用一致的方法来详述、可视化、构造和文档化方面相关产品,这样在整个软件开发过程可以使用面向方面技术。
数字图书馆组织了一系列与平台无关、面向对象、分布式的数字化信息资源并且提供相关的服务,它应该具有以下一些特征[2][4]:
(1)数字图书馆拥有海量的数字化资源,其信息度量单位不再是KB、MB,而是GB、TB甚至PB。数字化的资源又是多种媒体(如文字、图像、音频、视频、虚拟空间等)的,具有多种存储和压缩格式。
关键字:方面;面向方面的软件开发;统一建模语言;数字图书馆
Abstract
TheAspect-Oriented paradigm builds on the existing Object Oriented paradigm by introducing the notion of an aspect as opposed to a core class.The AOPseparates and modularizescrosscutting concerns at implementation ing this technique, aspects are placed in separate modules that are then woven together with base classes to form an application.The AOP makes theimplementationof thecrosscutting concernsof the system moremodularized ,and more easy toimplementtheevolvementof the system.It isunnecessarytoconsiderthecrosscutting concernsof the system when wedesignthefunctioncomponentof the system.Consequentlyitincreases thetraceability, reusabilityandadaptabilityofsoftware.Aspect-OrientedModeling(AOM) specifies, visualizes, constructs and documents aspect relatedartifacts in a consistent way at other stage of software development. Thuswhole software development process can use aspect-oriented technique.
数字图书馆是一个十分复杂庞大的系统,有很多非功能需求,且这些非功能需求往往横切整个系统,如日志、性能问题、安全、上下文相关错误处理、Qos监测等等。传统的系统分析设计的方法难以保证开发的效率和质量。这就要引入面向方面的开发方法,以设计更为合理的系统,加速开发进程,改进软件的质量,方便地集成已有的数字图书馆信息资源,减轻数字图书馆开发的复杂性。另外使用AOP的方法组建系统也利于满足数字图书馆的日益增长的扩展需求。
Keywords:aspect; AOSD;UML;the digital library
第一章绪论
1.1面向方面编程的发展现状
上世纪90年代中期,施乐公司的帕洛阿尔托研究中心(XeroxP ARC)首先提出了AO的编程技术。但是由于当时软件开发主要偏重于对软件功能的实现,而面向对象(00)可以很好的满足要求,因此AO并未取得多大的发展。然而从上个世纪末至今,由于互联网中分布式系统的广泛应用,用户对软件的非功能需求(安全性,健壮性等)亦提出很高的要求,00的不足之处和AO的优势便凸显出来,从而吸引了大批研究人员开始对AO进行研究:如对开发方法的改进;对体系框架的重新设计使其满足特定的需求;对AO概念、细节的补充、完善以及对原来各种语言添加
以前关于AOP的研究主要集中在把面向方面的原理整合到软件的最后实现里的编程技术,近年来,研究者开始考虑如何在软件开发过程中建模方面,这主要集中在如何扩展UML以支持方面建模[ ],[]中建议在UML中加入两个新的元素,一个代表连接点(join point)的概念,方面在连接点横切功能组件,一个代表方面,并建议把方面的功能封装在一个UML包中来维护关注点分离。[]在没有破坏当前UML说明书的情况下对UML进行扩展,它加入了新的构造型(stereotype)aspect,并提出了基于XML的方面描述语言UML/a,这样支持开发工具与方面编织器之间的方面模型信息的交换。[]提出了一个使用UML表示的方面开发的方法学,也提出了一个方面约束语言ACL(Aspect Constraint Language)来约束方面的使用,这样允许控制开发来避免出现不希望的后果。
AOP中处理横切关注点的方法非常类似于C++语言里面的内联函数或者公共类的调用,区别在于:内联函数是一个被明确定义了的函数,出现在类的内部。而AOP中,没有在类的内部明确定义类似于内联函数这样的东西,而是在类的外部,把类的某个成员函数,比如类的属性的读写,公共函数,公共方法等定义为切入点,然后控制在切入点上执行相应的横切关注点。
AO特性等。
虽然现阶段的AO还处于相当不完善的阶段:它只能应用于很少的几种语言环境下并且必须掌握源代码才能进行织入,还有许多概念没有同一和完善。但以RUP之父工var Jacobson为代表的科学家们仍对AO推崇备至,他们认为AO将最终改变整个软件开发方式,并且更完美的实现“用例驱动”的开发思想
目前主流的程序设计技术是面向对象的程序设计,这种思想将数据及其相关的行为抽象为单独的概念或物理实体,表现了良好的封装性和模块性。在编写复杂程序,比如图形用户界面、操作系统和分布应用程序等,以及维护源代码的可理解性方面,OOP表现了强大的能力。
但是人们也发现,对象技术不能很好地处理如下问题:将牵涉到全局限制和总体行为的系统责任局部化;适当地分解需求和划分系统责任,使之能够模块化地实现;应用领域特定知识。实际上,不管是采用OOP技术还是过程型技术,都不能很好地解决这些问题。AOP的出现,正是为了改进上述程序设计方法学的不足。AOP被视为是后面向对象时代的一种新的重要的程序设计技术。
(2)数字化资源并不是孤立的,而是相互关联的动态的。数字图书馆是数字化资源的统一,可以通过一定的相关关系,由特定的协议和存取方法来查找和访问这些数字化资源。
(3)数字图书馆必须为用户提供统一的访问手段,能够让用户透明方便地获取所需的信息而不必关心这些信息的具体位置。对数字资源的检索应该是智能化、交互式的,对全文、多媒体信息、多语言信息的检索都可以达到很好的查全率和查准率。
Thedigitallibraryis a socomplexsystem with manynon-functional concerns,such as logging,performance analysis, security, context related error handling, QoSmonitoring, etc(alwaysscatterin the whole system) . So the it is verydifficultytoguaranteetheefficiencyandqualityof the software withtraditionarymethods ofsystems analysisand design .In order to design morelogicalsystem,acceleratedevelopment process,improvequalityof software,weadopttheAspect-Orientedsoftwaredevelopment .It also makes it moreconvenienttointegrateresourceof theseexistingdigitallibrary, andalleviates thecomplicationof digitallibrary’s development .Otherwisewith AOP tobuildsystem isfavourabletosatisfytheincreasing extending requirement of the digital l发展及基于Internet网络应用日益普及的今天,传统图书馆正在向自动化、网络化、电子化的数字化方向发展,这是目前网络信息资源开发和研究的热点。数字图书馆的建设涉及到信息资源数字化、多媒体数据库、分布式网络、信息管理系统结构等多方面的问题,需要有效地集成和应用最新的信息技术。如何在宏观上有效地把握和组织,并运用到数字图书馆的开发建设上,是数字图书馆研究的重点。UML(The Unified Modeling Language,即统一建模语言)是一种编制系统蓝图的标准化语言,可以对复杂的系统建立可视化的系统模型,目前已经被工业标准化组织OMG(Object Management Group)接受,一经推出便得到许多著名的计算机厂商如Microsoft、HP、IBM、Oracle等的支持,在国际上的应用日益广泛。数字图书馆的开发建设是一个复杂的软件工程,需要集成不同的操作系统、数据库和应用软件,有众多不同级别的用户、管理员,满足图书馆从书目查询、普通和电子书刊借阅到提供网上信息服务、资源共享等各种需求。用传统的系统开发和集成的分析设计方法难以保证效率和质量,UML的特点及数字图书馆的要求,决定UML在数字图书馆中应该有很好的应用前景。
(4)数字图书馆建立在异构平台上,具有分布、开放的信息结构,高速、可靠的网络环境是其运行的基础。它突破了时间、空间的限制,让用户可以在任何地方、任何时间获取自己所需的信息。在此基础上提供的导航式和个性化的服务,使服务内容更多样、服务模式更广泛,这是对传统图书馆服务功能的突破。
图1数字图书馆模式
数字图书馆的模式,可以用图1简单说明,通过图1也反映出数字图书馆的基本特征。用户通过网络和通信系统,连接到数字图书馆的咨询系统,通过这个统一的访问界面,用户可以透明地获取各种信息资源。
1.2国内外数字图书馆研究概况
数字图书馆是一种拥有多种媒体、内容丰富的数字化资源,是一种通过数字手段为用户方便、快捷地提供信息的服务机制。数字图书馆(Digital Library)这一概念最早是20世纪90年代初由美国科学家提出的。“Digital”侠义上可理解为“图书馆”的意思,这是相对于传统图书馆而言;广义上“Digital”可理解为“库”的概念,它是众多数字化信息和服务的集合。从根本上说,数字图书馆的目标是为了解决网络环境下的数字化信息资源的组织、查询与服务问题。它所处理的对象是网上的数字信息,希望能提供类似于传统图书馆的良好的信息服务,如有序化的组织、结构化的存储、高效的检索以及友好的查询等。
相关文档
最新文档