Лекции по "Технология программирования"

Автор работы: Пользователь скрыл имя, 17 Декабря 2014 в 02:02, курс лекций

Краткое описание

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

Прикрепленные файлы: 1 файл

Tehnologiq_programmirovaniq2_lections.doc

— 394.00 Кб (Скачать документ)

Существуют 2 класса таких подходов:

1) Основан на извлечении правильной информации из математических рассуждений в частности из программ.

2) Опирается на доказательство правильности заданной проектной информации.

Оба подхода  базируются на принципе –Вся  исходная(входная) информация достоверна. И поэтому проблема проверки правильности проектной информации сводится к проверке правильности исходной информации.

Существует ряд недостатков формальных методов проверки информации:

1) Сложность, громоздкость и как  следствие этого внесения, появляется  множество ошибок.

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

3) Практическая невозможность учета  ограничений машинной арифметики.

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

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

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

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

В случае цикличности, а в каждой программе их много, разбирается отдельно поток и прикладывается как приложение  к управляющему графу. Рассмотрение отдельно этих циклов существуют отдельные самостоятельные методы, проверяющие внутреннюю структуру цикла(анализ самостоятельного внутреннего поведения). Перечисленные выше  трудности применения формальных подходов, приводят к необходимости использовать в большинстве случаев эмпирические походы (неформальные), т.е  в основе методов лежат испытания проектной информации с целью найти в них ошибки, но не подтвердить их. Среда неформальных методов , в первую очередь  следует отличить тестирование, , которое представляет собой процесс выполнения программы с намерением найти ошибку. В процессе тестирования вырабатывается  набор текстов( исходные данные , производиться запуск или серия запусков тестов, а результаты  полученных тестов сравниваются с их эталонными значениями, например в измерительных комплексах.) Существуют различные стратегии тестирования, однако, все они нацелены на выбор оптимального набора тестов. Под оптимальностью будем понимать компромиссное между полнотой тестирования и количеством тестов. Т. е. иначе говоря, тестирование по своей  природе не может быть исчерпывающим. Более того , тестирование относится к категории экономической, поскольку невозможно запустить неограниченное число тестов. Например, прототипирование, представляет собой тоже разновидность теста, связанное с начальным этапом тестирования будущего программного проекта , поскольку именно на нем проверяются знания и сбалансируются интересы 3х сторон, заказчик-пользователь-разработчик.  Тестирование относится  к динамическим средствам проверки правильности проектной информации , т.е средством основанном на выполнении (реальный или имитирующий процесс). К динамическим средствам можно отнести:

1)  Проверка программы в процессе  выполнения утверждений , выполняемых в программе, в вычислениях , в выявлениях  промежуточных точек, значениях в них.

2) избирательность выявления значений  в процессе тестирования программы.

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

1) Статическое или динамическое

2) Формальные или неформальные

3) Ручные или автоматизированные.

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

1) Это проблема воспроизводительности,, т.е проверка повторяемости полученных  результатов.

2) Управление  деятельностью по  проверке проектной информации.

3) Проблема выбора категории лиц, осуществляющих эту проверку.

4) Проблема определения или обеспечения  полноты проверки,  определения  планирования процесса проверки.

Тестирование программного обеспечения и его составные части.

 

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

1) Стратегия черного ящика.

2) Стратегия белого ящика.

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

1) Эквивалентное разбиение

2) Анализ граничных значений

3) Функциональные диаграммы

4) гипотеза ошибок

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

1) Выделение эквивалентных классов

2) Построение теста на этом  классе.

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

1) О законах непрерывности данных

2) Непрерывной 

 При построении эквивалентных  областей используется следующая  последовательность действий

1) Каждому классу эквивалентности  назначен уникальный номер.

2) Из множества правильных тестов  выбирается тот, который накрывает наибольшее число классов эквивалентности

3) Для каждого неправильного  класса эквивалентности  вырабатывается  отдельных индивидуальный тест

2) Метод граничных значений

Метод, дополненный до проверки на границе области.

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

3) Метод функциональных диаграмм 

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

 

Лекция 15

Методы функциональных диаграмм

 

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

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

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

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

 Недостатки данного подхода.

1) По определению исчерпывающего  тестирования невозможно провести.

2) Нет гарантии того, что программа  соответствует своим спецификациям , т.е программа жестко следует спецификации.

3) В программе могут быть пропущены  некоторые операторы и условия.

4) Исчерпывающее тестирование не  может выявить ряд ошибок условного  характера, т.е по абсолютной величине  а-в<ε

|A| - |B| ≤ ε : A>0: B>0: |A-B|≤ ε

Особенности тестирования черного и белого ящика

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

 Стратегия белого ящика

Метод один поиск всех маршрутов , а критериев несколько.

Следующие критерии:

1) Критерии покрытия операторов

2) Критерии покрытия решений

3) Критерии покрытия условий

4) Критерии решений –условий

5) Критерии комбинаторного покрытия, т.е критерии белого ящика определяет  покрытия логики программы.

 1)Критерии операторов- когда по операторам пройтись хоть раз

2) Критерии покрытия решений – более сильный метод, который также удовлетворяет критерию покрытия операторов ,согласно этому критерию, каждое направление перехода ,должно быть  реализовано хотя бы 1 раз., т.е надо пройтись по переходам работы программы.

3) Критерии условий. Являются более сильными критериями, при котором выполняется требование « пройтись хотя бы однократно по результатам каждого условия». Иначе говоря, поскольку при данном критерии не всегда удается пройтись по всем операторам, то и указанное требование дополняется требованием, что в каждой точке программы хотя бы один раз было передано управление покрытия условий.

4)Это такой критерий, как и (3), только в тестах должны еще участвовать анализ решений.

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

Информация о работе Лекции по "Технология программирования"