Разработка законченного программного продукта в виде компьютерной программы — длительный и трудоемкий процесс. Чтобы окончательный вариант программы работал правильно и содержал как можно меньше ошибок, программисты придерживаются полного цикла разработки программы, состоящего из шести базовых этапов:
1. Постановка и анализ задачи. Четкое определение задачи и наборов входных и выходных данных.
2. Разработка алгоритма. Определение зависимости между входными и выходными данными, создание процедуры их преобразования.
3. Разработка пользовательского интерфейса. Определение того, что пользователь должен видеть на экране, как будут вводиться данные, где и в каком формате будут представлены выходные данные.
4. Написание программного кода. Преобразование алгоритма в компьютерную программу на языке высокого уровня.
5. Тестирование и отладка программы. Тестирование — прогон программы на наборе тестов, для которых известен результат, с целью проверки правильности ее работы. Отладка (debug) — процесс выявления и устранения ошибок в программе.
6. Составление документации. Подготовка документов, содержащих описание программы, включая техническое задание, блок-схемы, предположения, список входных и выходных переменных (часто совмещается с программным кодом), руководства пользователя.
Технология нисходящего программирования. Разбиение задачи на подзадачи. Процедуры и функции.
Под алгоритмом, в случае, когда исполнителем является компьютер, можно понимать последовательность команд для процессора. В узком смысле слова, программирование рассматривается как кодирование — реализация одного или нескольких взаимосвязанных алгоритмов на некотором языке программирования. В более широком смысле, программирование — процесс создания программ, т. е. разработка программного обеспечения. Существуют различные технологии программирования. Технология восходящего программирования («снизу вверх») реализуется так:
- Вначале создаются и отлаживаются самые элементарные подпрограммы (скорее всего используя созданные ранее, хранимые в модулях-библиотеках).
- Реализуется более крупный блок задачи путем вызова таких подпрограмм.
- Повторяется пункт 2 до тех пор, пока не реализуется вся задача.
Достоинства этого подхода — уменьшается общий объем работы за счет ранее созданных участков кода.
Недостатки — уже реализованные, отлаженные и протестированные модули иногда приходится разрабатывать заново (так как головной модуль разрабатывается на завершающем этапе).
Технология нисходящего программирования — это создание программы «сверху вниз». Сначала разрабатывается основная программа (общая структура) и в ней записываются обращения к пока еще не написанным вспомогательным подпрограммам; и так далее — до самых простых «неделимых» подпрограмм. Существенный этап такой разработки — определить основные структуры данных и правила их обработки. То есть определить, с какими данными подпрограммы будут работать и что должно быть ими сделано в результате выполнения. При этом для ускорения процесса работы над задачей руководитель может разрабатывать основную программу, а другие сотрудники — подпрограммы.
Этапы решения сложной задачи X сверху вниз:
- Разбиваем задачу X на несколько функциональных подзадач XI, Х2, ХЗ и т. д., т. е. выполняем ее декомпозицию.
- Предполагаем, что впоследствии эти части будут разработаны, создаем их спецификации:
-Вид подпрограммы (процедура или функция);
-Ее имя; имена и типы формальных параметров, их порядок;
-Для функции — тип возвращаемого значения;
-Комментарии, описывающие назначение подпрограммы.
- Пишем программу решения задачи X, заменив каждую из подпрограмм XI, Х2, ХЗ «заглушками», и отлаживаем ее в таком виде.
Проводим комплексную отладку постепенно, по одной заменяя заглушки на автономно отлаженные подпрограммы.
Достоинства метода программирования «сверху вниз» — серьезные ошибки с большой вероятностью отыскиваются уже на ранних стадиях проекта; тестирование систематично. Недостаток — при отладке поглощается больше машинных ресурсов. Необходимо снижать трудоемкость тестирования и отладки программы.
Процедуры и функции
Подпрограмма - именованная последовательность операторов языка, предназначенная для решения некоторой подзадачи. Часто подпрограмма имеет свои переменные, не пересекающиеся с переменными других подпрограмм или самой программы (если только переменные не были объявлены специальным образом или переданы подпрограмме). Каждая подпрограмма имеет имя, по которому к ней можно обратиться. Основное назначение процедуры — выполнение самостоятельных действий, а функции — возврат значения для использования в выражениях основной программы. Подпрограммы вводятся в основную программу с помощью соответствующего описания, затем к ним можно выполнять обращение. Создание подпрограмм облегчает программирование, так как: 1) не требует многократно повторять в тексте программы аналогичные фрагменты; 2) улучшает структуру, облегчая ее понимание; 3) уменьшает вероятность появления ошибок (отлаживается отдельно); позволяет очень длинную программу разбить на части; позволяет использовать подпрограммы в других программах.
Процедура начинается с заголовка, за ним следует имя, а в круглых скобках — список формальных параметров. Процедура может получить из основной программы несколько переменных (фактических параметров) для изменения их значений. Чтобы выполнить процедуру, к ней следует обратиться из основной программы с фактическими параметрами. Количество, тип и порядок следования формальных и фактических параметров должны совпадать.
Функция предназначена для того, чтобы возвращать одно значение, оно и является ее результатом. Описание функции начинается с заголовка, за ним следует имя, а в круглых скобках — список формальных параметров: Функция или процедура — самостоятельная часть программы, имеющая собственные переменные, которым отводится отдельное, не зависящее от основной программы, место в памяти компьютера.