英语原文共 16 页,剩余内容已隐藏,支付完成后下载完整资料
1. 介绍
当今的计算系统不再是单一元素,它们大多由一组以合作方式工作的组件组成Jonkers等人。 (2004年); Papazoglou等人 (2008年)。 它是面向服务的体系结构(SOA)Ni中所有系统的现实 和 Fan(2010)和基于组件的系统Coronato和 De Pietro(2010)主要在面向对象语言中开发。 所有这些系统背后的共同概念是需要一起工作来提供系统要求的各种要素之间的任务分配。 在组件合作提供满足系统要求的功能的同时,它们必须给出一个合作机制来从错误中恢复Randell和Xu(1994)。 保证可靠性,并因此保证 由于不可靠的系统可能,系统的可靠性已成为许多软件企业成功的重要问题
系统故障可能是由于物理或软件故障引起的。 可以创建容错系统来处理软件故障,并且可以在编程和体系结构级别为它们提供解决方案。 在编程层面,容错可以通过异常处理机制来处理,这些机制提供了错误恢复和正常行为的代码清晰分离,并有助于降低代码复杂性和软件设计错误。 然后,软件系统必须包含正常行为代码,其中检测到错误并引发相应的异常,以及异常处理程序代码Cristian(1982),其中异常行为被处理导致错误恢复。
尽管异常处理机制是明确检测和恢复系统出错的前进步骤,但它们需要被正确地用于提供容错系统。 例外如果使用不当,程序会减慢程序Doshi(2012):内存和处理器时间需要创建,抛出,并捕捉异常。 此外,过度使用异常可能会混淆代码,使其难以使用,客户端代码会忽略引发的异常。 编程社区已经尽了很大的努力来建立异常处理机制使用的纪律Longshaw和Woods(2004); 模式(2012); Wirfs-Brock(2006); 然而,至今尚未建立模式手册。 实际上,许多新手或中级软件工程师无法正确对待故障McCune(2006),要么是因为没有优先考虑这项活动,或者他们没有遵循一种风格来定义,提出和处理例外情况。 可以指出一些原因。 首先,大多数系统不会在设计级别处理他们的特殊行为。 因此,按照开发人员理解它必须完成的方式,按需求处理异常。 其次,许多公司没有采用风格来处理例外情况,每个程序员都决定特殊情况。
原则上,这些问题中的大部分可以在下面进行分类
设计层面,使用模式,让公司采用某种风格并适当地培训开发人员。 但是,这些解决方案适用于由单个部件本地处理的异常,而实际上,今天的系统由一组协作部件组成。 然后,嵌入在并发和分布式系统中的故障(操作期间出现异常可能会导致影响整个系统可靠性的故障传播)必须在架构级别进行管理,以防止系统突然停止正在进行的计算。 在这些情况下,除了局部治疗失败之外,其传播必须由整个系统来处理。 这要求模型能够从错误中识别和恢复,并提供相应的策略,以协调的方式使整个系统处于稳定状态。 因此,为了指导容错系统的开发,提出了许多模型和方法。
协调的原子动作(CAA)提供了一个概念模型
以合作的方式相互关联例外的传播。 该模型可以指导用户以良好的组织方式处理异常情况,并使整个系统保持稳定状态。 但是,即使用户有意遵循CAA概念,但根据系统复杂程度的不同,可能会出现某些不一致情况,预先严格遵循CAA概念的一步一个标准的建筑模型,通过正式的手段Pereira和de Melo(2010)。 指定容错的正式策略 系统有助于识别规范级别的含糊,遗漏和不一致之处,并且正式的验证可作为防止错误的机制,以更好地消除设计错误。 尽管通过使用这样的框架,人们可以创建一个形式化模型的实例,然后检查某些CAA属性,但这是在设计级完成的,并且在实现级别检查一致性的差距仍然存在。 因此,需要实现概念CAA模型。 而且,无论何时提供设计模型的实现,都需要在进入代码时插入新元素。 由于更具体模型中的这些新元素,在规范级别保证的某些属性可能不再保留在代码对应中。
目前工作的主要贡献是双重的。 首先,它提供了一个正式模型的实现,以处理基于CAA的体系结构级别的异常。 这个实现框架可以被重用和实例化,以实际为系统提供一个协调的异常处理机制的实现。 其次,由于实例框架被实例化时需要插入新元素,所以要定义一组CAA属性来检查与Java Pathnder模型检查器(核心版本)Team(2012)一起保证框架正确性在其后保留 实例。
本文的初稿出现在QUATIC#39;12(第8届国际质量会议)的会议记录中信息和通信技术)Hanazumi和de Melo(2012年)。 本白皮书包括以下附加内容 tributions:关于本文结果和相关工作的讨论; CSP(通信顺序过程)中的CAA体系结构模型概述; Java框架元素的完整描述以及它们与CAA形式模型的关系; 介绍如何使用Java框架的完整示例源代码; 有关CAA属性规范的详细信息以及它们在JPF模型检查器中的实现方式。
本文的其余部分安排如下:
第2节 描述相关工作;
第3节 介绍协调的原子行动概念;
第4节 描述了CSP规范用于实现我们的CAA Java框架和CAA Java框架实现的CAA模型;第5节 描述了一些CAA属性;
第6节 展示了在运行示例中使用CAA Java框架以及如何使用JPF证明它们满足CAA的Java模型;
第7节 介绍讨论主要结果和未来工作。
2. 相关工作
在并发和分布式系统中协调容错成为过去几年中许多研究的关键问题。 施托勒和施耐德施托勒和施耐德(2005) 提出了一种自动分析分布式系统容错的方法。 为了进行分析,它们用消息流图来表示系统行为,并使用这种表示来检查系统使用他们开发的框架的可靠性。 佐尔佐和斯特劳德Zorzo和Stroud(1999) 侧重于多方交互的概念以及这些交互的参与者应该如何在一个或多个组件发生故障的情况下做出反应。 为了支持他们的方法,他们实现了一个Java框架DRIP,它建立了一个抽象机制,放置在一个事务性系统之上,为分布式系统中的竞争性并发提供支持。 关于分布式系统中的检查点和恢复策略,已经提出了用于系统组件和协调协议之间的通信的新方法Park and Yeom(2000); Li(2006年)。 关于异构分布式系统中的容错问题,Wang和Wang明斯基 王和明斯基(2014) 和Cabello等人 Cabello等人 (2014)提出了处理系统故障的方法 上下文。 其他工作涉及架构层面的容错协调穆罕默德和祖尔克宁(2010) 并在dif-不同的范围,如多代理系统 Faci等人。 (2006年); 库马尔和科恩(2000)。 在目前的工作中,我们关注并发 Java系统,并希望选择一个适当的概念模型来处理一个或多个组件中的故障,从而促使我们选择协调原子行动(CAA)模型Xu等人 (1995年).
CAA概念提供了一个正式模型,用于管理并发系统中的异常处理和错误恢复。 它明确划分了系统组件的异常和正常行为,并且可以根据先前定义的开发方法扩展到对并发和分布式系统进行建模,验证和实现加利纳(2007年)。 比较CAA和其他方法,它更加灵活并且提供了更丰富的功能。 此外,有关CAA使用的工作已经开发完成,其中包括将此概念应用于真正关键系统的开发Beder(2000年); Capozucca(2005年),以及概念模型的扩展与不同的范围工作,如实时系统Capozucca和Guel(2009),移动代理 阿里耶夫 (2006年) 服务Tartanoglu(2003年).
关于民政局的正式化,许多作者使用不同的语言和正式的规范打开正式的方法:Randell et al。Randell等人 (1998) LTL正规化的CAA; Tartanoglu(2004年) 用B来做一个CAA正式化; Veloudis和Nissanke Veloudis和Nissanke(2000)与CAA在定时CSP中合作; 和佩雷拉和德梅洛 Pereira和de Melo(2010) 使用CSP来指定CAA。 其他作品通过实施CAA框架来解决更实际的方法。 Xu等人(1998) 在Ada-95中实现了一个CAA框架。 佐尔佐和斯特劳德Zorzo和Stroud(1999) 开发用于分布式Java系统的DRIP框架,以及Capoz-zuca et al。Capozucca(2006年) 丰富了这个框架以创建CAA-DRIP,这是一个以更直接简单的方式使用CAA概念的Java框架。 关于excep-处理建模和检测,Cabral和Marques Cabral和Marques(2011)提出了一种方法, 负责处理例外情况的实时环境,并将此技术应用于Java系统。 Anwer (2014)提出了一种自动检测异常情况的方法, 处理面向对象系统中的不一致性。 和Schol-liers(2011年) 使用CAA概念开发一种新颖的编程抽象,称为Ambient Contract。
2.1. 目前的工作
在当前的工作中,我们针对使用CAA开发可靠的Java系统的问题,该模型可用于保证复杂系统中的容错,因为它提供了异常处理协调。 针对这一任务,我们提出了一个基于CAA CSP规范实现CAA模型的Java框架Pereira和de Melo(2010)。 它提供了一种更容易的编程和模拟容错Java系统的方法,允许用户根据自己的要求创建此框架的实例。 为了验证框架代码在被用户实例化后保持其正确性,我们在JPF中定义了一些CAA属性团队(2012),并使用此工具来检查框架代码。
虽然Cabral和Marques卡布拉尔和马克斯(2011),佐尔佐
和斯特劳德Zorzo和Stroud(1999) 和Romanovsky、 Capozucca。 (2006年) 提出了适用于Java系统的实现模型,旨在帮助处理异常的程序员,我们的工作在某些方面与他们的工作不同。 首先,我们的Java框架基于CSP规范Pereira和de Melo(2010)。 人们可以通过实例化CSP co- 使用FDR工具的协调模型和原因FDR2(2012)。 由于我们的Java协调框架已被创建为其正式副本的“模拟”,系统实现可以通过类似的实例获得。 然而,在规范和代码级别的实例化需要不同的元素,并且在代码级别的验证对于保证协调机制仍然是必需的。 使当前工作与其他工作不同的第二个方面是使用JPF在代码级别(Java)检查CAA属性的可能性,因为某些CAA属性也在此定义。
2.1.1. 使用CAA java框架
在这里介绍的使用CAA Java框架的过程如图所示图2。 CAA Java框架是CAA CSP模型的实现Pereira和de Melo(2010)其中民航局的概念已经正式确定。 从实际的角度来看,用户可以在全面或部分正式方法中考虑系统开发时使用它:
完整的正式方法:设计和实现模型根据CAA属性进行验证。 用户可以采用系统规范并按照设计级别的流程步骤进行操作(在左侧进行描述)图2)。 在这种情况下,过程的协调是CAA CSP模型的实例(定义在Pereira和de Melo(2010)),并将其提交给FDR以检查CAA属性。 此时,关于CAA属性的系统设计被证明是正确的。
下一个发展步骤是系统实施。 为了遵循正式的方法,用户可以使用CAA Java框架来定义编程级别的协调。 由于此框架是CSP模型的“模仿”,因此可以使用设计级别提供的元素来实例化CAA Java Framework。 这由箭头表示设计到实施水平。 在实例化阶段结束时,提供了针对特定系统的CAA Java实现。 然后可以将此模型提交给JPF以检查实施级别的CAA属性。
然而,为了构建完整的系统实现,开发了代表系统行为的程序,并且必须与CAA Java实现一起运行,从而提供整个系统实施。
部分正式方法:只有实施模型针对CAA属性进行验证。 要真正使用CAA Java框架,用户不需要遵循完整的正式方法。 这个框架也可以在实施层面使用,不需要CSP模型。 如果未提供CSP模型,则要从系统规范中获取要实例化的元素,并为特定系统(系统的CAA Java实现)生成CAA Java框架实例。 它可以提交给JPF并且推断CAA属性。 因此,协调模型根据实施层面的CAA属性进行验证。
整个系统的实施由CAA-与提供系统行为的程序一起执行。
请注意,CAA属性必须在实施级别进行验证,即使它们已经在设计级别进行了验证。 实现级别的异常处理与CSP模型不同,必须由用户引入。如果采用正式方法,则必须检查系统的正确性以证实属性。
如果没有遵循正式的方法,那么CAA Java框架仍然可以用来协调协调元素。 开发人员可以在不检查CAA属性的情况下使用框架。 这是使用该框架作为实施协调的捷径的另一种方式,但CAA属性没有正式保证。
3. 协调的原子动作
协调原子行动(CAA)模型Xu等人 (1995年) 整合了原子动作的概念Randell(1975),ACID交易Gray和Reuter(1992) 并发异常处理,旨在实现许多系统组件之间的并发协调,通信和错误恢复。 每个CAA都有一组参与对象(简称参与者)以合作方式相互交流,以完成一项任务(特别是在我们的工作中,我们认为CAA的所有参与者都将开始他们的活动,同时,简化启动CAA的任务)。 它还具有作为数据存储库操作的外部原子对象(例如,外部对象可以是数据库或文件),并由属于不同CAA的参与者共享; 因此,不同CAA对外部对象的访问通过ACID事务以并发的方式发生。
为了在图表中表示CAA,我们使用以下模式:
bull; 参与者由一个水平箭头表示,表示他们随着时间的执行;
bull; 外部对象用水平线表示;
bull; CAA范围受矩形限制;
bull; 事务开始和结束由从当前CAA范围指向外部对象的垂直箭头表示。 箭头被标记以识别它们
全文共28912字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[15809],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。