next up previous
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?

  1. 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.
  2. 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.
  3. 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 up previous
Next: Research Goals Up: brief.html Previous: brief.html

TOM Conversion
Tue Aug 26 09:51:37 EDT 1997