面向方面在软件组件中的应用

时间:2022-08-18 04:23:06

面向方面在软件组件中的应用

摘要:传统的基于组件的软件开发方法大部分都集中在功能分解上,其并没有考虑到横切关注点对组件的影响。而面向方面技术就是以解决大规模系统中的横切问题为目的的,其主要是先分离出方面模块,然后再织入核心类中。文中提出了采用面向方面的编程思想,将其应用到软件组件的开发中。

关键词:面向方面;横切;关注点分离;软件组件

中图分类号:TP311.52 文献标识码:A文章编号:1007-9599(2012)04-0000-02

随着计算机软件的的飞速发展,基于组件的软件开发技术越来越成熟,运用该开发技术使得代码的重用率得到了很大的提高,同时简化了软件开发过程,缩短了开发周期。接口提供了组件交互所需的全部信息,因此组件之间的交互是要通过组件所提供的接口来实现的。面向方面编程(AOP)可以独立于继承层次结构而应用改变类或对象行为的方面。它的核心思想是将系统的非功能性横切关注点抽象成方面,模块化非功能性需求。面向方面编程优化了对实时约束、安全策略、异常处理、日志功能等横切整个系统的关注点的处理。

一、AOP技术[1]

面向方面编程是一种基于关注分离的新型软件开发,它主要是通过引入实现横切关注点的方面来获得更高的功能性和非功能性关注点的分离。面向方面使开发者能够很容易响应已有软件系统中未预期的变化,并且可以重用已验证和设计好的软件组件,这是面向方面方法的一个优点。

为了能够更好地掌握面向方面的技术,应该彻底理解以下这些AOP中的术语。(1)横切关注定:软件开发所强调的关注点,既有用户/需求级的,也有设计/实现级的。(2)方面:方面是一个设计成实现某个关注点的模块单元。基于不同的方面语言,方面能够层次化地构建,方面语言也可以提供独立的机制来定义某个方面,同时制定它与底层系统的交互。(3)连接点:连接点主要强调是一个具体的“点”概念。(4)切点:一系列连接点通过与或非操作组成切点。它是用于声明连接点中关注的AspectJ机制,用来发起一份通知。(5)通知:通知是一种在连接点执行的行为。其包含自身的一组规则,此规则规定了何时调用通知,这是与被触发的连接点相关的。(6)织入:织入是一个动态过程,它是将方面代码利用方面编织器织入到核心代码中,以便在适当时候触发建议代码的执行。

二、软件组件

软件组件是伴随着开发过程复用程度、开发过程图形化程度及开发语言本身的不断提高而产生的。它经历由汇编语言、高级语言、面向对象到面向组件的多次变革。基于组件的软件开发技术符合软件工程的设计原则,同时也能很好的达到有效性、可维护性、可复用性、可适应性等目标。组件的主要目的是为了解决共性的业务问题,对有相似性,普遍性、反复重复出现问题分析的基础上,排除个性,提取不同问题间的共性[2]。

由于组件技术具有软件更新快、规模大、强调协作等特点,所以它和适合现代软件环境。软件组件就是一个封装的、规范的、可重用的软件模块,其不仅是组织系统的基本单元,并且还是独立的二进制单元。基于组件的开发方法是在组件复用的基础上通过系统分析、组件定位、组件组装来实现系统。而基于高质量组件的系统开发过程有效提高了软件的复用率,确保了软件的质量,缩短了产品从设计到投入市场的时间[3]。

三、面向方面在软件组件中的应用

(一)面向方面的组件描述

基于组件的系统开发主要是将称为软件组件的系统部分组合成完整的系统。在理想状态下,组件使用一种可以支持组件高可重复性的技术来实现,它的使用者需要能够在运行时理解和正确地插入组件。组件封装了数据和功能,其一般提供一些事件同时是自述性的,这其中有许多可以以“即插即用”的方式动态插入到运行的系统中。在文献[4]中提出在需求层次使用方面(横切关注点)来提高组件描述能力,事实证明它是成功的。

(二)面向方面的组件设计

面向方面的组件主要是充分利用组件和面向方面的优势,在系统需求的驱动下,从组件库中选择组件,同时从方面包中选择方面,经过合适的配置已生成需要的系统。组件的模型可以分为功能部分、运行部分和组合部分。

面向方面的组件设计过程概括为:第一步开发者将组件描述细节化为细节的设计;第二步设计实现的解决方案。其中,开发者还可以将方面的描述细化到某个层面,在描述设计时,还可以创建附加的设计图,而这每个设计图重点将会集中在影响相关组件的专门方面。

(三)面向方面的组件实现

通过使用标准的面向方面交互的集合,能够极大的解耦许多公共组件的交互。面向方面组件的实现步骤:第一步主要是通过方面信息扩展组件模型。在某些实时系统中,大量的非功能属性具有很强的依赖性,而当前的实时系统的某些非功能性和可预测性等重要的因素影响,使组件模型无法进行描述,所以要对组件模型进行扩展,如图1所示。第二步主要是组件的实现,如图2所示,方面信息提供了描述和实现反射、结构交互的方式。其中反射技术为系统关注点提供了自省和自适应的功能,我们利用反射技术不但可以降低开发的成本,还能增强系统的性能。第三步主要是完成组件与它们相关联的编码方面信息一起被部署,如图3所示。每个应用级的组件都提供了一个元空间,这些元空间通过一些层次分明的元模型组成的。而这些模型可以提出多种视图,来适应资源、拦截器和横切关注点。第四步完成组件方面编程在运行时被访问和使用, 如图4所示。元模型通过一个组件图来访问组件的软件体系结构,在运行期间,这个元模型可以发现同时改变其自身的架构,使用方面的自省操作去发现匹配所给的连接点表达式的组件元素。

四、结束语

本文主要是把面向方面的思想运用到软件组件开发的应用中。充分利用组件和面向方面的优势,来描述、设计和实现面向方面的组件的应用。而下一步的工作方向为:怎样把面向方面的思想运用到组件测试上,来充分发挥面向方面的优点。

参考文献:

[1]邓惠敏,张立臣,邓建波.基于面向方面和UML的实时系统建模研究[J].计算机技术与发展,2010,12(04):1673-629X.

[2]刘宇.浅谈组件技术之于软件工程的变革[J].计算机光盘软件与应用,2011,13(02):1007-9599

[3]Szyperski C,Gruntz D,Murer S. Component software:Beyond object-oriented programming[M].[s.l.]:Addison-Wesley,Professional,2002.

[4]Grundy,J.1999.Aspect-oriented requirements engineering for component-based software systems.In 4th IEEE Int’l Symp.Requirements Engineering,(Limerick,Ireland).IEEE,84-91.

基金项目:国家自然科学基金项目(61173046),广东省自然科学基金项目(S2011010004905)

[作者简介]杨敏(1986-),女,硕士,主研方向:面向方面,分布式实时系统;张立臣,博士,教授,研究方向为分布式处理和实时系统等。

上一篇:医疗设备配套电脑的管理与维修 下一篇:主题探究性学习网站建设的探索与实践