Низхідне програмування – це методологія розробки програмного забезпечення, яка починається із загальних параметрів і переходить до деталізації та реалізації. Висхідне програмування передбачає розробку модуля за модулем, з подальшим осмисленням результату.
У цій статті ми дослідимо, що таке низхідне програмування та висхідне програмування, а також сильні та слабкі сторони обох методологій.
Що таке низхідне і висхідне програмування
У структурному програмуванні існує два підходи до написання коду: низхідний і висхідний. Під час висхідного програмування спочатку реалізуються деталі нижнього рівня, а потім над ними надбудовується загальна логіка. Низхідне програмування – це написання коду зверху вниз, спочатку логіка верхнього рівня, а потім вниз до деталей.
Фахівці вважають, що обидва підходи сумісні навіть у рамках одного проєкту. В обох випадках робота починається з побудови архітектури рішення. Але у висхідному програмуванні часто незрозуміло, який результат вийде на виході, і яких ресурсів потребуватиме проєкт.
Тому в комерційній розробці краще використовувати низхідне програмування. По-перше, це дає змогу деталізувати технічні умови відповідно до бізнес-завдання. Простіше кажучи, вирішити, як це буде реалізовано, виходячи з того, що ця програма має робити.
Курс Python для новачків – це чудовий спосіб ознайомитися з основами програмування та мовою Python, яка може бути використана для низхідного програмування. Курс допоможе зрозуміти базові концепції програмування та навчитися створювати свої перші програми на Python.
Друга перевага низхідного програмування для розробки – це увага до інтерфейсної частини коду: класів, методів, функцій. Коли створення програми йде зверху вниз, куди простіше уніфікувати імена класів.
Чому це важливо для комерційної розробки? У міру того, як триває робота, програма розбивається на невеликі модулі. До роботи над ними можна підключити цілу команду програмістів, і не одну. А це прискорює створення кінцевого продукту.
Етапи розробки зверху вниз
Одразу уточнимо, що ця схема умовна, оскільки кожен проєкт унікальний. Кількість етапів, глибина опрацювання, розмір команди – це змінні. Ми ж хочемо продемонструвати приклад, заснований на вланому досвіді, який вигляд може мати низхідне програмування на проєкті.
- Визначення цілей проєкту: до початку низхідного програмування розробники визначають цілі проєкту та параметри.
- Визначення функціональності програми: розробник визначає функціональні вимоги програми.
- Створення планування програми: розробник створює планування програми, що включає в себе структуру програми, класи та методи.
- Реалізація програми: розробник створює програму, дотримуючись плану, з використанням усіх описаних методів і класів.
- Тестування програми: розробник тестує програму на основі параметрів, які були встановлені до початку розробки.
Нагадаємо, що це лише приклад того, як може виглядати низхідне програмування. Ця методологія розроблення ПЗ дуже гнучка і змінюється відповідно до вимог проєкту.
П’ять переваг низхідного програмування
Головні плюси низхідного програмування:
- Розробка стає ефективнішою. За низхідного програмування розробник спочатку визначає загальні параметри проєкту, потім деталізує їх, а потім реалізує весь функціонал. Це дає змогу ефективніше використовувати час і ресурси.
- Покращується документація. Якщо розробник починає із загальних параметрів, це забезпечує більш чіткий і послідовний опис проєкту. Це дає змогу краще зрозуміти проєкт на всіх рівнях абстракції.
- Спрощується тестування. Коли кожна функція програми розробляється окремо, тестувати її можна теж окремо, що набагато простіше.
- Покращується модульність і повторне використання коду. За умови окремого розроблення кожної функції, розробникам простіше використовувати модулі та застосовувати code reuse у різних частинах проєкту, що прискорює процес розроблення.
- Більш досконале планування і проектування. Коли розробка починається з самого верхнього рівня, просто необхідно на першому ж етапі скласти адекватний план з урахуванням абсолютно всіх вимог проєкту. Це затягує перший етап, але в підсумку підвищує якість кінцевого продукту.
Ці переваги низхідного програмування переважують недоліки, тож цей підхід широко застосовується в комерційній розробці.
Три головні недоліки низхідного програмування
Поговоримо про недоліки низхідного методу:
- Знижується гнучкість. Оскільки проєкт детально планується, у розробника не залишається поля для маневру, що загрожує втратою гнучкості, відсутністю поля для креативності та впровадження нових технологій у кінцевому продукті.
- Збільшується складність дизайну. При дизайні зверху вниз можуть виникнути складнощі з дизайном кожної окремої функції, що загрожує уповільненням і подорожчанням створення ПЗ.
- Збільшується ризик пропуску дрібних деталей. Знову-таки, під час програмування зверху вниз до найдрібніших деталей часто не доходять руки, а це може згубно позначитися на фінальному продукті.
Висхідне програмування
Головна проблема висхідного програмування – початкова відсутність розуміння того, яким буде кінцевий результат. Але в цьому і його головна перевага: у міру роботи над проектом розробники можуть повернути розробку в абсолютно нове русло.
Планування ресурсів і часу під час висхідного програмування можливі тільки на короткому відрізку роботи. Зате є можливість зупинитися після завершеного етапу і показати замовнику прототип.
Цей підхід популярний у in-house команд розробників, коли потрібно терміново реалізувати функцію, яка потрібна “на вчора”. Висхідному програмуванню не страшні нові вимоги, які виставляє замовник. Але в комерційній розробці, де потрібний результат відомий заздалегідь, висхідне програмування застосовується тільки на окремих ділянках проєкту.
Висновок
У створенні програмного забезпечення активно використовується низхідний метод програмування, але він сумісний із висхідним. Комбінація двох методів утворює спіральний, або гібридний метод розробки. Усі три підходи можуть бути ефективними, якщо застосовуються відповідно до поставленої мети.
Розкажіть у коментарях, з яким методом ви працювали: низхідним чи висхідним? Які у вас залишилися враження?