• 回答数

    4

  • 浏览数

    143

宝妮Angela
首页 > 学术论文 > 软件定义一切主题论文

4个回答 默认排序
  • 默认排序
  • 按时间排序

大馋猫皮皮

已采纳

软件体系结构论文:一种面向方面软件体系结构模型摘 要: 为了分离软件系统中的核心关注点和横切关注点,通过引入面向方面软件开发的思想设计了一种面向方面软件体系结构模型,并详细分析了该模型的三个基本构成单元,即构件、连接件和方面构件。最后通过一个网上支付实例验证了该模型具有一定的理论意义和实用价值。关键词: 面向方面软件体系结构;横切关注点;构件;连接件;方面构件20世纪60年代的软件危机使得人们开始重视软件工程的研究。起初,人们把软件设计的重点放在数据结构和算法的选择上,然而随着软件系统规模越来越大,对总体的系统结构设计和规格说明变得异常重要。随着软件危机程度的加剧,软件体系结构(software architecture)这一概念应运而生。软件体系结构着眼于软件系统的全局组织形式,在较高层次上把握系统各部分之间的内在联系,将软件开发的焦点从成百上千的代码上转移到粒度较大的体系结构元素及其交互的设计上。与传统软件技术相比,软件体系结构理论的提出不仅有利于解决软件系统日益增加的规模和复杂度的问题,有利于构件的重用,也有利于软件生产率的提高。面向方面软件开发(AOSD)认为系统是由核心关注点(corn concern)和横切关注点(cross-cutting concern)有机地交织在一起而形成的。核心关注点是软件要实现的主要功能和目标,横切关注点是那些与核心关注点之间有横切作用的关注点,如系统日志、事务处理和权限验证等。AOSD通过分离系统的横切关注点和核心关注点,使得系统的设计和维护变得容易很多。Extremadura大学的Navasa等人[1]在2002年提出了将面向方面软件开发技术引入到软件体系结构的设计中,称之为面向方面软件体系结构(aspect oriented software architecture,AO-SA),这样能够结合两者的优点,但是并没有给出构建面向方面软件体系结构的详细方法。尽管目前对于面向方面软件体系结构这个概念尚未形成统一的认识,但是一般认为面向方面软件体系结构在传统软件体系结构基础上增加了方面构件(aspect component)这一新的构成单元,通过方面构件来封装系统的横切关注点。目前国内外对于面向方面软件体系模型的研究还相对较少,对它的构成单元模型的研究更少,通常只关注方面构件这一构成单元。方面构件最早是由Lieberherr等人[2]提出的,它是在自适应可插拔构件(adaptive plug and play component,APPC)基础之上通过引入面向方面编程(AOP)思想扩展一个可更改的接口而形成的,但它关于请求接口和服务接口的定义很模糊,未能给出一个清晰的方面构件模型。Pawlak等人[3]提出了一个面向方面的框架,该框架主要包含了一个方面构件模型———Java方面构件(Java aspect component,JAC),但该方面构件模型仅包含了切点(pointcut),并把AOP中装备(advice)集成到了切点的表达式中,它主要从实现的角度进行了阐述,并没有给出详细的方面构件模型。本文没有只关注面向方面软件体系结构中方面构件这一构成单元模型,还详细分析了它的另外两个构成单元,即构件和连接件,因为面向方面软件体系结构各部分之间是相互关联的。1面向方面软件体系结构相关概念面向方面软件体系结构涉及诸多概念,以下将分别介绍。软件体系结构在软件工程领域有着广泛的影响,但当前仍未形成一个统一的、标准的定义。目前国内外普遍认可的看法是软件体系结构包含构件、连接件和约束[4]。其中约束描述了体系结构配置和拓扑的要求,确定了体系结构的构件与连接件的连接关系。这样就可以把软件体系结构写成软件体系结构(software architecture)=构件(components)+连接件(connectors)+约束(constraints)构件是软件体系结构的基本元素之一。一般认为,构件是指具有一定功能、可明确辨识的软件单位,并且具备语义完整、语法正确、有可重用价值的特点,然而目前对于构件的具体结构及构成并没有一个统一的标准[5],而且一些主要的构件技术也没有使用相同的构件类型。另外,当前被广泛接受的构件定义并不包含具体的软件构件模型(software component model)。例如,Szyperski等人[6]给出了软件构件一个很有名的定义:软件构件是一个仅带特定契约接口和显式语境依赖的结构单位,它可以独立部署,易于第三方整合。但是关于软件构件模型有一个被普遍接受的观点是:软件构件是一个具有服务提供和服务请求功能的软件单元[7]。连接件是软件体系结构另一个基本的构成元素,是用来建立构件间交互以及支配这些交互规则的构造模块。连接件最先是由Shaw[8]提出来的,她建议把连接件作为软件体系结构中第一类实体,用来表示普通构件之间的交互关系。目前对于连接件尚未形成统一的认识,尽管在软件体系结构中强调了连接件存在的必要性,但是关于连接件模型的研究还很少,连接件的实际应用还不成熟。面向方面软件体系结构在传统软件体系结构的基础上增加了方面构件单元。通常认为,方面构件是封装了系统横切关注点的一类特殊的构件。目前关于方面构件模型的研究还处于起步阶段。2面向方面软件体系结构模型由于传统软件体系结构模型包含构件、连接件和约束,而面向方面软件体系结构是在传统软件体系结构的基础之上扩展了方面构件,所以面向方面软件体系模型结构包含构件、连接件、方面构件和约束。其中约束描述了面向方面体系结构配置和拓扑的要求,确定了体系结构的构件、连接件和方面构件之间的连接关系,而构件、连接件、方面构件是它的三个基本的构成单元。以下对这三个构成单元的模型进行详细的设计。构件模型构件模型由以下几个要素构成(图1):(a)端口。构件的服务请求和服务提供功能是通过端口来实现的。端口是构件与外部环境进行交互的惟一通道。一般的构件模型通常采用两种端口,即双向端口和单向端口。在使用双向端口的构件模型中,服务请求和服务提供功能可以在同一个端口中实现。本文中的构件模型使用单向端口,此种端口分为请求端口和服务端口两种类型。(a)服务端口。构件通过服务端口向其他构件提供服务。构件通过服务端口向其他构件的请求消息进行应答,返回响应消息。每个服务端口对应一个接口。(b)请求端口。构件通过请求端口向其他构件请求服务。构件为了实现自己的业务功能,需要通过请求端口向其他构件发送请求消息。每个服务端口也对应一个接口。(b)接口。它定义了一个到多个业务功能。这些业务功能由服务端口进行提供,并由请求端口进行使用。一个接口限定了一个特定端口可以进行的交互功能,接口是构件间交互的契约。通常的接口类型有:Java Interface、WSDL 1.1 portTypes和WSDL 2.0 Interfaces等,也可以自定义接口类型。(c)属性。与类或对象相似,构件也具有属性,属性可以在构件使用前进行配置,它能够反映构件在交互过程中状态的变化。连接件模型连接件是用来建立构件间交互以及支配这些交互规则的体系结构构造模块。连接件为构件间信息交互提供传输和路由服务。在最简单的情况下,构件之间可以直接完成交互,这时体系结构中的连接件就退化为直接连接。在更为复杂的情况下,构件间交互的处理和维持都需要连接件来实现。对于构件而言,连接件是构件的粘合剂,是构件交互的实现,也可以看做是一种特殊的构件[8]。与构件相似,连接件也具有端口。连接件的端口可分为两种类型,即源端口(source port)和目标端口(target port)。源端口用于接收构件请求端口中的消息,目标端口用于向构件服务端口中输入消息。连接件通常需要使用一种合适的绑定(binding)机制,构件的请求端口使用这种绑定机制来描述服务请求的方法,构件的服务端口也使用这种机制来描述构件进行请求的方式。常用的绑定机制有:WebService Binding和JMS Binding等,也可以自定义绑定机制。与构件一样,连接件也具有属性,来表示构件间交互的状态变化,如图2所示。复合构件模型构件可分为两种,即原子构件和复合构件。前者是不可再分的构件。后者是可再分构件,它封装了若干个子构件。子构件间通过连接件相互连接,且子构件的端口也可以暴露成为复合构件的端口,子构件也可能是复合构件。如图3所示:复合构件A包含两个子构件B和D,子构件B和D通过连接件C进行相连,构件B的服务端口E暴露成为复合构件A的服务端口F,其请求端口G暴露成为A的请求端口H。方面构件模型方面构件是面向方面软件体系结构的一个核心的构成单元,它封装了横切关注点,这是与传统软件体系结构最大的不同之处。图4给出了方面构件模型,与普通构件一样,方面构件也有服务端口和请求端口以及属性,但是它还有普通构件所没有的方面端口。当一个构件具有一个方面端口时,即可认为此构件就是方面构件。一个方面端口中包含若干个方面,这与一般面向方面编程(AOP)技术中方面概念有所不同。面向方面编程具有以下四个基本概念:方面(aspect)、连接点(joinpoint)、通知(advice)和切点(pointcut)。连接点是应用程序执行过程一个定义明确的位置,如方法调用是一种典型的连接点。切点是一系列连接点的集合,是方面的作用点。通知表述了在切点所选定的连接点处要执行的动作,常见通知类型有before、around和after等,分表代表在连接点之前、连接点附近和连接点之后执行相应的通知代码。方面是用来描述和实现横切关注点的基本单位,由切点和通知构成。方面端口中的方面横切关注的是构件,这与一般AOP(如AspectJ)横切关注的对象(object)不同,由于构件能够表达对象所不能表达的请求服务的能力[9],这使得方面端口中方面所采用的连接点模型和切点语言具有很大的不同。连接点模型该连接点模型包含两种不同类型的连接点,即构件服务端口中的服务提供操作和请求端口的服务请求操作。由于构件的内部结构通常被视为黑盒,因此连接点模型应该仅考虑构件的外部可见元素,如构件请求端口和服务端口中的服务操作。如果连接点模型包含构件的属性,那么它将会破坏构件的分装性。切点语言用来选用连接点的切点语言基于切点表达式,表1给出了切点的五个组成部分,即component、jp_type、port、interface和service,然后分别对其进行了说明。其中,jp_type代表选用的连接点类型,可以是请求端口中的服务、服务端口中的服务或所有端口中的服务,详细如表1。表2给出了切点语言的一些例子,其中正则表达式基于java.util.regexp包。面向方面软件体系结构模型面向方面软件体系结构由构件、连接件、方面构件组成,详细请参见图6。3基于面向方面软件体系结构模型的网上支付实例近年来,网上购物发展迅速,网上支付是消费者主要的支付手段之一,图7给出了基于面向方面软件体系结构的网上支付模型,它由四个原子构件,即一个复合构件、两个方面构件和三个连接件组成。其中WebClientComponent代表客户端构件,它可以向网上银行构件WebBankComponent请求AccountService()服务,该服务有三个参数,即username、password、cost,分别对应于用户的网上银行账户名、密码及购买商品的消费金额。〈component name="WebClientComponent"〉〈required.port name="WebClientRequest"〉〈java.interface interface="AccountServiceInterface"〉〈service name="AccountService()"〉〈param name="username"type="string"/〉〈param name="password"type="string"/〉〈param name="cost"type="float"/〉〈/service〉〈/java.interface〉〈/required.port〉〈/component〉连接件AccountServiceConnector用于连接客户端构件和网上银行构件,它采用WebServiceBinding绑定机制。〈connector name="AccountServiceConnector"binding="WebServi-ceBinding"/〉〈source name="S"/〉〈target name="T"〉〈/connector〉〈connect.source from="WebClientComponent.WebClientRequest"to="S"/〉〈connect.target from="T"to="WebBankComponent.Bank-Re-sponse"/〉网上银行构件是一个复合构件,由账户服务构件Account-ServiceComponent、账户数据库连接件AccountDBConnector和账户数据库构件AccountDBComponent组装而成。其中该复合构件的服务端口也使用接口AccountServiceInterface,这是为了兼容客户端构件请求端口使用的接口。身份验证构件AuthenticationComponent用于验证用户的身份信息,它通过UserInfoConnector连接件访问用户信息数据库构件UserInfoDBComponent。pointcut="WebBankComponent;BankResponse;AccountServiceInterface;AccountService()"是该方面构件的方面端口中使用切点的表达式。为了保证数据库构件UserInfoDBComponent和AccountDB-Component的安全性,方面构件SecurityComponent使用方面端口Security监视这两个构件的服务端口,使得在这两个构件服务调用之前增加日志和事务功能,而日志和事务功能在系统中通常表现为横切关注点,面向方面软件体系结构能够对它进行很好的封装,便于设计和维护。〈aspect.component name="SecurityComponent"〉〈aspect.port name="Security"〉〈aspect〉〈pointcut="UserInfoDBComponent;UserInfoResponse;*;*|Ac-countDBComponent;AccountDBResponse;*;*"/〉〈advice.role="before"action="Log()"/〉〈advice.role="before"action="Transaction()"/〉〈/aspect〉〈/aspect.port〉〈required.port name="UserInfoRequest"/〉〈/aspect.component〉4结束语本文给出了一种面向方面软件体系结构模型,详细设计了它的三个基本构成单元模型,即构件、连接件和方面构件;最后通过一个网上支付实例验证了该模型有效性和实用性,为面向方面软件体系结构的实际应用奠定了一定的基础。笔者将继续完善该模型的相关理论,研究面向方面软件体系结构的工程化应用方法。参考文献:[1]FABRESSE L,DONY C,HUCHARD M.Foundations of a simpleand unified component-oriented language[J].Journal of ComputerLanguages,Systems&Structures,2008,34(2-3):130-149.[2]LIEBERHERR K,LORENZ D,MEZINI M.Programming with as-pectual components,T R NU-CSS-99-01[R].[S.l.]:NoutheastamUniversity,1999.[3]PAWLAK R,SERNTURIER L,DUCHIEN L D,et al.JAC:an as-pect-based distributed dynamic framework[J].Software Practiceand Experiences,2004,34(12):1119-1148.[4]李千目.软件体系结构设计[M].北京:清华大学出版社,2008.[5]马亮,孙春艳.软件构件概念的变迁[J].计算机科学,2002,29(4):28-30.[6]SZYPERSKI C,GRUNTZ D,MURER S.Component software:be-yond object-oriented programming[M].2nd ed.[S.l.]:Addison-Wesley,2002.[7]LAU K K,WANG Z.Software component models[J].IEEE TransSoft Eng,2007,33(10):709-724.[8]SHAW M.Procedure calls are the assembly language of software in-terconnection:connectors deserve first-class status[C]//Proc of InICSE Workshop on Studies of Software Design.1993:17-32.[9]NAVASA A,PREZ M A,MURILLO J M,et al.Aspect orientedsoftware architecture:a structural perspective[C]//Proc of Workshopon Early Aspects.2002.

310 评论

皖北一只老色

所谓软件定义,就是用软件去定义系统的功能,用软件给硬件赋能,实现系统运行效率和能量效率最大化。软件定义的本质就是在硬件资源数字化、标准化的基础上,通过软件编程去实现虚拟化、灵活、多样和定制化的功能,对外提供客户化的专用智能化、定制化的服务,实现应用软件与硬件的深度融合。其核心是API(Application Programming Interface)。API解除了软硬件之间的耦合关系,推动应用软件向个性化方向发展,硬件资源向标准化方向发展,系统功能向智能化方向发展。API之上,一切皆可编程;API之下,“如无必要、勿增实体”。

224 评论

桐叶封弟

所谓软件定义,就是用软件去定义系统的功能,用软件给硬件赋能,实现系统运行效率和能量效率最大化。软件定义的本质就是在硬件资源数字化、标准化的基础上,通过软件编程去实现虚拟化、灵活、多样和定制化的功能,对外提供客户化的专用智能化、定制化的服务,实现应用软件与硬件的深度融合。其核心是API(Application Programming Interface)。API解除了软硬件之间的耦合关系,推动应用软件向个性化方向发展,硬件资源向标准化方向发展,系统功能向智能化方向发展。API之上,一切皆可编程;API之下,“如无必要、勿增实体”。所谓软件定义,就是用软件去定义系统的功能,用软件给硬件赋能,实现系统运行效率和能量效率最大化。软件定义的本质就是在硬件资源数字化、标准化的基础上,通过软件编程去实现虚拟化、灵活、多样和定制化的功能,对外提供客户化的专用智能化、定制化的服务,实现应用软件与硬件的深度融合。其核心是API(Application Programming Interface)。API解除了软硬件之间的耦合关系,推动应用软件向个性化方向发展,硬件资源向标准化方向发展,系统功能向智能化方向发展。API之上,一切皆可编程;API之下,“如无必要、勿增实体”。

287 评论

猫19820728

所谓软件定义,就是用软件去定义系统的功能,用软件给硬件赋能,实现系统运行效率和能量效率最大化。软件定义的本质就是在硬件资源数字化、标准化的基础上,通过软件编程去实现虚拟化、灵活、多样和定制化的功能,对外提供客户化的专用智能化、定制化的服务,实现应用软件与硬件的深度融合。其核心是API(Application Programming Interface)。API解除了软硬件之间的耦合关系,推动应用软件向个性化方向发展,硬件资源向标准化方向发展,系统功能向智能化方向发展。API之上,一切皆可编程;API之下,“如无必要、勿增实体”。软件定义有三大特点或者发展趋势,即:硬件资源虚拟化、系统软件平台化、应用软件多样化。硬件资源虚拟化是指将各种实体硬件资源抽象化抽象化,打破其物理形态的不可分割性,以便通过灵活重组、重用发挥其最大效能。系统软件平台化,实现,是指通过基础软件对硬件资源进行统一管控、按需分配按需配置与分配,并通过标准化的编程接口解除上层应用软件和底层硬件资源之间的紧耦合关系,使其可以各自独立演化。在成熟的平台化系统软件解决方案的基础上,应用软件不受硬件资源约束,将得到可持续地迅猛发展,整个系统将实现更多的功能、,对外提供更为灵活高效的和多样化的服务。软件定义的系统,将随着硬件性能的提升、算法效能的改进、应用数量的增多,逐步向智能系统演变。我们正在步入一个“万物皆可互联、一切皆可编程”,的新时代,软件代码将成为一种最为重要的资产形式,软件编程将成为一种最为有效的生产方式。软件定义将迅速引发各个行业的变革。从软件定义无线电,、软件定义雷达,到软件定义网络、、软件定义存储、软件定义数据和知识中心,到软件定义汽车、软件定义卫星,再到软件定义制造、软件定义服务,甚至汽车、航空航天器等载运工具。软件定义将成为科技发展的重要推手,极大地提高各行各业的智能化程度和整个社会的智能化水平。————中国电子学会软件定义推进委员会 刘光明 提供

181 评论

相关问答

  • 论文追寻主题定义

    问题一:什么是论文主题 就是一篇论文中讨论的中心啊。就和作文主题一个意思。 问题二:论文主题词什么意思 把整个论文的说明都加上了 在第标(三)

    吃逛吃逛2333 4人参与回答 2023-12-12
  • 论文怎么切入主题

    您好!写作一篇论文需要经历以下几个步骤: 1. 确定研究主题和问题:选择一个合适的话题,并明确你希望解决的问题。 2. 收集相关文献:阅读文献,以便更好地了解已

    盛笑笑shamir 6人参与回答 2023-12-10
  • 软件学报一审

    一审即为初审,一般编辑负责一审,一审通过的稿子上交主编审核。 主编审核为二审,也叫终审,终审通过就可以登刊发表。 但也存在三审的杂志,一审是编辑,二审是主任或主

    你的小恶魔 3人参与回答 2023-12-09
  • 态度决定一切以论文为主题

    在平时的学习、工作中,大家都不可避免地要接触到论文吧,论文的类型很多,包括学年论文、毕业论文、学位论文、科技论文、成果论文等。写起论文来就毫无头绪?以下是我为大

    还是曼特宁 1人参与回答 2023-12-06
  • 以汽车配件为主题定一个论文题目

    代谢500包过

    么么1009 4人参与回答 2023-12-05