|
|
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
|
||||