Interface Control Documents (ICD) are a method for specifying the functional interface of a component or system. Used correctly they prevent integration errors and promote formal development practices.
What is in the document?
At a minimum, the ICD consists of the following information
- Input specification
- Name
- Data type
- Dimension
- Reference/value
- Output specification
- Name
- Data type
- Dimension
- Reference/value
- Global data used
- Calling method
- Periodic or event-driven
- Reusable / non-reusable
The I/O and global data are generally well understood. Specification of the calling method is required to understand how time-dependent functions such as integrators or transfer functions will behave.
Additional data may include information such as signal range, update rate, units… All of this information should be derived from the requirement specification. (Note: the ICD is sometimes viewed as a derived requirement document)
How is the ICD used?
The ICD provides a baseline for the interface to the software component. Once the ICD has been defined the initial model can be created. This is sometimes called a “shell model.” The shell model has all of the inputs and outputs as defined by the ICD document. The shell model can then be integrated into the system level model (or another integration model) for a system lockdown. This integration model provides the first level of testing of the interface. If the interface of the shell model changes the integration model will break.