The study covers technical challenges of contracts while demonstrating the non-technical motivation for contract system design choices and showing how contracts and contract research can serve practicing programmers. Meyer (1991; 1992) implemented the first full-fledged contract system and developed a matching software engineering philosophy, design by contract. Findler and Felleisen (2002) introduced contracts to the functional programming world, generalizing them to higher-order languages, and introduced the ideas of blame and boundaries as independent concepts worthy of study. Greenberg et al. (2010) studied dependent contracts, showing how there are natural variations hiding in Blume and McAllester's model. Strickland and Felleisen (2009) explore the crucial pragmatic question of how to draw boundaries between components. Herman and colleagues (2007) demonstrate how contract implementations break tail-recursion and design a virtual machine that recovers it.
ASJC Scopus subject areas
- Computer Science(all)