没有合适的资源?快使用搜索试试~ 我知道了~
可在www.sciencedirect.com在线获取理论计算机科学电子笔记279(2)(2011)33-41www.elsevier.com/locate/entcs软件组件的性能认证埃里克汉堡1Ralf Reussner2软件设计与质量德国卡尔斯鲁厄理工学院信息学院程序结构与数据组织研究所摘要软件的非功能属性应该在开发过程的早期就被指定。在软件开发的分布式过程中,这意味着质量要求必须在规范中明确,并且委托组件的开发方不仅需要交付实现的组件,还需要提供对其非功能属性的描述。基于这些工件,一致性检查保证实现的组件满足性能要求。我们将模型精化的概念扩展到软件的非功能属性,并提出了一个精化演算,用于组件的抽象性能描述之间的一致性检查。演算基于一个细化概念,涵盖了组件的性能相关方面。该方法被应用到Palladio组件模型作为一种描述语言的组件的性能属性。关键词:模型改进,认证,性能建模1引言在基于组件的系统的设计过程中,在开发过程的早期阶段就对系统的非功能属性(如性能)进行建模是很有用的开发人员通常将服务质量视为软件的一种属性,一旦产品完成,就需要检查和纠正。然而,这种就像测试是从一开始就应该集成的实施过程的一个组成部分一样,性能建模使系统开发人员能够根据分析和模拟做出这项工作是由GlobaliSE项目授予的,该项目是巴登-符腾堡州的一项研究合同,由Landesstiftung Baden-Württemberg gGmbH资助。1 电子邮件:burger@kit.edu2电子邮件:reussner@kit.edu1571-0661 © 2011 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2011.11.01034E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)33然而,抽象性能模型也可以用来表达基于组件的软件开发的规范化阶段的性能需求随着开发的进行,会创建附加的性能模型来描述设计的属性,并最终描述实现的组件。为了证明在所有这些阶段都达到了性能要求,需要一个性能改进的概念。通过在开发过程中使用性能优化,开发人员可以随时检查是否仍然满足要求以及哪些属性可能被违反。即使交付的调试组件没有性能规范,也可以通过逆向工程方法(如静态代码分析和监视执行跟踪分析)进行重建[8]。然而,由于这种重新构建的性能描述与手动指定的性能描述不同,因此仍然需要精化演算来显示合规性。由于组件的性能受到许多因素的影响,因此优化计算应通过设置多个优化级别来考虑这一点。在本文中,我们提出了一种基于组件属性(如外部调用序列和资源使用)的精化演算。这种改进方法的各个方面利用了[4]中提出的有限自动机和资源需求演算等形式化方法,这使得在抽象层面上证明有效的性能改进成为可能。本文的贡献首先是一个参数化组件性能规格的模型,其次是一个精化演算。所提出的组件性能规范语言基于Palladio组件模型[1]中使用的性能预测模型,Palladio组件模型[ 1]是一种描述基于组件的软件架构的元模型。PCM已被用于几个工业案例研究和服务质量属性,特别是性能和可靠性,以及建模和预测的工具支持的预测方法。我们使用PCM作为组件性能的描述语言,因为它描述了基于组件的系统的各个方面之间的参数依赖关系,如部署,组装和使用剖面。本文的结构如下:在第二部分,我们简要介绍了Palladio组件模型。在第3节中,介绍了软件性能认证和精化演算的场景。第4节讨论了该方法的假设和局限性。相关的工作在第5中提到,然后在第6结束。2基金会Palladio组件模型(PCM)[1]是一个描述基于组件的软件架构的元模型。该模型的设计与一个特别关注的服务质量属性,特别是性能的预测。服务执行规范(SEFF)描述了组件提供的服务和所需服务之间的关系。特别是,PCM SEFF是第一个演算,E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)3335考虑了影响组件性能的所有环境因素。在PCM元模型中,它们以资源需求服务执行规范(RDSEFF)的形式定义,RDSEFF用于性能预测,并包含控制流程的概率抽象RDSEFF使用源自UML活动图的对于每个RDSEFF,可以指定资源需求以及转换概率和资源需求对服务的形式参数的依赖性RDSEFF可以被注释到组件的每个提供的服务他们描述• 服务如何使用硬件/软件资源;• 服务如何调用组件RDSEFF中的资源需求抽象地指定服务算法对资源的消耗在所需的CPU单元或字节读取或写入硬盘方面。资源需求以及对所需服务的调用包含在抽象控制流程规范中,该规范捕获调用概率、序列、分支、循环和分叉。RDSEFF抽象地对具有资源需求和对所需服务的调用的服务的外部可见行为进行建模。 它们呈现组件的灰盒视图,这对于性能预测是必要的,因为黑盒规范(例如,具有签名的接口)不包含足够的信息。RDSEFF不是白盒组件规范,因为它们从服务的具体算法中抽象出来,并且不公开组件开发人员的知识产权。组件开发人员在组件开发期间或之后指定RDSEFF,从而使第三方能够进行性能预测3软件组件规范的认证3.1认证场景所提出的精化演算可以应用于[4]中描述的认证场景。图1描述了这种情况。在建议的基于组件的软件开发过程中,创建组件的规范文档,并通过有关组件性能的非功能性要求(在左侧描述为“性能要求”)进行丰富这些需求必须使用抽象的性能描述语言在规范文档中正式表达履约要求作为一项合同,必须由执行方履行。然而,性能描述不仅可以用于软件系统的规范,而且可以描述该系统的实际基于规范文档,通常由第三方供应商创建组件的实现。生成的组件附带了其性能属性的描述(在右侧显示为“性能描述”)。此描述可由开发人员在36E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)33组件规格组件实现性能要求性能描述创建图1.认证场景两种方式:第一种情况,组件的开发人员手动创建通过[6]中描述的方法验证了该描述与实际实现的一致性。在第二种情况下,[8]中讨论的逆向工程技术用于从实现的组件创建后验性能描述。在这种情况下,组件交付方或组件委托方可以执行逆向工程。假设这些逆向工程技术的正确性,所得到的性能描述可用于与需求进行比较性能要求和性能描述的可用性是本文提出的方法的必要前提如果这两个伪影都存在,则应确定实现描述是否是对性能要求的细化为此,规定了一个正式的细化定义,允许双方在抽象描述的层面上检查实现与性能属性规范的一致性。在可由可信认证机构提供的检查工具的帮助下,然后检查两个人工制品之间的关系是否成立,如果是肯定的,则可以颁发证书如果手动创建了该如果细化关系成立,并且基于测试的验证成功,这意味着实现符合性能要求。3.2层次细化为了细化性能,我们提出了一种细化演算,下面将详细解释。通过这种演算,可以表达细化的不同方面。首先检查外部调用协议的一致性,因为这种一致性是要比较的组件进行细化的必要先决条件然后,考虑CPU、内存和硬盘等活动资源的资源需求。对于精化演算的定义,我们使用Palladio分量基于测试的验证[6]逆向工程[8]E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)3337«InternalAction»«ExternalCallAction»innerMethod 1requiredService1资源需求1000 CPU>«分支操作»? 分支条件:数值。数值>= 0«LoopAction»条件:数字。值0array.NUMBER_OF_ELEMENTS«InternalAction»innerMethod3«InternalAction»innerMethod2ResourceDemand800 CPU>ResourceDemand400 CPU>«ExternalCallAction»requiredService3«ExternalCallAction»requiredService2«InternalAction»«ExternalCallAction»innerMethodrequiredService1资源需求1200 CPU>«Loopaction»数组.NUMBER_OF_ELEMENTS«ExternalCallAction»requiredService2(a) 规范RDSEFFR1(改编自[1],第7页)(b) 实施RDSEFFR2图2. RDSEFF示例模型[1]作为我们基于组件的性能模型的基础。在Palladio组件模型中,组件的性能属性使用资源需求服务执行规范(RDSEFF)的形式化描述。这些规范包含不同类型的操作,用于控制流程建模、获取/释放资源以及若干类型资源(如CPU、HDD、网络等)的资源需求作为一个运行示例,我们将使用图2(a)(R1)中描述的RDSEFF作为性能规范,使用图2 (b )(R2)中的RDSEFF 作为实现性能描述。规范RDSEFFR1包括对所需服务的调用,这些服务表示为ExternalCallAction元素。组件内的计算被抽象为InternalAction元素。控制流只在对外部服务的调用之间建模;外部动作中的控制流在示例RDSEFFR1中,存在对输入变量的依赖性:BranchAction由输入变量number- ber参数化,而LoopAction中的循环迭代次数取决于输入变量数组的大小。在下面的章节中,我们将使用这个例子来说明精化演算的不同部分。3.3外部呼叫外部调用描述组件如何与其他组件交互。它们对一个组件对它所连接的另一个组件的所需服务的调用进行由于一个实际的组件实例可以连接到任何具有兼容接口的组件,因此不能对这些外部调用的性能行为这就是为什么首先要检查外部调用序列的合规性。我们根据[12]中提出的方法将外部调用序列描述为非确定性有限状态自动机,以将对外部服务的调用(包括参数)表示为有限自动机中的转换公司现采用国际38E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)33替代性概念在这里被定义为细化的标准。3.4资源需求的细化除了被动资源外,组件还可以使用主动资源,如CPU、内存或网络。在[4]中,我们提出了一种基于规则的方法,用于根据资源需求来细化性能属性。由于我们已经在前面的部分中处理了外部调用,因此这里不考虑它们。对于资源需求的细化,我们不考虑来自RDSEFF的外部调用,只处理内部行动的资源需求。使用[4]中的精化演算,我们可以匹配两个不同RDSEFF的动作并检查精化。如果我们从图2(a)(R1)中获取RDSEFF,并检查它对图2(b)(R2)的RDSEFF的细化,我们可以看到R2的资源需求是innerMethod中的1200个CPU周期。 在R1中,我们有一个分支动作,所以我们必须考虑所有可能的执行序列来检查细化。在这里的(简单)示例中,CPU资源需求有两种可能性(i) 1000 + 400· #l,其中#l是循环迭代次数(ii) 第二支1800注意,我们在这里没有考虑分支条件或概率;细化规则指出,如果对于所有可能的迹,R2的资源需求小于或等于R1的资源需求,则细化关系成立。在我们这里的例子中,如果循环迭代次数大于零,这是真的,这意味着如果输入变量数组不为空,则细化成立。这说明了细化关系依赖于使用上下文;在这种情况下,可以很容易地将变量数组的值与细化关系联系起来。在更复杂的情况下,可能无法解析地解决这种依赖关系(参见下一节)。因此,只有在已知使用概况的情况下,才能确定细化关系是否成立。例如,如果我们从使用概要中知道数组的大小总是至少为1,那么从R1到R2的细化关系在这种情况下成立。3.5方法的完整性通过性能改进的演算,涵盖了Palladio组件模型中可用于描述资源需求服务执行规范的所有结构。第一个方面,External Calls,包括External- CallAction元素,但也包括控制流元素BranchAction,LoopAction和ForkAction。第二个方面是ResourceDemands,它涵盖了带有注释的ResourceDemand描述的InternalAction元素。如果我们看一下一个组件拥有的上下文,所给出的精化演算是独立于组件的组装上下文的,这意味着应用精化的组件可以与其他组件任意组合而不会失去精化属性。此外,自第三次E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)3339由于精化步骤仅针对抽象资源需求,如CPU周期或内存,因此该方法也独立于组件的部署上下文在细化演算的描述中没有考虑的RDSEFF元素是SetVariableAction。我们有意忽略变量,遵循[12]的范例,即参数值不应在组件接口的描述中考虑此外,元素AcquireAction和ReleaseAction不包括在当前方法中;被动资源的处理留给将来的工作。4假设/局限性4.1使用概况本文件所呈列的改良方法目前仅在固定使用情况的假设这意味着在每个ResourceDemand元素中,随机表达式是可计算的,而不依赖于输入参数。这限制了精化演算的表达能力,因为精化不能完全独立于所有组件上下文来表达。在第3.1小节所述的细化方案中,这一限制意味着必须在认证过程之前定义要为其颁发证书的使用概况,并且证书将限于指定的概况。4.2Palladio构件模型的形式语义只有在假设所使用的精化规则也是正确的情况下,正式精化检查才是正确的。资源需求的保留或性能需求的满足不是直接检查的,而是编码在细化规则中:如果存在有效的规则应用,则细化关系成立。在本文中,规则本身没有被正式证明是正确的。这可以通过使用Palladio组件模型的形式化描述来实现,例如使用[7,4.4章]中的转换到Petri网(QPN)。然而,问题是,绩效的概念也必须在作为这种转变目标的形式主义中定义。在此基础上,可以使用变换来证明5相关工作针对构件软件的性能分析,目前存在着许多如果一个软件系统是从头开始设计的,那么这个过程应该得到一个开发环境的支持,这个开发环境也提供了创建新系统的建模技术。作为对UML的扩展,UML MARTE profile [11]可以用于实时和嵌入式系统的建模。在SPE社区中,有几个性能域的元模型可用,最值得注意的是40E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)33CB-SPE [3]和KLAPER [5]。软件构件的抽象性能模型可以在开发的早期阶段创建,也可以为现有软件创建。为了从黑盒组件中获得性能模型,Krogmann等人[8]开发了一种逆向工程方法,该方法使用遗传算法、静态和动态分析以及基准测试。该方法已被验证为基于Java的系统。逆向工程方法是图1所示认证方法的一部分。如果要对现有组件进行认证,则必须首先创建已实现组件的性能描述由于不能假设软件的来源可用于认证目的,因此使用黑箱方法来获得性能属性。性能建模和分析通常基于模拟和测试。正式的方法是罕见的,可以在概率模型检查领域找到,例如PRISM工具[9],它将传统的正确性检查与随机过程相结合,以推理可靠性和性能[2],[10]。然而,这种方法缺乏对系统的使用配置文件和执行环境进行参数化建模的可能性6结论和今后的工作在本文中,我们提出了一种精化演算,它检查一个实现的组件是否符合抽象的性能规范。 与逆向工程方法和基于测试的性能验证一起,该计算可用于认证场景,以提供从抽象规范到源代码的完整一致性关系链。在抽象层面上表达细化可以保护内部实现细节和源代码等知识产权,同时仍然提供基于正式方法的认证声明,而不仅仅是满足开发过程中的标准。演算使用Palladio组件模型的参数化建模功能,因此细化独立于组件的执行环境,包括在硬件上的部署和与其他组件的组装。计划在未来版本中独立于使用情况的细化演算,但不包括在目前由于未解决的问题,比较随机功能方面的性能。 由于用户行为的参数化建模是Palladio的,将其纳入精化演算应该是未来工作的主要目标。此外,被动资源的处理不包括在当前方法中。在正式的开发过程中,使用正式证明的方法检查实现与规范的一致性本文提出的精化演算在形式化开发的方向上丰富了基于构件的开发过程然而,对于细化的完全形式化定义,本文中使用的性能抽象的语义必须被定义,E. 伯格河Reussner/Electronic Notes in Theoretical Computer Science 279(2)(2011)3341精化演算的规则必须被证明正确。这是未来的工作,因为性能优化的概念是新的,在这个领域几乎没有相关的工作。建议的开发过程将两种用于确保基于组件的软件质量的技术结合在一起这种方法的新颖之处在于基于形式描述语言来证明非功能属性。使用复杂的性能描述(如Palladio组件模型的RDSEFF形式),开发人员不仅可以在开发过程的早期阶段进行性能预测,还可以检查最终在分布式组件开发过程中,组件的性能认证有助于系统架构师从现有实现中进行选择,并保证系统的整体质量引用[1] Becker,S.,H. Koziolek和R.Reussner,用于模型驱动性能预测的Palladio组件模型,Journal of Systemsand Software82(2009),pp.3-22.URLhttp://dx.doi.org/10.1016/j.jss.2008.03.066[2] Berczes,T.,G.古塔湾Kusper,W. Schreiner和J. Sztrik,用概率模型分析代理缓存服务器性能模型,Proc. 第五届Web系统自动规范和验证国际研讨会(WWV'09 ) ,2009 年 。[3] Bertolino,A.和R. Mirandola,CB-SPE工具:将基于性能的性能工程付诸实践,在:I。Crnkovic,J. A.Sta Escherichord,H. W. Schmidt和K. Wallnau,editors,基于代理的软件工程,第7届国际研讨会,CBSE 2004年5月24-25日,爱丁堡,英国,,第100页。233-248。[4] Burger,E., 对软件组件的正式认证,在:B。 比赫诺瓦河 H. 罗伊斯纳,C. Szyperski 和 W.Weck , editors , Proceedings of the Fifteenth International Workshop onComponent- Oriented Programming(WCOP)2010,Interne Berichte2010-14(2010),pp.15-22.URLhttp://sdqweb.ipd.kit.edu/publications/pdfs/burger2010b.pdf[5] Grassi,V., R. Mirandola 和A. Sabetta ,Filling the Gap between Design and Performance/ReliabilityModels of Component Based Systems:A Model-Driven Approach,Journal on Systems and Software80(2007),pp. 528-558[6] 格伦达 H、 软件组件性能规范的认证, in:R. 罗伊斯纳,C.Szyperski和W. 威克,编辑,诉讼2009年第十四届面向用户的编程国际研讨会(WCOP),Interner Bericht。Fakultät für Informatik,Universität Karlsruhe2009-11,2009,pp. 13比21URLhttp://digbib.ubka.uni-karlsruhe.de/volltexte/1000012168[7] Koziolek , H., “软 件 组 件 可 重 用 性 能 规 范 的 参 数 依 赖 性 ”, 博 士 。 论 文 , Universität Oldenburg ,Uhlhornsweg 49-55,26129 Oldenburg(2008)。[8] Krogmann , K. , M. Kuperberg 和 R. Reussner , Using Genetic Search for Reverse Engineering ofParameterBehaviourModelsforPerformancePrediction , IEEETransactionsonSoftwareEngineering(2010),已接受出版。[9] Kwiatkowska,M.,G. Norman 和D. Parker,Quantitative Analysis With the Probabilistic Model,Electronic Notes in Theoretical Computer Science153(2006),pp. 5网址http://www.sciencedirect.com/science/article/B75H1-4K07PMJ-2/2/8e7b438449798904818f4a384a1d8def[10] Kwiatkowska,M.,G. Norman和D. Parker,PRISM:Probably Model Checking for Performance andReliability Analysis,ACM SIGMETRICS Performance Evaluation Review36(2009),pp. 40比45[11]对象管理组(OMG),用于实时和嵌入式系统建模和分析的UML概要(MARTE)RFP(实时/05-02-06)(2006)。URLhttp://www.omg.org/cgi-bin/doc? 2005-2-6[12] Wehrheim,H.和R. H. Reussner,Towards more realistic component protocol modeling with finitestate machines,in:FACS
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功