skip to main content
Department of Computer Science University of Colorado Boulder
cu: home | engineering | mycuinfo | about | cu a-z | search cu | contact cu cs: about | calendar | directory | catalog | schedules | mobile | contact cs
home · events · colloquia · 2007-2008 · 

Colloquium - Chang

ECCR 245

Precise Program Analysis with Data Structures
University of California, Berkeley

Program analysis tools are being adopted by industry to improve the reliability and overall quality of software like never before because they can rule out entire classes of errors. Yet, today's tools are far from being as effective as they could be, for almost all program analyses have difficulty when objects of interest are put into data structures. Program analyses that reason precisely about data structures typically require sophisticated (and thus often burdensome) logical invariant specifications from the user. We propose a novel way to involve the user in guiding the analysis by extracting both the necessary invariants and reasoning rules from executable assertions in the code.

In this talk, I describe a new technique for precise program analysis in the presence of data structures. It is based on data structure validation code that is often written anyway for testing purposes. From the developer's perspective, such validation code provides guidance to the analysis in a familiar style, and we show how our analysis results can be rendered graphically in a form that is comparable to what might be drawn on a whiteboard or printed in a textbook. From the analysis tool's perspective, data structure validation code provides the essential ingredients for a good abstraction that precisely represents the important facts while ignoring irrelevant details. The crucial innovations in our system are automatic methods for understanding and generalizing the developer-provided data structure validation code to make them useful for static program analysis. Example results produced by our analysis tool, Xisa, are available at

Separately, I briefly discuss the program analysis needs of another user -- the end-user of a program. End-users would benefit from tools that can validate that the code they wish to execute is safe to run. Unfortunately, most program analyses operate on source code, and porting them to work on low-level code is difficult and error prone. I describe a decompilation technique targeted to program analysis that gradually lifts low-level code until it becomes amenable to source-level analysis.

Bor-Yuh Evan Chang is completing his PhD with George Necula at the University of California, Berkeley working in the areas of programming languages and program analysis. He is interested in tools and techniques for building, understanding, and ensuring reliable computational systems. His current focus is on using novel ways of interacting with the programmer to design more precise and practical program analyses.

Hosted by Jeremy Siek.

The Department holds colloquia throughout the Fall and Spring semesters. These colloquia, open to the public, are typically held on Thursday afternoons, but sometimes occur at other times as well. If you would like to receive email notification of upcoming colloquia, subscribe to our Colloquia Mailing List. If you would like to schedule a colloquium, see Colloquium Scheduling.

Sign language interpreters are available upon request. Please contact Stephanie Morris at least five days prior to the colloquium.

See also:
Department of Computer Science
College of Engineering and Applied Science
University of Colorado Boulder
Boulder, CO 80309-0430 USA
Send email to

Engineering Center Office Tower
ECOT 717
FAX +1-303-492-2844
XHTML 1.0/CSS2 ©2012 Regents of the University of Colorado
Privacy · Legal · Trademarks
May 5, 2012 (13:29)