Carnegie Mellon University Website Home Page


Dr. Mary Shaw

A.J. Perlis University Professor of Computer Science

Mary Shaw is the A.J. Perlis Professor of Computer Science in the SCS at Carnegie Mellon. She was one of the founders of the SEI and its chief scientist from 1984 to 1987; she now holds a joint appointment at the SEI and SCS. She previously worked in systems programming and research at the Research Analysis Corporation and Rice University.

Her research interests in computer science lie primarily in the areas of programming systems and software engineering, particularly software architecture, programming languages, specifications, and abstraction techniques. Particular areas of interest and projects have included software architectures (Vitruvius), technology transition (SEI), program organization for quality human interfaces (Descartes), programming language design (Alphard, Tartan), abstraction techniques for advanced programming methodologies (abstract data types, generic definitions), reliable software development (strong typing and modularity), evaluation techniques for software (performance specification, compiler contraction, software metrics), and analysis of algorithms (polynomial derivative evaluation).

Dr. Shaw is the recipient of the National Medal of Technology and Innovation, the nation’s highest honor for achievement and leadership in advancing the fields of science and technology. She is a Fellow of the IEEE Computer Society and the American Association for the Advancement of Science. She received the Warnier Prize for contributions to software engineering in 1993. She is a member of the Association of Computing Machinery, the New York Academy of Sciences, Sigma Xl, She serves on Working Group 2.4 (System Implementation Languages) of the International Federation of Information Processing Societies and the IEEE Technical Committee on Software Engineering.

Research Interests

Open Resource Coalitions

Widespread use of the Internet is enabling a fundamentally new approach to software development: computing through dynamically formed, task-specific, coalitions of distributed autonomous resources. The resources may be information, calculation, communication, control, or services. Unlike traditional software systems, which are at least nominally under control of the designer, these coalitions are formed from autonomous network-based resources, and the developer lacks direct control over the incorporated resources. These autonomous resources are independently created and managed. The resources may be transient, either because of the resource proprietors actions or because of service interruptions; indeed, the proprietor of a resource may be unaware of the ways the resource is used. Development tools for resource coalitions will require new degrees of autonomy and automation in order to identify, compose, and track the resources. Computing through resource coalitions will thus create novel architectural challenges and opportunities.

Achieving useful results from such resources requires a new level of openness in the sense that responsibility for individual resources is distributed much more widely than responsibility for the results. The aggregations of resources are better treated as coalitions than as systems, because individual resources are operated under their own policies, and it may be necessary to reconstitute the coalition when the selection of available resources changes.

Value-Driven Software Design

Current software design concepts largely overlook a simple but fundamental idea: the goal of software design decision making is to create the maximum value added for any given investment of valuable resources. Businesses value profit, but also opportunities, as seen in valuations of profitless Internet companies. Philanthropic foundations value solutions to social problems. Universities value creation and dissemination of knowledge. Software design decisions today are made in an economics-independent Flatland, where concerns for technical properties dominate. Past work on software economics is relevant but it focuses on cost minimization, rather than value maximization. This research pursues scientific foundations for software design decision-making models, methods and tools that are explicitly tied to value-maximization objectives.

Specific projects address such specific questions as how to establish everyday confidence levels for everyday software and how to make cost-effective architectural design decisions