Chapter 10: A Coordination Perspective on Software Architecture — Toward a Design Handbook for Integrating Software Components
Chrysanthos DellarocasThis chapter is adapted from chapter 4 of C. Dellarocas (1996), A coordination perspective on software architecture: Towards a Design Handbook for Integrating Software Components, Ph.D. dissertation, Sloan School of Management, MIT. Section 4.6 containing control flows, data flows, and other flows and section 4.8 on composite dependencies are omitted.
10.1 Introduction
Previously I argued for separating the core functional pieces of a software application from their interconnection relationships. Then I introduced an architectural language that enables this separation by providing separate abstractions for activities and dependencies. This chapter goes one step further: It observes that when taken out of context, many interconnection problems in software applications are related to a relatively narrow set of concepts, such as resource flows, resource sharing, and timing dependencies. These concepts are orthogonal to the problem domain of most applications, and can therefore be captured in an application-independent vocabulary of dependency types. Likewise the design of associated coordination processes involves a relatively narrow set of coordination concepts, such as shared events, invocation mechanisms, and communication protocols. Therefore it can also be captured in a design space that assists designers in designing a coordination process that manages a given dependency type, simply by selecting the value of a relatively small number of design dimensions. The proposed vocabulary of dependencies and design space of coordination processes, taken together, can form the basis for a design handbook for integrating software components. The development of such a handbook aims to reduce the specification and implementation of software component interdependencies to a routine design problem, capable of being assisted, or even automated, by computer tools.