Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_all.doc
Скачиваний:
25
Добавлен:
24.04.2019
Размер:
7.84 Mб
Скачать
  1. Метод Хора доказательства правильности программ.

Идеи Флойда нашли дальнейшее развитие в аксиоматическом подходе к доказательству ПП, предложенном К. Хором. Первоначально система Хора была ориентирована на доказательство правильности так называемых While-программ, для которых операторы goto недопустимы.

Следуя Флойду, Хоор вводит утверждения относительно состояний переменных программы до и после выполнения одного или нескольких операторов, называемые пред- и пост-условиями соответственно. Эта форма определения семантики получила название «индуктивных выражений».

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

  1. Виды контроля качества разрабатываемого программного обеспечения.

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

Рис 16.1. Зависимость вероятности правильного исправления (а) и его стоимости от этапа разработки (б)

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

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

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

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

  • автономное тестирование компонентов программного обеспечения;

  • комплексное тестирование разрабатываемого программного обеспечения;

  • системное или оценочное тестирование на соответствие основным критериям качества.

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

  • предполагаемые результаты должны быть известны до тестирования;

  • следует избегать тестирования программы автором;

  • необходимо досконально изучать результаты каждого теста;

  • необходимо проверять действия программы на неверных данных;

  • • необходимо проверять программу на неожиданные побочные эффекты на неверных данных.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]