И. Соммервилл - Инженерия программного обеспечения (1133538), страница 87
Текст из файла (страница 87)
В системной спецификации может быть не определено поведение системы в некоторых критических ситуациях. Высокий процент сбоев систем — результат скорее неверных или неполных требований, чем ошибок программирования [49, 109, 226, 252, 6", 20*, 29ч). После изучения ошибок в программных системах Лутц (1.цех, [226) ) делает вывод: "...трудности с формулировкой требований к разрабатываемой системе- основная причина ошибок программного обеспечения, связанных с безопасностью, которые нельзя выявить до сборки и тестирования системы". 2. Сбои в рабате аппаратных средств могут привести к непредсказуемому поведению системы, в результате чего программное обеспечение сталкивается с непредвиденной ситуацией.
Когда системные компоненты близки к состоянию отказа, они могут вести себя неустойчиво и генерировать сигналы, которые могут быть обработа. пы програминым обеспечением непредвиденным образом. 3. Операторы, работающие с системой, могут внести ошибки, которые в особых сигуа. циях способны привести к сбою системы. Анекдотический пример- механик дал команду системе, управляющей полетом самолета, полнять шасси.
Управляющая система выполнила команду механика несмотря на то, что самолет был на земле! Таблица 16.2. Терминология безопасности Термин Описание Незапланированное событие или последовательность событий, приводящие к человеческой смерти или ранению; нанесение ущерба собственности нли окружающей среде. Пример несчастного случая — ка. несение увечий оператору машиной, управляемой компьютерной сис- тслюй Авария (или не- счастный случай) Ситуации, при которых возможны несчастные случаи и аварии.
При- мер опасности — отказ сенсара, который определяет наличие препят- ствия впереди машины Опасность (опасные сигуа. ции) Повреждения Оцениваются как ущерб от опасных случаев. Повреждения мокнут быть как незначительными, так и катастрофическими, приваляятнми к ги- бели людей Серьезность опасности Оценивается по самым большим повреждениям в результате самых опасных случаев. Серьезность опасности может ранжироваться от ка- тастрофической, приводящей к гибели людей, до незначительной Вероятность полвления событий, которые создают опасные ситуации, Значение вероятности определяется обычным образом.
Опасные со- бытия ранжируются от вероятного (если, например, вероятность рав- на 1/100, т.е. на 100 "нормальных" событий произойдет одно опасное) и до невозможного (когда ни при каких условилх не возникнет опас- ной ситуации) Вероятность опасности При разработке систем, критических по обеспечению безопасности, используется специальная терминология, приведенная в табл. 16.2. Зги термины взяты из работы [214) н уточнены мною. 16. Надежность систем 339 Окончание таба. 16.2 Термин Описание Риск Измеряется как вероятность того, что система будет причиной несчастного случая. Для оценки риска определяются вероятность опасности, серьезность опасности и вероятность того, что опасная ситуация приведет к аварии Считается, что система безопасна, если ее эксплуатация исключает аварии (несчастные случаи) или их последствия незначительны. Этого можно достичь тремя до.
полняющими друг друга способами. К Пфедовмроидщие опасности. Система разрабатывается таким образом, чтобы избе. жать опасных ситуаций. Например, чтобы во время эксплуатации машины избежать попадания рук оператора под лезвие, в системе раскроя предусматривается обязательное одновременное нажатие двух отдельных кнопок управления. 2. Обло)луженое и уал)иляеиие ояосиосжи. Система разрабатывается таким образом, чтобы возможные опасные ситуации были обнаружены и устранены до того, как они приведут к аварии. Например, система, управляющая химическим предприятием, для предот. вращения взрыва от высокого давления должна вовремя обнаружить избыточное давле. ние и открыть предохранительный клапан, чтобы уменьшить это давление.
3. Огроиичение яосмдежвий. Система может вкэючать способы защиты, минимизирующие повреждения, возникающие в результате происшедшей аварии. Например, в систему управления двигателями самолета обычно включается автоматическая система огнетушения. В случае возгорания такая система позволяет предотвратить пожар и не ставит под угрозу жизнь пассажиров и экипажа. Аварии и несчастные случаи обычно являются результатом нескольких собьлтий, которые пронсходяг одновременно с непредвиденными последствилми. Анализируя серьезные аварии, в работе [275] показано, что почти все они произошли иэ.ээ комбинации системных сбоев, а не вследствие отдельных сбоев. Непредвиденная комбинация сбоев приводила к отказу системы.
В той же работе угверждается, что невозможно предупредить все комбинации сбоев системы и зтн аварии — неизбежное следсгвие использования сложных систем. Программное обеспечение имеет тенденцию разрастаться н усложняться, а сложность программно управляемых систем увеличивает вероятность аварий и несчастных случаев. Это, конечно, не означает, что программное управление обязательно увеличивает риск, связанный с системой. Программное управление и текущий контроль могут повысить безопасность систем. Кроме того, программно-управляемые системы молут контролировать более широкий диапазон условий по сравнению, например, с электромеханическими системами. Они также доволыю легко настраиваются.
Они предполагают использование компьютерных средств, которым свойственна высокая надежность и которые относительно коллпактньь Программно-управляеллые сложные системы могут блокировать опасность. Онн могут поддерживать управление во вредных условиях, уменьшая количе. ство необходимого обслуживающего персонала. 16.4. Защищенность Это способность системы защищать себя от внешних случайных или преднамеренных воздействий. Примером внешних воздействий на систему могли бы быть компьютерные вирусы, несанкционированное использование системы, несанкционированное изменение сис. 340 Часть 1У. Критические системы 1.
Овгказ е предосккьыении сисэмнкмл сервисов. Система может быть переведена в такое состояние, когда нормальный доступ к системным сервисам становится невозможным. Очевидно, это отражается на работоспособности системы. 2. Рагруииние арогранм и длкнмх. Компоненты программного обеспечения системы могут быть несанкционированно изменены. Это может повлиять на поведение системы, а следовательно, иа надежность и безопасность. Если повреждение серьезно, система может стать не пригодной кэксплуатации. 3. Раафмэгие конфкдекциазъкон инфо~микка.
Информация, находящаяся под управлением системы, может быть конфиденциальной, внешнее проникновение в систему может сделать ее публично доступной. В зависимости от типа данных, это может повлиять на безопасность системы и вызвать дальнейшие изменения в системе, которые скажутся на ее работоспособности и безотказности. Как и в случае с другими составляющими надежности, есть специальная терминология, связанная с защищенностью систем. Некоторые термины, определенные в монографии 1279], приведены в табл.
16.3. Таблица 16.3. Терминология защищенности Термин Описание Внешнее воздейст- Воздействие, в результате которого возможна потеря данных и/или повреждение системы Дефект системы, который может стать причиной потери данных или ее повреждения вие Уязвимость Атака Угрозы Использование уязвимости системы Обстоятельства, которые мокнут привести к потере данных или по. вреждению системы Защитные меры, уменьшающие уязвимость системы Контроль темы или данных и т.д. Защищенность важна для всех критических систем. Без приемлемого уровнл защищенности работоспособность, безотказность и безопасность системы теряют смысл, поскольку причиной повреждения системы могут быть внешние воздействия.
Это связано с тем, что все методы подтверждения работоспособности, безотказности н защищенности полагаются на неизменность системы при эксплуатации и на соответствие ес параметров первоначально установленным. Если установленная система была по. врежяена каким.то образом (например, если программное обеспечение было изменено в результате проникновения в систему вируса), то параметры надежности и безопасности, которые первоначально были заложены, не мо|уг больше поддерживаться. В этом случае программное обеспечение может вести себя непредсказуемо.
Имеются определенные типы критических систем, для которых защищенность — наиболее важный показатель надежности системы. Военные системы, системы для электронной торговли и системы, включающие создание и обмен конфиденциальной информацией, должны разрабатываться с очень высоким уровнем защищенности. Например, если система резервирования билетов авиакомпании недоступна, это причиняет неудобство в связи с некоторой задержкой продажи билетов, но если система не защищена и может принимать поддельные заказы, то авиакомпания может понести большие убытки. Сусцествует три типа повреждений системы, которые могут быть вызваны внешними воздействиями.
10. Надежность систем 341 В терминологии защищенности есть много общего с терминологией безопасности. Так, внешнее воздействие аналогично аварии (несчастному случаю), а уязвимость — опасности. Следовательно, существуют аналогичные подходы, увеличивающие защищенность системы. 1. Предотвриятпямуязеимопяи. Система разрабатывается таким образом, чтобы ее уязвимость была как можно ниже. Например, система не соединяется с внешней сетью, чтобы избежать воздействия из нее. 2. Обил)зулсгикг и упя)ьягиюи атак.