Файл: Отладка и тестирование программ: основные подходы и ограничения.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 06.04.2023

Просмотров: 289

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

Объект исследования - язык программирования Дельфи.

Предмет исследования – отладка и тестирование программ в Дельфи.

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

Для достижения цели курсовой работы решены задачи:

  • Определены этапы создания программ;
  • Рассмотрены процессы отладки и тестирования программного обеспечения;
  • Сделана постановка задачи;
  • Составлены блок-схемы алгоритмов;
  • Написана, отлажена и протестирована программа Primer.pas, определяющая число отрицательных элементов в двумерном массиве целых чисел, минимальный отрицательный элемент; сумму и произведение положительных элементов массива.

Теоретической основой работы послужили учебники по языку Delphi Фаронова В.В., Осипова Д.Л. и другие.

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

Структура курсовой работы включает введение, две главы, заключение, список использованных источников и приложение.

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

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

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

1.1 Этапы создания программ

Программа является последовательностью команд компьютера, приводящей к решению задачи. Программа - результат интеллектуального труда, которое характеризуется творчеством.


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

1) постановки задачи;

2) проектирования программы;

3) построения модели;

4) разработки алгоритма;

5) написания программы;

6) отладки программы;

7) тестирования программы;

8) документирования. [5, с. 33]

Кратко рассмотрим каждый из этих этапов.

Постановка задачи. Чтобы решить задачу, необходима точная ее формулировка. В первую очередь, необходимо определить исходные и выходные данные, т.е. ответить на вопросы:

а) что имеется на входе;

б) что необходимо получить.

Дальнейшей детализацией постановки задачи даются ответы на вопросы:

  • как определяется решение;
  • каких данных нет и все ли они необходимы;
  • каковы допущения и пр. [5, с. 34]

Таким образом, вкратце на этапе постановки задачи нужно:

− описать исходные данные и результаты;

− формализовать задачу;

− описать поведение программы в особых случаях (при наличии таковых).

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

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

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

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

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


Алгоритм является точным предписанием, определяющим последовательность действий для получения нужного результата из исходных данных. [5, с, 35]

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

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

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

Линии соединений блоков и указывающие последовательность связей между ними, проводятся параллельно линиям рамки. Стрелку в конце линии можно не ставить, если линия направляется слева направо или сверху вниз. В блок могут входить несколько линий. Из блока (кроме логического) может выходить только одна линия. Из логического блока выходят две линии и может иметь один из двух блоков. [17]

Основные блоки схем алгоритмов даны в табл. 1 Приложения. Блок-схема должна состоять из всех разветвлений, циклов и обращений к подпрограммам, содержащихся в программе. [23]

Алгоритмический язык является это текстовой формой описания алгоритма, более близкой к языкам программирования, чем блок-схемы. Но это еще не язык программирования, поэтому строгий синтаксис в нем не поддерживается. Для структурирования текста алгоритма на АЯ используют строчные отступы с соблюдением следующего принципа: все конструкции одного уровня вложенности записывают на одном вертикальном уровне; вложенные конструкции смещают относительно внешней вправо. Соблюдением этих правил улучшается наглядность структуры алгоритма, но нет такой наглядности, как у блок-схем. [7, С. 258]

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


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

В методе последовательной детализации сначала анализируют исходную задачу, в ней выделяют подзадачи, строят иерархию таких подзадач. Затем следует составление алгоритмов (программ), начиная с основного алгоритма (программы), далее – вспомогательных алгоритмов (подпрограмм), последовательно углубляя уровни, до получения алгоритмов, состоящих из простых команд. [22]

Один из системных методов разработки алгоритмов - структурное программирование, которым называют методологию программирования, направленную на создание логически простых и понятных программ. Структурное программирование основано на предположении, что логичность и понятность программ облегчает разработку, доказательство правильности и последующее сопровождение программ, а также обеспечивает их надежность. [7, С. 258]

Характерные принципы структурного программирования представлены:

  • нисходящим программированием – способом разработки программ, при котором программирование ведется методом «сверху-вниз», от общего к деталям;
  • модульным программированием, при котором относительно независимые подзадачи программируются в виде отдельных программных модулей;
  • отказом от безусловных передач управления и ограниченным использованием глобальных переменных.

Кроме этого, практикуется использование еще двух основных принципов структурной методики алгоритмизации (структурного программирования):

— всякий алгоритм может строиться с использованием трех базовых типов управляющих структур: следования, ветвления, цикла;

— при построении сложных алгоритмов применяется метод последовательной детализации. [22]

Следованием называют линейную последовательность действий (рис. 1).

Блок N

Блок 2

Блок 1

Рисунок 1 – Следование [22]

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


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

Условие

да нет

Блок 2

Блок 1

Рисунок 2 – Ветвление [22]

Цикл повторяет некоторую группу действий по условию. Существует два типа цикла: с предусловием и с постусловием (рис. 3 и 4). [22]

Условие

нет

да

Блок

Условие

Блок

Рисунок 3 – Цикл с предусловием

Рисунок 4 – Цикл с постусловием

Сложный алгоритм составляют соединенные между собой базовые структуры, соединение может быть последовательным и вложенным. [22]

На этапе написания программы по разработанному алгоритму составляют программу на определенном языке программирования.

В узком смысле слово «программирование» является процессом разработки программ на определенном языке программирования. Разработка системного ПО и систем программирования называется системное программирование; разработка прикладных программ называется прикладное программирование. По этому принципу программисты делятся на системных и прикладных, по типу создаваемых ими программ. [7, с. 241]

Основные парадигмы программирования состоят из:

  • процедурного программирования (Паскаль, Бейсик, Фортран, Си, Ассемблеры);
  • логического программирования (Пролог);
  • функционального программирования (Лисп);
  • объектно-ориентированного программирования (Смолток, Си++, Делфи).

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

Процесс изучения и практического освоения программирования состоит из трех частей:

  • изучения методов построения вычислительных алгоритмов;
  • изучения языка программирования;
  • изучения и практического освоения определенной системы программирования.

Языки программирования состоят из двух групп:

  • машинно-ориентированных: Автокодов, Ассемблеров;
  • языков программирования высокого уровня (ЯПВУ).

Сегодня почти все программисты используют языки высокого уровня. Даже такие системные программные продукты, как трансляторы, операционные системы и пр., составлены на языках высокого уровня (обычно при этом пользуются языком Си). [7, С. 241]