Разработка алгоритмов и создание сложных программных продуктов представляет собой трудоемкий, творческий процесс, ведь современные промышленно изготовленные программные пакеты являются чрезвычайно сложными программными изделиями, объем их вычисляется тысячами и миллионами строк кода, а трудоемкость разработки - сотнями человеко - лет. Естественно, что разработать такое программное изделие "все сразу" невозможно.
Программный продукт должен быть представлен в виде какой-то структуры - составных частей и связей между ними.
Существует два подхода к составлению сложных программ:
- программирование «сверху вниз» или "нисходящее" при этом задача разбивается на некоторые подзадачи, для каждой из которых составляется отдельный независимый программный модуль, из которых компонуется программа;
- программирование «снизу вверх» или "восходящее", при этом разрабатываются отдельные подпрограммы или модули, из которых конструируется программа.
Выбор метода зависит от типа решаемой задачи, условий разработки (один программист или группа), наличия аналогов и т.д.