Software systems in which components located on networked computers communicate and coordinate their actions by passing messages