¿Qué es un diseño de Contract®?

Design by Contract® es un método utilizado para desarrollar un software que se basa en el establecimiento de parámetros de interfaz bien definidos, o contratos, para todas las partes de un programa. Aunque el diseño de Contract® puede verse como un estilo de desarrollo conceptual que se implementa a través de la documentación o el modelado, se utiliza más ampliamente para referirse a un mecanismo nativo o de terceros dentro de algunos lenguajes de programación que realmente requieren la codificación implícita de los contratos dentro de un programa. El objetivo de usar el diseño de Contract® es que se desarrollará un programa y, eventualmente, codificado de una manera mucho más completa que elimina los errores más triviales, mientras que la aplicación de los contratos por el lenguaje de apoyo hace que cualquier error residual se encuentre y capturen fácilmente. Un programa que utiliza contratos para funciones y clases puede tener un diseño más modular en el que las clases individuales se pueden reutilizar fácilmente en otros programas debido a la definición clara de sus contratos.

la base der El diseño de la filosofía de programación de Contract® es la idea de los contratos comerciales del mundo real. En este modelo, cada método y clase en un programa orientado a objetos define un contrato por el cual cualquier otro método u objeto que interactúe con él debe cumplir. Cada clase también puede tener un contrato, llamado invariante de clase, que debe seguir internamente para garantizar que los contratos externos no comprometan su capacidad para funcionar.

Las dos partes de un contrato que son más importantes durante el diseño y la codificación son las condiciones previas y las post-condiciones. Estas dos partes del modelo de diseño por contrato® definen el estado del programa antes de llamar a un método y el estado del programa después de que el método haya completado la ejecución. Otras partes de un contrato pueden variar mediante la implementación, pero pueden incluir referencias cruzadas a otros módulos, condiciones de sincronización y requisitos de orden de ejecución.

Al desarrollar contratos para cada clase y método, la interacción de las diferentes partes de un programa se puede asignar y predecir fácilmente. La aplicación de los contratos, ya sea mediante el uso de afirmaciones u otros mecanismos, también garantiza que el programa no intentará ejecutar si hay una violación de los contratos, porque cualquier resultado producido en ese estado técnicamente no será válido de todos modos. Cuando se implementa como una característica de idioma nativo, el diseño de Contract® puede ayudar a garantizar que un producto final funcione como se esperaba con pocas posibilidades de errores imprevistos.

Algunas de las complicaciones que vienen con el uso del diseño por la filosofía Contract® incluyen tiempos de diseño más largos y un desarrollo más granular de un sistema antes de que comience la codificación, lo que a veces puede ser difícil con un proyecto grande. Más prácticamente, el mecanismo de validación del contrato utilizado en un lenguaje de programación que admite de forma nativa puede ralentizar la ejecución del programa. Una mala comprensión de tEl diseño de la metodología Contract® puede conducir a un programa que utiliza contratos para realizar una verificación de errores básicos, lo que puede conducir a una aplicación propensa a bloqueos repentinos después del lanzamiento.

OTROS IDIOMAS