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


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

 3.1.1.Требования к технологии и средствам автоматизации разработки сложных программных средств

Содержание этапов и работ при создании компонент и программных систем в целом определено в стандартах и моделях жизненного цикла программного обеспечения. Необходимая надежность объектов формируется и обеспечивается в процессе выполнения каждого этапа и окончательно подтверждается испытаниями и документами при их завершении. Для обеспечения качества и надежности программных средств стандартами рекомендуется формулировать требования:

к объекту разработки на данном этапе — к его программным и информационном компонентам, а также к интерфейсу между ними и внешней средой;

к процессу, технологии и организации выполнения работ каждого этапа;

к методам и характеристикам средств автоматизации выполнения работ;

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

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

Требования к инструментальным средствам автоматизации разработки сложных ПС наиболее полно изложены в стандарте IEEE 1209. Этот стандарт формулирует требования

— к технологической среде и CASE-средствам разработки,

— к средствам управления проектом сложного ПС,

— к средствам поддержки технологической и эксплуатационной документации на комплекс программ,

— к анализу корректности и надежности входящих в ПС программных компонент.

3.1.2. Планирование и управление обеспечением качества и надежности программ

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

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

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

Организованной основой управления качеством ПС является план обеспечения заданных показателей качества на всех этапах разработки комплекса программ. Руководством по планированию обеспечения качества ПС является стандарт ANSI/IEEE 983. Согласно этому стандарту в плане обеспечения и управления качеством и надежностью комплекса программ должны быть отражены следующие показатели:

цели управления качеством, номенклатура показателей качества и требования к их значениям;

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

базовые документы и стандарты, используемые для обеспечения качества на всех этапах разработки;

средства автоматизации разработки, обеспечивающие достижение и измерение заданных значений показателей качества.

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

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

 

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

На выполнение разработки ПС выделяются ресурсы различных видов:

допустимые финансово-экономические затраты;

кадры специалистов;

вычислительные ресурсы.

Величины доступных ресурсов являются критериями, влияющими на выбор методов разработки, на достигаемые качество и надежность ПС. Различают ресурсы, необходимые для непосредственного решения основных функциональных задач ПС, и ресурсы, требующиеся для обеспечения надежности и безопасности функционирования ПС. Соотношение между этими видами ресурсов зависит от сложности задач и требований к надежности и безопасности всей информационной системы. В различных ПС ресурсы на обеспечение надежности могут составлять от 5—20% до 100-300% от ресурсов, используемых на решение функциональных задач.

 

3.2. Виды тестирования для обеспечения надежности программных средств

 

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

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

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

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

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

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

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

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

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

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

 

3.3. Сертификация для обеспечения надежности программных средств

 

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

Международный стандарт ISO/IEEE 0002 определяет сертификацию соответствия как действие 3-й стороны, доказывающее, что обеспечивается необходимая уверенность в том, что продукция, процесс или услуга соответствует конкретному стандарту или другому нормативному документу. В результате выполнения этого действия оформляется сертификат соответствия. Срок действия такого сертификата обычно ограничен либо по времени, либо до проведения значительной модификации изделия.

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

Для сертифицированных испытаний должны быть подготовлены следующие исходные данные:

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

значения исходных данных и результатов, в пределах которых должны удовлетворяться заданные показатели качества;

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

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

 

3.4. Повышение надежности функционирования программных средств за счет избыточности

 

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

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

временная избыточность,

информационная избыточность,

программная избыточность.

Временная избыточность состоит в использовании некоторой части производительности компьютера для контроля исполнения программ и восстановления (рестарта) вычислительного процесса. Для этого при проектировании информационной системы должен предусматриваться запас производительности, который будет затем использоваться на контроль и оперативное повышение надежности функционирования. Величина временной избыточности зависит от требований к надежности и находится в пределах от 5-10% производительности компьютера до 3-4-кратного дублирования производительности отдельной машины в многопроцессорных вычислительных системах. Временная избыточность или резерв времени используется на контроль и обнаружение искажений, на их диагностику и выработку решений по восстановлению вычислительного процесса или информации, а также на реализацию операций восстановления.

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

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

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