2,847 papers · page 123 of 143
Guoqing Xu, Atanas Rountev, Yan Tang, Feng Qin
Checkpointing and replaying is an attractive technique that has been used widely at the operating/runtime system level to provide fault tolerance. Applying such a technique at the application level can benefit a range of software engineering tasks such as testing of long-running …
Chunyang Ye, Shing-Chi Cheung, W. K. Chan, Chang Xu
Atomicity is a desirable property that safeguards application consistency for service compositions. A service composition exhibiting this property could either complete or cancel itself without any side effects. It is possible to achieve this property for a service composition by…
Yunwen Ye, Yasuhiro Yamamoto, Kumiyo Nakakoji
Studies have shown that programmers frequently seek external information during programming, from source code and documents, as well as from other programmers because much of the information remains in the heads of programmers. Programmers therefore often ask other programmers qu…
Fang Yu, Tevfik Bultan, Erik Peterson
An essential tool in object oriented modeling is the specification of cardinalities of associations between classes. In Object Constraint Language (OCL) such constraints are expressed as conditions on the sizes of the collections that correspond to associations. In this paper we …
Xin Zhou, Ying Liu, Jun Zhu
Model transformation transforms a high level source model into the skeleton of a low level target model, thereafter developers continue to refine and concretize the skeleton. With the changing requirements, the source model will be consequently modified and such modification shou…
Yoav Zibin, Alex Potanin, Mahmood Ali, Shay Artzi, Adam Kiezun, Michael D. Ernst
A compiler-checked immutability guarantee provides useful documentation, facilitates reasoning, and enables optimizations. This paper presents Immutability Generic Java (IGJ), a novel language extension that expresses immutability without changing Java's syntax by building upon J…
Rachel L. Cobleigh, George S. Avrunin, Lori A. Clarke
Property specifications concisely describe aspects of what a system is supposed to do. No matter what notation is used to describe them, however, it is difficult to represent these properties correctly, since there are often subtle, but important, details that need to be consider…
Christophe Damas, Bernard Lambeau, Axel van Lamsweerde
Models are increasingly recognized as an effective means for elaborating requirements and exploring designs. For complex systems, model building is far from an easy task. Efforts were therefore recently made to automate parts of this process, notably, by synthesizing behavior mod…
Hyunsook Do, Gregg Rothermel
Regression testing is an important but expensive activity, and a great deal of research on regression testing methodologies has been performed. In recent years, much of this research has emphasized empirical studies, including evaluations of the effectiveness and efficiency of re…
Matthew B. Dwyer, Suzette Person, Sebastian G. Elbaum
Recent advances in static program analysis have made it possible to detect errors in applications that have been thoroughly tested and are in wide-spread use. The ability to find errors that have eluded traditional validation methods is due to the development and combination of s…
Sebastian G. Elbaum, Hui Nee Chin, Matthew B. Dwyer, Jonathan Dokulil
Unit test cases are focused and efficient. System tests are effective at exercising complex usage patterns. Differential unit tests (DUT) are a hybrid of unit and system tests. They are generated by carving the system components, while executing a system test case, that influence…
Fernando Castor Filho, Nélio Cacho, Eduardo Figueiredo, Raquel Maranhão, Alessandro Garcia, Cecília M. F. Rubira
It is usually assumed that the implementation of exception handling can be better modularized by the use of aspect-oriented programming (AOP). However, the trade-offs involved in using AOP with this goal are not well-understood. This paper presents an in-depth study of the adequa…
Olivier Giroux, Martin P. Robillard
Repeated changes to a software system can introduce small weaknesses such as unplanned dependencies between different parts of the system. While such problems usually go undetected, their cumulative effect can result in a noticeable decrease in the quality of a system. We present…
Bhargav S. Gulavani, Thomas A. Henzinger, Yamini Kannan, Aditya V. Nori, Sriram K. Rajamani
We consider the problem if a given program satisfies a specified safety property. Interesting programs have infinite state spaces, with inputs ranging over infinite domains, and for these programs the property checking problem is undecidable. Two broad approaches to property chec…
Brian Hackett, Alex Aiken
We present a study of all sources of aliasing in over one million lines of C code, identifying in the process the common patterns of aliasing that arise in practice. We find that aliasing has a great deal of structure in real programs and that just nine programming idioms account…
William G. J. Halfond, Alessandro Orso, Panagiotis Manolios
SQL injection attacks pose a serious threat to the security of Web applications because they can give attackers unrestricted access to databases that contain sensitive information. In this paper, we propose a new, highly automated approach for protecting existing Web applications…
Ranjit Jhala, Rupak Majumdar
Bitwise operations are commonly used in low-level systems code to access multiple data fields that have been packed into a single word. Program analysis tools that reason about such programs must model the semantics of bitwise operations precisely in order to capture program cont…
Deepak Kapur, Rupak Majumdar, Calogero G. Zarba
Interpolation based automatic abstraction is a powerful and robust technique for the automated analysis of hardware and software systems. Its use has however been limited to control-dominated applications because of a lack of algorithms for computing interpolants for data structu…
Mik Kersten, Gail C. Murphy
When working on a large software system, a programmer typically spends an inordinate amount of time sifting through thousands of artifacts to find just the subset of information needed to complete an assigned task. All too often, before completing the task the programmer must swi…
Sunghun Kim, Kai Pan, E. James Whitehead Jr.
The change history of a software project contains a rich collection of code changes that record previous development experience. Changes that fix bugs are especially interesting, since they record both the old buggy code and the new fixed code. This paper presents a bug finding a…