Next: Research Goals
Up: brief.html
Previous: brief.html
Theme: Putting Systems Together
Software definition and development techniques have developed
enormously over the past 40 years, from primitive machine languages to
sophisticated programming languages and tools for system
configuration. We believe the next great opportunity in this area is
in shifting our focus from programming-at-the-module-level to
programming-at-the-system-level. In the past we have built programs
in terms of procedures and abstract data types using simple module
interconnection as a way to compose modules; in the future we will
build systems in terms of more sophisticated components, often entire
systems themselves, and compose them with high-level abstractions for
connection or interaction.
What makes the construction of composable systems different from
programming?
- We liberate ourselves from thinking of the software task
as merely programming. We are not just building a program, we are
building a system. In the most general sense, a system has not just
software but hardware components as well.
- Our units of manipulation are components and
connectors. They may be primitive or composite. We describe
components with interface specifications; connectors with
protocol specifications. Our innovation is to make connectors
first-class entities, just as components are, in a system. Program
modules like procedures are examples of primitive components.
Procedure call is one example of a primitive connector between two
components. Designers use much richer types of components and
interactions than modules and procedure calls, and so must our
components and connectors. We want to support composite components
and connectors whose properties, via their interface and protocol
specifications, are as understandable as the specifications of their
constituents.
- We want to provide ways to talk precisely about common patterns
of system organization structures. This allows us to provide larger
abstractions for system structuring. It also allows us to exploit
special properties of particular composition idioms for analysis,
design guidance, and efficient implementation.
Current composition technology falls short both for synthesis and
analysis. On the synthesis side, we see a proliferation of
specialized solutions, but no systematic support for sharing expertise
or for resolving differences in interaction assumptions. On the
analysis side, we need component-level analysis, but we have a poor
understanding of interface abstractions, and our analysis techniques
are too weak.
Next: Research Goals
Up: brief.html
Previous: brief.html
TOM Conversion
Tue Aug 26 09:51:37 EDT 1997