`
pleasetojava
  • 浏览: 730049 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

面向方面软件开发研究

阅读更多
计算机应用研究 2005 年
面向方面软件开发研究
郭东亮, 张立臣(广东工业大学计算机学院, 广东广州510090)
摘 要: 系统的某些关注点横切整个系统,无法很好地封装在单个模块里,造成代码混乱和弥散,用面向方面编程AOP 可以解决这些问题。首先介绍了现代软件开发方法及其产生的问题;其次,阐述了AOP 的基本概念,并结合AspectC ++ 演示了如何进行面向方面的编程;再次,描述了如何对UML 扩展以支持对方面建模;然后介绍了面向方面软件开发在实时系统中的应用;最后给出了结论和未来的主要工作。
关键词: 面向方面编程; AspectC ++; UML; 实时系统
中图法分类号: TP311    文献标识码:A    文章编号: 100123695 (2005) 0820036203
Research ofAspect2Oriented Software Development GUO Dong2liang, ZHANGLi2chen(School of Computer, Guangdong University of Technology, Guangzhou Guangdong 510090, China)
Abstract: Someconcernscrosscutallthesystem,whichcannotbeencapsulatedinamoduleinamodularway, resultincode tangling and scattering. Aspect2OrientedProgramming(AOP)canmodularizecrosscuttingconcerns. Presentsmodernsoftware developmentmethodology and its shortage. Secondly this paper presents basic concepts of AOP, and demonstrates aspect2orientedprogrammingusingAspectC++. ThirdlyUMLextensionstomodelaspectsaredescribed. Fourthlythispaperover2views application ofAOSD in real2time systems. Finally conclusion and future focus are given.
Key words: AOP (Aspect2OrientedProgramming); AspectC++; UML; Real2time Systems


首先分析了当前的编程技术,然后提出了缺点,就是无法很好的处理关注点(concerns)
1.面向对象编程
对该方式进行了分析,指出了他的不足之处。无法处理横切多个不相关模块的行为。
2.面向方面编程
2.1 AOP的概念
先介绍了基于java和c++的面向方面的实现。
接着介绍了在AOP中出现的新概念:
(1)连接点(Join Point) 。它是组件代码中的方面可以干涉的点, 如一个函数、一个属性、一个类型(Class, Struct, Union) 。连接点是一个抽象的概念,不用显式定义一个连接点。
(2)切入点( Pointcut) 。它是由切入点表达式( Pointcut Expression)描述的一系列连接点。方面要在切入点影响组件代码的执行。切入点表达式由匹配表达式(用来发现一系列连接点) 、切入点函数(用来从切入点过滤出或映射特定的连接点)和逻辑用算符(用来结合切入点)组成。
(3)通知(Advice) 。当到达由切入点表达式指定的连接点时,Advice 指定要执行的代码。
(4)方面(Aspect) 。它是对类概念的扩展,以模块化方式实现了横切关注点。
(5) 编织器(Weaver) 。用来把方面中定义的代码以一定方式植入组件代码中,这样把非功能代码加入到功能代码中, 改变了系统的结构和行为。
接下来介绍了:用AOP 可以有效地解决代码混乱和分散的问题,AOP 目的就是清晰地分离关注点。下面介绍了AOP可以有效的实现组件和代码的分离(类似于.net中的组件和代码分离,我的理解)。
2.2 用AspectC ++ 编程
又简单的介绍,比较晦涩难懂,没有理解。
2.3 面向方面的建模
近年来,研究者开始考虑如何在软件开发过程中建模方面,这主要集中在如何扩展UML以支持对方面建模[6~8] 。
文献[6] 建议在UML 中加入两个新的元素,一个代表连接点的概念,用内部带有交叉线的圆表示,连接点的定义在圆的下方并括在中括号内,方面在连接点横切功能组件,这里的一个重要的建模考虑就是连接点在方面和组件包的外面;一个代表方面,用底部带有交叉线的框表示,并建议把方面的功能封装在一个UML 包中来维护关注点分离。
原文给出了图片,可以参考,对上面的说明感觉有些抽象,不是很理解。
文献[7] 在没有破坏当前UML 规格说明的情况下对UML 进行扩展,它加入了新的构造型(Stereotype) < < aspect > > 来定义方面, 并提出了基于XML 的方面描述语言(UML eX2 change Format, aspectextension,UML/a),支持开发工具与方面编织器之间的方面模型信息的交换。
文献[8] 提出了一个使用UML 表示的方面开发的方法学,也提出了一个方面约束语言(Aspect Constraint Language, ACL)来约束方面的使用,这样允许控制开发来避免出现不希望的后果。原文给出了图片,可以参考。
AUD (Application UnderDevelopment)实现系统的功能,一个UML 包定义AUD 为一个UML 模板,模板的参数为< class2 Name,methodName >, 模板参数由<< bind >> 下的(className, methodName)绑定。Aspect 为方面的定义,它包括Pointcuts 和Advice 。Aspect Implementation 和Aspect 关联,实现Aspect 。
文献[8] 的ACL 主要包括:限定Aspect 为Const, 不允许修改AUD 的结构和行为;限定Aspect 为Singleton, 使得这个As2 pect 仅有一个实例;
Aspect 和Advice 执行的时间限制( time2 Limit< time > 限制) ;Aspect 何时执行(Timing 限制) ; Aspect 在何处执行(Bind 限制) 。
此处主要介绍了几种不同的建模方式。
4 面向方面在实时系统中的应用
在实时系统和嵌入式系统中也建立了一些模型。
Aleksandra Tesanovic 等人[9] 提出了ACCORD (AspeCtual COmponent2based Real2time system Development)设计方法,也提出了一个RTCOM (Real2Time COmponent Model) 模型。使用ACCORD 开发实时系统的过程是:第一阶段把实时系统按功能和低耦合高内聚的要求分解为一系列的组件;第二阶段把实时系统分解为一系列的方面,方面横切组件和整个系统,这个阶段处理非功能需求和横切关注点;最后按RTCOM 实现组件和方
面。RTCOM 允许把方面编织到组件里,包括三部分,即功能部分、运行时系统依赖部分和组合部分。另外把方面分为三类,即应用程序方面、运行时方面和组合方面。
J iyong Park 等人[10] 把面向方面编程技术应用到实时操作系统开发上。因为在实时操作系统里有许多横切的特征,为了满足日益增长的对实时操作系统快速定制的要求,需要面向方面编程技术,这里把函数看成一系列的基本块,基本块的功能代码可由不同的方面提供,这样横切了函数,且这些基本块可视,提供了图形表示的开发框架;支持类的组装,不同方面里的相同的类可以组成一个大类。
文献[11 ] 展示了如何把面向方面技术应用的分布式实时系统上。分布式实时系统中的非功能需求可以用方面来表达, 本文给出了一个把分布性、时间要求和容错方面加入到一个简单的日志组件中的方法。
该节介绍了三个模型,可以参考!
5 结论
AOP 是一个新的开发方式,因为它可以模块化横切关注点,这样避免了代码混乱和弥散,很好地控制了软件开发的复杂度,提高了软件的重用性和可维护性。现在已受到学术界和产业界的关注。GradyBooch 预言AOP 将崛起[12] 。目前已经展开对面向方面软件开发的研究,但是还不完善,未来的工作将主要解决以下问题:
(1)方面编织器的开发和方面编织器与开发环境的整合。
(2)如何有效地分离横切关注点。
(3)对方面开发的建模,主要集中在如何对UML 进行扩展。
(4)对方面使用的约束,这样以可控的方式使用方面。
(5)如何在需求分析和体系结构设计阶段管理方面。
参考文献:
[1]G Kiczales, J Lamping, A Mendhekar, et al. Aspect2Oriented Pro2 gramming[C]. Proceedings of European Conference on Object2Orien2 ted Programming, 1997.
[2]GregorKiczales, ErikHilsdale, JimHugunin, et al. An Overview of AspectJ[M]. Proc. of ECOOP,Springer2Verlag , 2001.
[3]OlafSpinczyk, AndreasGal, et al. AspectC ++: An Aspect2Orien2 tedExtension toC++[C]. Sydney, Australia: Proceedingsofthe 40th InternationalConferenceonTechnologyofObject2Oriented Lan2 guages and Systems (TOOLS Pacific 2002) , 2002.
[4]Olaf Spinczyk, Pure2systems GmbH. AspectC++ Language Refer2 ence[ EB /OL ]. http: / /www. aspectc. com /, 2003.
[5]Olaf Spinczyk, Pure2systems GmbH. AspectC++ aC++ Compiler Manual[ EB /OL ]. http: / /www. aspectc. com /, 2003.
[6]Mark Basch, Arturo Sanchez. Incorporating Aspects into the UML [C]. Workshopatthe2ndInternationalConferenceonAspect2Oriented Software Development, Boston, Mass. , 2003.
[7]JunichiSuzuki, YoshikazuYamamoto. ExendingUMLwithAspects: Aspect Support in the Design Phase [ C ]. The 3rd Aspect2Oriented Programming(AOP) Workshop at ECOOP,1999.
[8]Naomi Sapir, Shmuel Tyszberowicz, Amiram Yehudai. Extending UMLwithAspectUsageConstraintsin theAnalysisandDesignPhases [C]. Aspect2Oriented Modeling with UML, 2002.
[9]Aleksandra Tesanovic, et al. Towards Aspectual Component2based
Development of Real2time Systems[C]. Tainan: Proceeding of the 9th International Conference on Real2time and Embedded Computing Sys2 tems and Applications (RTCSA 2003) , 2003.
[10] Jiyong Park,Seongsoo Hong. Customizing Real2time Operating Sys2 temswith Aspect2OrientedProgrammingFramework[C]. SOCDesign Conference, 2003. 9662970.
[11 ] Andreas Gal,et al. On Aspect2Orientation in Distributed Real2time Dependable Systems[C]. Proceedings of the 7th IEEE International Workshop on Object2Oriented Real2timeDependable Systems(WORDS 2002), SanDiego,CA, 2002.
[ 12 ] Grady Booch.Grady Booch 预言软件开发的未来[ EB /OL ]. http: / /www2900. ibm.
com/developerworks/cn/rational/r2interview/, 2004.



分享到:
评论

相关推荐

    论文研究-面向方面软件开发研究.pdf

    系统的某些关注点横切整个系统,无法很好地封装在单个模块里,造成代码混乱和弥散,用面向方面编程AOP可以解决这些问题。...然后介绍了面向方面软件开发在实时系统中的应用;最后给出了结论和未来的主要工作。

    面向方面软件开发研究* (2005年)

    系统的某些关注点横切整个系统,无法很好地封装在单个模块里,造成代码混乱和弥散,用面向方面编程AOP 可以解决这些问题。...然后介绍了面向方面软件开发在实时系统中的应用;最后给出了结论和未来的主要工作。

    面向方面的软件开发方法与实现技术研究.pptx

    面向方面的软件开发方法与实现技术研究 面向方面的软件开发方法与实现技术是一种新兴的技术,旨在通过将软件系统划分为不同的方面,从而提高软件的可维护性、可重用性和可扩展性。本文将详细介绍面向方面的软件开发...

    面向云计算组件的软件开发研究 (1).pdf

    本文档《面向云计算组件的软件开发研究》深入探讨了在云计算环境下,如何对现有的软件技术进行改造和创新,以适应云计算环境带来的挑战。 云计算的特点在于能够提供超大规模的并行计算能力,支持虚拟化技术,以满足...

    一种基于面向方面的统一过程软件开发方法

    郑旭飞和张为群的研究提出了一种新的开发方法,将面向方面的思想融入统一过程中,使得软件开发更加高效。他们首先在需求分析阶段就考虑横切关注点,避免了传统方法中将非功能性需求推后处理导致的代码混乱。具体实施...

    面向微服务软件开发方法研究进展_吴化尧1

    面向微服务的软件开发方法是近年来软件工程领域的重要研究趋势,它源于面向服务架构(SOA)的概念,但更强调服务的小型化、独立性和可部署性。微服务架构允许软件系统由一组小型、自治的服务构成,每个服务专注于...

    面向方面软件开发的形式化方法与编译器技术分析研究.pdf

    面向方面软件开发(AOP)是一种编程范式,旨在提高软件设计的模块化,通过将关注点分离到单独的“方面”中,从而减少代码的重复和耦合。AOP的核心概念包括:忠告(Advice)、方面(Aspect)、连接点(Join point)、...

    论文研究-一个面向方面的可信软件开发平台TSCE.pdf

    借助面向方面的设计思想,把可信性作为一种方面融入软件的开发环境,研究实现了可信软件开发平台TSCE。该平台能够在软件研制过程中,一体化地提供可信性需求定制、可信代码自动生成、可信代码自动织入等辅助开发手段...

    面向方面编程方法的研究与应用

    面向方面编程(Aspect-Oriented Programming,AOP)是一种旨在解决软件开发中模块化问题的编程范式。它通过将关注点分离,使得系统中的核心业务逻辑与横切关注点(如日志、事务管理、安全性等)可以独立发展,从而...

    IBM面向对象软件开发和过程

    面向对象软件开发是一种广泛采用的现代编程方法,它基于“对象”的概念,这些对象是现实世界中的实体在软件中的抽象。IBM作为一家全球知名的科技公司,提供了丰富的资源和教程来帮助开发者理解和应用面向对象技术。...

    面向软件开发实践能力的《Java程序设计》教学资源建设.pdf

    总结来看,面向软件开发实践能力的《Java程序设计》教学资源建设是一个系统工程,涉及教学理念、教学内容、教学手段以及教学评价等多方面的改革与创新。该模式的推广与应用,将为高等教育中软件人才培养提供一种新的...

    面向智能化软件开发的开源生态大数据.pdf

    总结而言,面向智能化软件开发的开源生态大数据不仅关注数据的采集与处理,更重视通过多维度的数据分析和挖掘,释放出数据中的智能价值,支持软件工程领域的研究、开发与应用。开源生态大数据作为一种新兴资源,其在...

    综合电子信息系统面向构件的软件开发与集成技术研究.pdf

    综合电子信息系统面向构件的软件开发与集成技术研究,是在网络环境下,如何提高电子信息系统的集成效率和简化开发过程,以满足日益增长的性能需求和市场变化。研究以当前信息技术和数据分析为基础,关注综合电子信息...

    面向对象的有限元软件开发

    面向对象技术在有限元软件开发中的应用是一个涉及结构建模和模拟的计算机科学和工程领域的话题。...随着软件设计模式的不断发展和完善,面向对象的有限元软件开发将继续在科学研究和工程实践中发挥重要的作用。

    基于Java语言的安卓手机软件开发研究.pdf

    本篇文档主要探讨了基于Java语言在安卓手机软件开发中的应用与技术。文档指出,随着网络技术的不断进步,智能手机的发展也实现了质的飞跃,尤其是在应用程序的开发方面。作为智能手机发展的一个核心部分,安卓手机...

    计算机研究 -面向计算机仿真的软件开发若干问题研究.pdf

    《计算机研究 -面向计算机仿真的软件开发若干问题研究》这篇论文由南京航空航天大学的梁春撰写,旨在探讨面向计算机仿真的软件开发中的关键技术和方法。该研究主要包括两个方面的内容:一是针对有限元软件包SHEET....

    体系结构、面向构件的软件开发方法.pdf

    ### 体系结构、面向构件的软件开发方法 #### 摘要解读与核心知识点解析 本文探讨了一种基于体系结构的、面向构件的软件开发方法(ABC),旨在提供一种有效的系统性解决方案,以促进基于构件的软件复用。当前,基于...

Global site tag (gtag.js) - Google Analytics