MARY
SHAW
A.J. Perlis Professor
Institute for Software Research International and Computer Science
www
Software now accounts for the lion's share of the cost of developing
and using computer systems. My long-term goal is to establish a
genuine
engineering discipline to support the design and development of software
systems. Currently I am working on design methods and analytic techniques for
building complete software systems out of subsystems and their constituent
modules. This is the software architecture level of design. I am
particularly interested in value-based techniques for making good design
choices early in the design process
My current research investigates two aspects of architectural design for
software.
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. End users value hassle-free access to
information and a sense of control over their applications.
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 approaches that are explicitly tied to
value-maximization objectives. It explicitly balances costs and benefits as
seen by particular stakeholders, and it emphasizes models, methods and tools
that can be applied early in the design process, before code is available
for analysis.
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.
This style of software creation is of particular significance for everyday
users who roll their own individually tailored applications from available
resources.
|