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