Главная страница  Анализ эмпирических данных 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 [ 87 ] 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

KB = JA

KE = JB

JV = JV + KI+1 KG=1

30 RETURN END

Эта новая форма записи программы А содержит четыре пути, любой из которых достижим. Обе ветви каждой развилки - (GN. NE. 0.), (CN. LT. СТ) и (CN.LT.TR) - могут быть проверены независим© от результата предыдущего выбора ветви. Следовательно, программист может производить локальную проверку логики программы без возвращения каждый раз к ее исходной точке. Переписанная-программа имеет не только более простую и более обозримую структуру, но также содержит и меньшее число выполняемых операторов-13 вместо 20 в ее первоначальном варианте.

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

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

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



270 . Глава.6 ....

информации, связанную с вычислительными операциями над набором входов из множества G,-. Таким образом, F/ определяет требования к программе р в отношении операций на множестве G/. Каждая Р/, следовательно, может быть интерпретирована как функциональное требование, реализуемое с помошью логической ветви L/.

Выражение требований в форме пары множеств (Р/, G/) и привязка каждого функционального требования к некоторому логическому пути могут содействовать обнаружению допушенных в программе ошибок. Это, в частности, справедливо, если программа записана в такой форме, что все ее логические пути достижимы. В этом случае проверка выполнения каждого функционального требования может быть осуществлена посредством контроля соответствующей логической ветви. Именно таким образом проводятся испытания программного обеспечения Проекта 5-В нем общие требования к системе программного обеспечения распределяются по отдельным компонентам, в результате чего в конечном итоге могут быть определены требуемые функциональные возможности отдельных программ. Эти требуемые функциональные возможности затем образуют основу для разработки контрольных примеров уровня программных испытаний, при которых также должны проверяться все сегменты. Значение этой стратегии испытаний и более детальное описание соответствующих ей методов были рассмотрены в гл. 4.

6.9. Разработка усовершенствованных методов испытаний программного обеспечения

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



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

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

Испытательные средства обеспечивают автоматический анализ текста программы с целью выделения сегментов и ветвей. Они аранжируют испытываемую программу таким образом, что в тестовых прогонах регистрируется частота выполнения отдельных сегментов (или ветвей); выявляются сегменты (или ветви), которые не были испытаны, и формируются данные, обеспечивающие разработку контрольных примеров для их тестирования. Ранее было показано, что правильное выполнение программы на любом контрольном примере дает возможность сделать вывод, что программа будет выполняться точно почти при всех значениях входов из подмножества О/, которому принадлежит контрольный пример. Было установлено, что правильное выполнение программы на



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 [ 87 ] 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105

© 2000 - 2024 ULTRASONEX-AMFODENT.RU.
Копирование материалов разрешено исключительно при условии цититирования.