Diseño por contrato


El diseño por contrato ( DbC ), también conocido como programación por contrato , programación por contrato y programación por contrato , es un enfoque para el diseño de software .

Prescribe que los diseñadores de software deben definir especificaciones de interfaz formales , precisas y verificables para componentes de software , que amplían la definición ordinaria de tipos de datos abstractos con condiciones previas , condiciones posteriores e invariantes . Estas especificaciones se denominan "contratos", de acuerdo con una metáfora conceptual con las condiciones y obligaciones de los contratos comerciales.

El enfoque de DbC asume que todos los componentes de cliente que invocan una operación en un componente de servidor cumplirán las condiciones previas especificadas como requeridas para esa operación.

Cuando esta suposición se considera demasiado arriesgada (como en la computación multicanal o distribuida ), se toma el enfoque inverso , lo que significa que el componente del servidor prueba que todas las condiciones previas relevantes son verdaderas (antes o durante el procesamiento de la solicitud del componente del cliente ) y responde con un mensaje de error adecuado si no es así.

El término fue acuñado por Bertrand Meyer en relación con su diseño del lenguaje de programación Eiffel y descrito por primera vez en varios artículos a partir de 1986 [1] [2] [3] y las dos ediciones sucesivas (1988, 1997) de su libro Object- Construcción de Software Orientada . Eiffel Software solicitó el registro de marca para Diseño por Contrato en diciembre de 2003, y se le concedió en diciembre de 2004. [4] [5] El propietario actual de esta marca es Eiffel Software. [6] [7]

El diseño por contrato tiene sus raíces en el trabajo sobre verificación formal , especificación formal y lógica Hoare . Las contribuciones originales incluyen:


Un esquema de diseño por contrato