没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记163(2007)19-28www.elsevier.com/locate/entcs模型分解的优势及其面向对象的实现Tommi Mikkonen1坦佩雷理工P.O. Box 553,FI-33101坦佩雷,芬兰摘要面向对象的方法通常提倡关注点分离。一些方法以对称的方式应用这种分离,如Hyper/J,而另一些方法依赖于不对称分离,如April J。方法的不同之处在于,不同的关注点在前者中扮演对称的角色,而后者明确地包括一个传统的实现,在此基础上,其他关注点被编织成方面。问题随之而来,传统实现的关注点在后者中有何特殊之处,以及使用对称分离的机会是否会导致一种根本不同的分解。在本文中,我们讨论了规范中分解的主导地位和相应的面向方面实现。例如,我们使用规范化方法DisCo,它允许以一种将不同的关注点分离到规范化分支的方式对关注点进行建模,以及使用Hyper/J和ApplyJ的面向方面实现,这些实现可以为DisCo规范进行组合。作为最后的结果,我们建议任何面向方面的方法,由于程序的控制流程,在程序代码级的系统必然具有比其它关注点更占主导地位的关注点关键词:显性分解,对称和非对称体定向1引言支配性分解的暴政(英语:Tyranny of dominant decompositions)是一个用来解决软件系统无法使用相同的工具来解决所有问题的术语。在[17]中报道,这导致了一种范式的引入,其中所有的关注点都可以以类似的方式处理,并在Hyper/J中实现了实际的编程级别[20]。然后,所有的关注点都可以被对称地处理,这使得系统的创建能够使用超模块来实现传统的模块化和横切属性。1电子邮件:tommi. tut.fi1571-0661 © 2007 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.10.01320T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)19与管理横切属性的对称方法相比,已经引入了非对称方法。例如,ANOJ [18]介绍了用称为方面的添加来增强基线实现的工具。然后,我们可以这样前进,即以一个作为常规程序给出的现有系统作为起点,并将新的行为编织到具有方面的系统中。此外,提供了一个约定,其中方面用于某些问题,开发人员可以预期方面的注入,并在基线实现中忽略系统的这些部分一般来说,体定向的对称和非对称方法之间的关系[6,7,4]一直是一个有趣的研究课题(例如[9])。在本文中,我们讨论了分解在规范方面的主导地位,其中提供了一种关注点分离,并使用Hyper/J和ApplyJ绘制了面向方面其目的是解决技术的差异和共性,并比较它们的不同属性以及潜在的规范。在论文的最后,我们将我们的结果与模型驱动架构MDA [8,21]提供的框架联系起来,得出结论,实现级技术本质上需要一个可执行性的支配性分解和有意义的绑定来控制流程。这些经验是基于一个案例研究,其中移动交换机的行为已被重新设计[10]。本文其余部分的结构如下。第2节介绍了我们作为起点使用的规范和建模方法。此外,我们还讨论了通常用于分离关注点的规范的结构。第3节和第4节描述了使用Hy- per/J和AsiaJ的DisCo规范的实现,其中对关注点进行了对称和非对称分解。此外,我们还讨论了在所描述的系统分解的优势。第五节最后总结全文。2质量标准作为本文中的规范方法,我们使用DisCo [12,19],一种基于动作时序逻辑的形式化方法[13],并允许以增量引入不同关注点的方式开发规范和模型。2.1迪斯科原则DisCo规范由包含类和操作的层组成。类是数据的容器,动作可以理解为可以改变变量值的多对象方法。动作以交错的方式执行,不受系统其他部分的任何干扰,并且一旦启动,它们的执行就会结束,这使得动作成为执行的原子单元。用于编写规范的语言是文本。然而,已经提供了动画设施,以便于分析规范[16,3]。此外,还讨论了DisCo规范之间的关系及其UML表示方法,T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)1921已在[15]中进行了研究。层可以建立在其他层之上,这在DisCo术语中被称为细化。对动作进行了限制,动作只能改变同一层中给定的变量的值,这保证了安全属性将通过构造来保持。为了满足这个限制,精化可以引入新的变量和对它们的操作,以及对动作的扩充,只要新的动作逻辑上暗示它的祖先。事实上,可以认为祖先的概念在DisCo方法中起着关键作用。所有的类和动作都可以被认为是它们的祖先在早期层中的细化,而层定义了一个空系统作为层次结构的起源。这为任何DisCo规范提供了一个明确的结构,并有机会在各个层中定义关注点。当两个或多个层合并时,动作可以合并成更复杂的动作,或者彼此分开。这对应于面向方面设置中的织入,我们将在第3节和第4节讨论面向方面技术2.2基于关注的Disco抽象建模层的使用允许使用多个抽象级别对系统进行建模。例如,当对电话交换机建模时,可以使用抽象概念(诸如呼叫控制、连接和支路,其是从交换机到呼叫者或被呼叫者的单独连接)以及计费以及根据用于实现抽象概念的过程来对系统建模。这使得每一层都可以专注于建模者想要单独解决的某个问题。只要抽象之间的关系是简单的,例如每个抽象概念可以与某个低级概念相关联,则该方案是相对简单的。例如,底层概念可以是进程或进程间通信。然而,当一个抽象被定义为需要几个低级概念的合作时,就会产生更复杂的实现。在本文中,我们将把这两种类型的抽象称为原始和非原始的抽象。考虑这种抽象的另一种方式是将它们称为局部和跨领域。将非原始抽象细化为可直接实现的形式是另一个关注点。因此,这个问题通常使用DisCo层来解决,该层定义了抽象概念与其更具体的实现之间的关系已经为这种转换引入了技术,包括使用类似于设计模式的存档设计步骤的选项[11]。2.3Disco中的规范架构由于方法的定义,DisCo中给出的规范包含两种不同类型的架构。一个是由类和动作组成的,另一个是由层组成的。由类和动作组成的体系结构类似于由传统技术组成的体系结构,但22T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)19由层组成的是不太常规的。因此,下文将更详细DisCo中的分层规范允许在层中处理各个关注点。层是真正对称的,因为层之间的细化关系保留了所有组件层的(安全)属性,并且给出层的顺序可以变化。此外,细化只能产生更多的限制,这类似于LOTOS [5]中引入的面向约束的设计风格与常用的面向方面方法的另一个不同之处在于,层是完整的,因为它们只根据其中包含的变量来描述对象。 然后,当层被组成时,一个新的宇宙被创建,其中所有组件层的行为规则都得到满足。这样的层允许一种方法,其中系统的控制在一个层中给出,然后与其他层组成当考虑使用层创建的体系结构时,控制层可以扮演两个不同的角色。• 原始(或局部)抽象的使用只允许在开始时定义基本属性的方法,从而导致自底向上的方法。• 非原始(或横切)抽象的使用需要一个实现层,导致系统的自顶向下构造。这一层可以作为一个单独的规范分支来促进关注点的分离这两种方法使用简化版本的电话交换机作为示例进行说明(图1)。交易所的主要功能有三个.层腿引入了抽象概念腿,即,呼叫者/被呼叫者和交换机之间的连接;层过程使用可用的技术实现抽象概念,具有用于呼入和呼出呼叫以及路由的不同动作;并且层计费引入对已建立的支路进行计费的能力。由于这些功能之间的关系是重要的,我们将只以抽象的方式讨论它们。此外,它们中给出的操作已经包含在图中,因为它们对我们稍后描述的实现有意义。2.4使用传统技术当使用传统技术时,一次性实现旨在攻击所有层的完整组成,其中所产生的架构1遵循层中定义的结构,但忽略了层结构。在图1中,自底向上的方法很容易实现,但是自顶向下的方法需要创建一个复合规范,如图1所示。换句话说,建筑上重要的部分在层内形成了主导的装饰,而分层结构作为一个整体被忽视了[14]。最近,我们也考虑了面向方面的技术[1]。这使我们能够保留层创建的结构此外,我们还考虑在面向方面系统的设计中应用相同的设计方法。在下面的部分中,我们将重点转移到以保留规范的分层结构的方式T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)1923进程调入调出路由调入调出腿联系方式:改进了在断开连接中的扩展:细化DeleteIn充电StartCharge:优化优化配置StopCharge:细化DeleteIn腿连接断开:过程搜索结果:优化连接输出路由删除输入:优化DisconnectDeleteOut充电StartCharge:优化ConnectStopCharge:优化Disconnect组合物自底向上自顶向下Fig. 1. DisCo规范3Hyper/J实现Hyper/J [20]可能是对称面向方面编程最突出的方法它可以直观地用于与DisCo类似的关注点分离。然而,这两种方法的抽象层次是不同的,这对如何以实用的方式构建系统产生了一些影响。在下文中,我们概述了使用Hyper/J实现上述DisCo规范的机制。3.1对称性的来源在组成Hyper/J系统时,一开始就定义了独立的子系统。它们可以是单独的类或它们的集合,甚至可以彼此隔离地进行测试。我们的目标是在隔离的情况下创建最终实现所需的所有操作。一旦存在实现类的集合,设计者就使用超模块来定义如何集成系统的不同部分。Hyper/J提供的方法基本上要求两个方法相等,并允许定义方法的调用顺序。然而,可以想象用于关联不同类别的更复杂的设施。因为开发的起点是类和将它们组合在一起的定义的集合,很明显,从技术的角度来看,所有类都扮演着类似的角色。3.2使Hyper/J实施与DisCo规范保持作为使用Hyper/J实现DisCo规范的起点,应该在DisCo层中组合类,反映层的内容24T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)19过程输入/输出路由删除输入/删除输出等同腿连接:断开连接充电开始充电停止充电等同等同腿连接断开:等同过程输入/输出路由删除输入/删除输出充电开始充电:停止充电:自底向上自顶向下图二. 保持结构的Hyper/J实现架构详细然后,一旦内容的Java实现可用,就应该匹配这些类,并将不同类中相互对应的操作等同起来。顺序和分支架构可以以类似的方式处理,这使得Hyper/J成为实现DisCo规范的自然候选者。此外,可以分段实现方法的等同,这允许采用增量式开发方法,与DisCo的开发方法类似(图2)。然而,有一个主要的缺点。在包含定义主控制的分支之前,只能实现声明性目标。换句话说,通过组合那些定义了不会触发自己执行的操作的因此,不同分支的语义对发展的贡献也不同因此,定义控制流程的分支可以被认为是语义意义上的主导维度。由于控制流程的特殊作用,在DisCo规范的早期阶段定义执行的情况下相应的Hyper/J实现可以以简单的方式给出和测试然后,随着设计的进步,新的功能可以立即增加正常的例程。此外,还能够通过运行系统进行测试。 但是,如果后面的某个分支引入了控件,则缺少实现分支的组合将导致声明性语句。这特别适用于非原始抽象,它通常没有定义控制,但在概念上很重要。它们不能在Hyper/J实现中独立于系统的其他部分进行测试,但它们仍然可以被定义并用作中间系统,可以通过评审进行研究T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)19254ANOJ实施与Hyper/J相比,ANOJ [18]旨在以首先给出基线实现的方式定义系统。这个基线是使用传统的Java给出的,它将通过编织到代码中的方面进行扩展。换句话说,方面可以被看作是基线系统的扩展,并且它们大多数自然地遵循基线中给出的控制,尽管已经提供了覆盖操作的选项在下文中,我们概述了一种使用ANOJ实现上述DisCo规范的机制。4.1不对称的来源ANOJ中不对称的根本原因是存在两种类型的伪影。一种类型是传统的Java类,另一种类型是方面。这些类型在开发过程中也扮演着不同的角色,这将在下面讨论。当开发开始时,使用传统的Java类创建基线实现。该系统经测试运行正常。然后,一旦基线令人满意,就将方面编织到它以引入新的属性。然而,与Hyper/J中使用附加信息来组合操作不同,APDJ的各个方面都有关于它们应该在哪里编织的信息。事实上,一个共同的目标是使用方面,这样基线就不需要知道方面的使用,因为这将解放基线的开发人员,使他们专注于它的目标和需求。4.2使ACONJ实施与DisCo规范保持在编写DisCo规范的Aidocomp J实现时,起点始终是一个可执行文件,它本质上定义了主控制流程。定义可以在主要分支中给出,也可以在其他分支中给出,但我们认为这是系统在其行为意义上的基本支配分解。此外,为了创建一个可运行的基线,这显然是必要的。一旦基线完成,其他特性将使用方面集成到它在这种情况下,非原始抽象可以成为在一个模块中实现抽象的抽象,假设系统的控制在后面的某个分支中引入(图3)。这一点在[1]中已经详细讨论过5讨论规范级的关注点分离可以不同于实现级的关注点分离。 在本文中,行为主导分解在一个规格化的水平和它的结构主导分解在面向方面的系统被证明是有潜力的不同。差异的原因在于控制流程,它可以抽象为一个规范,26T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)19过程输入/输出路由删除输入/删除输出织造腿连接:断开连接充电开始充电停止充电织造织造腿连接断开:织造过程输入/输出路由删除输入/删除输出充电开始充电:停止充电:自底向上自顶向下图三. 保留结构构成了实现中的必要元素。当考虑系统的行为时,必须发生的执行通常会在实现中的任何情况下引入主导分解,否则只能给出声明性定义因此,规范的结构保持实现,其体系结构规定了关于引入某些关注点的顺序的差异,对于Hyper/J和AsiaJ来说是相似我们认为,差异的原因在于横切抽象,从一个实现级抽象扩展到另一个。如果没有面向方面的技术,这样的抽象会导致代码混乱,但是有了它们,组合实现的架构可以与规范保持一致。上面的基本原理是,非原始抽象是横切的,因此可以从面向方面的技术中受益,原因很明显然而,没有可执行的主分支,很难找到正确的方法来等同或关联切入点。然而,它们在组成模型时是一个重要的工具,其中抽象可以以有意义的方式进行研究。特别地,正如已经提到的,它们可以用于将系统的结构重新设计成一种易于适合于面向方面实现的形式,这也为本文中使用的示例提供了灵感观察的结果是多方面的。首先,即使技术上的对称设施被用于以面向方面的方式组成系统,但控制流的引入必然是一个横切问题,这一事实隐含地产生了不对称性,这可能是关于什么类型的系统从面向方面中受益的争论。其次,在某些情况下抽象本身不是可执行的,而是具有声明性的含义,这一事实可能会影响方面的单元测试,并为针对单元测试的研究提供权重在方面的级别,这似乎需要一个测试驱动程序或存根,T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)1927期望的控制流。最后,我们认为,在早期使用面向方面的技术时,忽略控制流的主导地位,并专注于面向问题的分解是至关重要的。随后,可以使用实现技术(其中控制流密切存在)来引入这种关注,遵循模型驱动架构MDA [8,21]的实践。从本质上讲,Hyper/J和AMDJ都需要在平台特定模型的级别上考虑类似的问题,而不会对MDA的计算或平台独立模型提供太多支持。因此,开发商可以从中受益的设施可以被视为受到限制。最后,我们相信,除了本文中讨论的不同概念之间的低层关系之外,规范层概念和相应的面向方面技术之间的关系使面向方面的早期使用具有更复杂的观点虽然基于不同的起源和术语,但组成这种对齐的可能性引起了广泛的讨论[2]。引用[1] TimoAaltonen,JoniH eli n,Mi kaKatara,Per tiK ell oméki,anddTommiMikkonen.定义对象和方面。电子笔记理论计算机科学,68(3),2003年3月。[2] Timo Aaltonen,Mika Katara,Reino Kurki-Suonio,and Tommi Mikkonen.关于水平规范架构及其面向方面的实现。接受AOSD交易,出现。[3] 我是一个很好的人,我是一个很好的人,我是一个很好的人。 D is Cotol s et- th e n w gene r at i on.JournalofUniversal Computer Science,7(1):3-18,2001. 网址http://www.jucs.org。[4] AOSD-欧洲。调查的面向方面分析和 设计 接近。在URLhttp://www.aosd-europe.org网站,2005年5月[5] T. Bolognesi和E.布林克斯玛介绍ISO规范语言LOTOS。计算机网络和ISDN系统,14:25[6] 放大图片作者:Robert E. Filman和Atef Bader。面向对象的编程。Communications of the ACM,44(10):29[7] RobertE.电影,TzillaElr ad,Si obh'anClarke,和MehmetAksit。一个面向对象的软件开发。Addison-Wesley,2005年。[8] 对象管理组。MDA指南1.0.1版。OMG文件编号omg/2003-06-01,2003年6月。[9] William H. Harrison,Harold L. Ossher和Peri L.塔尔软件组合的非对称与对称组织范例。技术报告RC 22685,IBM Thomas J. Watson Research Conter,2002年12月。[10] 我想我是来找你的。DisCoandNokia:多处理器环境中DisCowi thmodelinggre a-times ys tem的E x p er i e c e s。1997年正式方法欧洲工业研讨会,芬兰奥塔涅米,1997年2月20日[11]PertiK ell oméakianddTommiMi kkonen. 设计用于存储的电子邮件。 InElisaBerti no,编辑,Proc. ECOOP2000,第14届欧洲面向对象编程会议,编号1850,计算机科学讲义,第277-295页。Springer-Verlag,2000.[12] Reino Kurki-Suonio 反应系统的实用理论-动态行为的增量建模。施普林格,2005年。[13] 莱 斯 利 ·兰 波 特 动 作 的 时 间 逻 辑 。 ACM Transactions on Programming Languages and Systems, 16(3):872[14] 托 米 ·米 科 宁 可 靠 反 应 系 统 的 开 发 周 期 。耶 氏 酵 母 中Chen , 编 辑 , Proc. IFIP InternationalWorkshop on Dependency Computing and its Applications,DCIA 98,第70-82页。南非约翰内斯堡威特沃特斯兰德大学,1998年。28T. Mikkonen/Electronic Notes in Theoretical Computer Science 163(2007)19[15] R is toPitküanendPetriSelonen. 一个UML预处理器,用于可执行和可重构的性能建模。在Thomas Baar、AlfredStrohmeier、Ana Moreira和Stephen J.Mellor,编辑,UML 2004- 统一建模语言。模型语言和应用。第七届国际会议,葡萄牙里斯本,2004年10月11日至15日,《会议记录》,LNCS第3273卷,第158-172页。斯普林格,2004.[16] K. 是的。 一个graphicanto loolforors p ecicationofreactiv e s st em s. 在中国。 Euromicro'91 Work shop on Real-Time Systems,第12-19页。IEEE Computer Society Press,1991.[17]P. Tarr,H. Ossher和Jr. S. M.莎顿多维度分离关注点。在David Garlan,编辑,Proc. 第21届软件工程国际会议,第107-119页。ACM Press,1999.[18] 在URL www.example.com上的ANOJ主页http://aspectj.org。[19] DisCo主页,网址为http://disco.cs.tut.fi。[20] Hyper/J主页在URLhttp://www.alphaworks.ibm.com/tech/hyperj网站。[21] MDA主页,网址为http://www.omg.org/mda/。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功