Основные подходы к обеспечению качества программного обеспечения

Автор работы: Пользователь скрыл имя, 19 Декабря 2011 в 17:53, реферат

Описание работы

В соответствии с Доктриной информационной безопасности Российской Федерации, утвержденной Президентом Российской Федерации 9 сентября 2000 года № Пр-1895, одна из составляющих национальных интересов Российской Федерации в информационной сфере включает в себя «развитие современных информационных технологий, отечественной индустрии информации, в том числе индустрии средств информатизации, телекоммуникации и связи, обеспечение потребностей внутреннего рынка ее продукцией и выход этой продукции на мировой рынок, а также обеспечение накопления, сохранности и эффективного использования отечественных информационных ресурсов».

Файлы: 1 файл

Материал.docx

— 63.11 Кб (Скачать файл)

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

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

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

Основные  подходы к обеспечению  отказоустойчивости

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

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

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

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

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

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

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

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

Основные  подходы к предотвращению неисправностей

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

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

  • анализ и спецификация требований,
  • проектирование,
  • исполнение.

    Рассмотрим  содержание каждой из фаз, в контексте  решения задачи предотвращения неисправностей ПО.

Фаза  анализа и спецификации требований

    Стремление  к достижению большей надёжности ПО привлекает значительное внимание к самым ранним фазам цикла создания программ. Новейшая и наименее разработанная область обеспечения программной надежности ¾ область спецификаций требований. Анализ всей совокупности требований к системе ¾ технического задания (ТЗ) выполняется на начальной фазе создания программ. ТЗ составляется на основании перечня требований, предъявленных к системе заказчиком (классы решаемых задач, их характеристики и особенности, режим работы АС, сопряжение с внешними объектами, пропускная способность, время ответа и т.п. при заданных ограничениях на стоимость, длительность разработки и др.). Цель создания ТЗ ¾ уточнить и сформулировать задачи, возлагаемые на систему, согласовать требования заказчика и возможности исполнителя, составить техническое задание на ПО. Это делается для того, чтобы удостовериться в том, что от программ требуются только те системные требования, которые могут быть достигнуты.

    Успехи  в теории программирования и вычислений обеспечили начало использования формальных методов при разработке ПО. Формальный метод разработки систем состоит из трёх основных компонент:

  • формальная запись спецификаций и описаний проектов,
  • методика получения реализаций из спецификаций,
  • составление правил вывода (или доказательство) того, что реализации отвечают этим спецификациям.

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

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

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

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

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

Фаза  проектирования

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

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

Фаза  исполнения

    Фаза  исполнения включает в себя кодирование, интегрирование, а также тестирование и отладку.

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

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

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

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

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

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

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

    Методология построения надежных ОС

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

  • иерархический метод разработки,
  • исследование корректности и верификация,

Информация о работе Основные подходы к обеспечению качества программного обеспечения