Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Modular Reasoning in Object-Oriented Systems
[go: Go Back, main page]

Modular Reasoning in Object-Oriented Systems

New: student positions available!

Overview

Object-oriented languages are growing in popularity due to the benefits they provide in modeling, encapsulation, reuse, and evolvability. However, reasoning about the properties of object-oriented systems can be challenging for many of the same reasons that give objects their power.  Inheritance enables extensive reuse, but also couples a class to its superclass, making it hard to evolve the two independently. Objects and state are natural mechanisms for modeling many problem domains, but reasoning about multi-object, stateful systems in a modular way is difficult because of aliasing.

The goal of this project is to build a foundational theory as well as practical tools for reasoning about object-oriented software systems in a modular way.  Modular reasoning is important because programmers can think about the correctness of different modules in isolation, as well as make changes to the implementation of a module without affecting clients.  We propose to address the challenge of modular reasoning in part with the following techniques:
As a first step towards these goals, we have developed ownership domains, an extension of ownership type systems that supports powerful reasoning about encapsulation while retaining the flexibility necessary to support many object-oriented styles and idioms. This work is described by the paper below. Our long-term goal is to develop a comprehensive proof theory for object-oriented systems, along with tools and type systems that aid in both lightweight reasoning and full verification of programs.

Papers

Contact Jonathan Aldrich (jonathan.aldrich@cs.cmu.edu)