A software engineering approach for coordination policies elicitation
In a software system, software processes can be concurrently run by system actors (e.g. agents, components), by making use of shared or dedicated software resources. Coordination is a research area oriented to understand, explicitly model and analyze how activities can depend on each other, in a concurrent system. Many coordination models and languages have been presented in the last few years in order to make coordination a first class entity in the development of a software system. However, what usually happens, is that coordination is described late in the software development and it is not integrated in a typical software process. What we claim, with our research, is that if coordination becomes explicit and formalized as soon as possible in the software life cycle, then it is possible to create coordination-aware software systems, which are easily maintained and developed. What we present, in the following, is a software engineering view of coordination. Diagrams produced during a UML-based software modeling, are analyzed in order to help a software engineer in the difficult task to elicit coordination requirements from informal ones. We show how UML models can drive an elicitation process in order to identify coordination requirements, and can graphically describe which elements need coordination.
coordination policies elicitation uml diagrams model-based coordination