Coordination-centric Design: An Approach for Reusable Software Components

Ross Ortega


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.

©2002-2018 U.C. Regents