Research Projects


Faculty

Graduate Students


Related Tools

Composite Symbolic Library and Action Language Verifier

Composite Symbolic Library is a symbolic manipulator for automated verification. Action Language is a specification language for reactive systems. These tools are developed based on the results obtained from the research projects below.


Current Projects

PROJECT TITLE: Reliable Concurrent Software Development via Reliable Concurrency Controllers

SUMMARY
Run-time errors in concurrent programs are generally due to wrong usage of synchronization primitives such as monitors. Conventional validation techniques such as testing become ineffective for concurrent programs since the state space increases exponentially with the number of concurrent processes. In recent years there has been considerable progress in automated verification techniques for concurrent systems based on model checking. This project presents a framework for reliable concurrent programming based on interface-based specification and verification of concurrency controllers. Proposed specification and verification techniques for concurrency controllers are modularized by decoupling behavior and interface specifications. The behavior specification is a set of actions (which correspond to methods or procedures) composed of guarded commands. The interface specification is a finite state machine whose transitions represent actions. Concurrency controllers can be designed modularly by composing their interfaces. The proposed approach separates the verification of the concurrency controllers (behavior verification) from the verification of the threads which use them (interface verification). For behavior verification it is possible to use symbolic and infinite-state verification techniques which enables verification of controllers with parameterized constants, unbounded variables and arbitrary number of client threads. For interface verification it is possible to use explicit state program verification techniques which enables verification of arbitrary thread implementations without any restrictions. The correctness of the user threads can be verified using stubs generated from the concurrency controller interfaces which improves the efficiency of the thread verification significantly. It is possible to synthesize efficient Java monitors from the concurrency controller specifications, and the generated implementations preserve the verified properties of the specifications. The proposed framework will be implemented as a set of tools for concurrency controller specification, verification and synthesis.

Related publications:

This project is supported in part by NSF grant CCR-0341365 (PI: Tevfik Bultan, Period: 2003-2007, Amount: $336,000) provided by Directorate for Computer and Information Science and Engineering (CISE), Division of Computer-Communications Research (CCR), Trusted Computing Program.

PROJECT TITLE: Developing Reliable Concurrency-Controllers

SUMMARY
In this project, we use automated verification techniques for developing reliable concurrency-controllers. Concurrency-controllers are software components which are used solely for concurrency control. We propose a modular approach to development of concurrency-controllers which: 1) decouples the behavior and the interface specifications of concurrency-controllers and 2) uses both symbolic and explicit state automated verification techniques by exploiting this separation.

Related publications:

This project is supported by a grant (PI: Tevfik Bultan, Period: 2003-2004, Amount: $8,913) from Committee on Research, University of California, Santa Barbara.

PROJECT TITLE: CAREER: Verifiable Specifications: Tools for Reliable Reactive Software Development

SUMMARY
Developing reliable software for reactive systems is a challenging task. This project focuses on combining and extending the results from two areas which address this problem: 1) specification languages and 2) automated verification methods for reactive systems. Building on the recent results in these areas the goal of this project is to develop verifiable specification languages. This will involve research from two directions: 1) From the verification side the goal is to extend the scope of techniques such as model checking to make them applicable to a wider set of systems. 2) From the specification side the goal is to restrict the specification languages as much as possible (without reducing their ability to specify complex systems) in order to make their automated verification feasible. This project will address both theoretical issues such as complexity and efficiency of model checking techniques, and practical issues such as investigating usability of software specification languages and automated verification techniques in practice.

Related publications:

This project is supported in part by NSF CAREER award CCR-9984822 (PI: Tevfik Bultan, Period: 2000-2004, Amount: $200,000) provided by Directorate for Computer and Information Science and Engineering (CISE), Division of Computer-Communications Research (CCR), Software Engineering and Languages Program (SEL).

Past Projects

PROJECT TITLE: A Composite Model Checking Toolset for Analyzing Software Systems

SUMMARY
The goal of this project is to investigate a new automated verification technique for analyzing software systems called composite model checking. Model checking is a technique for searching the state space of a system to find out if it satisfies a given property. The success of model checking procedures rely on the efficiency of the data structures used to represent the states of the system. In this project a composite model will be developed for combining multiple type-specific representations so that all variable types can be represented efficiently during the state space search. This way, representations such as Binary Decision Diagrams which are efficient for encoding Boolean variables will be combined with representations such as linear arithmetic constraints which can encode unbounded variables. A set of tools will be implemented to support composite model checking. The layered structure of the toolset will allow other researchers to use it at various levels 1) for testing the effectiveness of new representations; 2) for investigating various model checking strategies such as backward and forward search, partitioning and abstraction; or 3) for analyzing complex software specifications.

Related publications:

This project is supported in part by NSF grant CCR-9970976 (PI: Tevfik Bultan, Period: 1999-2003, Amount: $300,000) provided by Directorate for Computer and Information Science and Engineering (CISE), Division of Computer-Communications Research (CCR), Software Engineering and Languages Program (SEL).

PROJECT TITLE: Tools and Techniques for Workflow Specifications

SUMMARY
In this project we investigated the specification and verification techniques for workflow specifications. Workflow systems are used for organizing the execution of multiple tasks, typically in support of a business or scientific process. Since workflow systems involve concurrent execution of multiple tasks, the control logic could easily get complicated. We applied automated verification techniques to workflow systems and developed several heuristics to improve the efficiency of the verification task. In particular, we investigated developing automated verification techniques for a workflow language called Vortex developed at Bell Labs. As a case study, we verified properties of a Vortex specification for an automated help system for customers browsing a web store-front.

Related publications:

This project was supported by grant (PIs: Tevfik Bultan and Jianwen Su, Period: 1999-2000, Amount: $6,000) from Committee on Research, University of California, Santa Barbara.