Шаги к защите от ошибок критически важного процесса - PullRequest
3 голосов
/ 19 марта 2009

Я пишу программу, которая будет непрерывно обрабатывать файлы, помещенные в горячую папку.

Эта программа должна работать на 100% без вмешательства администратора. Другими словами это не должно терпеть неудачу на «глупых» ошибках. то есть кто-то удаляет выходной каталог, он должен просто воссоздать его и двигаться дальше.

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

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

Какие существуют методологии для «защиты от ошибок» «критического» процесса?

Ответы [ 4 ]

3 голосов
/ 19 марта 2009

Если ваш процесс должен быть защищен от ошибок и не требует вмешательства администратора, вы должны обработать все возможные ошибки. Если у вас останется шанс остановить программу, то произойдет (закон Мерфи), и вы не узнаете.

Даже обрабатывая все возможные ошибки, я думаю, что вам понадобится некоторое ведение журнала и даже монитор с предупреждениями (mail?), Чтобы убедиться, что ваш процесс всегда работает нормально.

2 голосов
/ 19 марта 2009

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

Чтобы использовать ваш пример, если кто-то может удалить критическую папку, сделайте тест, который имитирует это, а затем покажите, что ваша программа обрабатывает этот случай без сбоев.

1 голос
/ 19 марта 2009
0 голосов
/ 19 марта 2009

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

Когда применяет HAZOP к программному обеспечению , вы учитываете ключевые слова, соответствующие объектам в вашем программном обеспечении.

Например, для чтения файла вы можете считать «больше» переполнением буфера, «меньше» пропущенных данных, «пропущенных» не существует, «утечка», отсутствие дескрипторов файлов и т. Д.

...