ISR Logo  

School of Computer Science

Institute for Software Research

Faculty Research Guide


ISR Faculty Research Home
SE PhD Program Home

 

SE and COS Faculty

Jonathan Aldrich
Kathleen Carley
Lorrie Cranor
David Farber
David Garlan
Jim Herbsleb
Raj Reddy
Norman Sadeh
William Scherlis
Mary Shaw
Latanya Sweeney

 
Affiliated Faculty
Ashish Arora
Bonnie John
Rick Kazman
Pradeep Khosla
Philip Koopman
James Morris
Priya Narasimhan
Eric Nyberg
Bradley Schmerl
Dan Siewiorek

WILLIAM SCHERLIS
Professor
Institute for Software Research International

 www

My research is in two areas: program manipulation tools and information structures for collaboration. I focus here on the Fluid Architecture project, which is in the first of these areas and involves the use of program analysis and manipulation techniques to support program development and evolution. Please feel free to come talk to me about any of these ideas, or about my research in computer-supported cooperative work (which is not covered here).

All programmers face the difficulty of having to make small-scale structural design decisions very early in the software process, well before the consequences of those decisions can be understood. For example, having decided to include an integrity check for a parameter, should the check be done at the procedure being called or at all calling sites? Which site is selected (or whether code is replicated in order to have it both ways) determines which optimization opportunities can be exploited, and is best decided later in the process. And in practice, once these small structural commitments are made, particularly in the design of an API, they can be very difficult to revise. My research hypothesis is that this brittleness is not a necessary attribute of software, and that semantics-based program analysis and manipulation techniques can offer a way for programmers to retain structural flexibility.

Program manipulation techniques of the sort we are exploring can also be used to adjust data representations or make other changes that require potentially pervasive alterations to code. A simple representational change to Java strings, for example, requires simultaneous changes to more than 80 methods. Practicing programmers can devote considerable effort to this "bureaucratic" business of organizing and reorganizing internal interfaces and encapsulations, maintaining and revising representation and control invariants, and managing response to exceptional conditions. Most of the time they are working with existing code.

I am interested in program analysis and manipulation techniques that can be embodied in tools that programmers can use easily for routine program evolution of this sort. For such tools to be practical, programmers must not have to write extensive specifications of program functionality or architecture. Also, the tools must be interactive, enabling software engineers to explore a space of possible design approaches and to explore multiple structural views of a system. To this end, we have built experimental tools for analyzing and manipulating Java programs.


The Institute for Software Research International is part of the School of Computer Science at Carnegie Mellon University.

© 2004 Carnegie Mellon University
This site was last modified on July 9, 2004.