Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М.

advertisement
Лекция 9
Языки и методы
программирования
Преподаватель – доцент каф. ИТиМПИ
Кузнецова Е.М.
Содержание
 МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ
 ТИПЫ МОДУЛЕЙ
 ТЕСТИРОВАНИЕ И ОТЛАДКА ПРОГРАММ
 СРЕДСТВА ТЕСТИРОВАНИЯ
Модульное программирование
(организация)
 аппарат процедур и функций является эффективным
средством поддержки метода пошаговой детализации
 возникают проблемы:



большой объем текста программы (даже хорошо
структурированной) затрудняет ее понимание;
значительные затраты времени на компиляцию
программы после внесения изменений;
аппаратные особенности.
Программный модуль  это совокупность операторов, описывающих
независимую функцию обработки или
представления информации и имеющих
стандартные средства связи с другими модулями.
 Благодаря этому имеется возможность разрабатывать и
компилировать модуль автономно.
 В процессе выполнения программы он также может
быть автономно расположен в памяти, т.е. будет
занимать отдельный сегмент.
Требования к программным модулям:
 быть независимым от контекста, в котором
используется (независимость от источника исходных
данных, от места назначения выходных данных, от
других модулей)
 выполнять определенную функцию в соответствии с
требованиями спецификации модуля с тем, чтобы
процесс формирования сложных программ мог
проводиться без каких-либо предварительных знаний о
внутренней работе модуля.
Типы модулей:
 Исходные модули (оформленные в виде текста на языке
программирования) позволяют решить только проблему
уменьшения текста программы на языке программирования.

В этом случае текст модуля храниться отдельно (в виде
текстового файла), а в том месте в программе, где он
должен стоять, вставляется специальная команда
(директива).
Типы модулей:
 Загрузочные модули – модули, которые
компилируются отдельно и хранятся в виде
двоичных файлов, содержащих объектный код
(машинные команды).
 Стандартное расширение— OBJ.

Если модуль не изменяется, то впоследствии его
компиляция уже не нужна, компилируется
только вызывающая программа.
Преимущества использования
загрузочных модулей:
 сократить время компиляции всей
программной системы;
 хранить модули в более компактном виде;
 многие языки программирования
поддерживают соглашения, позволяющие
использовать загрузочные модули, созданные
компиляторами других языков высокого
уровня.
UNIT-модули
 Как и загрузочные модули, UNIT — модули
предполагают раздельную компиляцию вызываемого и
вызывающего модуля.
 Во время трансляции вызывающего модуля
компилятор получает доступ к описаниям глобальных
объектов вызываемого модуля (импорт объектов) В то
же время детали реализации вызываемого модуля и его
внутренние (локальные) объекты полностью скрыты и
к ним нет доступа из вызывающего модуля.
UNIT-модули
 После компиляции программы, использующей модули
различных уровней, сразу получается исполнимая
программа (абсолютный модуль).
 Нет необходимости в последующем редактировании
связей.
Объектно-ориентированное
программирование (ООП) - следующий этап
развития современных концепций построения
языков программирования.
 В основе ООП лежит идея объединения в одной
структуре данных и действий, которые производятся
над этими данными (методы в ООП).
 Объектно-ориентированный подход позволяет
упростить написание сложных программ, придать им
гибкость. Главное его преимущество — возможность
расширять область применения, не переделывая
программу, а лишь добавляя в нее новые уровни
иерархии.
ТЕСТИРОВАНИЕ И ОТЛАДКА
(определения)
 Ошибка - программа работает не так, как требует ее
спецификация.
 Тестирование — процесс подтверждения пригодности
изготовленной программы демонстрацией ее
соответствия спецификации. Цель тестирования —
выявить наличие ошибки или убедительно
продемонстрировать их отсутствие.
 Верификация — это демонстрация логической
правильности программы для заданных условий.
ТЕСТИРОВАНИЕ И ОТЛАДКА
(определения)
 Отладка — это набор приемов для устранения
ошибки.

Считать отладку законченной можно тогда, когда удается
продемонстрировать, что программа после исправления
ошибки работает правильно.
 Сопровождение — деятельность, направленная на
исправление недостатков или последовательное
улучшение программы в процессе ее эксплуатации.
Принципы тестирования:
 описание предполагаемых значений выходных данных





должно быть необходимой частью тестового набора;
следует избегать тестирования программы ее автором;
необходимо досконально изучать результаты применения каждого
теста;
тесты для неправильных и непредусмотренных входных
данных следует разрабатывать так же тщательно, как для
правильных и предусмотренных;
нельзя планировать тестирование в предположении, что
ошибки не будут обнаружены;
хорошим считается тест, который имеет высокую вероятность
обнаружения еще не выявленной ошибки;
ТЕСТИРОВАНИЕ
СПЕЦИФИКАЦИЙ
 проверка программы на соответствие
поставленной задаче
 Необходимо проверить спецификации на
полноту и ясность.

Когда программная спецификация обладает
свойствами полноты, ясности и
последовательности, то человек, проводящий
испытания программы, может рассматривать ее
как «черный ящик».
 Способ контроля за соответствием спецификации
программе - поручить заказчику формировать тестовые
данные и указывать правильные результаты.
 Один из способов проверки спецификаций - метод
ситуация-эффект. Ситуация — это условие или
комбинация условии, которые могут возникнуть,
эффект — это видимый результат, который должен
быть получен.
Пример: определить спецификацию
задачи поиска элемента в массиве :
для х , принадлежащего а[1..п], ( ситуация )
получить такое i (i<=n), что
a[i] = х , или сообщение: «х не входит в а».
1. случай, когда х принадлежит массиву а;
2. случай, когда х не принадлежит массиву а
(исключительная ситуация).
ТЕСТИРОВАНИЕ НА ОСНОВАНИИ
АНАЛИЗА ТЕКСТА ПРОГРАММЫ
 Основной способ реализации проверки
методом «белого ящика» является выбор
различных маршрутов проверки.
 Главная цель — создание теста, в котором
каждый путь проверяется.
поиск максимальной из трех
величин
Program maximum ;
var а, b, с : integer ; { Входные данные }
max : integer ; { Результат }
begin
read ( а, b, с) ;
if a > b then max : = a else max : = b ;
i f с > max then max : = с ;
writeln ( max )
end.
1) 3, 2, 1 или 3, 2, 3 — в этом случае выполняется оператор:
max := а, значит, max = 3 ;
2) 3, 5, 4 или 3, 3, 3- в этом случае выполняется оператор :
max := b, значит, max = 5 ;
3) 1, 2, 3 — в этом случае выполняются операторы:
max := b, max := с, значит, max = 3;
4) 3, 2, 5 — в этом случае выполняются операторы:
max := a, max := с.
ЭТАПЫ ТЕСТИРОВАНИЯ
 проверка в нормальных условиях;
 проверка в экстремальных условиях;
 проверка в исключительных ситуациях.

Проверка в нормальных условиях выполняется
на основе данных, которые характерны для
реальных условий работы программы.
 Проверка в экстремальных условиях предполагает использование
таких тестовых данных, которые включают граничные значения
области изменения входных данных и должны восприниматься
программой как правильные. Примерами экстремальных значений
являются слишком большие и малые числа.
 Проверка в исключительных ситуациях предполагает
тестирование программы с использованием данных, значения
которых находятся за пределами допустимой области изменения
переменных. Программы разрабатываются в расчете на обработку
ограниченного набора данных. Важно знать, что произойдет, если
программе придется иметь дело с недопустимыми данными.
ТЕСТИРОВАНИЕ МОДУЛЕЙ
 создавайте небольшие модули, которые могут
быть проверены независимо от оставшейся
части программы;
 создавайте подходящие структуры данных и
реализуйте их так, чтобы программа
минимально зависела от способа их
представления;
 для каждой процедуры приводите связные и
понятные спецификации.
Тестирование модулей
 индивидуальное тестирование каждого модуля
отдельно от остальных
 интегральное тестирование, когда проверяется
одновременная работа всех модулей, т.е. всей
программы.
СРЕДСТВА ТЕСТИРОВАНИЯ
 Современные системы программирования (например,
система Турбо-Паскаль) обладают способностью
следить за ходом выполнения программы и контроля за
определенными переменными.
 Средством автоматического тестирования является
генератор тестовых данных, который формирует
данные для использования в проверяемой программе.
 Одним из средств тестирования являются
функциональные диаграммы, которые помогают
систематически выбирать результативные тесты
Схема отладки:
 начинайте с изучения уже доступных данных;
 сформулируйте гипотезу, которая корректна
для таких данных;
 проведите несколько раз эксперимент, который
в состоянии подтвердить гипотезу.
СОВЕТЫ ПРОГРАММИСТУ
сформулированные Д. Ван Тасселом
 Обходитесь минимальным количеством
контрольных примеров.
 Учитывая, что исчерпывающее тестирование
невозможно, испытывайте программу
разумно.
 Начинайте тестирование как можно раньше.
 Прежде всего проведите ручную проверку.
 Старайтесь проверять правильность
принципов построения системы или
программы на простом варианте.
СОВЕТЫ ПРОГРАММИСТУ
сформулированные Д. Ван Тасселом
 Старайтесь применять тестирование, используя




метод, сверху вниз.
В каждом следующем тесте должна использоваться
группа данных, отличная от предыдущих.
Испытывайте программу в нормальных,
экстремальных и исключительных условиях.
Подготавливайте тестовые данные для проверки
каждой ветви алгоритма.
Повторяйте тестирование после каждого случая
внесения изменений в программу.
Download