skip to main content
10.1145/2393596.2393622acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
research-article

Software change contracts

Published:11 November 2012Publication History

ABSTRACT

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 expressive enough to capture a wide variety of real-life changes in three large software projects (i.e., Ant, JMeter, log4j). Finally, our contract checking system detects several real-life incorrect changes in these three software projects via runtime checking of the change contracts.

References

  1. Apache Ant. http://ant.apache.org/.Google ScholarGoogle Scholar
  2. L. Burdy, Y. Cheon, D. R. Cok, M. D. Ernst, J. R. Kiniry, G. T. Leavens, K. R. M. Leino, and E. Poll. An overview of JML tools and applications. STTT, 7(3):212--232, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Y. Chen, D. Rosenblum, and K. Vo. Testtube: A system for selective regression testing. In ICSE, pages 211--220, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. R. Gupta, M. Harrold, and M. Soffa. An approach to regression testing using slicing. In ICSM, pages 299--308, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  5. W. Jin, A. Orso, and T. Xie. Automated behavioral regression testing. In ICST, pages 137--146, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Kim and D. Notkin. Discovering and representing systematic code changes. In ICSE, pages 309--319, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. B. Meyer. Eiffel: The language and environment. Prentice hall press, 300, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. OpenJML. http://sourceforge.net/apps/trac/jmlspecs/wiki/OpenJml.Google ScholarGoogle Scholar
  9. S. Person, M. Dwyer, S. Elbaum, and C. Pasareanu. Differential symbolic execution. In FSE, pages 226--237, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. D. Qi, A. Roychoudhury, and Z. Liang. Test generation to expose changes in evolving programs. In ASE, pages 397--406, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. Qi, A. Roychoudhury, Z. Liang, and K. Vaswani. DARWIN:an approach for debugging evolving programs. In FSE, pages 33--42, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. D. Qi, J. Yi, and A. Roychoudhury. Software change contracts. Technical Report TRE3/12, National University of Singapore, 2012. Available at https://dl.comp.nus.edu.sg/dspace/handle/1900.100/3588.Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. G. Rothermel, R. Untch, C. Chu, and M. Harrold. Prioritizing test cases for regression testing. TSE, 27(10):929--948, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Z. Yin, D. Yuan, Y. Zhou, S. Pasupathy, and L. N. Bairavasundaram. How do fixes become bugs? In FSE, pages 26--36, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. A. Zeller. Yesterday, my program worked. Today, it does not. Why? In FSE, pages 253--267, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Software change contracts

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Conferences
            FSE '12: Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
            November 2012
            494 pages
            ISBN:9781450316149
            DOI:10.1145/2393596

            Copyright © 2012 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 11 November 2012

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article

            Acceptance Rates

            Overall Acceptance Rate17of128submissions,13%

            Upcoming Conference

            FSE '24

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader