Un documento de control de interfaz ( ICD ) en ingeniería de sistemas [1] e ingeniería de software , proporciona un registro de toda la información de interfaz (como dibujos, diagramas, tablas e información textual) generada para un proyecto. [2] Los documentos de interfaz subyacentes proporcionan los detalles y describen la interfaz o interfaces entre subsistemas o para un sistema o subsistema .
Un ICD es el documento general sobre las interfaces del sistema; ejemplos de lo que deben describir estas especificaciones de interfaz incluyen:
El propósito del ICD es controlar y mantener un registro de la información de la interfaz del sistema para un proyecto determinado. Esto incluye todas las entradas posibles y todas las salidas potenciales de un sistema para algún usuario potencial o real del sistema. Las interfaces internas de un sistema o subsistema están documentadas en sus respectivas especificaciones de requisitos de interfaz, mientras que las interfaces hombre-máquina pueden estar en un documento de diseño del sistema (como un documento de diseño de software ) [ cita requerida ] .
Los documentos de control de interfaz son un elemento clave de la ingeniería de sistemas, ya que controlan las interfaces documentadas de un sistema, además de especificar un conjunto de versiones de interfaz que funcionan juntas y, por lo tanto, limitan los requisitos.
Una interfaz de programación de aplicaciones es una forma de interfaz para un sistema de software, ya que describe cómo acceder a las funciones y servicios proporcionados por un sistema a través de una interfaz. Si un fabricante de sistemas desea que otros puedan usar el sistema, un ICD y especificaciones de interfaz (o su equivalente) es una inversión que vale la pena.
Un ICD solo debe describir la documentación detallada de la interfaz en sí, y no las características de los sistemas que lo utilizan para conectarse. La función y la lógica de esos sistemas deben describirse en sus propios requisitos y documentos de diseño según sea necesario (existen DID para todos estos). De esta manera, equipos independientes pueden desarrollar los sistemas de conexión que utilizan la interfaz especificada, sin tener en cuenta cómo reaccionarán otros sistemas a los datos y señales que se envían a través de la interfaz. Por ejemplo, el ICD y la documentación de la interfaz asociada deben incluir información sobre el tamaño, el formato y lo que miden los datos, pero no el significado final de los datos en su uso previsto por cualquier usuario.
Una interfaz adecuadamente definida permitirá a un equipo probar su implementación de la interfaz simulando el lado opuesto con un simple simulador de comunicaciones. No conocer la lógica de negocios del sistema en el lado opuesto de una interfaz hace que sea más probable que uno desarrolle un sistema que no se rompa cuando el otro sistema cambia sus reglas y lógica de negocios. (La provisión de límites o verificación de cordura debe evitarse deliberadamente en una especificación de requisitos de interfaz). Por lo tanto, se logra una buena modularidad y abstracción que conducen a un fácil mantenimiento y extensibilidad.
Los críticos de la documentación de requisitos y la ingeniería de sistemas en general a menudo se quejan del énfasis excesivo en la documentación. [3] [4] Los ICD suelen estar presentes en proyectos basados en documentos , pero también pueden ser útiles en proyectos ágiles (aunque no se denominan explícitamente como tales). [5] [6] Un ICD no necesita ser un documento textual. Puede ser una tabla (en evolución) de entradas y salidas , una base de datos dinámica que representa cada subsistema como una vista de base de datos, un conjunto de diagramas de interacción, etc.
Los ICD se utilizan a menudo cuando los subsistemas se desarrollan de forma asincrónica en el tiempo, ya que proporcionan una forma estructurada de comunicar información sobre las interfaces de los subsistemas entre diferentes equipos de diseño de subsistemas.[7] [8] [9]