首页> 外文学位 >Program Analyses for Understanding the Behavior and Performance of Traditional and Mobile Object-Oriented Software.
【24h】

Program Analyses for Understanding the Behavior and Performance of Traditional and Mobile Object-Oriented Software.

机译:程序分析,用于了解传统和移动的面向对象软件的行为和性能。

获取原文
获取原文并翻译 | 示例

摘要

The computing industry has experienced fast and sustained growth in the complexity of software functionality, structure, and behavior. Increased complexity has led to new challenges in program analyses to understand software behavior, and in particular to uncover performance inefficiencies. Performance inefficiencies can have significant impact on software quality. When an application spends a substantial amount of time performing redundant work, software performance and user experience can deteriorate. Some inefficiencies can use up certain types of resources and lead to program crashes. In general, performance inefficiency is an important and challenging problem for modern software systems. It is also a shared problem for traditional and mobile object-oriented software. Static and dynamic analyses need to keep up with this trend, and this often requires novel technical approaches.;One important symptom of performance inefficiencies is run-time bloat: excessive memory usage and work to accomplish simple tasks. Bloat significantly affects scalability and performance, and exposing it requires good diagnostic tools. As the first contribution of this dissertation, we present a novel analysis that profiles the run-time execution to help programmers uncover potential performance problems.;Memory leaks, both for traditional and for mobile object-oriented software, present a significant problem for software quality. Static memory leak detection is challenging because it is extremely difficult to statically compute precise object liveness for large- scale applications. We bypass this difficulty by leveraging a common leak pattern.;In addition to static analysis, performance testing is an effective approach to discover memory leaks. For example, sustained growth in memory usage during test execution can indicate potential memory leaks. However, performance testing to ex- pose leaks for arbitrary software is very difficult, because, similar to other dynamic approaches, it also requires specific leak-triggering program inputs. As the third contribution of this dissertation, we introduce LeakDroid, a novel and comprehensive approach for systematic testing of resource leaks in Android applications. At the core of the proposed testing approach is model-based test generation that focuses specifically on coverage criteria aimed at resource leak defects. These criteria are based on the novel notion of neutral cycles: sequences of GUI events that should have a "neutral effect" and should not lead to increases in resource usage. Several important categories of neutral cycles are considered in the proposed test coverage criteria. As demonstrated by experimental evaluation and case studies on eight Android applications, the proposed approach is very effective in exposing resource leaks.;Model-based test generation such as LeakDroid depends critically on GUI models, which describe accessible GUI objects and corresponding user actions. GUI models ultimately determine the possible flow of control and data in GUI-driven applications. The ability to understand Android GUIs is critical for the reasoning of the semantics of an Android application.;GUI applications are usually organized as a series of GUI windows containing structures of GUI widgets. User interaction with these windows (e.g., navigating from one to another and then going back) drives the control flow of the application. In Android, an activity plays the role of a GUI window, and transitions between activities are managed with the help of an activity stack. To understand this additional aspect of Android semantics, we introduce the first static analysis to model the Android activity stack, the changes in this stack, and the related interactions between activities. The analysis is an important step toward fully modeling the control/data flow of an Android application. It can be leveraged by other researchers to prune infeasible control flow paths in static analysis for Android, or to discover more paths that would be missing without modeling of the activity stack.;In conclusion, this dissertation presents several dynamic and static program analysis techniques to understand the behavior of object-oriented software systems, to uncover potential performance inefficiencies in them, and to locate the root causes of these problems. The programs studied by these techniques are all written in Java, but we believe the proposed techniques are general enough to also be applied to systems written in other object-oriented languages. With these techniques, we advocate the insight that a carefully-selected subset of high-level behavioral patterns and pro- gram semantics must be leveraged in order to perform practical program analyses for modern software. (Abstract shortened by UMI.).
机译:计算机行业在软件功能,结构和行为的复杂性方面经历了快速而持续的增长。日益增加的复杂性给程序分析带来了新的挑战,以了解软件行为,尤其是发现性能低下的情况。性能低下会严重影响软件质量。当应用程序花费大量时间执行冗余工作时,软件性能和用户体验可能会下降。效率低下可能会耗尽某些类型的资源,并导致程序崩溃。通常,对于现代软件系统,性能低下是一个重要且具有挑战性的问题。对于传统的和面向对象的移动软件来说,这也是一个共同的问题。静态和动态分析需要跟上这一趋势,并且这通常需要新颖的技术方法。性能低效的一个重要症状是运行时膨胀:过多的内存使用和完成简单任务的工作。 Bloat会严重影响可伸缩性和性能,并且暴露它需要好的诊断工具。作为本论文的第一篇贡献,我们提出了一种新颖的分析方法,它对运行时执行进行了分析,以帮助程序员发现潜在的性能问题。传统和移动面向对象软件的内存泄漏都对软件质量提出了重大问题。 。静态内存泄漏检测具有挑战性,因为对于大规模应用而言,静态地计算精确的对象活动非常困难。我们通过利用常见的泄漏模式来绕过此难题。除了静态分析之外,性能测试是发现内存泄漏的有效方法。例如,在测试执行过程中内存使用率的持续增长可能表明潜在的内存泄漏。但是,为暴露任意软件的泄漏而进行的性能测试非常困难,因为与其他动态方法类似,它也需要特定的触发泄漏的程序输入。作为本论文的第三篇贡献,我们介绍了LeakDroid,这是一种新颖且全面的方法,用于系统测试Android应用程序中的资源泄漏。所提出的测试方法的核心是基于模型的测试生成,它专门针对针对资源泄漏缺陷的覆盖标准。这些标准基于中立循环的新颖概念:GUI事件序列应具有“中立效应”,并且不应导致资源使用增加。建议的测试覆盖率标准考虑了中性循环的几个重要类别。正如对八个Android应用程序进行的实验评估和案例研究所证明的那样,该方法在暴露资源泄漏方面非常有效。基于模型的测试生成(例如LeakDroid)严重依赖于GUI模型,该模型描述了可访问的GUI对象和相应的用户操作。 GUI模型最终确定了GUI驱动的应用程序中可能的控制流和数据流。了解Android GUI的能力对于Android应用程序语义的推理至关重要。GUI应用程序通常组织为一系列包含GUI小部件结构的GUI窗口。用户与这些窗口的交互(例如,从一个窗口导航到另一个窗口然后返回)驱动了应用程序的控制流程。在Android中,活动扮演GUI窗口的角色,并且活动之间的过渡借助活动堆栈进行管理。为了理解Android语义的这一额外方面,我们引入了第一个静态分析来对Android活动堆栈,该堆栈中的更改以及活动之间的相关交互进行建模。该分析是对Android应用程序的控件/数据流进行完全建模的重要一步。其他研究人员可以利用它来修剪Android静态分析中不可行的控制流路径,或者在不对活动堆栈进行建模的情况下发现更多可能缺少的路径。总之,本文提出了几种动态和静态程序分析技术来了解面向对象软件系统的行为,以发现其中潜在的性能低下情况,并找出这些问题的根本原因。这些技术研究的程序都是用Java编写的,但是我们相信所提出的技术足够通用,也可以应用于用其他面向对象语言编写的系统。通过这些技术,我们提倡这样的见解:必须利用精心选择的高级行为模式和程序语义子集,才能对现代软件进行实用的程序分析。 (摘要由UMI缩短。)。

著录项

  • 作者

    Yan, Dacong.;

  • 作者单位

    The Ohio State University.;

  • 授予单位 The Ohio State University.;
  • 学科 Computer science.
  • 学位 Ph.D.
  • 年度 2014
  • 页码 211 p.
  • 总页数 211
  • 原文格式 PDF
  • 正文语种 eng
  • 中图分类
  • 关键词

  • 入库时间 2022-08-17 11:54:07

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号