基于软件演化的性能评估与分析Word文件下载.docx

上传人:b****6 文档编号:21972440 上传时间:2023-02-02 格式:DOCX 页数:48 大小:872.39KB
下载 相关 举报
基于软件演化的性能评估与分析Word文件下载.docx_第1页
第1页 / 共48页
基于软件演化的性能评估与分析Word文件下载.docx_第2页
第2页 / 共48页
基于软件演化的性能评估与分析Word文件下载.docx_第3页
第3页 / 共48页
基于软件演化的性能评估与分析Word文件下载.docx_第4页
第4页 / 共48页
基于软件演化的性能评估与分析Word文件下载.docx_第5页
第5页 / 共48页
点击查看更多>>
下载资源
资源描述

基于软件演化的性能评估与分析Word文件下载.docx

《基于软件演化的性能评估与分析Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于软件演化的性能评估与分析Word文件下载.docx(48页珍藏版)》请在冰豆网上搜索。

基于软件演化的性能评估与分析Word文件下载.docx

研究生姓名:

导师姓名:

PerformanceevaluationandanalysisBasedontheevolutionofsoftware

AThesisSubmittedto

SoutheastUniversity

FortheAcademicDegreeofMasterofEngineering

BY

Supervisedby

SchoolofComputerScienceandEngineering

2015

东南大学学位论文独创性声明

本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。

尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构的学位或证书而使用过的材料。

与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。

研究生签名:

日期:

东南大学学位论文使用授权声明

东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、缩印或其他复制手段保存论文。

本人电子文档的内容和纸质论文的内容相一致。

除在保密期内的保密论文外,允许论文被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。

论文的公布(包括刊登)授权东南大学研究生院办理。

导师签名:

日期:

摘要

软件系统的实现依赖于环境,为了能够在这个环境中生存下去,延长软件的生命周期,软件需要进行逐步的演化。

在软件中,造成这种变化的原因有多种,例如错误的修复、功能上的增删改等。

软件演化所造成的功能和架构上的改变会造成软件性能发生变化,从而影响软件质量,并对用户体验造成影响。

另一方面,有时演化的目的是为了提升软件性能。

随着计算机软件复杂性的不断增加,想要确定软件演化过程中哪些代码变更带来了性能的变化变得十分困难。

从软件性能评估与分析入手,通过开发软件性能评估工具,对软件各演化版本进行性能评估,并根据评估数据和版本差异分析代码变更对软件性能的影响,从而确定造成软件性能变化的原因。

本课题的研究内容在于利用软件在演化过程中逐步变化的特点,通过对历史库中所有版本的性能指标(包括响应时间和资源占用率)的检测和对比来发现性能出现显著变化的版本,最后通过相邻版本的代码差异比较发现造成性能降低或者提升的原因。

主要工作如下:

1.软件性能指标评估

(1)根据实际情况,选取较为可行的,可监控的评估软件的性能指标,这些指标包括CPU占用时间,虚拟机内存消耗等指标;

(2)设计与实现软件性能指标评估工具。

通过该工具,在被评估软件运行过程中对选择的软件性能指标进行评估,将判断软件性能指标是否符合预期,给出软件性能评估结果;

2.软件性能指标的分析

(1)对选择的具有多个版本的Java开源软件进行性能评估,通过相邻两个版本的性能指标差异和版本差异定位造成软件性能变化的原因;

(2)对当前版本的性能评估结果进行分析,得出下一个版本在性能上的演化需求;

3.软件性能指标评估系统的设计与实习

(1)根据上述功能要求,设计与实现了性能指标评估系统。

该系统包含了性能指标评估过程中的每一个环节;

(2)该工具还包括了系统存储模块,存储性能指标历史版本的数据;

(3)该工具也包括了实施展示功能模块,该模块将性能指标历史数据进行实时展示。

4.结合Java开源项目进行实验

(1)开发Java软件性能评估工具,作为实验工具对选取的Java开源软件进行性能评估,能够获取性能指标并对其进行存储;

(2)对比获取到的两个相邻版本的性能指标,结合版本差异确定软件性能变化的根源。

5.针对开源的图书管理系统进行了软件性能评估与测试。

在实验结果基础上,结合系统源代码,分析源代码的变化对系统的性能指标在各方面的影响,并通过相关工具分析了各个版本的开源图书管理系统的代码变更情况。

经过图书馆管理系统的不同演化版本的实验下,测试了其主要的性能参数,获得了相关结果,并进行了相关的分析。

从分析中可以看出,软件系统性能的变化原因是多种因素造成的,与网络,主机运行环境,用户的参数等都有关系。

但在相同环境下,某些代码的变化会带来软件系统性能的变化,包括内存使用,虚拟机内存,处理时间等各种情况的变化。

通过实验工具的分析和总结,得出系统工具的可行性。

从分析中可以看到,软件代码的变化对系统性能的重要影响。

关键词软件架构;

演化;

性能;

仿真;

顺序图;

评估

Abstract

Softwaresystemimplementationdependsontheenvironment.Inordertosurviveinthisenvironmentandextenditslifecycleofsoftwaresoftwaremustevolvegradually.Therearemanyreasonslikebugfixes,requirementchangesandsooncausingchangestosoftware.Changestofunctionandarchitecturecausedbysoftwareevolutionmayaffectsoftwareperformance,thusaffectingsoftwarequalityanduserexperience.Ontheotherhand,sometimesthepurposeofevolutionistoimprovesoftwareperformance.Withtheincreasingcomplexityofcomputersoftware,itisverydifficulttoidentifycodechangeswhichaffectthesoftwareperformanceduringthesoftwareevolution.Thispaperintroducesamethodtoidentifythesecodechanges.Firstly,Idevelopaperformanceevaluationtooltoevaluateandcompareperformanceofsuccessivesoftwareversions.Then,twosuccessiveversionswhichhavedramaticperformancechangesareidentified,andthecodechangesbetweenthemmustberesponsibleforperformancechanges.

Researchcontentofthispaperistousethesoftwareintheevolutiongradualchangeinthecharacteristicsofhistoricallibrariesinallversionsoftheperformancemetrics(includingresponsetimeandresourceutilization)detectionandcontrasttoseeaperformancesignificantchangeintheversionofthelastbycomparisonbetweentheadjacentversionofthecodefoundcauseperformancedegradationorimprovementreasons.

Keywords:

Softwarearchitecture;

evol7ution;

performance;

simulation;

sequencediagram;

evaluation

目录

摘要I

AbstractII

目录III

缩略词表V

第一章绪论1

1.1研究背景与意义1

1.2研究现状1

1.2.1软件演化研究1

1.2.2软件性能评估研究2

1.3论文主要工作3

1.3.1研究内容3

1.3.2可行性分析3

1.4论文章节安排4

1.5本章小结4

第二章软件演化概念及软件性能评估技术5

2.1相关概念5

2.1.1软件演化的定义5

2.1.2软件性能评估概念5

2.2软件性能测试过程7

2.2.1软件性能测试模型7

2.2.3软件性能测试过程7

2.3软件性能测试工具8

2.3.1Jconsole工具8

2.3.2VisualVM工具8

2.3.3Perform工具10

2.3.4WMI(WindowsManagementInstrumentation)技术10

2.3.5BeyondCompare12

2.4本章小结12

第三章软件演化及软件性能评估13

3.1软件演化以及性能评估过程13

3.2软件系统性能指标选择13

3.3软件系统性能指标计算方法15

3.3.1进程性能指标获取15

3.3.2虚拟机性能指标获取15

3.3.3其它性能指标获取16

3.4性能评估工具需求分析17

3.5本章小结18

第四章软件演化过程性能评估工具设计与实现19

4.1软件演化性能评估工具的设计19

4.2软件性能评估过程19

4.3系统性能指标获取20

4.4测试用例选择以及对比分析21

第五章软件系统性能评估实验22

5.1实验环境搭建22

5.2实验测试与结果分析22

5.2.1实时监控界面22

5.2.2连续版本性能评估、对比以及分析23

5.3本章小结24

第六章总结与展望25

6.1主要工作总结25

6.2未来工作展望25

致谢26

参考文献27

作者简介28

缩略词表

缩略词

英文全称

中文全称

SA

SoftwareArchitecture

软件架构

SAE

SoftwareArchitectureEvolution

软件架构演化

SSD

SystemSequenceDiagram

系统顺序图

SD

SequenceDiagram

顺序图

MSC

MessageSequenceChart

消息序列图

EEG

EventExecutionGraph

事件执行图

JDK

JavaDevelopmentKit

Java开发工具

SASE

SoftwareArchitectureSimulationEvaluation

软件架构仿真评估工具

第一章绪论

随着信息化技术的发展,计算机软件得到了广泛的应用。

同时,计算机软件的不断创新、不断发展成长,对软件系统的功能和非功能需求也越来越高,这使得人们越来越重视软件本身的质量。

在软件质量中,软件性能(例如响应时间和资源占用率)是评价软件质量的一个重要指标,它在某种程度上决定了用户体验是否完美,如果不满足用户要求,将会对用户体验,软件质量造成重大影响。

随着新技术的不断发展,软件系统也在不断的演化和发展。

在这样的过程中,软件性能也在不断变化。

因此,定位软件演化过程中对软件性能造成影响的变更代码非常重要,它能够为后续软件演化的性能提升提供指导。

本文通过研究软件演化过程中,对软件性能具有关键影响的代码更新情况,为后续软件演化和发展提供指导和帮助。

1.1研究背景与意义

变化性是软件的基本属性。

随着信息化技术的普及和不断发展,一方面软件系统得到了广泛的应用;

另一方面,软件技术也必须要跟随着信息系统技术的发展而不断演化和发展。

随着网络环境的变化和软硬件技术平台的不断更新和快速变化,人们对软件功能和非功能的需求也在不断提高。

特别是在Intemet成为主流软件运行环境之后,网络的开放性和动态性使得客户需求与硬件资源更加频繁地变化,导致软件的变化性和复杂性进一步增强。

为了适应这种需求和发展,人们提出了软件演化技术。

软件演化指的是软件进行变化并达到所希望形态的过程,可分为静态演化和动态演化两种类型。

由于具有持续可用性的优点,动态演化已成为软件工程研究的热点。

软件演化过程作为软件过程的一个分支,它同样也是一种软件过程,它通过对软件演化过程中的一些较难以控制的活动进行管理,试图为软件演化过程建立一个统一的流程框架。

软件演化能否取得成功在很大的程度上取决于组织所实施的软件演化过程。

因而,它对于软件的演化具有重要的意义。

在软件演化过程中,软件代码的更新变化对于软件的质量有着重要的影响和作用。

定位并确定软件演化过程中那些对软件性能造成重要影响的代码对于后续软件演化非常重要。

这是因为它能够为后续软件演化的性能提升提供准确性指导。

通过对软件演化中各个开发版本的性能评估与比较来找出发生性能变化的相邻版本,发生在这两个版本间的代码变更就是这次性能变化的原因。

通过找出导致系统性能发生变化根本原因的代码变化,会为开发人员今后的系统开发带来帮助。

在软件演化过程中,新的性能需求所造成的代码变更必然会引起性能的变化,而其他类型的需求所带来的代码变更有可能导致软件性能上升,也可能导致其下降,具有不确定性。

所以需要研究软件演化对性能的影响,总结规律,为后期的软件演化操作积累经验。

综上所述,如果能对软件系统的演化进行评估,就可以在软件开发及其演化的早期阶段对软件进行预测分析,从而指导软件的合理开发以及演化。

因此针对软件系统的演化版本性能评估的研究具有重要的意义。

1.2研究现状

目前,许多研究人员对软件演化以及软件性能评估进行了多方面的研究。

1.2.1软件演化研究

软件演化可以分为动态演化和静态演化,动态演化远比静态演化技术更为复杂,技术上更难以处理。

部分研究人员从软件体系结构高层次对软件演化过程进行分析,从系统全局描述系统当前配置状态,对系统级特征属性的监控和关键约束,并以此作为软件动态演化的重要依据和驱动因素。

文献[1]为实现基于体系结构方面的动态演化,系统地从动态体系结构描述语言、软件应用模型和构造框架、软件运行环境和机制等方面逐步展开研究,并采用高层次逻辑描述语言进行建模和分析。

文献[2]从软件体系结构和特征驱动方面研究了软件演化过程,提出了软件演化参考体系结构(SERA),该结构描述了基于特征模型的动态软件体系结构的受限演化空间和面向各种特定演化需求的动态软件体系结构可变性。

文献[3]通过建立一种系统性的软件动态演化建模理论和方法,该方法主要以软件需求为驱动,通过体系结构模型,建立软件行为管理机制和流程实现软件系统的动态演化,采用形式化方法描述软件演化过程。

文献[4]在分析软件动态演化面临的挑战的基础上,设计了面向动态演化的需求元模型。

该元模型以特征为基本元素,按特征组合的方式建立需求模型,需求模型由行为特征和属性特征组成。

在此基础上,讨论了需求模型的参照完整性、依赖一致性和互斥一致性,并进一步把需求模型规范化为需求模型第一范式到第三范式,需求模型规范化的过程提供了一种保证需求模型一致性的方法。

表明了该方法的可行性及其对软件动态演化的有效支持。

文献[5]

提出基于Agent的软件演化支撑框架。

在该支撑框架基础上,提出了基于Agent的软件演化过程模型并采用形式化方法描述,该模型包括了面向用户需求和环境动态变化两个纬度描述软件体系架构变化。

作者还针对动态环境中软件演化过程的关键环节上利用动态演化逻辑描述需求。

文献[6]从软件演化的角度出发,将软件的整个生命周期中产生的历史版本进行研究,通过这种软件历史版本的研究和分析,寻找软件本身特征参数能耗的演化趋势和规律并对这些规律进行软件的能耗建模,用以软件能耗评估。

该方法将实测与能耗建模相结合的方法并在软件历史版本相关数据的基础上进行建模分析,最后从软件演化的角度来分析和探究软件能耗实测数据与软件高层特征参数之间的关联关系,并建立相应的能耗评估模型。

1.2.2软件性能评估研究

关于软件演化过程中,软件性能方面的研究主要有:

文献[7]提出使用神经网络模型对收集到的所有性能数据进行建模和分析,从而得到系统整体资源的消耗情况。

但是它没有实现软件不同版本之间的性能比较。

文献[8]提出利用引用传播图(referencepropagationgraph)来查找程序中应该被释放掉的无效引用,最终解决运行时膨胀(run-timebloat)问题。

文献[9]中提出方法调用的重复模式对软件的性能造成重大影响,可以通过在调用环境树(CallingContextTree,CCT)所包含的方法调用数据中寻找这种重复模式来定位性能问题的根源。

然而,这三篇文献没有涉及性能数据对比的部分,所以与软件演化没有关系,只能在分析性能问题时加以参考。

文献[10]探索了一种利用性能回归测试历史库来帮助进行性能回归测试分析的方法。

这个方法会自动地将新的性能测试结果同过去相对应的测试结果进行对比,最后将系统度量指标中出现性能下降的地方按照严重级别呈现在测试报告中。

但是它只研究了如何快速定位性能下降的位置,没有对相邻版本的代码进行对比,也没有给出性能下降的原因。

文献[11]通过对比两次程序执行所生成的调用环境树,在方法层面上得出两次程序执行之间的性能差异(这里的性能主要指方法调用次数和处理时间)。

但是这篇文章侧重于迅速给出两次程序执行之间的性能差异,并不关心各个演化版本的性能对比情况和性能变化对应的原因。

在文献[12]、[13]、[14]中,针对软件演化过程中的性能分析方式得到了阐述。

这种分析方式首先需要记录整个软件执行过程中方法栈的数据(包括调用方法、被调用方法、调用次数、执行时间等等),然后在执行结束后根据这些数据生成调用环境树,最后通过对比两个版本执行后所生成的调用环境树(在相同输入环境下)以及两个版本的代码得到导致性能发生变化的方法及其对应的代码变更。

这种性能分析方式是方法级的,程序执行后能够迅速定位导致性能变化的原因。

它的缺点在于只关注方法的处理时间,不关注资源的占用情况。

综上所述,目前,针对软件演化过程中每一个阶段的性能变化情况,尚无系统性分析与研究。

无法真正明确认识系统变化过程中,给系统性能带来影响的关键因素,无法为用户体验的改善带来帮助。

1.3论文主要工作

1.3.1研究内容

针对软件演化过程中,系统性能的变化情况,本文旨在设计并实现一种基于软件演化的性能评估系统与方法进行分析研究与实现。

对软件性能指标进行评估、在软件性能指标评估结果的基础上进行演化分析、结合Java开源项目对评估方法和分析方法进行实验验证。

具体如下:

1.软件性能指标的评估

(1)选取要进行评估的软件性能指标;

(2)构建软件性能指标评估工具,在软件运行过程中对选择的软件性能指标进行评估;

判断软件性能指标是否符合预期,给出软件性能评估结果;

3.结合Java开源项目进行实验

1.3.2可行性分析

目前,据现有资料可知国内外关于软件演化的性能研究比较少,大部分集中在利用调用环境树对比性能差异再结合代码差异确定性能变化的原因。

但是主要的思想是明确的,即在软件演化过程中,对比相同输入情况下的不同历史版本软件的性能差异,再结合版本间的代码变更,可以确定造成软件性能变化的根源。

这些研究都验证了这一思路的可行性。

在软件性能指标的获取方面,现有的关于程序插桩的技术是成熟的,可以用来获取软件的响应时间,另外Java虚拟机和Windows操作系统都对外提供了获取资源占用率的相关接口,利用这些接口来获取资源占用率数据是可行的。

目前有大量的开源软件以及这些软件的各种历史版本,对于分析其代码变化与性能变化之间的关系也可通过查看比较源代码的变化情况分析得到。

通过上述分析,本文的研究方向是可行的,并且对于分析软件演化以及保障性能变化之间关系具有一定的价值和意义。

1.4论文章节安排

本论文共分为六章,各章的内容简述如下:

第一章介绍了软件演化及其演化的评估的研究背景、关键技术点的研究现状,本文研究内容和可行性分析,以及全文的章节安排。

第二章介绍了与软件演化及性能评估相关的技术,包括软件演化的定义,软件性能定义以及软件性能评估模型以及相关技术。

第三章介绍了软件演化及性能评估系统需求分析和描述。

第四章介绍了软件演化及性能评估系统的实现,性能参数的获取。

设计并实现了软件性能评估工具,给出了工具每个模块的设计思路,并按照评估参数,对软件评估工具每个模块进行实现。

第五章设计了实验系统和平台以及方案,针对某开源软件,进行性能评估的实际测试和分析,建立性能与代码之间的模型,并通过实例分析系统功能及模型。

第六章总结了本文的研究工作,并指出未来的研究方向。

1.5本章小结

本章介绍了该课题的研究背景和研究意义,并对目前软件演化以及软件性能方面的研究现状进行了总述和总结,并给出了该课题研究的可行性分析。

第二章软件演化概念及软件性能评估技术

本章首先介绍当前研究对软件演化的定义,软件性能评估参数以及软件性能评估参数监控方法。

2.1相关概念

2.1.1软件演化的定义

软件过程包含了软件生命周期里所涉及的系列过程,它为管理软件开发过程中难以控制的活动提供了一个统一的框架[15]。

软件演化过程作为软件过程的一个分支,它同样也是一种软件过程,它通过对软件演化过程中的较难以控制的活动进行管理,试图为软件演化过程建立一个统一的流程框架。

软件演化能否取得成功在很大的程度上取决于组

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1