Дизайн по контракту и провал быстро
Fail Fast -
Отказоустойчивость - это свойство системы или модуля в отношении его реакции на сбои. Отказоустойчивая система предназначена для немедленного оповещения на своем интерфейсе о любом сбое или состоянии, которые могут привести к отказу. Отказоустойчивые системы обычно предназначены для остановки нормальной работы, а не для того, чтобы продолжать процесс с ошибками. Такие конструкции часто проверяют состояние системы в нескольких точках операции, поэтому любые сбои могут быть обнаружены на ранней стадии. Отказоустойчивый модуль передает ответственность за обработку ошибок, но не за их обнаружение, на следующий более высокий уровень проектирования системы.
Дизайн по контракту -
Проектирование по контракту (DbC), также известное как программирование по контракту, программирование по контракту и программирование по контракту, является подходом к разработке программного обеспечения. Он предписывает, чтобы разработчики программного обеспечения определяли формальные, точные и проверяемые спецификации интерфейса для компонентов программного обеспечения, которые расширяют обычное определение абстрактных типов данных предусловиями, постусловиями и инвариантами. Эти спецификации называются "контрактами" в соответствии с концептуальной метафорой с условиями и обязательствами деловых контрактов.
Мой вопрос в том, что является похожим и различие в обоих терминах. Я думаю, что оба для разработки программного обеспечения.
Быстрый отказ - это скорее реакция на сбой системы, а Проектирование по контракту - это скорее гарантия, минимум и ожидание системы.
Но как мне определить разницу между ними обоими и сходством?
Спасибо за помощь.!
2 ответа
Они взаимоисключающие. Java-итератор работает быстро, но также разрабатывается по контракту. Быстро потерпеть неудачу - значит бомбить в надежде, что ничего страшного не случится (например, выбросить исключение) В то время как что-то вроде отказоустойчивости обычно означает, что когда происходит сбой, убедитесь, что ничего хуже не происходит. Вы можете сделать это, изолировав компоненты системы или имея что-то, что будет обрабатывать случай сбоя, чтобы ничего плохого не произошло (например, репликация сеанса / аварийное переключение)
Сходства:
- Оба могут быть реализованы с помощью утверждений
- Оба являются неотъемлемой частью дизайна XML
Отличия:
- Design by Contract не обрабатывает неожиданные ошибки
- Fail fast не обрабатывает избыточные проверки
- Дизайн по контракту не отвечает плохим требованиям
- Fail fast не обрабатывает требования соответствия
Рекомендации