Un insieme di regole e strumenti per la costruzione di applicazioni software che specificano come i componenti del software devono interagire.