18.6 Future Research
The long-term goal of this research is to demonstrate the practical usefulness of a coordination perspective on software system design and to develop superior software development methodologies based on its principles. To that end, what follows describes some immediate directions for future research suggested by our experience so far:Classify composite dependency patterns. Our current taxonomy includes relatively low-level dependency types, such as flows and prerequisites. In a sense our taxonomy defines a vocabulary of software interconnection relationships. A particularly promising path of research seems to be the classification of more complex dependency types as patterns of more elementary dependencies.
Develop coordination process design rules. It will be interesting to develop design rules that help automate the selection step by ranking candidate processes according to various evaluation criteria such as their response time, their reliability, and their overall fit with the rest of the application. For example, when managing a data flow dependency, one possible design heuristic would be to use direct transfer of control (e.g., remote procedure calls) when the size of the data that flows is small, and to use a separate carrier resource, such as a file when the size of the data is large.
Develop guidelines for better reusable components. The idea of separating the design of component functionality from the design of interconnection protocols has interesting implications about the way reusable components should be designed in the future. At best, components should contain minimal assumptions about their interconnection patterns with other components embedded in them. More research is needed to translate this abstract requirement to concrete design guidelines.