Communication and Compatibility in Systems of Systems: Correctness-by-Construction