Objects often define usage protocols that clients must follow in order for these objects to work properly. Aliasing makes it notoriously difficult to check whether clients and i...
A comfort zone is a tested region of a system’s input space within which it has been observed to behave acceptably. To keep systems operating within their comfort zones, we advo...
Omniscient debuggers make it possible to navigate backwards in time within a program execution trace, drastically improving the task of debugging complex applications. Still, they...
Developing a general component system for a statically typed, object-oriented language is a challenging design problem for two reasons. First, mutually recursive references across...
Calling context enhances program understanding and dynamic analyses by providing a rich representation of program location. Compared to imperative programs, objectoriented program...