И. Соммервилл - Инженерия программного обеспечения (1133538), страница 85
Текст из файла (страница 85)
нил их потери вследствие ненадежности системы потребует значительных усилий и финансовых средств. Надежность системы зависит от технологии разработки ПО. Многократные тестирования с целью исключения ошибок способствуют разработке надежных систем. Однако нет простой связи между клзгзсггвом процесса создания и качеством готовой системы. Вопросы взаимосвязи между процессом создания ПО и качеством готовой продукции рассматриваются в главах 24 и 25, где представлены темы управления качеством и модерни.
зации систем. 16.1. Критические системы Обычно отказ систем, управляемых с помощью ПО, вызывает неудобства, но они не приводят к длительным последствиям, Однако имеются системы, отказы которых могут приводить к значительным зкономическим потерям, физическим повреждениям или создавать угрозу человеческой жизни. Такие системы обычно называют критическими. Функциональная надежность — необходимое требование к критическим системам, и все ее составляющие (работоспособность, безотказность, безопасность и защищенность) очень важны. Не менее важен для критических систем и высокий уровень надежности. Существует три основных типа критических систем. 1.
Сиеоммьс критические по обепмчекию бегояаеиосош. Системы, отказ которых приводит к разрушениям, создает угрозу жизни человека или наносит вред окружающей среде. В качестве примера можно привести систему управления производством на химическом заводе. 2. Системы, критические дел Згавевого ногнлчгния. Системы, отказ которых может привести к ошибкам в'действиях, направленных на обеспечение определенной цели. Примером можеоС)фжй2У) навигационная система космического корабля. 3.
Сиеоммьс критические вия биэиемг. Отказ таких систем може.г нанести вред делу, в котором они используется. Примером является система, обслуживающая счета клиентов в банке. Цена огпибки критической системы часто очень велика. Она включает прямые расходы, связанные с внесением изменений в систему или ее заменой, косвенные расходы, например судебные, и расходы, связанные с потерями в бизнесе. Из высокой возможной цены отказа системы следует, что качество методов разработки и сам процесс создания ПО обычно более важны, чем стоимость применения этих методов.
Поэтому при создании критических систем обычно используются испытанные метолы разработки, а не новые, еще пе имевшие большого практического применения. Только сравнительно недавно такие относительно новые методы, как, например, объектноориентированные, стали использоваться для разработки критических систем, вместе с 13.
Надежность систем 331 тем до сих пор при разработке многих критических систем все еще применяются функционально.ориентированныеметоды. С другой стороны, методы разработки ПО, которые обычно нерентабельны, могут использоваться для разработки критических систем, например метод формальных спецификаций и формализованной проверки программ на соответствие таким спецификациям. Одной из причин использования этих методов является уменьшение количества требующегося тестирования.
Для критических систем стоимость проверки и аттестации обычно очень высока н может составлять более 50% общей стоимости системы. Хотя эта книга посвящена разработке программных систем, а не общей теории систем, необходимо отмстить, что функциональная надежность — общесистемное понятие. Рассматривая надежность критических систем, можно выделить три типа системных "компонентов", склонных к отказу.
1. Аппаратные средства системы, отказывающие либо из-эа ошибок конструирования, либо нз-за ошибок изготовления, либо нз-за полного наноса. 2. Программное обеспечение системы, которое может отказывать из-за ошибок либо в технических требованиях к системе, либо в архитектуре снстемьь либо в программном коде. 3. Человеческий фактор, который своими действиями нарушает правильную работу системы.
Таким образом, если цель состоит в том, чтобы повысить надежность системы, необ. ходимо рассматривать все зти аспекты во взаимосвязи. Я поясняю зто положение на нескольких примерах в других главах этой части книги. 16.1.1. Системы, критические по обеспечению безопасности В этом разделе в качестве примера системы, критической по обеспечению безопасности, рассмотрим систему, управляющую дозировкой инъекций инсулина при заболевании диабетом. Предполагается, что большинство читателей имеют общее представление об этом заболевании и его лечении.
Эта система описана в главе 9, где была представлена ее формальная спецификация. Диабет — заболевание, при котором человеческий организм не может выработать достаточное количество гормона, называемого инсулином и регулирующего содержание сахара в крови. Если уровень инсулина в организме будет избыточным, содержание сахара в крови может понизиться, что влечет за собой очень серьезные последствия — прекращение питания мозга, приводящее к потере сознания и даже летальн~му исходу. Если же ор. ганиэм вырабатывает инсулин в недостаточном количестве, то уровень сахара повышается, что приводит к нарушению зрения, заболеванию почек и всего организма. Благодаря появлению миниатюрных датчиков стало возможным создание автоматизн.
ровзнной системы инъекций инсулина. Она контролирует уровень сахара в крови, и, если необходимо, в организм вводится соответствующал доза инсулина. Конечно, такие системы могут пока работать только в стационарных условиях. В дальнейшем, будучи подклю. чеи ными к человеку, они станут доступны широкому кругу больных диабетом. Для работы такой системы микродатчик вживляется в тело больного.
Этот датчик контролирует определенный параметр крови, который характеризует уровень сахара. Результат посылаетсл в контрольный блок, который вычисляет уровень сахара, определяет необходимую дозу инсулина и посылает сигнал для инъекций постоянно подсоединенной ЗЯ2 Часть за'. Критические системы игле. Совершенно очевидно, что такой системой должна управлять надежная программа. На рис.
16.Я показаны компоненты и организация системы дозировки инъекций инсулина На рис. 1б.4 показана модель потока данных, гле видно, как входное значение уровня сахара в крови преобразуется в последовательность команд управления дозировкой инъекций инсулина. Рис. 16З. Струк лгуна сислмзсы доз ила хи инаекиий инсулина Рис. 16,4.
Модель нинока данных сислхмм дази1мохи инсехдий инсулина ) ..)) Надежность системы дозировки инъекций инсулина характеризуется тремя состав ляющими. 1. Радолмснасабносжь. При возникновении критической ситуации система должна быть готовой ввести необходимую дозу инсулина. 2. Безажказнастнь. В зависимости от уровня сахара в крови система должна правильно определить дозу инсулина и ввесгн ее пациенту. Я.
Безонасносазь. Отказ такой системы может привести к чрезмерной дозе инсулина, что представляет опасность для жизни больного. Необходимо добиться, чтобы такого рода отказов в системе не было. 16. Надежность систем ЗЗЗ В последующих главах разъясняется, как эти составляющие можно точно определить и проверить. 16.2. Работоспособность и безотказность В этом разделе обсуждаютсл две близко связанные составляющие функциональной надежности — работоспособность и безотказность.
Под работоспособностью системы подразумевается способность предоставлять пользователю все необходимые системные сервисы по мере возникновения потребности в них. Безотказность — это способность систе. мы предоставлять именно те сервисы, которые заложены в систему ее спецификацией. Из этого следует. что безотказность более общий показатель, включающий в себя свойство работоспособности, поскольку если система не работоспособна„то о безотказности вооб. ще речи идти не может.
! Однако необходимо и различать эти свойства, так как требования к работоспособности и безотказности в разных системах могут быть различны. Например, некоторые системы могут иметь сравнительно частые сбои, но они также могут бысгро восстанавливать ся после сбоев. У таких систем сравнительно низкие требования к безотказности. В то же время они могут иметь высокие требования к работоспособности в связи с необходимостью непрерывного обслуживания пользователей. Наглядный пример такой системы — коммутатор телефонной станции. Снимая трубку телефона, пользователь слышит зуммер, означающий, что "линия свободна" и система го. тона выполнить требования пользователя. В случае сбоя такая система должна быть легко восстанавливаема. Коммутатор телефонной станции имеет средства для восстановления неправильной работы и разрешает повторную попытку соединения.
Это выполняется очень быстро, и абонент телефона может даже не почувствовать, что был сбой. В такой ситуации основным требованием к функциональной надежности системы является безотказность. Другое различие между этими показателями заключается в том, что работоспособность системы зависит также от времени, которое требуется для устранения неисправности. Так как, если система А отказывает один раз в год, а система В отказывает раз а месяц, то система А более надежна, чем В.
Однако, если системе А необходимо три дня для вос. становления работоспособности, а системе В для этого достаточно всего 10 минут, то беэ отказность системы В выше, чем системы А. Исходя из этих соображений пользователь скорее выберет систему В, чем А. Безотказность и работоспособность системы могут бытьопрвделены более точно сле. дующим образом. 1. Безоэгказнасэгь- это способность системы безотказно работать определенное время с указанной целью в определенном окружении. 2. Рпйоглоапэсобность- это способность системы правильно функционировать и предоставлять вовремя требуемые сервисы. Одна из практических проблем, возникающая при разработке систем, заключается в том, что наши интуитивные понятия безотказности и работоспособности часто оказываются шире приведенных выше формулировок. При рассмотрении функциональной надежности системы должны быть приняты во внимание окружение, в котором будет действовать система, и цель, для которой она используется.
Следовательно, оценка безотказно. сти в одном окружении не обязательно переносится в другое окружение, где система используется по.другому. 334 Насть Пг. Критические системы Таблица 1б.1. Терминология безотказности Термин Описание Отказ системы Системныс ошибки Прекращение функционирования системы Ошибочное поведение системы, не соответствующее ее специфи- кации Неправильное поведение системы, непредвиденное ее разработ- чиками Сбой системы 11евсрные действия пользователя. вызвавшие сбой в работе системы Ошибка оператора Для примера рассмотрим безотказность системы программною обеспечения в двух средах (окружении) — в офисе и в университете.
В офисе пользователи строго следуют инструкциям по работе с систсьюй и не имеют времени и возможностей экспериментиро. вать с ней. В университетской среде студенты пробуют все возможности системы и часто непредвиденными способами, что может привести к отказам системы, которые никогда бы не встретились в офисной среде, Также важны способы использования системы и реакция человека па ее работу.
Представим себе, что у автомобиля неисправна стсклоочистительная система — происходит сбой в работе стеклоочистителей. В дождливую погоду работа этой системы очень важна. Безотказность такой системы будет опредслятьсл местностью, где происходит действие, н реакцией водителя. Для водителл из Сиэтла (влажный климат) этот отказ будет более чув. ствнтелен, чем для водителя('иэ Лас.Вегаса (сухой климат).