Лекция №10

Лекция №15

НАДЕЖНОСТЬ И КАЧЕСТВО

ПРОГРАММНЫХ СРЕДСТВ

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

ин к)матического управления погибло несколько отечественных, i1иканских и французских спутников, происходили отказы и катастрофы в сложных административных, банковских и технических информационных системах.

В результате около двадцати лет назад появились первые работы, в которых были сформулированы концепции и основные положения теории надежности программных средств для информационных систем. В это время были заложены основы методологии и технологии создания высоконадежных Iи1)КНЫХ комплексов программ. Стало ясно, что для обеспечения надежности функционирования и безопасности примеIII ы создаваемых сложных комплексов программ необходимы организация и высокая квалификация всего коллектива нiщалистов, участвующих в таком проекте. В коллективе разработчиков целесообразно выделять специалистов, ответственПи и за соблюдение технологии создания и развития программ, и обеспечение и контроль качества, а также за надежность и беи ,иiисность проекта ПС и его компонентов.

Обеспечение надежности должно реализовываться специалии ин в жизненном цикле программных средств на основе исполнения современной методологии, технологического инструментирования, стандартов и нормативных документов.

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

ГЛАВА

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

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

ошибок при создании и модификации ПС и их компонентов. Ограниченные ресурсы на разработку приводят к необходимости упорядоченного применения методов и рационального использования средств автоматизации проектирования. Поэтому процесс разработки должен планироваться и последовательно проходить этапы, охватывающие все компоненты ПС. Контроль надежности и безопасности создаваемых и модифицируемых программ должен сопровождать весь жизненный цикл ПС посредством специальной, достаточно эффективной технологической системы обеспечения их качества. Разработка и сопровождение сложных ПС на базе САSЕ-технологий позволяют предупреждать и устранять наиболее опасные системные и алгоритмические ошибки на ранних стадиях проектирования, а также использовать неоднократно проверенные в других проектах программные и информационные компоненты высокого качества. Предупреждени1 ошибок должно поддерживаться высококачественной документацией в процессе создания ПС в целом и их компонентов.

Одним из эффективных путей повышения надежности ПС является стандартизация технологических процессов и объ ектоё проектирования, разработки и сопровождения программ. В стандартах жизненного цикла ПС обобщаются опыт и результатЬ исследований множества специалистов и рекомендуются наиболее эффективные современные методы и процессы. В результате iких обобщений отрабатываются технологические процессы и IрIIемьи разработки, а также методическая база для их автомати1IЩи. Стандарты ЖЦ ПС могут использоваться как непосредвенно директивные, руководящие или как рекомендательные ‚кументы, а также как организационная база при создании iдств автоматизации соответствующих технологических этапов 1 в процессов. Подобная стандартизация процессов отражается IIi только на их технико-экономических показателях, но и, что 1ii)бенно важно, на качестве создаваемых ПС. Надежность про1 р1мм тесно связана с методами и технологией их разработки, iюэтому важной группой стандартов в этой области являются ‘i iiщарты по обеспечению качества ПС.

Поддержка этапов и работ ЖЦ ПС международными станциргами весьма неравномерная. Наиболее полно стандартизироi I1Ы этапы ЖЦ ПС, прошедшие длительное историческое разви- 1 1в и требующие наименее квалифицированных специалистов.

1 рв создании сложных проектов ПС и обеспечении их ЖЦ целеюбразно применять выборку из всей совокупности существую- 111’ х стандартов, а имеющиеся весьма обширные про бельи в стан11 )тизации заполнять утвержденными технологическими докуч втами, регламентирующими применение выбранных средств

в оматизации разработки ПС. В результате на начальном этапе

1Юектирования следует формировать весь комплект докумен-

1 в — профиль, обеспечивающий регламентирование всех этапов

1 рiбот при создании надежных ПС. для реализации положений ii х документов должны быть выбраны инструментальные сред- 1 вi, совместно образующие взаимосвязанный комплекс технов)iМческой поддержки и автоматизации ЖЦ и не противоречаIвiс предварительно скомпонованному набору нормативных доументов профиля. Применение профилей при проектировании 1 П позволяет ориентироваться на построение систем из крупii х функциональных узлов, отвечающих требованиям стандар11в1 профиля, применять достаточно отработанные и проверен11.1(. проектные методы и решения.

для обнаружения и устранения ошибок проектирования все 1 ‘Ы разработки и сопровождения ПС должны быть поддержаметодами и средствами систематического, автоматизированв)Iо тестирования и испытаний. При разработке ПС целесообIвiо применять различные методы, эталоны и виды тестирова-ния, каждый из которых ориентирован на обнаружение, л зацию или диагностику определенных типов дефектов. Удосто рению достигнутого качества и надежности функционироваю, сложных критических ПС должна сопутствовать обязательн4 сертифвжация аттестованными проблемно-ориентированны сертификационными лабораториями.

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

В отечественных ИС все больше применяются программны компоненты зарубежных фирм, которые также не могут бьгТI абсолютно гарантированы от проявления дефектов проеi. вания, программирования и документации. Для обеспечения дежности функционирования комплексов программ с использ ванием импортных компонентов следует закупать только лице* зионно-чистые продукты, поддерживаемые гарантированны сопровождением конкретных фирм-поставщиков. Эти компоi ты должны сопровождаться полной эксплуатационной и те ческой документацией, сертификатом соответствия и к ми тестов. В контрактах на закупку должны специально фикси роваться обязательства поставщиков по длительному сопро вождению и замене версий ПС при выявлении дефектов или с:

вершенствовании функций. Все версии зарубежных ПС следу проверять на надежность функционирования в конкретном ружении проекта ИС путем повторных испытаний или ными проверками, подтверждающими зарубежный сертификат

Экспериментальное определение реальной надежности функции онироваямя сложных комплексов программ — весьма трудоемкаа трудноавтоматизируемая и не всегда безопасная часть жизнен ного цикла ПС. Накоплен значительный опыт определения н дежности ПС, применяемых в авиационной, ракетно-космичес кой и других областях современной высокоинтеллектуальной тех ники. В этих областях недопустимо для тестирования определения надежности ПС использовать функционировани реальных объектов. В результате особое значение приобрели ме тоды и средства моделирования внешней среды для автоматизинанной генерации тестов при испытаниях надежности таких 1 i( . В этих случаях на базе программных моделей и компонентов

iьных систем должны создаваться моделирующие испытатель1110 стенды, обеспечивающие возможность определения надежЮОГИ функционирования конкретных ПС в условиях штатных и фiiтических внешних воздействий, соответствующих подлинным мi рактеристикам внешней среды.

Быстрый рост числа сфер использования, сложности и ответ- 1 1 ненности функций, выполняемых комплексами программ в ин1 юрмационных системах, резко повысил в последнее время тре111 вания к надежности их функционирования и безопасности применения, Для удовлетворения таких требований в жизненном 1IIкле ПС необходимы выделение задач и работ по обеспечению надежности программ и концентрация усилий разработчиков на 1 соретическом и практическом их решении. Для каждого проекта II С, выполняющего ответственные функции, должны разрабатьиiагься и применяться специальные план и программа, методоло1 дЯ и инструментальные средства, обеспечивающие требуемые

1 кiдежность и безопасность. Только скоординированное, компiексное применение в проектах ПС современных методов и

едств обеспечения надежности функционирования и безопасдости применения комплексов программ путем автоматизации iх разработки и испытаний позволяет достигать высокого качеi-ва ПС, необходимого для их применения в критических и сложных системах управления и обработки информации [49].

41.

Основные понятия и показатели надежности

программных средств

Основные понятия надежности систем. По определению, усанОвле нному в ГОСТ 13377 75, надежность — свойство объеквыполнять заданные функции, сохраняя во времени значения установленных эксплуатационных показателей в заданных пределах, соответствующих заданным режимам и условиям испольювания, технического обслуживания, ремонта, хранения и трансiiортирования. Таким образом, надежность является внутренним свойством системы, заложенным при ее создании и проявляющимся во времени при функционировании и эксплуатации. Р. Гласс надежность определяет как уровень, при котором система программ удовлетворяет поставленным требованиям и пригодна для эксплуатации. При этом следует отличать надежность от корректностi’, которая определяется как степень удов-, летворения требованиям. Надежность является составной частью, более общего понятия качества. Качественная программа не только надежна, но и компактна, совместима с другими программами, эффективна, удобна в сопровождении, портативна и вполне понятна [46].

Свойства надежности изделий изучаются теорией надежное-:

пп’, которая является системой определенных идей, математических моделей и методов, направленных на решение проблем предсказания, оценки и оптимизации различных показателей надежности. Надежность технических систем определяется в основном двумя факторами: надежностью компонентов и дефектами в конструнщии, допущенными при проектировании или изготовлении, Относительно невысокая физическая надежность компонентов, их способность к разрушению, старению или снижению надежности в процессе эксплуатации привели к тому, что этот фактор оказался доминирующим для большинства комплексов аппаратуры. Этому способствовала также невысокая сложность многих 1 технических систем, вследствие чего дефекты проектирования проявлялись относительно редко.

Надежность сложных программных средств определяется этими же факторами, однако доминирующими являются дефекты и ошибки проектирования, так как физическое хранение программ на магнитных носителях характеризуется очень высокой надежностью. Программа любой сложности и назначения при строго фиксированных исходных данных и абсолютно надежной аппаратуре исполняется по однозначно определенному маршруту и дает на выходе строго определенный результат. Однако случай- ное изменение исходных данных и накопленной при обработке информации, а также множество условных переходов в программе создают огромное число различных маршрутов исполнения каждого сложного ПС. Источниками ненадежности являются непроверенные сочетания исходных данных, при которых функционирующее ПС дает неверные результаты или отказы. В результате комплекс программ не соответствует требованиям функциональной пригодности и работоспособности. Приведем пример, который опубликован в статье Юрия Ба- 1 урина в журнале «Новое время» [57]. Автор приводит несколько факторов, которые описывают проблемы функционирования ‘iожных программных средств. Так, в качестве одного из факторов выступает фактор сложности. «Существуют фундаментальные причины, почему программное обеспечение невозможно сдеi,ать достаточно надежным, чтобы можно было не сомневаться в 1 ом, что система «звездных войн» действительно сработает», — читает д. Парнас, крупнейший авторитет по крупномасштабЫОМ программированию. Он был назначен Организацией по 1 )существлению Стратегической Оборонной Инициативы (СОИ)

1iценом консультативного комитета по программированию управления боевыми операциями. <Мне обещали 1000 долларов в цень плюс накладные расходы». Но, ознакомившись подробнее с ем, чего от него ждут, д. Парнас отклонил сделанное ему предiожение, одновременно представив восемь технических докумен- ов, которые объясняли, почему программа не сможет работать ак, как требуется. В качестве примера приведем еще один из фак-

iоров фактор надежности. О том, насколько уязвимо матемаiiiческое обеспечение, можно судить по следующему примеру. Когда в 1979 г. американский космический зонд, запущенный на iенеру, не достиг своей цели, в космос вылетело почти полмилiиарда долларов. Причина в том, что в программе коррекции курса зонда занятая была спутана с двоеточием.

При применении понятий надежности к программным средгнам следует учитывать особенности и отличия этих объектов ин традиционных технических систем, для которых первоначально разрабатывалась теория надежности:

не для всех видов программ применимы понятия и методы теории надежности их можно использовать только к программным средствам, функционирующим в реальном времени и непосредственно взаимодействующим с внешней средой;

• при оценке качества программных компонентов к ним неприменимы понятия надежности функционирования, если при обработке информации они не используют значения реального времени и не взаимодействуют непосредственно с внешней средой;

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

• для повышения надежности комплексов программ особое зна чение имеют методы автоматического сокращения длительносI ти восстановления и преобразования отказов в кратковремен ные сбои путем введения в программные средства временной программной и информационной избыточности;

• непредсказуемость места, времени и вероятности проявления дефектов и ошибок, а также их редкое обнаружение при реаль ной эксплуатации достаточно надежных программных средств не позволяют эффективно использовать традиционные методы! априорного расчета показателей надежности сложных систеiщ ориентированные на стабильные, измеряемые значения надеж.I ности составляющих компонентов;

• традиционные методы форсированных испытаний надежностi4 систем путем физического воздействия на их компоненты не! применимы для программных средств, и их следует заменять н методы форсированного воздействия информационных пото ков внешней среды.

С учетом перечисленных особенностей применение осноВню( понятий теории надежности сложных систем к жизненному циiф лу и оценке качества комплексов программ позволяет адаптиро вать и развивать эту теорию в особом направлении — надежно сти программных средств. Предметом изучения теории надежно сти комплексов программ ($оПуаге 1е1iаЫ1iу) является работо способность сложных программ обработки информации в реаль. ном времени. К задачам теории и анализа надежности сложныI программных средств можно отнести следующие:

• формулирование основных понятий, используемых при иссл довании и применении показателей надежности программньх средств;

• выявление и исследование основных факторов, определяю. щих характеристики надежности сложных программных ком плексов;

• выбор и обоснование критериев надежности для комплексоi программ различного типа и назначения; • исследование дефектов и ошибок, динамики их изменения при отладке и сопровождении, а также влияния на показатели надежности программных средств;

• исследование и разработка методов структурного построения сложных ПС, обеспечивающих их необходимую надежность;

• исследование методов и средств контроля и защиты от искажений программ, вычислительного процесса и данных путем использования различных видов избыточности и помехозащиты;

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

1 iоказателями надежности. Использование и объединение резуль1 iтов экспериментальных и теоретических исследований надежности ПС позволили заложить основы теории и методов в этой

области. В жизненном цикле ПС значения показателей качества и

надежности компонентов и комплексов программ в целом рекомендуется непрерывно анализировать и прогнозировать с целью

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

111. В реальных проектах работы по исследованию и обеспече1 ИЮ надежности программ целесообразно выделять в отдельную

1 iуппу под единым руководством со специальным планом. В основе теории надежности лежат понятия о двух возможных состояниях объекта или системы: работоспособном и пераютоспособном. Работосуюсобным называется такое состояние ,бъекта, при котором он способен выполнять заданные функции 1 iараметрами, установленными технической документацией. I Iiроцессе функционирования возможен переход объекта из раоотоспособного состояния в неработоспособное и обратно. С iими переходами связаны события отказа и восстановления.

Определение степени работоспособности системы предпола-

1 аст наличие в ней средств, способных установить соответствие

с характеристик требованиям технической документации. для

1 iого должны использоваться методы и средства контроля и ди« ‘постики фуякционироваiайя системы. Глубина и полнота провеюк, степень автоматизации контрольных операций, длительность

1 порядок их выполнения влияют на работоспособность систем ы и достоверность ее оценки. Методы и средства диагностичес

л.:

133кого контроля предназначены для установления степени рабо тоспособности системы, локализации отказов, определения их характеристик и причин, скорейшего восстановления работоспособности, для накопления, обобщения и анализа данных, характеризующих работоспособность системы. диагноз состояния системы принято делить на тестовьгй и функциональный. При тестовом диагнозе используются специально подготовленныф исходные данные и эталонные результаты, которые позволяют проверять работоспособность определенных компонентов системы. Функциональный диагноз организуется на базе реальныж исходных данных, поступающих в систему при ее использовании по прямому назначению. Основные задачи технической диагностики включают в себя:

• контроль исправности системы и полного соответствия ее состояния и функций технической документации;

• проверку работоспособности системы и возможности выполнения всех функций в заданном режиме работы в любой момент времени с характеристиками, заданными технической документацией;

• поиск, выявление и локализацию источников и результатов сбо ев, отказов и неисправностей в системе.

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

Формализации показателей качества программных средств посвящена группа нормативных документов. В международном став- дарте ‘80 9126:1991 при отборе минимума стандартизируемых показателей выдвигались и учитывались следующие принципы:

ясность и измеряемость значений, отсутствие перекрытия между используемыми показателями, соответствие установившимся по нятиям и терминологии, возможность последующего уточнения и детализации. Выделены характеристики, которые позволяют оценивать ПС с позиции пользователя, разработчика и управляющего проектом. Рекомендуются б основных характеристик качества ПС, каждая из которых детализируется несколькими (всего 21) субхарактеристиками (рис. 4.1).

Функциональная прагодность детализируется пригодностью для применения, точностью, защищенностью, способностью к взаи модействию и согласованностью со стандартами и правилами проектирования.

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

Найти на этой странице