Architecture-based design of multi-agent systems.