zoukankan      html  css  js  c++  java
  • the assignment of reading paper

    在 IEEE 上找到Increasing Dependability of Component-based Software Systems by Online Failure Prediction,这样一篇文章。

    不知道是不是要公开原文献,在IEEE上可以下载到。如果需要(仅供学习使用),可以发邮件来要。

    进行了一个简要的文章翻译:

     

    通过在线缺陷预测提高基于组件的软件系统的可靠性

    摘要——对于大型软件系统来说在线缺陷预测是一个挑战。原因之一是他复杂的结构,具有很多部分相互依赖的软件和硬件组件。最先进技术的方法是使用不同的预测模型对于不同的兴趣(关注)参数,或者是一个整体预测模型它包含对于所有组件的不同参数。然而在处理变化系统的时候会遇到问题在这篇文章中我们提出初步的研究工作关于在线缺陷预测方向针对基于组件的大型软件系统。为此使用了三个互补的模型:(i)一个架构模型用于捕捉软硬件的性能和他们之间的依赖关系。(ii) 对于每一个组件,预测模型捕获当前组件的状态并且预测这个独立组件在未来的缺陷;(iii)系统级模型表示系统的当前状态和使用的组件级的预测模型和信息上的依赖关系,为前置缺陷管理预测缺陷并分析架构系统改变的影响。

    关键词——可靠性,在线缺陷预测。基于组件的软件系统,检测,运行模型

    I. INTRODUCTION

    高可靠性——包括服务质量特性例如性能,可用性,可依赖性是软件系统运行时的终极目标。系统架构的设计是用来提供很高地可靠性,同时会有一些冗余,这在一定程度上会导致系统运行失败。这个方法在一定的层级上表现优秀。然而依然有系统冗余以及不能阻止系统运行宕机的情况。

    一个用来提高系统可靠性的方案是在运行时尝试预测可能发生的缺陷并且阻止它们的发生。这个方法是在训练阶段收集系统可检测的参数并且创建一个在运行时能够分类系统状态的预测模型并且预测它是否可能出错。有两个现存的方案(i)基于已选中的历史系统参数检测记录来预测一个或多个服务质量度量,举例:采用时间序列预测预测响应时间;(ii) 预测系统事件,举例,使用机器学习预测缺陷。 然而在实际情况中,系统往往会随着时间的推移而进化。这些改变往往包括硬件组件软件更新系统重新配置或者系统架构更改。这些改变为缺陷预测提出了一个挑战,因为我们的预测都是基于已经监测到的数据,不能够跟随真实系统的变化进行实时更新。

    在这篇文献里,我们提出一个组合的方法来提高基于组件的软件系统的在线缺陷预测。我们并不考虑把系统的所有部分组合在一起来建造一个大型的预测模型,而是构建组件级别的模型来构造一个系统级的预测模型。我们的方法是使用架构分析导向的模型来构建基于模型的质量服务预测。我们的方法优点在于:(i)不同的预测技术可以被应用于不同的组件,(ii)运行时系统的改变可以被包含于预测模型中,并且(iii)预测结果不仅包括系统是否出现缺陷,而且还包括一旦出现问题,可以检测他可能出现的根源。

     文献剩余部分则是有以下内容构成。第二部分是我们的设想的方法以及一个运行时的例子。第三部分关注于预测模型。不同的用法场景在第四部分予以描述,包括预测模型在运行时的使用和进化,相关的工作在第五部分讨论。第六部分绘出了结论和未来工作概要。

    II. ENVISIONED APPROACH

    大型系统中预测缺陷的众多挑战之一是要考虑到这里有很多有很多参数并且内部相互依赖的组件。在这之中的一个模型内部建造一个预测模型将很难更新因为原理上的模型与软件系统架构上的实体通常是不对应的。我们提出在线缺陷预测方法将很容易的解决这个问题通过使用系统架构模型包含的信息把分解预测模型变成基于组件的模型该方法旨在提高系统的可靠性,通过提供关于未来缺陷基于概率的更早的警告,可能的时间和可能的问题根源。 然后管理人员可以选择先手更换那些检测到的可能导致系统出现问题的组件并且阻止它的发生。下面的II-AII-B部分给出了一个架构模型的简要描述和一个我们进行基于组件的系统概述。

    1. Architectural Model

    一个基于组件的软件系统架构模型描述了组件是如何被部署和联系在一起完成完整功能的系统。它的优点在于每一个组件都可以被其他的组件替代,前提是替代组件要继承被替代组件的服务,当然只能少不能多。在我们而定工作中我们计划使用帕拉第奥的组件模型。

    图一提供了一个样例系统的架构视图包括组件的集合部署行为。这个系统包括三个软件组件C1C2C3被部署在两个硬件组件H1H2上。除此之外,C1组件提供了S1S2两个服务他们可以在系统边界上为用户提供服务。这个模型展示了组件之间的可靠性。举例:C1依赖于C2C3C3依赖于H2.注意这个模型也可以描述硬件组件的复合结构,比如CPU,存储器,硬件驱动,当然可以互相区分的原因是他们相互独立。通过组件C1实现的服务简称C1.s1使用硬件H1提供的服务和软件C2提供的服务。同样地,C1.s2使用硬件H1C3(并未描绘在图中)。我们假设架构模型的存在是以手工方式创建的或者被系统在运行时监测学习得到的。

     

    图一:架构组件模型(摘要)

    此外,本系统的架构和可靠性,以及架构模型也提供了一个明确的解析,关于一个组件的缺陷是如何导致其他故障的,并创建一个差错链条一直扩散到系统边界。举个例子,C2的一些缺陷将导致C1的某些服务对客户不可用,或者H2的缺陷让C3导致整个系统崩溃。这个讯息是有用的在分析缺陷根源和缺陷扩散的时候。然而在线缺陷预测将需要回答更深层次的问题,例如,当一个组件出现故障以后,是否它会影响整个系统的功能。

    B. Prediction Models  

    这个预测模型在我们提出的方法中被分成两个部分,用来预测组件缺陷的组件级预测模型和用来预测整个系统缺陷系统级别的预测模型。

    1) 组件及预测模型:A组件级预测模型旨在表征和预测组件的状态,例如运行状况很好这样一个状态,并且逐渐进入不好的状态,或者一开始就在经历一个不太良好的状态。一个预测模型存在于每一个架构组件中。不同组件预测模型的创建不必须使用相同的技术。举个例子,时间序列广播可以被应用于提供时间序列化数据或者机器学习或者数据挖掘技术中的组件预测模型中,当一组要被监测的数据已经获得,但是他们之间的关系尚不明晰的时候。这个预测的结果将通过一个独特的当前状态接口返回。作为一个未来的状态的概率分布。每一个独立的模型都可以被运行时的测量数据提炼来准确影响当前操作状态的断面。

    2) 系统级别的预测模型,这个系统及的预测模型是组件状态模型的集合组件的可靠性通过架构模型来提取。我们使用每个状态代表一个组件缺陷状态集的过渡模型,转化代表下一个组件随时间的鼓掌概率分布。在本论文中,我们采用了二阶连续时间马尔可夫链(CTMC)。 该模型有一个优势,一个标准的马尔可夫链,到下一个状态的过渡,既与当前的状态有关,又与历史访问过的状态有关。这个模型的性能可以表示表示组件之间的可靠性还可以预测一个组件的缺陷是否会影响其他组件或者整个系统的宕机。图三的III-B部分描绘了这个模型在运行时的细节。

    III. CONSTRUCTION OF PREDICTION MODELS  

     系统的架构组件预测模型可以被独立地创建并且随后融入进系统级的预测模型。组件的构建和系统预测模型可以被III-A III-B部分描绘。就像之前提到过的,我们在组件水平预测模型上不做具体的假设。我们使用时间序列模型和机器学习进行简化。

    1. Component-level Prediction Model 

    组建模型可以通过分析组件的可检测参数被创建,组建的度量是可靠性特征比如可用性和性能。举个例子,如果组件C3在图一的数据库中,可观察的参数可以是内存的消耗。对于这个组件的合适的预测模型因果时序广播一个带有时间序列特点的内存消耗。时间序列模型时间序列模型可以提供当前状态通过检测当前值是否高于或者低于某一个阈值。并且通过外推时间序列到将来的节点来预测下一个状态。模型和结果在图2中展示。

    另外一个例子是C2提供给功能服务和日志时间到日志文件中。日志文件可以进行分析用来显示日志序列和组建状态之间的的关系,要使用机器学习算法,例如提供向量机和决策树。在我们之前的工作中,机器学习算法被用来区分硬件作为一个健康或者缺陷状态并预测过度将在何时发生。

    (a)预测模型 (b)预测结果

    图二:C3组件级别预测模型以及越过内存消耗的阈值可能性

    B. System-level Prediction Model

    系统级模型通过组合所有组件模型的缺陷状态构建到一个二阶连续时间马尔科夫链上。这个过程可以被分成两部:创建状态以及指定他们之间的过度。

    1) 状态:从系统视角来看:马尔科夫链的状态代表组件的缺陷状态。如果一个系统的组件出现故障,系统的过度状态将是组件出现异常中。接近着这个缺陷将会导致其他的组件出现缺陷,由于组件之间的依赖性。组件缺陷链可以扩散直到它导致一个系统边界的可以被用户感知的服务缺陷。

    对于模型缺陷以来,我们使用二阶连续时间马尔科夫链来将当前的和之前的组件缺陷以一个特殊的序列纳入考虑范畴。举个例子,如果图一中的组件C3出现缺陷,它将会导致C2出现缺陷,马尔科夫链将会从一个没有组件出现异常的健康状态开始过度到C1出现缺陷,然后到C1C2都出现异常。一个状态中组件缺陷状态的数量取决于链的阶数。一个高阶链代表组件缺陷的长序列,然而,状态数以指数形式增加,举个例子组件缺陷的n元排列数。

    为了减小2阶连续时间马尔科夫链的存储复杂度,我们将架构模型中获得信息融合并创建可到达的状态,这就是缺陷序列,如果不在该列之内就不会有缺陷发生。表一代表组件的可靠性表,从II-A架构模型解析得到。相比那些组件架构未知的情况,(已知的)组件之间的依赖性将会大大减少。从依赖表中,一个二街马尔可夫链可以被创建图三的一阶的马尔科夫链与之等效。链的入口是健康状态,这是过度开始的状态当一个组件出现状况时,举个例子,H1或者C3随后这个状态拥有两个缺陷,H1C2或者C3C2,组件缺陷的最大数,在每一个状态在这种情况下,被限制为2,这就是这个链的阶数。在链中有两个额外的状态,S1S2这代表服务12的缺陷被用户在系统边界感知到了。

    表一:架构组建的依赖性,举例,C3依赖于H2

     

    图三:系统级的预测模型中每一个组件代表最后两个组件的缺陷的序列

    2)  过度:每一个组件级别的预测模型都提供预测结果,包括组件缺陷出现的时间和可能性,这个结果可以用来指定预测状态。举个例子,从H2的状态过度到H2C3的可能性被预测C3组件预测模型的结果预测,既H2已经失效。H2失效的可能性导致服务S1失效的变得通过组合C3C2C1到一个过度可能性分布的预测结果进行计算。

    IV. USAGE SCENARIOS应用场景

    在我们方法的预测模型被允许各种不同的应用场景,通过下面几个分部进行描述。

    1. Predicting Failures at Runtime实时缺陷预测

    在运行时当预测模型完成部署,这个模型伴随系统的健康状况表现出并没有组件出现缺陷。当一个组件模型预测将会出现异常时,系统模型假设预测是正确的,并临时过度到组件出现缺陷的状态。从这个状态,模型计算其他组件出现缺陷的可能性通过组件级别的预测模型和检索可以导致系统出现缺陷的路径,使用标准的连续时间马尔科夫链的求解程序。如果系统转换成缺陷状态的可能性超过之前设定的阈值,那么缺陷警告将被报出。T预测结果包括系统的服务将会崩溃,什么将可能会出现缺陷,包括路径在内,在组件缺陷链上。 讯息可以被传递到系统管理者或者阻止问题发生缺陷的管理模块通过诊断缺陷链和修复或者更换问题组件。本文使用的转换模型可以被扩展来支持并行状态,举个例子petri网络模型。使用相同的机制我们可以分析系统的影响,举个例子,前置缺陷管理的组件更换基于服务质量的。

    B. Updating and Refining Prediction Model B.更新和精炼预测模型

    马尔科夫链在我们方法中的一个优点是在运行时状态可以被添加或者删除。如果一个新的组件被添加到系统中,组件的组件的缺陷状态也会被添加到链中根据从架构模型中获得到的信息。更进一步,组件模型的预测结果会变得不真实由于不可靠的估计在学习阶段,或者运行阶段的组件重配置过程中。那些经常做出错误预测的模型可以被单独拿出来重新进行训练基于运行时通过例如Kieker这样的显示工具观测到的数据。

    V. RELATED WORK相关工作

    相关工作来自在线缺陷预测领域和基于架构的服务质量的评估,我们提出的方法不仅包括出现缺陷的地方和提供了更多信息既当缺陷出现以后可能导致的其他问题。

     在线缺陷预测技术可以被分成两类。 第一个分类旨在选择系统的关键参数并且为他们每一个建造预测模型。这个方法的一个例子就是一个服务的反馈时间将超过可接受的使用时间序列广播技术的阈值。 在这个分组中本技术尤其是考虑直接影响因素的参数导向模型。另一方面,这个技术在第二个分类中聚合各种各样的可到达的参数和系统事件不论他们是否对于系统的可靠性具有直接的影响。 机器学习和数据挖掘随后将被应用在收集信息在训练阶段来找出系统事件和服务质量问题之间的关系。已发现的关系被视作预测模型在运行时对系统进行分类他的状态健康或者异常。已经建立的技术可以被应用到我们的方法中作为组件预测模型。

    基于架构服务质量评估方法使用设计导向系统模型并通过服务质量相关信息加以完善。 分析仿真模型解析器应用于获得服务质量测量的兴趣点。 他们关注不同的服务质量特性,举个例子,系能,可靠性,资源效率。 这些方法在最开始只是关注时间设计上的预测。然而,在过去的几年中这些方法开始使用在运行时的基于模型的服务质量评估进行融合。前述的总括性方法是基于架构的服务质量模型,我们的关注点在于将分析模型融入在线缺陷预测。

    VI. CONCLUSION结论

    在线缺陷预测模型是提高系统可靠性的一个解决方案通过预测可能的服务质量问题并且在问题发生前提出警告。然而创建一个预测模型是一项极具挑战性的任务尤其当系统十分庞杂包含很多内部之间存在依赖关系的组件时。我们提出一个通过分解组建模型的方法来构造预测模型。每一个模型都是一个技术上独立的预测器负责预测一个组件的缺陷。T系统级的组建模型的建立通过使用架构模型中获得的信息融合组建模型的状态到过度模型中。我们提出的预测模型提供缺陷信息包括时间,可能性和组件以及导致缺陷出现的根源。我们的方法允许我们在系统运行时构造系统级别的预测模型即使有组件被添加或者删除。

    我们未来的工作希望扩展在线缺陷预测方法成一个可充用的框架。一个对于框架的初步描述,建立在KiekerPalladio,他们在我们之前的工作中可以被找到。我们将继续调查一个合适的模型来建立系统级别的预测模型并且自动进行模型的构建工作包括组件级别和系统级别的预测模型。我们希望评估我们的方法通过组合一个真实世界的数据,仿真和实验环境。

  • 相关阅读:
    Java 判断日期的方法
    HTTP Session例子
    Unity3D性能优化
    TCP学习之二:客户端与服务端的连接
    TCP学习之一:TCP网络编程概念
    TCP学习之三:客户端、服务端同步传输字符串
    TCP学习之四:传输协议
    Lua与.net的CLR相互调用
    HTC vive开发:关于手柄按键
    JavaSESocket编程之简易聊天系统
  • 原文地址:https://www.cnblogs.com/letben/p/4597491.html
Copyright © 2011-2022 走看看