Skip to content

Instantly share code, notes, and snippets.

@pqnelson
Created February 19, 2016 17:28
Show Gist options
  • Select an option

  • Save pqnelson/27649a9316b751a3be3a to your computer and use it in GitHub Desktop.

Select an option

Save pqnelson/27649a9316b751a3be3a to your computer and use it in GitHub Desktop.
Contracts Reading List
@string{icse = "International Conference on Software Engineering"}
@string{cacm = "Communications of the {ACM}"}
@string{ieee-software = "{IEEE Software}"}
@string{tools = "Technology of Object-Oriented Languages and Systems"}
@string{lncs = "Lecture Notes in Computer Science" }
@string{jacm = "Journal of the {ACM}"}
@string{ecoop = "European Conference on Object-Oriented Programming"}
@string{toplas = "{ACM} Transactions on Programming Languages and Systems"}
@string{oopsla = "{Object-Oriented Programming, Systems, Languages, and Applications}"}
@string{oopsla-companion = "{Object-Oriented Programming, Systems, Languages, and Applications Companion}"}
@string{rv="{Workshop on Runtime Verification}"}
@string{fse = "{Proceedings of ACM Conference Foundations of Software Engineering}"}
@inproceedings{bjpw:making-components-contract-aware,
author="Antoine Beugnard and Jean-Marc J\'ez\'equel and No{\"e}l Plouzeau and Damien Watkins",
title="Making Components Contract Aware",
booktitle=ieee-software,
pages = "38--45",
month = "june",
year =1999}
@inproceedings{hc:turing,
author = "R. C. Holt and J. R. Cordy",
title = "The {Turing} Programming Language",
booktitle = cacm,
year = 1988,
volume=31,
month=dec,
pages="1310--1423"}
@inproceedings{lh:anna,
author = "D. C. Luckham and F.W. von Henke",
title="An overview of {Anna}, a specification language for {Ada}",
booktitle=ieee-software,
volume = 2,
pages="9--23",
month=mar,
year = 1985}
@article{r:programming-with-assertions,
author="David S.~Rosenblum",
title="A Practical Approach to Programming with Assertions",
journal=tose,
volume="21",
month=jan,
year="1995",
pages="19--31",
number="1"}
@inproceedings{bfmw:jass,
title="{Jass} - {Java} with Assertions",
author="Detlef Bartetzko and Clemens Fischer and Michael Moller and Heike Wehrheim",
booktitle=rv,
note="{H}eld in conjunction with the 13th {Conference on Computer Aided Verification}, {CAV'01}",
year=2001}
@mastersthesis{b:jass,
author="Detlef Bartetzko",
title="{P}arallelit{\"a}t und {V}ererbung beim {P}rogrammieren mit {V}ertrag",
school="Universit{\"a}t Oldenburg",
type="Diplomarbeit",
year="1999",
month=apr}
@inproceedings{k:iContract,
author="Reto Kramer",
title="{iContract} --- The {Java} Design by Contract Tool",
booktitle=tools,
year="1998"}
@inproceedings{khb:jcontractor,
author = "Murat Karaorman and Urs H{\"o}lzle and John Bruno",
title="{jContractor}: A Reflective {Java} Library to Support Design By Contract",
booktitle="Proceedings of Meta-Level Architectures and Reflection",
year=1999,
month=jul,
series = {lncs},
volume = 1616}
@techreport{dh:handshake,
author="Andrew Duncan and Urs {H\"olzle}",
title="Adding Contracts to {Java} with Handshake",
institution="The {U}niversity of {C}alifornia at {S}anta {B}arbara",
year="1998",
number="TRCS98-32",
month=dec}
@unpublished{m:jmsassert,
author="{Man Machine Systems}",
note="\\{\tt http://www.mmsindia.com/DBCForJava.html}",
year="2000",
title="Design by Contract for {Java} Using {JMSAssert}"}
@unpublished{k:kiev,
author="Maxim Kizub",
title="Kiev language specification",
year="1998",
note="{\tt http://www.forestro.com/kiev/}"}
@article{wb:run-time-result-checking,
author="Hal Wasserman and Manuel Blum",
Title="Software Reliability via Run-Time Result-Checking",
Journal=jacm,
volume="44",
Number="6",
Year="1997",
month=nov,
pages="826--849"}
@article{l:programming-with-specifications,
author="David Luckham",
title="Programming with Specifications",
journal="Texts and Monographs in Computer Science",
publisher="Springer-Verlag",
year="1990"}
@ARTICLE{p:software-module-specification,
AUTHOR = "D.~L.~Parnas",
TITLE = "A Technique for Software Module Specification with Examples",
JOURNAL = CACM,
VOLUME = 15,
NUMBER = 5,
PAGES = {330--336},
MONTH = may,
YEAR = 1972
}
@inproceedings{orrss:pvs,
TITLE = {{PVS}: Combining Specification, Proof Checking, and
Model Checking},
AUTHOR = {S. Owre and S. Rajan and J.M. Rushby and N. Shankar
and M.K. Srivas},
BOOKTITLE = {Computer-Aided Verification, CAV '96},
EDITOR = {Rajeev Alur and Thomas A. Henzinger},
PAGES = {411--414},
PUBLISHER = {Springer-Verlag},
SERIES = {Lecture Notes in Computer Science},
NUMBER = 1102,
MONTH = {July/August},
YEAR = 1996,
ADDRESS = {New Brunswick, NJ}
}
@inproceedings{s:pvs,
TITLE = {{PVS}: Combining Specification, Proof Checking, and
Model Checking},
AUTHOR = {N. Shankar},
BOOKTITLE = {Formal Methods in Computer-Aided Design (FMCAD '96)},
EDITOR = {Mandayam Srivas and Albert Camilleri},
PAGES = {257--264},
PUBLISHER = {Springer-Verlag},
SERIES = {Lecture Notes in Computer Science},
VOLUME = 1166,
MONTH = nov,
YEAR = 1996,
ADDRESS = {Palo Alto, CA}
}
@inproceedings{okmm:adl,
title="The Assertion Based Testing Tool for {OOP}: {ADL2}",
author="Masaharu Obayashi and Hiroshi Kubota and Shane P. McCarron and Lionel Mallet",
booktitle=icse,
url="http://adl.opengroup.org/exgr/icse/icse98.htm",
year=1998}
@inproceedings{w:inhertance-across-components,
author="Wolfgang Weck",
title="Inheritance Using Contracts and Object Composition",
booktitle="Proceedings of the Workshop on Components-Oriented Programming",
year=1997
}
@inproceedings{bfsg:polytoil,
title="{PolyTOIL}: A type-safe polymorphic object-oriented language",
author="Kim B. Bruce and Adrian Fiech and Angela Schuett and Robert van Gent",
booktitle=ecoop,
year=1995,
publisher="Springer-Verlag",
volume=952,
pages="27-51"}
@manual{gsvk:sather,
key = "Sather",
title = "A Language Manual for Sather 1.1",
month = aug,
year = "1996",
author = "Benedict Gomes and David Stoutamire and Boris Vaysman and Holger Klawitter",
url = "http://www.icsi.berkeley.edu/~sather/Documentation/LanguageDescription/contents.html"
}
@manual{kr:blue,
key = "Blue",
title = "Blue: Language Specification, version 0.94",
year = "1997",
author = "Michael K{\"o}lling and John Rosenberg",
url = "http://www.sd.monash.edu.au/blue/"
}
@article{lw:behavior-subtyping,
title="A Behavioral Notion of Subtyping",
author="Barbara H. Liskov and Jeannette M. Wing",
journal=toplas,
month="November",
year="1994"}
@TechReport{lw:behavior99,
author = "B. H. Liskov and J.M. Wing",
title = "Behavioral Subtyping using invariants and constraints",
institution = "School of Computer Science, Carnegie Mellon University",
number = "CMU CS-99-156",
month = jul,
year = "1999",
}
@inproceedings{a:oo-pl-sub,
author="Pierre America",
title="Designing an object-oriented programming language with behavioural subtyping",
booktitle="Proceedings of Foundations of Object-Oriented Languages",
series=lncs,
volume=489,
pages="60--90",
publisher="Springer-Verlag",
year=1991}
@inproceedings{hhg:contracts,
author="Richard Helm and Ian M. Holland and Dipayan Gangopadhyay",
title="Contracts: Specifing Behaviorial Compositions in Object-Oriented Systems",
booktitle=oopsla,
year=1990,
pages="169--180"}
@inproceedings{h:contracts,
author="Ian M. Holland",
title="Specifying Reusable Components Using Contracts",
booktitle=ecoop,
year=1992,
pages="287--308"}
@techreport{jm:fail-stop,
author="Tomasz Janowski and Wojciech Mostowski",
title="Fail-Stop Software Components by Pattern Matching",
institution="The {U}nited {N}ations {U}niversity",
year="1999",
type="UNU/IIST Report",
number="\#164",
month=may}
@inproceedings{esswh:framework-for-detecting-interface-violations,
author = "Edwards, S.H. and Shakir, G. and Sitaraman, M. and Weide, B.W. and Hollingsworth, J.E.",
title="A Framework for Detecting Interface Violations in Component-Based Software,",
booktitle="{Proceedings 5th International Conference on Software Reuse}",
publisher="{IEEE}",
month=jun,
year=1998,
pages="46--55"}
@article{ehlsw:components-in-resolve,
author = "Edwards, S.H. and Heym, W.D. and Long, T.J. and Sitaraman, M. and WEIDE, B.W.",
title="Specifying Components in {RESOLVE}",
journal="{Software Engineering Notes}",
number=19,
volume=4,
month=oct,
year=1994,
pages="29--39"}
@inproceedings{rl:sub/super,
author="Clyde Ruby and Gary T. Leavens",
title="Safely Creating Correct Subclasses without Seeing Superclass Code",
booktitle=oopsla,
pages="208--228",
month=oct,
year=2000,
note="Volume 35, number 10 of ACM SIGPLAN Notices"}
@inproceedings{dl:forcing-beh-subtyping,
author="Krishna Kishore Dhara and Gary T. Leavens",
title="Forcing Behavioral Subtyping Through Specification Inheritance",
booktitle="Proceedings 18th International Conference on Software Engineering",
note="Berlin, Germany",
pages="258--267",
publisher="IEEE",
year=1996}
@techreport{al:logic-of-oo-programs,
title="A Logic of Object-Oriented Programs",
author="Mart\'in Abadi and K. Rustan M. Leino",
institution="Digital Systems Research Center",
year=1998,
number=161}
@techreport{kc:jpp,
title="{JPP}: A {Java} Pre-Processor",
author="Joseph R. Kiniry and Elaine Cheong",
institution="Department of Computer Science, California Institute of Technology",
year=1998,
number="CS-TR-98-15"}
@inproceedings{llprj:jml,
author="Gary T. Leavens and K.~Rustan~M. Leino and Erik Poll and Clyde Ruby and Bart Jacobs",
title="{JML:} notations and tools supporting detailed design in {J}ava",
booktitle=oopsla-companion,
pages="105--106",
year=2000,
note="Also Department of Computer Science, Iowa State University, TR 00-15, August 2000."
}
@inproceedings{pp:python-contracts,
author="Reinhold Pl{\" o}sch and Josef Pichler",
title="Contracts: From Analysis to {C++} Implementation",
booktitle=tools,
year=1999,
pages="248--257"}
@inproceedings{flf:behavioral-contracts,
author="Robert Bruce Findler and Mario Latendresse and
Matthias Felleisen",
title="Behavioral Contracts and Behavioral Subtyping",
booktitle=fse,
year=2001}
@inproceedings{ff:contract-soundness,
author="Robert Bruce Findler and Matthias Felleisen",
title="Contract Soundness for Object-Oriented Languages",
booktitle=oopsla,
year=2001}

Background and Introductory Material

  • Beugnard, Jézéquel, Plouzeau, and Watkins, Making Components Contract Aware
  • Rosenblum, A Practical Approach to Programming with Assertions
  • America, Designing an Object-Oriented Programming Language with Behavioral Subtyping
  • Liskov, and Wing, A Behavioral Notion of Subtyping
  • Parnas, A Technique for Software Module Specification with Examples
  • Luckham, Programming with Specifications

Pre- and Post-condition Contract Checking Systems

  • Luckham and Henke, An overview of Anna, a specification language for Ada
  • Holt, Cordy, The Turing Programming Language
  • Bartetzko, Fischer, Moller and Wehrheim, Jass - Java with Assertions
  • Duncan, Hölzle, Adding Contracts to Java with Handshake
  • Kramer, iContract --- The Java Design by Contract Tool
  • Karaorman, Hölzle, and Bruno, jContractor: A reflective Java Library to Support Design By Contract
  • Man Machine Systems, Design by Contract for Java Using JMSAssert

Related Issues in Software Engineering

  • Edwards, Shakir, Sitaraman, Weide, and Hollingsworth, A Framework for Detecting Interface Violations in Component-Based Software
  • Helm, Holland, and Gangopadhyay, Contracts: Specifing Behaviorial Compositions in Object-Oriented Systems
  • Ruby and Leavens, Safely Creating Correct Subclasses without Seeing Superclass Code
  • Dhara and Leavens, Forcing Behavioral Subtyping Through Specification Inheritance
  • Weck, Inheritance using Contracts and Object Composition
  • Edwards, Heym, Long, Sitaraman, Weide, Specifying Components in RESOLVE

Proof-based Systems

  • Detlefs, Leino, Nelson, Saxe, Extended Static Checking
  • Abadi, Leino, A Logic of Object-Oriented Programs
  • Lee, Kannan, Kima, Sokolsky, Viswanathan, Runtime Assurance Based on Formal Specifications
  • Obayashi, Kubota, McCarron, and Lionel Malle, The Assertion Based Testing Tool for OOP: ADL2
  • Owre, Rajan, Rushby, Shankar, Srivas, PVS: Combining Specification, Proof Checking, and Model Checking
  • Wasserman, Blum, Software Reliability via Run-Time Result-Checking
  • Janowski, Mostowski, Fail-Stop Components by Pattern Matching
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment