Behavioral Software Contracts
University of Chicago
Monday, February 24
Assertions play an important role in the construction of robust software. Their use in programming languages dates back to the 1970s. Eiffel, an object-oriented programming language, wholeheartedly adopted assertions and developed the ``Design by Contract'' philosophy. Indeed, the entire object-oriented community recognizes the value of assertion-based contracts on methods.
Programming in an object-oriented world, however, is complicated by the subtle interactions between objects. Since objects can be passed to and returned from methods, stored in global variables, and invoked at arbitrary times, the flow of control and flow of values in an object-oriented program is complex.
This complexity spills over into contract checking. In this talk, I will motivate these complexities and explain how a contract checker for an object oriented language can cope with them.