Micro execution
Patrice Godefroid
Pages: 539-549
doi>10.1145/2568225.2568273
Full text: PDF
Micro execution is the ability to execute any code fragment without a user-provided test driver or input data. The user simply identifies a function or code location in an exe or dll. A runtime Virtual Machine (VM) customized for testing purposes then ... expand
Unit test virtualization with VMVM
Jonathan Bell, Gail Kaiser
Pages: 550-561
doi>10.1145/2568225.2568248
Full text: PDF
Testing large software packages can become very time intensive. To address this problem, researchers have investigated techniques such as Test Suite Minimization. Test Suite Minimization reduces the number of tests in a suite by removing tests that ... expand
Interpolated n-grams for model based testing
Paolo Tonella, Roberto Tiella, Cu Duy Nguyen
Pages: 562-572
doi>10.1145/2568225.2568242
Full text: PDF
Models - in particular finite state machine models - provide an invaluable source of information for the derivation of effective test cases. However, models usually approximate part of the program semantics and capture only some of the relevant dependencies ... expand
An analysis of the relationship between conditional entropy and failed error propagation in software testing
Kelly Androutsopoulos, David Clark, Haitao Dan, Robert M. Hierons, Mark Harman
Pages: 573-583
doi>10.1145/2568225.2568314
Full text: PDF
Failed error propagation (FEP) is known to hamper software testing, yet it remains poorly understood. We introduce an information theoretic formulation of FEP that is based on measures of conditional entropy. This formulation considers the situation ... expand
SESSION: Code Contracts, Invariants, and Robustness
Trading robustness for maintainability: an empirical study of evolving c# programs
Nélio Cacho, Thiago César, Thomas Filipe, Eliezio Soares, Arthur Cassio, Rafael Souza, Israel Garcia, Eiji Adachi Barbosa, Alessandro Garcia
Pages: 584-595
doi>10.1145/2568225.2568308
Full text: PDF
Mainstream programming languages provide built-in exception handling mechanisms to support robust and maintainable implementation of exception handling in software systems. Most of these modern languages, such as C#, Ruby, Python and many others, are ... expand
Case studies and tools for contract specifications
Todd W. Schiller, Kellen Donohue, Forrest Coward, Michael D. Ernst
Pages: 596-607
doi>10.1145/2568225.2568285
Full text: PDF
Contracts are a popular tool for specifying the functional behavior of software. This paper characterizes the contracts that developers write, the contracts that developers could write, and how a developer reacts when shown the difference. This paper ... expand
Using dynamic analysis to generate disjunctive invariants
ThanhVu Nguyen, Deepak Kapur, Westley Weimer, Stephanie Forrest
Pages: 608-619
doi>10.1145/2568225.2568275
Full text: PDF
Program invariants are important for defect detection, program verification, and program repair. However, existing techniques have limited support for important classes of invariants such as disjunctions, which express the semantics of conditional statements. ... expand
Inductive verification of data model invariants for web applications
Ivan Bocić, Tevfik Bultan
Pages: 620-631
doi>10.1145/2568225.2568281
Full text: PDF
Modern software applications store their data in remote cloud servers. Users interact with these applications using web browsers or thin clients running on mobile devices. A key issue in dependability of these applications is the correctness of the ... expand
SESSION: Search and APIs
How do API documentation and static typing affect API usability?
Stefan Endrikat, Stefan Hanenberg, Romain Robbes, Andreas Stefik
Pages: 632-642
doi>10.1145/2568225.2568299
Full text: PDF
When developers use Application Programming Interfaces (APIs), they often rely on documentation to assist their tasks. In previous studies, we reported evidence indicating that static type systems acted as a form of implicit documentation, benefiting ... expand
Live API documentation
Siddharth Subramanian, Laura Inozemtseva, Reid Holmes
Pages: 643-652
doi>10.1145/2568225.2568313
Full text: PDF
Application Programming Interfaces (APIs) provide powerful abstraction mechanisms that enable complex functionality to be used by client programs. However, this abstraction does not come for free: understanding how to use an API can be difficult. While ... expand
CodeHint: dynamic and interactive synthesis of code snippets
Joel Galenson, Philip Reames, Rastislav Bodik, Björn Hartmann, Koushik Sen
Pages: 653-663
doi>10.1145/2568225.2568250
Full text: PDF
There are many tools that help programmers find code fragments, but most are inexpressive and rely on static information. We present a new technique for synthesizing code that is dynamic (giving accurate results and allowing programmers to reason about ... expand
Spotting working code examples
Iman Keivanloo, Juergen Rilling, Ying Zou
Pages: 664-675
doi>10.1145/2568225.2568292
Full text: PDF
Working code examples are useful resources for pragmatic reuse in software development. A working code example provides a solution to a specific programming problem. Earlier studies have shown that existing code search engines are not successful in ... expand
SESSION: Adaptive Systems
Self-adaptation through incremental generative model transformations at runtime
Bihuan Chen, Xin Peng, Yijun Yu, Bashar Nuseibeh, Wenyun Zhao
Pages: 676-687
doi>10.1145/2568225.2568310
Full text: PDF
A self-adaptive system uses runtime models to adapt its architecture to the changing requirements and contexts. However, there is no one-to-one mapping between the requirements in the problem space and the architectural elements in the solution space. ... expand
Hope for the best, prepare for the worst: multi-tier control for adaptive systems
Nicolas D'Ippolito, Víctor Braberman, Jeff Kramer, Jeff Magee, Daniel Sykes, Sebastian Uchitel
Pages: 688-699
doi>10.1145/2568225.2568264
Full text: PDFPDF
Most approaches for adaptive systems rely on models, particularly behaviour or architecture models, which describe the system and the environment in which it operates. One of the difficulties in creating such models is uncertainty about the accuracy ... expand
Brownout: building more robust cloud applications
Cristian Klein, Martina Maggio, Karl-Erik Årzén, Francisco Hernández-Rodriguez
Pages: 700-711
doi>10.1145/2568225.2568227
Full text: PDFPDF
Self-adaptation is a first class concern for cloud applications, which should be able to withstand diverse runtime changes. Variations are simultaneously happening both at the cloud infrastructure level - for example hardware failures - and at the user ... expand
Integrating adaptive user interface capabilities in enterprise applications
Pierre A. Akiki, Arosha K. Bandara, Yijun Yu
Pages: 712-723
doi>10.1145/2568225.2568230
Full text: PDFPDF
Many existing enterprise applications are at a mature stage in their development and are unable to easily benefit from the usability gains offered by adaptive user interfaces (UIs). Therefore, a method is needed for integrating adaptive UI capabilities ... expand
SESSION: Testing 2
Micro execution Patrice Godefroid Pages: 539-549 doi>10.1145/2568225.2568273 Full text: PDF
Micro execution is the ability to execute any code fragment without a user-provided test driver or input data. The user simply identifies a function or code location in an exe or dll. A runtime Virtual Machine (VM) customized for testing purposes then ... expand
Unit test virtualization with VMVM
Jonathan Bell, Gail Kaiser Pages: 550-561 doi>10.1145/2568225.2568248 Full text: PDF
Testing large software packages can become very time intensive. To address this problem, researchers have investigated techniques such as Test Suite Minimization. Test Suite Minimization reduces the number of tests in a suite by removing tests that ... expand
Interpolated n-grams for model based testing
Paolo Tonella, Roberto Tiella, Cu Duy Nguyen Pages: 562-572 doi>10.1145/2568225.2568242 Full text: PDF
Models - in particular finite state machine models - provide an invaluable source of information for the derivation of effective test cases. However, models usually approximate part of the program semantics and capture only some of the relevant dependencies ... expand
An analysis of the relationship between conditional entropy and failed error propagation in software testing
Kelly Androutsopoulos, David Clark, Haitao Dan, Robert M. Hierons, Mark Harman Pages: 573-583 doi>10.1145/2568225.2568314 Full text: PDF
Failed error propagation (FEP) is known to hamper software testing, yet it remains poorly understood. We introduce an information theoretic formulation of FEP that is based on measures of conditional entropy. This formulation considers the situation ... expand
SESSION: Code Contracts, Invariants, and Robustness
Trading robustness for maintainability: an empirical study of evolving c# programs
Nélio Cacho, Thiago César, Thomas Filipe, Eliezio Soares, Arthur Cassio, Rafael Souza, Israel Garcia, Eiji Adachi Barbosa, Alessandro Garcia Pages: 584-595 doi>10.1145/2568225.2568308 Full text: PDF
Mainstream programming languages provide built-in exception handling mechanisms to support robust and maintainable implementation of exception handling in software systems. Most of these modern languages, such as C#, Ruby, Python and many others, are ... expand
Case studies and tools for contract specifications
Todd W. Schiller, Kellen Donohue, Forrest Coward, Michael D. Ernst Pages: 596-607 doi>10.1145/2568225.2568285 Full text: PDF
Contracts are a popular tool for specifying the functional behavior of software. This paper characterizes the contracts that developers write, the contracts that developers could write, and how a developer reacts when shown the difference. This paper ... expand
Using dynamic analysis to generate disjunctive invariants
ThanhVu Nguyen, Deepak Kapur, Westley Weimer, Stephanie Forrest Pages: 608-619 doi>10.1145/2568225.2568275 Full text: PDF
Program invariants are important for defect detection, program verification, and program repair. However, existing techniques have limited support for important classes of invariants such as disjunctions, which express the semantics of conditional statements. ... expand
Inductive verification of data model invariants for web applications
Ivan Bocić, Tevfik Bultan Pages: 620-631 doi>10.1145/2568225.2568281 Full text: PDF
Modern software applications store their data in remote cloud servers. Users interact with these applications using web browsers or thin clients running on mobile devices. A key issue in dependability of these applications is the correctness of the ... expand
SESSION: Search and APIs
How do API documentation and static typing affect API usability?
Stefan Endrikat, Stefan Hanenberg, Romain Robbes, Andreas Stefik Pages: 632-642 doi>10.1145/2568225.2568299 Full text: PDF
When developers use Application Programming Interfaces (APIs), they often rely on documentation to assist their tasks. In previous studies, we reported evidence indicating that static type systems acted as a form of implicit documentation, benefiting ... expand
Live API documentation
Siddharth Subramanian, Laura Inozemtseva, Reid Holmes Pages: 643-652 doi>10.1145/2568225.2568313 Full text: PDF
Application Programming Interfaces (APIs) provide powerful abstraction mechanisms that enable complex functionality to be used by client programs. However, this abstraction does not come for free: understanding how to use an API can be difficult. While ... expand
CodeHint: dynamic and interactive synthesis of code snippets
Joel Galenson, Philip Reames, Rastislav Bodik, Björn Hartmann, Koushik Sen Pages: 653-663 doi>10.1145/2568225.2568250 Full text: PDF
There are many tools that help programmers find code fragments, but most are inexpressive and rely on static information. We present a new technique for synthesizing code that is dynamic (giving accurate results and allowing programmers to reason about ... expand
Spotting working code examples
Iman Keivanloo, Juergen Rilling, Ying Zou Pages: 664-675 doi>10.1145/2568225.2568292 Full text: PDF
Working code examples are useful resources for pragmatic reuse in software development. A working code example provides a solution to a specific programming problem. Earlier studies have shown that existing code search engines are not successful in ... expand
SESSION: Adaptive Systems
Self-adaptation through incremental generative model transformations at runtime Bihuan Chen, Xin Peng, Yijun Yu, Bashar Nuseibeh, Wenyun Zhao Pages: 676-687 doi>10.1145/2568225.2568310 Full text: PDF
A self-adaptive system uses runtime models to adapt its architecture to the changing requirements and contexts. However, there is no one-to-one mapping between the requirements in the problem space and the architectural elements in the solution space. ... expand
Hope for the best, prepare for the worst: multi-tier control for adaptive systems
Nicolas D'Ippolito, Víctor Braberman, Jeff Kramer, Jeff Magee, Daniel Sykes, Sebastian Uchitel Pages: 688-699 doi>10.1145/2568225.2568264 Full text: PDFPDF
Most approaches for adaptive systems rely on models, particularly behaviour or architecture models, which describe the system and the environment in which it operates. One of the difficulties in creating such models is uncertainty about the accuracy ... expand
Brownout: building more robust cloud applications
Cristian Klein, Martina Maggio, Karl-Erik Årzén, Francisco Hernández-Rodriguez Pages: 700-711 doi>10.1145/2568225.2568227 Full text: PDFPDF
Self-adaptation is a first class concern for cloud applications, which should be able to withstand diverse runtime changes. Variations are simultaneously happening both at the cloud infrastructure level - for example hardware failures - and at the user ... expand
Integrating adaptive user interface capabilities in enterprise applications
Pierre A. Akiki, Arosha K. Bandara, Yijun Yu Pages: 712-723 doi>10.1145/2568225.2568230 Full text: PDFPDF
Many existing enterprise applications are at a mature stage in their development and are unable to easily benefit from the usability gains offered by adaptive user interfaces (UIs). Therefore, a method is needed for integrating adaptive UI capabilities ... expand