Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

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

Содержание:

Введение

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

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

Целью данной курсовой работы является анализ темы - «Основы проектирования программ. Этапы создания программного обеспечения». Процесс разработки программы делится на следующие этапы:

  • Постановка задачи
    • Формулировка и анализ задачи
    • Создание математической модели
    • Создание алгоритма
  • Разработка программы
    • Разработка кода
    • Разработка интерфейса
    • Тестирование программы
    • Отладка программы
  • Работа с готовым продуктом
    • Составление документации

Опишем каждый этап подробно.

Постановка задачи

Формулировка и анализ задачи

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

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

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

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

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

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

Создание математической модели

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

Построение математической модели осуществляется по следующим этапам:

  1. Постановка проблемы;
  2. Постановка целей и задач моделирования;
  3. Выбор математического аппарата;
  4. Проведение расчетов;
  5. Исправление модели, если необходимо;
  6. Анализ полученных результатов.

Верно составленная математическая модель должна удовлетворять следующим требованиям:

  1. Адекватность

Модель должна отображать верно отображать характеристики объекта, не превышая заданных погрешностей;

  1. Точность

Свойства, полученные с помощью математической модели, должны совпадать с свойствами реального объекта;

  1. Универсальность

Свойства модели должно полностью отображать свойства реального объекта;

  1. Экономичность

Разработанная математическая модель не должна быть слишком ресурсозатратной.

Выделяют следующие типы задач, встречающиеся при моделировании:

  • Задачи белого ящика (функция моделирования известна)
    • Прямая задача – при известных входных данных и функции моделирования, найти выходные данные;
    • Обратная задач – при известных входных данных и функции моделирования, найти входные данные;
  • Задачи черного ящика (функция моделирования неизвестна)
    • Задача настройки модели – при известных входных и выходных данных найти функцию моделирования.

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

Создание алгоритма

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

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

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

Алгоритм имеет следующие свойства:

  1. Прерывность

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

  1. Определенность

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

  1. Конечность

Алгоритм должен быть конечным, то есть иметь завершение выполнения действий;

  1. Массовость

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

  1. Результативность

Алгоритм должен достигать результата за определенное количество действий.

Алгоритмы бывают нескольких видов:

  • Линейный – действия выполняются без повторений, в заданном порядке;
  • Разветвляющийся – в зависимости от условия может выполняться либо одно действе, либо другое;
  • Циклический – действия выполняются повторно определенное количество раз, или пока условие не будет удовлетворено.

Для описания алгоритма используют:

  • Естественный язык (руководство по эксплуатации, рецепты);
  • Специальные языки программирования для формальных исполнителей;
  • Блок – схема.

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

Условно-графическое обозначение

Выполняемая функция

Комментарий

Начало и конец алгоритма

Такая вершина с соответствующей надписью «начало» или «конец» начинает и заканчивает ГСА

Основная

операторная

вершина

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

Комментарий

В этой вершине указываются надписи, выводимые на экран либо данные, выводимые на другое устройство

Основная вершина

условного перехода

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

Вершина

множественного условного перехода

типа «case»

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

Вершина цикла

В этой вершине указывается начальное и конечное значения оператора цикла, а также шаг счёта

Таблица 1. Основные обозначения, используемые

при построении блок – схем

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

Разработка программы

Разработка кода

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

Для разработки кода используются языки программирования. Выделяют языки высокого и низкого уровней.

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

Для решения данной проблемы были разработаны языки высокого уровня. Главной особенностью таких языков является использование различных синтаксических конструкций, которые описывают массивы данных и функций над ними, короткими командами, а не большим количеством строк кода, как это было бы при использовании языков низкого уровня. К тому же данный код проще для чтения и понимания, по сравнению с машинным. Примерами языков высокого уровня служат C, C++, C#, Java, JavaScript, Pascal, Delphi и др.

Еще одной классификацией языков программирования является способ их реализации. Выделяют три способа:

  1. Компиляция;
  2. Интерпретация;
  3. Встраивание.

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

Программы, написанные на интерпретируемых языках, не могут использоваться без специального интерпретатора. Примером таких языков служат PHP, Python, Perl и др.

Встраиваемые языки являются составляющей какого-то другого языка, и могут использоваться только совместно с этим языком. Таким языком является, например, Lua.

Для написания кода могут использоваться различные текстовые редакторы, начиная от обычного блокнота и заканчивая специализированными интегрированными средами разработки (IDE).

IDE представляет собой комплекс программных средств. Данный комплекс включает в себя:

  • Текстовый редактор;
  • Средства для реализации программного кода;
  • Отладчик.

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

Написание кода осуществляется только после построения алгоритма программы. Если считать алгоритм скелетом программы, то код — это мышцы и кожа программы.

Разработка интерфейса

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

Общие принципы построения интерфейсов:

  • Интерфейс должен быть понятным, чтобы пользователь программы сразу понимал, что нужно делать, а не копался в документации или инструкциях;
  • Для упрощения работы с программой необходимо наличие подсказок. Также в интерфейс должна быть включена полная справка, в качестве отдельного элемента;
  • Основным правилом при разработке интерфейсов является «существительное – глагол». Пользователям проще сначала выбрать какой – либо объект, а затем действие над ним. Например, «статья – создать»;

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

  1. Нельзя усложнять интерфейсы. Первоочередной задачей является его упрощение;
  2. Интерфейс разрабатывается для пользователя, следовательно, он должен удовлетворять его потребностям. Необходимо постоянно рассматривать интерфейс с точки зрения пользователя, представлять с какими проблемами он может столкнуться;
  3. Интерфейс нужно разрабатывать так, чтобы пользователь совершал минимальное количество действий для достижения своей цели.
  4. При обновлении интерфейса, не следует менять его привычные элементы на новые.

На восприятия человеком интерфейса влияет много факторов:

  1. Цвета.

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

  1. Формы объектов.

Формами объектов должны быть прямоугольник со скругленными углами, или окружность, так как они меньше «режут» глаз. Интерфейс должен притягивать, а не отталкивать.

  1. Выделение основных элементов.

Основные элементы интерфейса должны быть выделены цветом или формой. Это делает интерфейс более понятным, что и требуют принципы построения интерфейса.

  1. Понятные иконки.

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

  1. Размер элементов.

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

  1. Использование принципа «золотого сечения».

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

ширину, равной ширине страницы, деленной на 1,62. Следовательно, под меньшую часть:

Ширина меньшей части= ширина страницы – ширина большей части.

  1. Группировка элементов.

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

  1. Привычность интерфейса.

Следует учитывать привычки пользователей по работе с программами. Например, если вы разрабатываете приложения под Windows, то кнопки закрытия, сворачивания и минимизации окна следует располагать с правой стороны, т.к. выполнено во всех окнах ОС. Если разрабатываете под Linux или MacOS, то лучше располагать слева.

  1. Монотонность интерфейса.

Монотонным считается интерфейс, в котором любое действие можно выполнить только одним способом. Такой тип интерфейса обеспечивает более быстрое привыкание.

  1. Отклик программы.

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

Интерфейс является лицом программы, и дополняет алгоритм и программный код.

Тестирование программы

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

Тестирование является самым ресурсо – и времязатратным этапом производства программ. Более 50% времени и средств уходит на данный этап.

«Удачным» считается тестирование, при котором были обнаружены какие-либо ошибки, и наоборот «неудачным», при котором их не было обнаружено.

Принципы организации тестирования:

  1. Основной частью тестирования является описание необходимых результатов, которые должно выдать программы. Это позволяет ускорить процесс выявление ошибок;
  2. Тестированием не должен заниматься разработчик программы, так как он не сможет объективно оценить результат работы программы;
  3. Необходимо подробное изучение результатов каждого тестирования, чтобы не упустить какую-либо ошибку;
  4. Тестирование необходимо проводить как для корректных входных данных, так и для некорректных;
  5. В ходе проведения теста, необходимо наблюдать за поведением программы. Программа не должна производить некорректных действий;
  6. Проведенные тесты и их результаты нельзя удалять. Это поможет выявить изменения в работе программы после отладки;
  7. В ходе тестирования необходимо совершать любые действия для получения ошибок;
  8. Нельзя забывать про «Принцип скопления ошибок», который гласит, что количество ненайденных ошибок прямо пропорционален количеству найденных.

Выделяют следующие виды тестирования:

  • По уровню тестирования
    • Модульное тестирование

Тестируется каждая отдельная функционально законченная часть программы (классы, функции);

    • Интеграционное тестирование

Тестируется взаимосвязь между компонентами программы;

    • Системное тестирование

Программа тестируется на соответствие поставленной задаче;

  • По объекту тестирования
    • Функциональное тестирование

Тестируется возможность программы решать требуемые задачи;

    • Тестирование производительности

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

    • Нагрузочное тестирование

Тестирование на способность работы программы при различных нагрузках. Данное тестирование помогает исключить потерю работоспособности программы, при максимальных нагрузках на нее;

    • Стресс – тестирование

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

    • Тестирование стабильности

Тестируется стабильность работы программы в течении большого промежутка времени;

    • Тестирование безопасности

Тестируется защита программы от взлома злоумышленниками;

    • Тестирование совместимость

Тестируется совместимость программы с различными платформами;

  • По знанию системы
    • Тестирование черного ящика

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

    • Тестирование белого ящика

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

  • По времени проведения тестирования
    • Альфа – тестирование

При данном виде тестирования происходит имитация работы пользователей с программой;

    • Бета – тестирование

Программа распространяется среди ограниченного числа пользователей, которые проверяют работу программы и описывают ошибки, с которым им пришлось столкнуться;

    • Регрессионное тестирование

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

    • Дымовое тестирование

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

  • По степени автоматизации
    • Ручное тестирование

Данное тестирование проводится тестировщиками без использования какого-либо программного обеспечения;

    • Автоматизированное тестирование

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

Примерами таких тестов являются: TestComplete, HP QuickTest Pro и т.д.

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

Для сокращения количества ошибок были разработаны средства для анализа кода.

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

1. Проверка исходных данных;

2. Пробный запуск программы;

3. Выделение необходимых параметров;

4. Анализ выходных данных.

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

Отладка программы

На этапе отладки программы происходит исправление ошибок, выявленных в ходе тестирования программы. Выделяют следующие типы ошибок:

  • Логические ошибки

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

  • Синтаксическая ошибка

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

  • Семантическая ошибка

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

  • Ошибка среды выполнения

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

  • Арифметическая ошибка

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

  • Ошибка ресурса

Распространёнными примерами данной ошибки являются: значение переменной превышает диапазон значений, переполнение буфера (стека), использование необъявленной переменной.

  • Ошибка компиляции

Данная ошибка может возникнуть как результат вышеизложенных ошибок. Также такую ошибку может вызвать неработоспособность самого компилятора.

  • Ошибка взаимодействия

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

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

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

Средства отладки IDE предлагают 3 вида отладки:

  1. Отладка с выполнением подпрограмм;
  2. Отладка с игнорированием подпрограмм;
  3. Отладка до точки остановки.

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

Второй вид отладки подходит, если подпрограммы уже отлажены.

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

Использование средств отладки IDE позволяет сэкономить время и улучшить качество кода.

3. Работа с готовым продуктом

3.1. Составление документации

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

В состав документации к программе входит:

  1. Спецификация

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

  1. Ведомость держателей подлинников

Содержит список организаций, хранящих оригиналы документации;

  1. Текст программы

Программный код, с комментариями к нему;

  1. Описание программы

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

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

  1. Программа и методика испытаний

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

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

  1. Техническое задание

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

Техническое задание имеет следующую структуру:

Введение

  • Основание для разработки
  • Применения разработки
  • Требования к программе
  • Требования к документации
  • Порядок разработки
  • Приложения

Подробные требования к разработке указаны в ГОСТ 19.201-78;

  1. Пояснительная записка

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

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

Пояснительная записка состоит из:

  • Общие положения
  • Описание разработки
  • Описание функционирования программного продукта
  • Ввод в рабочий процесс

Требования к пояснительной записке описываются в ГОСТ 2.106-96;

  1. Эксплуатационные документы
    1. Ведомость эксплуатационных документов

Данный документ содержит список документации на программу и ее составные элементы;

    1. Формуляр

Ведется на всей продолжительности разработки программы и отражает ее текущее состояние. Описывает основные характеристики программы и сведения о использовании;

    1. Описание применение

Данный документ содержит информацию о функциях программы и описывает:

  • Проблемы, решаемые программой;
  • Используемые ресурсы;
  • Входные и выходные данный.

Предназначается будущим пользователям программы;

    1. Руководство системного программиста

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

В документы описываются следующие сведение:

  • Описание программы
  • Составляющие части
  • Конфигурирование
  • Руководство по эксплуатации
  • Руководство по администрированию

Данные сведения необходимы для обеспечения работоспособности программы;

    1. Руководство программиста

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

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

Данный документ содержит:

  • Описание объектов разработки;
  • Способы взаимодействия объектов;
  • Список дополнительных средств разработки;
  • Технические требования.

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

    1. Руководство пользователя

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

    1. Описание языка

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

Документ описывает:

  • Назначение разрабатываемого языка
  • Какие продукты могут быть разработаны с помощью данного языка
  • Синтаксическая и логическая структура языка

Документ предназначен для программистов, тестировщиков и т.д.

    1. Руководство по техническому обслуживанию

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

Документ описывает правила применения средств тестирования и анализа к данному продукту.

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

Список литературы

1. Информатика базовый курс. 2-е издание / Под ред. С.В. Симоновича. – Спб.: Питер, 2008. – 640 с.

2. Гейн А.Г., Сенокосов А.И. справочник по информатике для школьников. – Екатеринбург: «У-Фактория», 2003. – 346 с.

3. Документация на программу/ URL: http://www.swrit.ru/dokumentaciya-na-programmy.html (дата обращения: 30.07.2018)

4. Этапы разработки/ URL: http://tat67183862.narod.ru/jazik1.htm (дата обращения: 30.07.2018)

5. Спецификация программного обеспечения/ URL: https://magora-systems.ru/software-requirement-specification/ (дата обращения: 30.07.2018)

6. Виды ошибок в программировании/ URL: http://juice-health.ru/programming/102-vidy-oshibok (дата обращения: 30.07.2018)

7. Отладка программы: 3 типа ошибок/ URL: https://proglib.io/p/debugging/ (дата обращения: 30.07.2018)

8. Отладка и тестирование программы/ URL: http://www.taurion.ru/outlook/4/32 (дата обращения: 30.07.2018)

9. Тестирование/ URL: https://www.viva64.com/ru/t/0093/ (дата обращения: 30.07.2018)

10. Свойства алгоритмов/ URL: http://cs.petrsu.ru/studies/filatova_information/CMD_1996566_M/my_files/Inform/Algorithm/al-2.htm (дата обращения: 30.07.2018)

11. Свойства алгоритма/ URL: http://shkolo.ru/svoystva-algoritma/ (дата обращения: 30.07.2018)

12. Языки программирования/ URL: http://www.gpntb.ru/win/book/4/Doc4.HTML (дата обращения: 30.07.2018)