El diseño defensivo es la práctica de planificar contingencias en la etapa de diseño de un proyecto o empresa. Esencialmente, es la práctica de anticipar todas las formas posibles en las que un usuario final podría hacer un mal uso de un dispositivo y diseñar el dispositivo de manera que ese mal uso sea imposible o para minimizar las consecuencias negativas. Por ejemplo, si es importante que un enchufe se inserte en un enchufe con una orientación particular, el enchufe y el enchufe deben diseñarse de manera que sea físicamente imposible insertar el enchufe incorrectamente. Las tomas de corriente a menudo se codifican de tal manera, para evitar la transposición de vivo y neutral. También están empotrados en la pared de una manera que hace imposible tocar los conectores una vez que se activan.
El diseño defensivo en ingeniería de software se denomina programación defensiva . La ley de Murphy es una declaración bien conocida de la necesidad de un diseño defensivo y también de sus limitaciones últimas.
Ejemplos de
- Muchos conectores eléctricos aplican este principio al ser asimétricos.
- El software de computadora tiene muchas formas de diseñarlo para que funcione de manera más segura.
- Las pantallas de entrada de datos pueden "desinfectar" las entradas, por ejemplo, los campos numéricos contienen sólo dígitos, signos y un solo punto decimal si corresponde.
- Las entradas se pueden verificar en busca de valores legítimos, por ejemplo, para los recuentos de lesiones en el lugar de trabajo (o el número de personas lesionadas), el número puede ser 0 pero no puede ser negativo y debe ser un número entero; para la cantidad de horas trabajadas en una semana, la cantidad para cualquier empleado específico puede ser 0, puede ser fraccional, pero no puede ser negativa y no puede ser mayor que 168, ni más de 24 veces la cantidad de días que estuvo presente .
- Un procesador de texto al que se le solicite cargar un documento guardado debe escanearlo para asegurarse de que esté en buen estado y no esté dañado. Si está dañado, el programa debería decirlo y luego aceptar el documento parcial que era válido o rechazar el documento completo. En cualquier caso, debería seguir funcionando y no cerrarse.