Введение
Проектирование с учетом возможных непредвиденных ситуаций для предотвращения неправильного использования. Защитное проектирование – это практика планирования возможных непредвиденных обстоятельств на этапе проектирования продукта или задачи. По сути, это предвидение всех возможных способов некорректного использования устройства конечным пользователем и проектирование устройства таким образом, чтобы исключить такое использование или минимизировать негативные последствия. Например, если важно, чтобы вилка вставлялась в розетку в определенной ориентации, розетка и вилка должны быть спроектированы так, чтобы физически исключить возможность неправильного подключения. Розетки часто имеют конструктивные особенности, предотвращающие переполюсовку фазы и нейтрали. Кроме того, они углублены в стену, чтобы исключить возможность прикосновения к контактам под напряжением. В разработке программного обеспечения защитное проектирование называется защитным программированием. Закон Мерфи – известное утверждение о необходимости защитного проектирования и одновременно о его конечных пределах.
design to prevent misuse
Defensive design is the practice of planning for contingencies in the design stage of a project or undertaking. Essentially, it is the practice of anticipating all possible ways that an end user could misuse a device, and designing the device so as to make such misuse impossible, or to minimize the negative consequences. For example, if it is important that a plug is inserted into a socket in a particular orientation, the socket and plug should be designed so that it is physically impossible to insert the plug incorrectly. Power sockets are often keyed in such a manner, to prevent the transposition of live and neutral. They are also recessed in the wall in a way that makes it impossible to touch connectors once they become live. Defensive design in software engineering is called defensive programming. Murphy's law is a well known statement of the need for defensive design, and also of its ultimate limitations.
Компьютерное программное обеспечение
Решения по реализации и подходы к проектированию программного обеспечения могут повысить безопасность программного обеспечения и выявлять ошибки пользователей. Экраны ввода данных могут "очищать" вводимые данные, например, числовые поля должны содержать только цифры, знаки и, при необходимости, одну десятичную точку. Вводимые данные могут проверяться на допустимые значения, например, для количества травм на рабочем месте (или числа пострадавших) значение может быть 0, но не может быть отрицательным и должно быть целым числом; для количества отработанных часов в неделю сумма для конкретного сотрудника может быть 0, может быть дробной, но не может быть отрицательной и не может превышать 168 часов, а также не может быть больше 24 раз больше числа отработанных дней. Текстовый процессор, которому требуется загрузить сохраненный документ, должен сканировать его, чтобы убедиться в его целостности и отсутствии повреждений. Если документ поврежден, программа должна сообщить об этом, а затем либо принять допустимую часть документа, либо отклонить весь документ. В любом случае программа должна продолжать работу и не завершаться.
Электроника
Многие электрические разъемы используют этот принцип, будучи асимметричными.