Файл: Принципы разработки безопасных программных продуктов.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 24.04.2023

Просмотров: 524

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

4. Ошибки обработки или интерпретации данных.

Выделяются подпункты:

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

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

- проблемы с обменом сообщениями (это включает в себя несколько типов ошибок: отправка сообщения на неправильный процесс или неправильный порт, ошибка распознавания полученного сообщения, пропущенное или несинхронизированное сообщение, сообщение передается только N процессов из N+1, повреждение данных, хранящихся на внешнем устройстве, потеря изменений, которые вы не сохранили введенные данные, объем данных слишком велик для обработки-получатель, неудачная попытка отменить запись данных).

5.Повышенная нагрузка.

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


В этом разделе мы хотели бы обратить внимание на следующее:

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

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

6. Контроль версий и идентификаторов.

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

7. Ошибки тестирования.

Это ошибки сотрудников группы тестирования, а не программы. Выделяются подпункты:

- пропущенные ошибки в программе;

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

- пропуск ошибок на экране;

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

8. Ошибка выявлена и забыта.

Описываются ошибки использования результатов тестирования. По-моему, раздел следует объединить с предыдущим. Выделяются подпункты: не составлен итоговый отчет; серьезная проблема не документирована повторно; не проверено исправление; перед выпуском продукта не проанализирован список нерешенных проблем.

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


1.1.6 Основные пути борьбы с ошибками

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

- сужение пространства перебора (упрощение создаваемых систем);

- обеспечение требуемого уровня подготовки разработчика (это функции менеджеров коллектива разработчиков);

- обеспечение однозначности интерпретации представления информации;

- контроль правильности перевода (включая и контроль однозначности интерпретации).

1.2 Методы структурирования

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

- дублирование кодов программы;

- введение переменной состояния;

- метод булевых признаков.

1.2.1 Метод дублирования блоков

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

Согласно времени восстановления информации, методы дублирования можно разделить в:

- оперативный;

- нерабочий.

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


- дополнительные внешние запоминающие устройства (блоки);

- специально выделенная область памяти на съемном машиночитаемом носителе;

- съемный носитель.

По количеству копий методы дублирования делятся на:

- одноуровневый;

- многоуровневый.

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

- целенаправленное дублирование;

- рассеянное дублирование.

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

В соответствии с процедурой дублирования различают методы:

- полная резервная копия;

- отражение;

- частичная копия;

- комбинированная копия.

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

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

- способы сжатия информации;

- методы без сжатия данных.

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

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


1.2.2 Метод булева признака

Сущность данного метода: в программу, содержащую циклы, вводится некоторый признак. Начальное значение признака задается до цикла. Цикл выполняется, пока признак сохраняет свое исходное значение. Значение признака изменяется при наличии некоторых условий внутри цикла.

Рассмотрим применение метода булева признака на примере преобразования неструктурной схемы, приведенной на рисунке 3.

программа обеспечение ошибка

Рисунок 3. Исходная неструктурированная схема

Схема данного алгоритма не является структурированной, поскольку входящий в нее цикл (блоки 1,2,3) содержат вход и два выхода. На схеме 1 и 2 – некоторые условия, определяющие выполнение того или иного участка вычислений, значения 1 и 0 возле выходов символов «Решение» соответствует логическим значениям «да» и «нет».

В соответствии с рассмотренным методом в исходную схему вводится признак (например J). Схема приобретает структурированный вид (рисунок 3) и легко реализуется конструкциями обобщенного цикла и принятия двоичного решения.

Достоинства метода булева признака:

- компактность, экономичность,

- топология исходной схемы изменяется незначительно.

Недостаток: метод предназначен для использования только в циклах.

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

Рисунок 4. Схема, преобразованная по методу булева признака

Рисунок 5. Схема, преобразованная без специального признака

На рисунке 4 условие «(1 и 2) = 0» означает, что тело цикла 3 будет выполнено в том случае, если оба условия 1 и 2 не выполняются (равны нулю) Итоговая схема содержит обобщенный цикл с одним входом и одним выходом и конструкцию if-then-else, т.е. является структурированной.

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