Engineering Self-Coordinating Software Intensive Systems