Un documento de control de interfaz (ICD) es una descripción formalizada de los métodos y estructuras involucrados en proporcionar entradas y recibir salidas de un sistema específico. El sistema que se describe en el documento de control de interfaz puede ser una biblioteca de software o una pieza de hardware. El documento no tiene que seguir ningún formato único, sino que puede ser una colección de párrafos, gráficos o incluso dibujos técnicos del hardware de la interfaz. Cuando se hace referencia específicamente al software, un documento de control de interfaz puede parecerse a una interfaz de programación abstracta (API), que describe los métodos o funciones públicos que se pueden usar para ingresar información en la biblioteca y también describe la salida que resultará. Un documento de control de interfaz generalmente describe cómo integrar el sistema en un sistema más grande o conectarlo a un sistema paralelo; no describe ninguno de los trabajos internos del sistema, que podrían estar detallados en otro tipo de documento.
El propósito de un documento de control de interfaz es proporcionar a los desarrolladores de hardware o software alguna documentación que se pueda utilizar al crear un sistema o software que transferirá datos hacia y desde el sistema que describe el ICD. Por lo general, esto significa definir funciones exactas o componentes de hardware de manera que se conozcan sus firmas y se den las tolerancias de los parámetros para su uso. En ingeniería de software, esto puede significar conocer el nombre de una función en particular, qué tipo de variables se aceptan como parámetros y, posiblemente, qué límites funcionales se colocan en los valores que se pasan. Para una pieza de hardware, esta información puede incluir qué funciones controlan los pines de un conector en serie, las interrupciones de hardware que se utilizan y la velocidad de trabajo del dispositivo.
Una cosa que un documento de control de interfaz no describe específicamente es cómo el sistema traduce la entrada en salida, o cómo se produce la salida, en general. Esto permite a los desarrolladores tener una visión estrecha del sistema al crear una interfaz, pero también requiere que los desarrolladores del sistema que los detalles del ICD se adhieran estrictamente a las pautas detalladas en el documento mismo. Una conveniencia para los redactores de un documento de control de interfaz y los desarrolladores del sistema es que la implementación interna del sistema no se describe en el documento y, por lo tanto, se puede cambiar libremente sin afectar el desarrollo externo de las interfaces que dependen del ICD.
En algunas situaciones, un documento de control de interfaz puede permitir la prueba de sistemas sin tener que utilizar una interfaz completa. Esto se puede hacer simulando los diversos tipos de salida que un sistema puede generar como se describe en el ICD, y luego pasando esa salida a través de la interfaz desarrollada externamente. Los sistemas que solo están interesados en manejar un lado del sistema, como la salida, en el caso de hardware como un dispositivo de visualización, pueden garantizar que la interfaz funcione dentro de las especificaciones sin requerir una entrada del mundo real.