И. Соммервилл - Инженерия программного обеспечения (1133538), страница 88
Текст из файла (страница 88)
Сисгема разрабатывается таким образом„чтобы обнаружить предпринятую на нее атаку и усгранить ее, пока она не привела к повреждениям и потерям. Пример обнаружения атак и их устранения — использование антивирусных программ, которые анализируют поступающую информацию на наличие вирусов и устраняют их в случае проникновения в сисгему.
3. Оэракйиккз яосыдсямкй Система разрабатывается таким образом, чтобы свести к минимуму последствия внешнего воздействия. Например, регулярная проверка сисгемы и возможность переустановить ее в случае повреждения. Защищенность сгановитсл еще более актуальной прн подключении системы к 1пгегпеь И хотя 1псешеьсвязь обеспечивает дополнительные функциональные возможности системы (например, клиент может получить удаленный доступ к своему банковскому счету), такая система может быль разрушена злоумышленниками. При подключенности к 1пгегпег уязвимые места системы становатся досгупными для большого количества людей. кото. рые могут воздействовать на сисгему.
Очень важным атрибутом систем, подключенных к 1пгетпег, является их жизнеспособность [107), т.е. способносгь системы продолжать работать, в то время как она подвергается внешним воздействиям и часть ее повреждена. Жизнеспособность, конечно, связана и с защищенностью, и с работоспособностью.
Для обеспечения жизнеспособности следует определить основные ключевые компоненты системы. которые необходимы для ее функционирования (108). Для повышения жизнеспособности используется три стратегии: противодействие внешним воздействиям, распознавание их и воссгановчение системы после атаки. Здесь нет возможности охватить эту тему, но на ЬуеЬс границе данной книги имеются ссылки на источники с информацией относительно исследования жизнеспособности систем. ,.Фф Й'; КЛЮЧЕВЫЕ ПОНЯТЙЯ~~".~', ":,'!„'„'ф:„',.' ~ф"'-..,, °,::,:Функдиопвльйая надежность компьютерйсй системы — се йство, отрвжвощеа степень доверия к ":-'„:ж~йв1 "со сторойытюльзаазтелей: Нзпболее важные состзюмющгю функщюкальной надюшости: ра:,' " '""!Бстсспособностя безопазюсть,' безопасность и шцищейность.
.'а.,-';=:;:~фвтйчеспэя.снстема-" система, в которой отказы могуг приводить к зкачптельным зкономиче- ," '4'"-'.'тухжйкг поте(щм;.','фпзичеавму повреждению пли угрозам человечесцв1 жизни, три важных гласса ~,'фу,.::~~дййичесаа'систем-системы, крпткчесюш по обеспечению безопасности, системы, крятические .
"„'- пйя.цеяеяого пазнвчейия, и'системы,' критические для бйзнеса. )' ° '.':-'' 'рзботоспосабйбс) т системы — способность предоставлять:сервисы, когда зто необходимо. Без;:к~;:1-."откемюсть сйстшяы:-'зспособнасть системных серепсое работать твк, как предусмотрено кх на;.„'!(у,:; знпчейием::,.-',фгчгйф-':-,":: 'з, г'„»,'~-:!Безотквзйость',"йсработаспособнссть рйссматриьтются юкг'наиболее важные свойства фунщио' .".))злыюй'цфдежйости:„:Боли система ненздежнз', трудно гарантировать ее безопесность и эащп- "щеннюстй;Ъоскслькуотпй;,маут быпзподорязкы отшзами системы., 642 Яаскь к ч. Критические системы .,:". к ъ, '.Нию:~»„г,',~~.. ъксектэткбгетхкг бес' ° "Безотказность связана с 'ввроятностью сбоев,"возиГ~~уинф;прйазйщбй ' ма'Может содержать определенные ошйбки", ~ю'будйтгвббйрнййапФсБгг ' '"' .
"м1йкй ' 'лесная, пошюльку они мшуттттйюгда нв испольйиап "брвдстй ' "' '", "' " ' "эй , ° .. Безопасность-саодстюо систшхы„шмаров отражает,'-'бв спесобМаДЮ,фунабфФ4ва?6фФЯрбз ' ЛЮДЯМ ИЛИ тжРУХШЮШВ6 СРЕДЕ. ЕСЛИ,БЕЗОйаСНССтЬ ЯВВЮтСЯ,:ПСГЕШНОВБХЩжВГ?йфВтбКОГт,".ф~аснсйТф ., ° ЗвщИщвиектъ Ваэа дпя ВСЕХ Крнишижтш СИСТЕМ. БЕЗ 'йрИЕМГШЬяжп,урОВНя ШщщщааиюожтнтрабО.: тоспособность,' безотююность'и безопасйость системы не' имеет''большопганачения,' 1шшюлькус внешние воздедстеия могут причинить повреждения'системе.- !,,; ~,~",! ',г-",:,:,;,чтг?Ф~ з;"лк?Вф~~~~~'-', Упражнения 16.1.
Перечислите наиболее важные составляющие надежности систем. Почему зависимость межцу стоимостью разработки системы и ее надежштстью имеет зкспоненциальный вид? 16.2. Почему функциональная надежность важна для критических систем? Назовите шесть причин. 16.3. Объясните на примерах трудности точного определения безотказности программных систем.
16,4. Оцените надежность какой. либо системы, которую вы регулярно используете, перечислив отказы системы и наблюдаемые сбои. Составьте руководство пользователя, в котором опишите, что нужно делать для эффективного использования системы при наличии этих сбоев. 16,6. Назовите шесть промышленных изделий, которые содержат нли мшут содержать в будущем про- граммные системы, критические по обеспечению безопасности.
16.6, Объясните, почему обеспечение безотказности системы не гарантирует ев безопасности. 16.7. В медицинской системе, управляющей облучением опухолей, предусмотрите опасность, которая может возникнуть в процессе работы системы, и предложите программное средство, которое определяет эту опасность и предотвращает возможные несчастные случае, обусловленные ею, 16.В. Объясните зависимость между работоспосоаностью системы и ее защищенностью. 16.9. В терминах компьютерной безопасности объясните разницу мехщу атакой на систему и угрозод ей. 16.10. Этично ли поставлять клиенту программную систему с известными ошибками? Разумно ли сооб.
щать клиенту о существовании этих ошибок и следует ли после этого принимать претензии относи. тельно надежности программного обеспечения? 16.11, Предположим, вы входили в состав группы разработчиков программного обеспечения для химического завода, которое сработало неправилыю и стало причиной серьезного загрязнения окружающей среды. Ваш босс заявил в телевизионном интервью, что нет никаких ошибок в программном обеспечении и что проблемы возникли из-за неправилыюд эксплуатации системы, Вы согласитесь с таким объяснением? Обсудите, как еы должны отнестись к такому заявлению.
.з йл /;; Спецификация критических систем Цель настоящей главы — описать функциональные и нефункциональные требования, определяющие на. дежность программных систем. Прочитав зту главу, вы должны: познакомиться с количественными показателями безотказности и понять, как они используются для определения требований безотказности; понять, как требования безопасности для крити.
ческих систем можно получить из анализа воз. можиых опасностей и рисков; понять сходство процессов для определения сис. темных требований безопасности и защищенности. 17.1. Требования безотказности 17.2. Специфицирование требований безопасности 17.3. Специфицирование требований защищенности 344 Часть |У. Критические системы В главах 5-9 обсуждались системные требования и методы их разработки. В этой главе рассматриваются некоторые специалы<ые вопросы спецификации критических систем. Поскольку цена отказа программных систем, особенно критических, как правило, очень высока, необходимо гарантировать высокое качество разработки спецификации критиче. ских систем и точность отражения в ней реальных потребностей пользователей.
Условия надежности критических систем порождают как функциональные, так и нефункциональные требования. 1. Функциональные требования к системе подразумевают возможность обнаружения ошибок, восстановления системы и обеспечения ее защиты от сбоев. 2. Нефункциональные требования можно сформулировать как требования безотказности и работоспособности системы. Анализируя безопасность и защищенность программного обеспечения, можно сформулировать еще один тип требований, которые трудно классифицировать как функциоиэльпыс или нефункциональные. Их, возможно, лучше описать как требования "ие делать".
В противоположность обычным функциональным требованиям, которые определяют систему посредством требований "делать", условия "не делать" описывают систему "от противного". определяя ее поведение, которое недопустимо. Приведем примеры таких требованиИ. Система не должна позволять пользователю изменять файлы, которые он не создавал (защищенность системы).
Система не должна разрешать режим обратного хода, если самолет находится в полете (безопасность системы). Система не должна одновременно выполнять более трех сигналов тревоги (безопасность системы). Пользовательские требования к критическим системам всегда определяются с применением естественного языка и системных моделей.
Как отмечалось в главе 9, при разработке критических систем будут рентабельны метод формальных спецификаций и соответствующий метод верификации систем [148, 348). Формальные спецификации не только служат основой для верификации в процессе разработки и реализации программных систем.
Они наиболее точно описывают системы ПО, что позволяет избежать неоднозначного толкования требований. Кроме того, для использования формальных спецификаций необходим детальный анализ требований, а это эффективный путь обнаружения и устранения проблем в системной спецификации. 17.1.
Требования безотказности Безотказность — это комплексное понятие, которое нужно рассматривать на общесистемном уровне, а не на уровне отдельных компонентов. Так кзк компоненты системы взаимосвязаны, отказ в одном компоненте может распространиться через систему на другие компоненты. В компьютерных системах при определении безотказности учитывают три составляющие. 1. Бгготюмкасть пяля)гггшыз гредггяа Определяется кзк вероятность выхода нз строя аппаратных средств и количество времени, затрачиваемого на их ремонт или замену. 2.
Бгзоэпиынооль грег)гягпг гига обггягггяия. Определяется как вероятность сбоев в работе ПО. 3. Бгготклгяосэга сисэнягыго олгрятгугз. Определяется как вероятность ошибки, допущенной системиыи оператором. 17. Спецификации критических систем 345 Все эти составляющие тесно связаны. Сбой оборудования может служить причиной появления ложного сигнала на входе программного компонента. Программное обеспечение после этого может вести себя непредсказуемо. Непредвиденное поведение системы может привести в замешательство оператора и быть причиной его напряженного состояния. В условиях стресса ошибка оператора весьма вероятна.
Оператор может предпри. нять действия, не соответствующие возникшей ситуации. Зги неверные действия могут привести к другим ошибкам в работе системы. Таким образом, может возникнуть ситуация, когда простой сбой подсистемы, которую можно быстро восстановить, приведет к серьезным проблемам, требующим полного перезапуска системы. В настоящее время в инженерии программного обеспечения выделяется самостоятельная дисциплина, которая занимается проблемами создания надежных и безотказных программных систем 1227, 20*, 26*, 29э). В рамках этой дисциплины подсчитываются ве роятности сбоя различных системных компонентов н определяется, как их сочетания влияют на общую безотказность системы.