Надежность (информатика)

редактировать

В информатике, надежность - это способность компьютерной системы справляться с ошибками во время выполнения и справляться с ошибочным вводом. Устойчивость может охватывать многие области информатики, такие как надежное программирование, надежное машинное обучение и надежная сеть безопасности. Формальные методы, такие как нечеткое тестирование, необходимы для демонстрации устойчивости, поскольку этот тип тестирования включает недопустимые или неожиданные входные данные. В качестве альтернативы можно использовать внедрение неисправностей для проверки устойчивости. Различные коммерческие продукты выполняют тестирование надежности анализа программного обеспечения.

Содержание

  • 1 Введение
  • 2 Проблемы
  • 3 Области
    • 3.1 Устойчивое программирование
      • 3.1.1 Принципы
    • 3.2 Надежное машинное обучение
    • 3.3 Надежная конструкция сети
    • 3.4 Надежные алгоритмы
  • 4 См. Также
  • 5 Ссылки

Введение

В общем, создание надежных систем, охватывающих все точки возможного отказа, затруднено из-за огромное количество возможных входов и комбинаций входов. Поскольку для тестирования всех входов и комбинаций входных данных потребуется слишком много времени, разработчики не могут полностью рассмотреть все случаи. Вместо этого разработчик попытается обобщить такие случаи. Например, представьте, что вы вводите некоторые целочисленные значения. Некоторые выбранные входы могут состоять из отрицательного числа, нуля и положительного числа. Используя эти числа для тестирования программного обеспечения таким образом, разработчик обобщает набор всех действительных чисел на три числа. Это более эффективный и управляемый метод, но он более подвержен неудачам. Обобщение тестовых примеров - это пример всего лишь одного метода работы с ошибками, в частности, сбоя из-за недопустимого ввода данных пользователем. Системы обычно могут выходить из строя и по другим причинам, например, при отключении от сети.

В любом случае сложные системы должны корректно обрабатывать любые обнаруженные ошибки. Есть много примеров таких успешных систем. Некоторые из самых надежных систем могут развиваться и могут быть легко адаптированы к новым ситуациям.

Проблемы

Программы и программное обеспечение - это инструменты, ориентированные на очень конкретную задачу, и поэтому они не являются универсальными и гибкими. Однако наблюдения в таких системах, как Интернет или биологические системы, демонстрируют адаптацию к окружающей среде. Один из способов адаптации биологических систем к окружающей среде - использование избыточности. Многие органы у человека лишены. почка - один из таких примеров. Людям обычно нужна только одна почка, но наличие второй почки оставляет место для отказа. Этот же принцип можно применить к программному обеспечению, но есть некоторые проблемы. При применении принципа избыточности к информатике слепое добавление кода не рекомендуется. Слепое добавление кода приводит к большему количеству ошибок, усложняет систему и затрудняет понимание. Код, который не подкрепляет уже существующий код, нежелателен. Вместо этого новый код должен обладать эквивалентной функциональностью , чтобы в случае сбоя функции другой, обеспечивающий ту же функцию, мог заменить ее, используя ручное или автоматическое разнообразие программного обеспечения. Для этого новый код должен знать, как и когда устранить точку отказа. Это означает, что в систему необходимо добавить больше логики . Но по мере того, как система добавляет больше логики, компонентов и увеличивается в размере, она становится более сложной. Таким образом, при создании более избыточной системы система также становится более сложной, и разработчики должны учитывать баланс между избыточностью и сложностью.

В настоящее время практика информатики не сосредотачивается на построении надежных систем. Скорее они сосредоточены на масштабируемости и эффективности. Одна из основных причин, по которой сегодня не уделяется внимания устойчивости, заключается в том, что это сложно сделать в общих чертах.

Области

Надежное программирование

Надежное программирование - это стиль программирования, ориентированный на обработку неожиданного завершения и неожиданных действий. Требуется код для корректной обработки этих завершений и действий, отображая точные и однозначные сообщения об ошибках. Эти сообщения об ошибках позволяют пользователю более легко отлаживать программу.

Принципы

Паранойя. При создании программного обеспечения программист предполагает, что пользователи хотят взломать свой код. Программист также предполагает, что его собственный написанный код может дать сбой или работать некорректно.

Глупость - Программист предполагает, что пользователи будут пытаться вводить неверные, поддельные или искаженные данные. Как следствие, программист возвращает пользователю недвусмысленное, интуитивно понятное сообщение об ошибке, которое не требует поиска кодов ошибок. Сообщение об ошибке должно быть максимально точным, не вводя пользователя в заблуждение, чтобы проблему можно было легко решить.

Опасные орудия - пользователи не должны получать доступ к библиотекам, структурам данных или указателям на структуры данных. Эта информация должна быть скрыта от пользователя, чтобы пользователь случайно не изменил ее и не привел к ошибке в коде. Когда такие интерфейсы построены правильно, пользователи используют их, не находя лазеек для изменения интерфейса. Интерфейс уже должен быть правильно реализован, поэтому пользователю не нужно вносить изменения. Таким образом, пользователь ориентируется исключительно на свой собственный код.

Не может случиться - Очень часто код изменяется, что может привести к появлению «невозможного» случая. Поэтому предполагается, что невозможные случаи очень маловероятны. Разработчик думает о том, как поступить с маловероятным случаем, и соответствующим образом реализует обработку.

Надежное машинное обучение

Под надежным машинным обучением обычно понимается надежность алгоритмов машинного обучения. Чтобы алгоритм машинного обучения считался надежным, либо ошибка тестирования должна согласовываться с ошибкой обучения, либо производительность должна быть стабильной после добавления некоторого шума в набор данных.

Надежная конструкция сети

Надежный дизайн сети - это исследование дизайна сети с учетом переменных или неопределенных требований. В некотором смысле надежность в проектировании сети широка, как и надежность в разработке программного обеспечения, из-за огромных возможностей изменений или вводимых данных.

Надежные алгоритмы

Существуют алгоритмы, допускающие ошибки на входе или во время вычислений. В этом случае вычисление в конечном итоге сводится к правильному результату. Это явление получило название «влечение к правильности».

См. Также

Ссылки

Последняя правка сделана 2021-06-04 07:25:42
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте