Искать реферат        
Рефераты на 5 с плюсом
С нашим сайтом написать реферат проще простого

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

Категория: Компьютерные науки     версия для печати   

Страница: [1] [2] [3] [4] [5] [6] [7] [8]

5

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

1) корректность как точное соответствие целям разработки программы (которые отражены в спецификации) при условии ее завершения или частичная корректность;

2) завершение программы, то есть достижение программой в процессе ее выполнения своей конечной точки.

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

1) доказательство частичной корректности;

2) доказательство частичной некорректности;

3) доказательство завершения программы;

4) доказательство незавершения программы;

5) доказательство тотальной (полной) корректности (то есть одновременное решение первой и третьей задач);

6) доказательство некорректности (решение второй или четвертой задачи).

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

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

Построение инварианта для оператора цикла по его тексту является алгоритмически не разрешимой задачи, поэтому для описания семантики циклов требуется своего рода "подсказка" от разработчика программы.

Наиболее известным из методов доказательства частичной корректности программ является метод индуктивных утверждений предложенный Флойдом и усовершенствованный Хоаром. Метод состоит из трех этапов.

Первый этап - получение аннотированной программы. На этом этапе для синтаксически правильной программы должны быть заданы утверждения на языке логики предикатов первого порядка:

6

входной предикат;

выходной предикат;

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

Доказательство неистинности условий корректности свидетельствует о неправильности программы, или ее спецификации, или программы и спецификации.

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

Наконец, динамический контроль программы - это проверка правильности программы при ее выполнении на компьютере, т.е. тестирование.

ЦЕЛИ, ПРИНЦИПЫ И ЭТАПЫ ТЕСТИРОВАНИЯ

Каждому программисту известно, сколько времени и сил уходит на отладку и тестирование программ. На этот этап приходится около 50% общей стоимости разработки программного обеспечения.

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

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

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

Страница: [1] [2] [3] [4] [5] [6] [7] [8]

версия для печати

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