Нисходящее программирование — это методология разработки программного обеспечения, которая начинается с общих параметров и переходит к детализации и реализации. Восходящее программирование предполагает разработку модуля за модулем, с последующим осмыслением результата.
В этой статье мы исследуем, что такое нисходящее программирование и восходящее программирование, а также сильные и слабые стороны обеих методологий.
Что такое нисходящее и восходящее программирование
В структурном программировании существует два подхода к написанию кода: нисходящий и восходящий. При восходящем программировании сначала реализуются детали нижнего уровня, а затем над ними надстраивается общая логика. Нисходящее программирование – это написание кода сверху вниз, сначала логика верхнего уровня, а затем вниз к деталям.
Специалисты считают, что оба подхода совместимы даже в рамках одного проекта. В обоих случаях работа начинается с построения архитектуры решения. Но в восходящем программировании часто неясно, какой результат получится на выходе, и каких ресурсов потребует проект.
Поэтому в коммерческой разработке предпочтительнее использовать нисходящее программирование. Во-первых, это позволяет детализировать технические условия в соответствии с бизнес-задачей. Проще говоря, решить, как это будет реализовано, исходя из того, что эта программа должна делать.
Курс Python для новичков — это отличный способ ознакомиться с основами программирования и языком Python, который может быть использован для нисходящего программирования. Курс поможет понять базовые концепции программирования и научиться создавать свои первые программы на Python.
Второе преимущество нисходящего программирования для разработки – это внимание к интерфейсной части кода: классам, методам, функциям. Когда создание программы идет сверху вниз, куда проще унифицировать имена классов.
Почему это важно для коммерческой разработки? По мере того, как идет работа, программа разбивается на небольшие модули. К работе над ними можно подключить целую команду программистов, и не одну. А это ускоряет создание конечного продукта
Этапы разработки сверху вниз
Сразу уточним, что эта схема условна, так как каждый проект уникален. Количество этапов, глубина проработки, размер команды – это переменные. Мы же хотим продемонстрировать пример, как может выглядеть нисходящее программирование на проекте.
- Определение целей проекта: до начала нисходящего программирования разработчики определяют цели проекта и параметры.
- Определение функциональности программы: разработчик определяет функциональные требования программы.
- Создание планировки программы: разработчик создает планировку программы, которая включает в себя структуру программы, классы и методы.
- Реализация программы: разработчик создает программу, следуя плану, с использованием всех описанных методы и классы.
- Тестирование программы: разработчик тестирует программу на основе параметров, которые были установлены до начала разработки.
Напомним, что это лишь пример того, как может выглядеть нисходящее программирование. Эта методология разработки ПО очень гибкая и меняется в соответствии с требованием проекта.
Пять преимуществ нисходящего программирования
Главные плюсы нисходящего программирования:
- Разработка становится эффективнее. При нисходящем программировании разработчик сначала определяет общие параметры проекта, затем детализирует их, а затем реализует весь функционал. Это позволяет эффективнее использовать время и ресурсы.
- Улучшается документация. Если разработчик начинает с общих параметров, это обеспечивает более четкое и последовательное описание проекта. Это позволяет лучше понять проект на всех уровнях абстракции.
- Упрощается тестирование. Когда каждая функция программы разрабатывается отдельно, тестировать ее можно тоже отдельно, что гораздо проще.
- Улучшается модульность и повторное использование кода. При отдельной разработке каждой функции, разработчикам проще использовать модули и применять code reuse в разных частях проекта, что ускоряет процесс разработки.
- Более совершенное планирование и проектирование. Когда разработка начинается с самого верхнего уровня, просто необходимо на первом же этапе составить адекватный план с учетом абсолютно всех требований проекта. Это затягивает первый этап, но в итоге повышает качество конечного продукта.
Эти достоинства нисходящего программирования перевешивают недостатки, так что этот подход широко применяется в коммерческой разработке.
Три главных недостатка нисходящего программирования
Поговорим о недостатках нисходящего метода:
- Снижается гибкость. Поскольку проект детально планируется, у разработчика не остается поля для маневра, что чревато утратой гибкости, отсутствием поля для креативности и внедрения новых технологий в конечном продукте.
- Увеличивается сложность дизайна. При дизайне сверху вниз могут возникнуть сложности с дизайном каждой отдельной функции, что чревато замедлением и удорожанием создания ПО.
- Увеличивается риск пропуска мелких деталей. Опять-таки, при программировании сверху вниз до самых мелких деталей часто не доходят руки, а это может пагубно отразиться на финальном продукте.
Восходящее программирование
Главная проблема восходящего программирования – изначальное отсутствие понимания того, каким будет конечный результат. Но в этом и его главное достоинство: по мере работы над проектом разработчики могут повернуть разработку в совершенно новое русло.
Планировании ресурсов и времени при восходящем программировании возможны только на коротком отрезке работы. Зато есть возможность остановиться после завершенного этапа и показать заказчику прототип.
Этот подход популярен у in-house команд разработчиков, когда нужно срочно реализовать функцию, которая нужна «на вчера». Восходящему программированию не страшны новые требования, которые выставляет заказчик. Но в коммерческой разработке, где нужный результат известен заранее, восходящее программирование применяется только на отдельных участках проекта.
Заключение
В создании программного обеспечения активно используется нисходящий метод программирования, но он совместим с восходящим. Комбинация двух методов образует спиральный, или гибридный метод разработки. Все три подхода могут быть эффективными, если применяются в соответствии с поставленной целью.
Расскажите в комментариях, с каким методом вы работали: ниходящим или восходящим? Какие у вас остались впечатления?