Figure 1: Components and Connectors
A system consists of components, described by interfaces, and connectors, described by protocols. Components communicate with each other through connectors. In Figure 1 component A communicates with C using protocol P; B with C using Q; A and B do not directly communicate. A and B could both be clients communicating through remote procedure calls to server C; A, B, and C could be filters connected through pipes P and Q. A could be a user process making synchronous calls to the file system manager C which asynchronously reads and writes from disk B.
Though all the members of the Composable Software Systems group are interested in understanding whole diagrams of the kind in Figure 1 and their multitude of interpretations and applications, each of us is also specifically focusing on various aspects of these diagrams. Mary Shaw and David Garlan both focus on the ways to configure the components and connectors, on styles and meanings of the configurations, and on ways of dealing with mismatched parts. David Garlan also focuses on connectors and their protocols; Jeannette Wing, on component interfaces and on partial and whole configurations where components and connectors may themselves only be partially specified (imagine dotted, rather than solid, lines for the boxes and lines in Figure 1). Mary Shaw is also interested in how designers make choices among structural alternatives.
Four themes cut across our individual research projects and interests: software architectures (Garlan, Shaw), formal methods (Garlan, Wing), and design guidance (Shaw).
In the following sections we give more details of our individual research interests and projects and a list of relevant publications. Please feel free to contact any of us through e-mail at email@example.com for more information.