CSD Home | Faculty By Interest | Faculty by Projects | Research Home

 

 

Adamchik
Ailamaki
Aldrich
Andersen
Bar
Blelloch
Blum, A.
Blum, L.
Blum, M.
Brookes
Bryant
Cagan
Carbonell
Christel
Clarke
Corbett
Cranor
Crary
Datta
Dannenberg
Durand
Efros
Erdmann
Fahlman
Faloutsos
Falsafi
Fink
Ganger
Garlan
Gao
Goldstein
Guestrin
Gunawardena
Gupta
Harchol-Balter
Harper
Hauptmann
Hodgins

Hoe
Hudson
James
John
Kanade
Lafferty
Lee, P.
Lee, T.
Lewicki
Maggs

Mason
Maxion
Miller
Mitchell
Moore
Morris
Mowry
Myers
Ng
O'Donnell
O'Hallaron
Olston
Pausch
Perrig
Pfenning
Pollard
Reddy
Reiter
Reynolds
Rosenfeld
Rudich
Rudnicky
Sandholm
Satyanarayanan
Scherlis
Schmerl
Seshan
Sharygina
Shaw
Siewiorek
Simmons
Sleator
Smith
Song
Statman
Steenkiste
Stern
Touretzky
Veloso
Von Ahn
Wactlar
Waibel
Wing
Xing
Yang
Zhang
 

DAVID GARLAN
Professor, Institute for Software Research, International, Computer Science
www

 

My field of interest is software engineering, and specifically the areas of software architecture, self-healing systems, pervasive and cognitive computing, and applied formal methods. The common thread that links these areas is the problem of controlling the complexity of large software systems by providing a scientific basis for software design.

Software Architecture. Successful design of software architecture has always been a major factor in determining the success of a software system. But until recently architectural design has been largely based on ad hoc choice, informal experience, and local expertise. The goal of this research component is make this knowledge precise, codified, and available to engineers as a matter of routine engineering. My research group has developed a number of languages and tools to support architectural design, including Wright (a formal language for software architectures that focuses on specification and analysis of component interactions) and Acme (a language and design environment for software architecture, supporting rapid customization to architectural styles).

Self-healing Systems. Increasingly systems must continue to operate continuously, interacting with diverse external services not under the control of the system designer. A new paradigm is emerging to handle such systems: each system takes responsibility for observing its own behavior, and for improving that behavior over time based on models of what behavior is desirable. My research group is using architectural models to do this. Thus architectural designs become run-time artifacts that permit system self-reflection and repair.

Pervasive and Cognitive Computing. The most precious resource in a computer system is no longer its processor, memory, disk or network, but rather user attention. Today's systems distract a user in many explicit and implicit ways, reducing effectiveness. Projects Aura and Radar, with which I am working, are rethinking system design to address this problem. Aura's goal is to provide each user with an invisible halo of computing and information services that persists regardless of location. Project Radar is developing a basis for creating cognitive assistants that actively assist users in meeting their needs, such as scheduling a meeting, allocating space resources, or generating annual reports. Within these two projects, my principal interest is developing support for managing a users task load. Specifically, I am creating infrastructure that permits a user to move from one physical environment to another, and continue working on the same tasks, even though the underlying resources may change radically. I am also working on coordinating tasks for a single user or across multiple users.

Applied Formal Methods. The traditional use of formal (or mathematically-based) methods has been to solve the problem of refinement: given a formal specification of a system, how does one construct an implementation that is correct with respect to that specification. In contrast, my interest in formal methods is in dealing with the inverse problem of abstraction: given a family of existing systems, how does one construct a formal model that characterizes the important commonalities in these systems. When used in this way, formal methods become a tool for extracting reusable software architectures, for clarifying system design, for simplifying the way we think about a class of system, and for building a framework for reuse.

The ABLE Project: www.cs.cmu.edu/~able

Project Aura: www.cs.cmu.edu/~aura

The Radar Project: www.cs.cmu.edu/~radar

The Software Verification Center: www.cs.cmu.edu/~svc


 

      CSD Home   Webteam  ^ Top   SCS Home