Un documento di controllo dell’interfaccia (ICD) è una descrizione formalizzata dei metodi e delle strutture coinvolte nel fornire input e ricevere output da un sistema specifico. Il sistema descritto dal documento di controllo dell’interfaccia può essere una libreria software o un componente hardware. Il documento non deve seguire un unico formato ma può essere una raccolta di paragrafi, grafici o anche solo disegni tecnici dell’hardware dell’interfaccia. Quando si fa riferimento specificamente al software, un documento di controllo dell’interfaccia può assomigliare a un’interfaccia di programmazione astratta (API), che descrive i metodi o le funzioni pubblici che possono essere utilizzati per immettere informazioni nella libreria e descrive anche l’output che ne risulterà. Un documento di controllo dell’interfaccia descrive generalmente come integrare il sistema in un sistema più grande o come collegarlo a un sistema parallelo; non descrive alcuno dei funzionamenti interni del sistema, che potrebbe essere enunciato in un tipo separato di documento.
Lo scopo di un documento di controllo dell’interfaccia è fornire agli sviluppatori di hardware o software una documentazione che può essere utilizzata durante la creazione di un sistema o software che trasferirà dati da e verso il sistema descritto dall’ICD. Questo di solito significa definire funzioni esatte o componenti hardware in modo che le loro firme siano note e siano fornite le tolleranze dei parametri per l’uso. Nell’ingegneria del software, questo può significare conoscere il nome di una particolare funzione, che tipo di variabili sono accettate come parametri e, possibilmente, quali limiti funzionali sono posti sui valori che vengono passati. Per un componente hardware, queste informazioni possono includere le funzioni dei pin di un controllo del connettore seriale, eventuali interruzioni hardware utilizzate e la velocità di lavoro del dispositivo.
Una cosa che un documento di controllo dell’interfaccia non descrive in modo specifico è come il sistema traduce l’input in output, o come viene prodotto l’output, in generale. Ciò consente agli sviluppatori di avere una visione strettamente focalizzata del sistema durante la creazione di un’interfaccia, ma richiede anche che gli sviluppatori del sistema che i dettagli dell’ICD aderiscano rigorosamente alle linee guida enunciate nel documento stesso. Una comodità per gli autori di un documento di controllo dell’interfaccia e per gli sviluppatori del sistema è che l’implementazione interna del sistema non è descritta nel documento e, quindi, può essere modificata liberamente senza influire sullo sviluppo esterno delle interfacce basate sull’ICD.
In alcune situazioni, un documento di controllo dell’interfaccia può consentire il test dei sistemi senza dover effettivamente utilizzare un’interfaccia completa. Questo può essere fatto simulando i vari tipi di output che un sistema può generare come descritto nell’ICD, e quindi passando quell’output attraverso l’interfaccia sviluppata esternamente. I sistemi che sono interessati solo a gestire un lato del sistema, come l’output, nel caso di hardware come un dispositivo di visualizzazione, possono garantire che l’interfaccia funzioni entro le specifiche senza richiedere input del mondo reale.