Введение

Система, отказ которой может повлечь серьезные последствия

Система, критически важная для безопасности или жизнеобеспечения, – это система, отказ или неисправность которой может привести к одному (или нескольким) из следующих результатов:

гибели или серьезным травмам людей;
потере или значительному повреждению оборудования/имущества;
ущербу окружающей среде.

Система, связанная с безопасностью (или иногда вовлекающая безопасность), включает в себя все компоненты (аппаратное и программное обеспечение, а также человеческий фактор), необходимые для выполнения одной или нескольких функций безопасности, при отказе которых значительно возрастает риск для безопасности людей или окружающей среды. Системы, связанные с безопасностью, не несут полной ответственности за предотвращение таких опасностей, как гибель людей, серьезные травмы или серьезный экологический ущерб. Неисправность системы, вовлекающей безопасность, может быть опасной только в сочетании с отказом других систем или человеческой ошибкой. Некоторые организации по безопасности предоставляют рекомендации по системам, связанным с безопасностью, например, Управление по охране здоровья и безопасности Великобритании. Управление подобными рисками обычно осуществляется с использованием методов и инструментов инженерной безопасности. Система, критически важная для безопасности, разрабатывается таким образом, чтобы вероятность гибели одного человека в течение миллиарда (109) часов работы была меньше единицы. Типичные методы проектирования включают вероятностную оценку рисков – метод, сочетающий анализ видов и последствий отказов (FMEA) с анализом дерева отказов. Системы, критически важные для безопасности, все чаще основаны на компьютерных технологиях. Концепция систем, критически важных для безопасности, часто используется совместно со швейцарской сырной моделью для иллюстрации (обычно в виде диаграммы «бабочка») того, как угроза может перерасти в крупную аварию из-за отказа нескольких критических барьеров. Это применение стало особенно распространенным в области безопасности процессов, в частности применительно к бурению и добыче нефти и газа, как в иллюстративных целях, так и для поддержки других процессов, таких как управление целостностью активов и расследование инцидентов.

Инженерные разработки программного обеспечения для критически важных для безопасности систем

Разработка программного обеспечения для систем, критически важных с точки зрения безопасности, особенно сложна. Существует три аспекта, которые могут быть применены для облегчения разработки программного обеспечения для систем, от которых зависит жизнь человека. Первый – это проектирование и управление процессами. Второй – выбор подходящих инструментов и среды разработки для системы. Это позволяет разработчикам эффективно тестировать систему посредством эмуляции и оценивать её работоспособность. Третий – соблюдение юридических и нормативных требований, таких как требования Федерального управления гражданской авиации для авиационной отрасли. Установление стандарта, по которому должна разрабатываться система, обязывает разработчиков следовать этим требованиям. Авиационная промышленность успешно разработала стандартные методы создания программного обеспечения для авиационной техники, от которого зависит жизнь человека. Подобные стандарты существуют и для других отраслей, в целом (IEC 61508), а также специально для автомобильной промышленности (ISO 26262), медицинской (IEC 62304) и ядерной (IEC 61513) отраслей. Стандартный подход предполагает тщательное кодирование, инспектирование, документирование, тестирование, верификацию и анализ системы. Другой подход заключается в сертификации производственной системы и компилятора, а затем в генерации кода системы на основе спецификаций. Еще один подход использует формальные методы для получения доказательств соответствия кода требованиям. Все эти подходы повышают качество программного обеспечения в системах, критически важных с точки зрения безопасности, за счет тестирования или исключения ручных операций в процессе разработки, поскольку люди допускают ошибки, и именно эти ошибки являются наиболее частой причиной потенциально опасных для жизни сбоев.