Coordination-centric Design: An Approach for
Reusable Software Components
Object-oriented design suffers from two serious weaknesses: tight coupling
and an entanglement of control- and data-flow concepts. These weaknesses
greatly inhibit software productivity and software component reusability.
Coordination-centric design solves both of these problems by raising the
level of abstraction and focusing on the interactions (coordination) between
loosely coupled software components. For example, a designer can specify a
centralized control architecture from which to automatically synthesize a
distributed control scheme. In coordination-centric design, a software
engineer first composes a system from reusable software components without
regard to the network topology of the final system. Next, the engineer
assigns the components to the processors of a distributed architecture. The
synthesis operation then generates the software implementation automatically.
Finally, the engineer performs graphical distributed debugging, which
operates at a higher level of abstraction than traditional methods. By
raising the abstraction level, coordination-centric design enhances
productivity, quality, and reusability.