[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2483760.2483772acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Expressing and checking intended changes via software change contracts

Published: 15 July 2013 Publication History

Abstract

Software errors often originate from incorrect changes, including incorrect program fixes, incorrect feature updates and so on. Capturing the intended program behavior explicitly via contracts is thus an attractive proposition. In our recent work, we had espoused the notion of "change contracts" to express the intended program behavior changes across program versions. Change contracts differ from program contracts in that they do not require the programmer to describe the intended behavior of program features which are unchanged across program versions. In this work, we present the formal semantics of our change contract language built on top of the Java Modeling Language (JML). Our change contract language can describe behavioral as well as structural changes. We evaluate the expressivity of the change contract language via a survey given to final year undergraduate students. The survey results enable us to understand the usability of our change contract language for purposes of writing contracts, comprehending written contracts, and modifying programs according to given change contracts. Finally, we discuss the tool support developed for our change contract language. The tool support enables (i) test generation to witness contract violation, as well as (ii) automated repair of certain tests which are broken due to program changes.

References

[1]
Apache Ant. http://ant.apache.org/.
[2]
M. Barnett, B. E. Chang, R. DeLine, B. Jacobs, and K. R. M. Leino. Boogie: A modular reusable verifier for object-oriented programs. In Proceedings of the 4th International Symposium on Formal Methods for Components and Objects, pages 364–387, 2006.
[3]
M. Barnett, K. R. M. Leino, and W. Schulte. The Spec# programming system: An overview. In Proceedings of the 2004 Workshop on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, pages 49–69, 2004.
[4]
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.
[5]
Y. Chen, D. Rosenblum, and K. Vo. Testtube: A system for selective regression testing. In ICSE, pages 211–220, 1994.
[6]
Y. Cheon and G. T. Leavens. A runtime assertion checker for the Java Modeling Language (JML). In Proceedings of the 2002 International Conference on Software Engineering Research and Practice, pages 322–328, 2002.
[7]
D. R. Cok and J. Kiniry. ESC/Java2: Uniting ESC/Java and JML. In Proceedings of the 2004 International Workshop on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, pages 108–128, 2004.
[8]
C. Flanagan, K. Leino, M. Lillibridge, G. Nelson, J. Saxe, and R. Stata. Extended static checking for Java. In PLDI, pages 234–245, 2002.
[9]
R. Gupta, M. Harrold, and M. Soffa. An approach to regression testing using slicing. In Proceedings of the 1992 Conference on Software Maintenance, pages 299–308, 1992.
[10]
D. Jackson and D. Ladd. Semantic diff: A tool for summarizing the effects of modifications. In Proceedings of the ’94 International Conference on Software Maintenance, pages 243–252, 1994.
[11]
Eclipse JDT. http://www.eclipse.org/jdt/.
[12]
W. Jin, A. Orso, and T. Xie. Automated behavioral regression testing. In Proceedings of 2010 International Conference on Software Testing, Verification and Validation, pages 137–146, 2010.
[13]
S. K. Lahiri, C. Hawblitzel, M. Kawaguchi, and H. Rebêlo. SymDiff: A language-agnostic semantic diff tool for imperative programs. In CAV, pages 712–717, 2012.
[14]
B. Meyer. Eiffel: The language and environment. Prentice hall press, 300, 1991.
[15]
B. Meyer. Applying “Design by Contract”. IEEE Computer, 25:40–51, 1992.
[16]
OpenJML. http://sourceforge.net/apps/trac/ jmlspecs/wiki/OpenJml.
[17]
C. Pacheco and M. D. Ernst. Randoop: feedback-directed random testing for Java. In OOPSLA, pages 815–816, 2007.
[18]
D. Parnas. Precise documentation: The key to better software. In The Future of Software Engineering, pages 125–148. Springer, 2011.
[19]
S. Person, M. Dwyer, S. Elbaum, and C. Pasareanu. Differential symbolic execution. In FSE, pages 226–237, 2008.
[20]
D. Qi, A. Roychoudhury, Z. Liang, and K. Vaswani. DARWIN: An approach for debugging evolving programs. In ESEC-FSE, pages 33–42, 2009.
[21]
D. Qi, J. Yi, and A. Roychoudhury. Software change contracts. In FSE, pages 22:1–22:4, 2012.
[22]
G. Rothermel, R. Untch, C. Chu, and M. Harrold. Prioritizing test cases for regression testing. IEEE Transactions on Software Engineering, 27(10):929–948, 2001.
[23]
XMLUnit. http://xmlunit.sourceforge.net/.
[24]
XStream. http://xstream.codehaus.org/.
[25]
A. Zeller. Yesterday, my program worked. Today, it does not. Why? In ESEC/FSE, pages 253–267, 1999.

Cited By

View all
  • (2023)Poracle: Testing Patches under Preservation Conditions to Combat the Overfitting Problem of Program RepairACM Transactions on Software Engineering and Methodology10.1145/362529333:2(1-39)Online publication date: 26-Sep-2023
  • (2023)I Depended on You and You Broke Me: An Empirical Study of Manifesting Breaking Changes in Client PackagesACM Transactions on Software Engineering and Methodology10.1145/357603732:4(1-26)Online publication date: 26-May-2023
  • (2018)Efficient static checking of library updatesProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3275535(791-796)Online publication date: 26-Oct-2018
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
ISSTA 2013: Proceedings of the 2013 International Symposium on Software Testing and Analysis
July 2013
381 pages
ISBN:9781450321594
DOI:10.1145/2483760
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]

Sponsors

In-Cooperation

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 15 July 2013

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Dynamic checking
  2. Software changes
  3. Test generation
  4. Test repair

Qualifiers

  • Research-article

Conference

ISSTA '13
Sponsor:

Acceptance Rates

Overall Acceptance Rate 58 of 213 submissions, 27%

Upcoming Conference

ISSTA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)8
  • Downloads (Last 6 weeks)2
Reflects downloads up to 22 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Poracle: Testing Patches under Preservation Conditions to Combat the Overfitting Problem of Program RepairACM Transactions on Software Engineering and Methodology10.1145/362529333:2(1-39)Online publication date: 26-Sep-2023
  • (2023)I Depended on You and You Broke Me: An Empirical Study of Manifesting Breaking Changes in Client PackagesACM Transactions on Software Engineering and Methodology10.1145/357603732:4(1-26)Online publication date: 26-May-2023
  • (2018)Efficient static checking of library updatesProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3275535(791-796)Online publication date: 26-Oct-2018
  • (2015)A Consensus of Thought in Applying Change Management to Information System EnvironmentsInternational Journal of Information System Modeling and Design10.4018/IJISMD.20151001026:4(24-41)Online publication date: 1-Oct-2015
  • (2015)Feedback-controlled random test generationProceedings of the 2015 International Symposium on Software Testing and Analysis10.1145/2771783.2771805(316-326)Online publication date: 13-Jul-2015
  • (2015)Software Change ContractsACM Transactions on Software Engineering and Methodology10.1145/272997324:3(1-43)Online publication date: 13-May-2015
  • (2015)SuperContraProceedings of the 2015 IEEE International Conference on Cloud Engineering10.1109/IC2E.2015.70(283-286)Online publication date: 9-Mar-2015
  • (2014)Verification-aided regression testingProceedings of the 2014 International Symposium on Software Testing and Analysis10.1145/2610384.2610387(37-48)Online publication date: 21-Jul-2014
  • (2014)Patch verification via multiversion interprocedural control flow graphsProceedings of the 36th International Conference on Software Engineering10.1145/2568225.2568304(1047-1058)Online publication date: 31-May-2014
  • (2014)Dynamic Inference of Change ContractsProceedings of the 2014 IEEE International Conference on Software Maintenance and Evolution10.1109/ICSME.2014.72(451-455)Online publication date: 29-Sep-2014

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media