Incorrect program changes including regression bugs, incorrect bug-fixes, incorrect feature updates are pervasive in software. These incorrect program changes affect software quality and are difficult to detect/correct. In this paper, we propose the notion of "change contracts" to avoid incorrect program changes. Change contracts formally specify the intended effect of program changes. Incorrect program changes are detected when they are checked with respect to the change contracts. We design a change contract language for Java programs and a dynamic checking system for our change contract language. We conduct a preliminary user study to check the expressiveness of our change contract language and find that the language is express...
Abstract. Contracts are a form of lightweight formal specification embedded in the program text. Bei...
Abstract. Contracts are a form of lightweight formal specification embedded in the program text. Bei...
Modern distributed applications typically blend new code with legacy (and possibly untrusted) third-...
Software errors often originate from incorrect changes, including incorrect program fixes, incorrect...
Software errors often originate from incorrect changes, including incorrect program fixes, incorrect...
Software evolves and thus developers frequently make changes to systems that are logged in version c...
Abstract—Software evolves and thus developers frequently make changes to systems that are logged in ...
Abstract—Software evolves and thus developers frequently make changes to systems that are logged in ...
Abstract. Over the past few years, the notion of building software from components has become popula...
Over the past few years, the notion of building software from components has become popular again. T...
Abstract. While most debugging techniques focus on patching implementations, there are bugs whose mo...
Programs should consist of off-the-shelf, interchangeable, black-box components that are produced by...
Automated program repair (APR) is a promising approach to automatically fixing software bugs. Most A...
This work was also published as a Rice University thesis/dissertation: http://hdl.handle.net/1911/18...
Abstract. While most debugging techniques focus on patching implementation-s, there are bugs whose m...
Abstract. Contracts are a form of lightweight formal specification embedded in the program text. Bei...
Abstract. Contracts are a form of lightweight formal specification embedded in the program text. Bei...
Modern distributed applications typically blend new code with legacy (and possibly untrusted) third-...
Software errors often originate from incorrect changes, including incorrect program fixes, incorrect...
Software errors often originate from incorrect changes, including incorrect program fixes, incorrect...
Software evolves and thus developers frequently make changes to systems that are logged in version c...
Abstract—Software evolves and thus developers frequently make changes to systems that are logged in ...
Abstract—Software evolves and thus developers frequently make changes to systems that are logged in ...
Abstract. Over the past few years, the notion of building software from components has become popula...
Over the past few years, the notion of building software from components has become popular again. T...
Abstract. While most debugging techniques focus on patching implementations, there are bugs whose mo...
Programs should consist of off-the-shelf, interchangeable, black-box components that are produced by...
Automated program repair (APR) is a promising approach to automatically fixing software bugs. Most A...
This work was also published as a Rice University thesis/dissertation: http://hdl.handle.net/1911/18...
Abstract. While most debugging techniques focus on patching implementation-s, there are bugs whose m...
Abstract. Contracts are a form of lightweight formal specification embedded in the program text. Bei...
Abstract. Contracts are a form of lightweight formal specification embedded in the program text. Bei...
Modern distributed applications typically blend new code with legacy (and possibly untrusted) third-...