Класичні моделі розробки ПЗ (каскадна, ітераційна, інкрементна)

Розділ: Інженерія систем і програмного забезпечення

📌 Про що ця тема


Тут перевіряють, чи розумієш ти, як організовують процес створення програмного забезпечення: які етапи проходить розробка і чим відрізняються підходи до їх виконання. Ключове поняття — модель життєвого циклу ПЗ: схема, що описує порядок і повторюваність етапів роботи над програмою.


📖 Головне


• Життєвий цикл ПЗ — це всі стадії існування програми від задуму до зняття з експлуатації. Типові етапи: аналіз вимог → проєктування → реалізація (кодування) → тестування → впровадження → супровід.


• Каскадна модель (водоспадна, Waterfall) — етапи виконуються строго послідовно, один за одним. Перехід до наступного — тільки після повного завершення попереднього; повернень назад фактично немає.


• Плюси каскадної моделі: проста, зрозуміла, легко планувати терміни й бюджет, добре документується. Підходить, коли вимоги чіткі й не змінюються.


• Мінуси каскадної: негнучка — зміну вимог посеред проєкту внести складно; готовий продукт замовник бачить лише наприкінці; помилки в ранніх етапах виявляються пізно й дорого коштують.


• Ітераційна модель — розробка розбивається на повторювані цикли (ітерації). У кожній ітерації проходять ті самі етапи (аналіз, проєктування, реалізація, тест), поступово уточнюючи й покращуючи ту саму систему.


• Суть ітераційної: продукт розвивається «вглиб» — із циклу в цикл його допрацьовують, виправляють, уточнюють вимоги. Дозволяє враховувати відгуки замовника на кожній ітерації.


• Інкрементна модель — систему будують частинами (інкрементами). Кожен інкремент додає новий готовий функціонал до вже працюючої частини продукту.


• Суть інкрементної: продукт зростає «вшир» — спершу випускають базове ядро, потім дороблюють нові модулі. Замовник отримує робочу версію раніше, хоч і неповну.


• Відмінність ітераційної та інкрементної: ітерація вдосконалює вже наявне, інкремент додає нові шматки. На практиці часто поєднують обидва підходи.


🔢 Як це працює на прикладі


Уяви розробку мобільного застосунку-магазину.


Каскадна: спочатку повністю збирають усі вимоги, потім проєктують весь застосунок, потім усе кодують, потім тестують і аж наприкінці віддають замовнику готовий продукт.


Інкрементна: спершу випускають версію лише з каталогом товарів (інкремент 1), далі додають кошик (інкремент 2), потім оплату (інкремент 3). Кожна версія вже робоча.


Ітераційна: роблять чорновий застосунок із усіма функціями, показують замовнику, збирають зауваження, у наступній ітерації покращують інтерфейс і виправляють помилки, і так по колу.


⚠️ Типові помилки


• Плутають інкрементну та ітераційну моделі: інкремент — нова частина функціоналу, ітерація — доопрацювання вже зробленого.

• Вважають каскадну модель «найкращою» — вона лише проста, але негнучка до змін.

• Думають, що в каскадній моделі можна легко повертатися на попередній етап — насправді саме відсутність зручних повернень є її слабкістю.

• Плутають поняття «життєвий цикл» (усі стадії ПЗ) і «модель» (спосіб їх організувати).

• Забувають, що супровід — теж етап життєвого циклу, а не щось поза ним.


🎯 Що завчити напамʼять


• Порядок етапів: вимоги → проєктування → реалізація → тестування → впровадження → супровід.

• Каскадна = строга послідовність, без повернень, результат наприкінці.

• Ітераційна = повторювані цикли, вдосконалення того самого продукту.

• Інкрементна = нарощування новими готовими частинами.


🧠 Перевір себе


1. Яка модель передбачає строго послідовне проходження етапів без повернень?

2. Чим інкремент відрізняється від ітерації?

3. Який головний мінус каскадної моделі?

4. На якому етапі життєвого циклу програму супроводжують після випуску?


Відповіді: 1 — каскадна (водоспадна); 2 — інкремент додає нову частину функціоналу, ітерація вдосконалює вже наявний продукт; 3 — негнучкість до змін вимог і пізнє виявлення помилок; 4 — на етапі супроводу (останньому).

Перевірити себе на практиці

Прочитати — половина справи. Далі потрібні завдання цієї ж теми з розбором кожної відповіді: саме на них видно, чи справді тема закрита.