Життєвий цикл програмного забезпечення (ПЗ) – період часу, який починається з моменту прийняття рішення про необхідність створення програмного продукту і закінчується в момент його повного вилучення з експлуатації.
Для полегшення проєктування, створення і випуску якісного програмного продукту існують різні моделі життєвого циклу ПЗ.
Вимоги до проєкту є визначальними при виборі підходу до циклу розробки. У цій статті ми розглянемо основні методології в розробці ПЗ.
Каскадна або водоспадна модель (Waterfall model)
При такій моделі кожна з фаз проєкту проводиться один раз, слідуючи одна за одною. Для того, щоб почати наступну стадію, необхідне повне завершення попередньої.
Плюси:
- всі стадії проєкту виконуються в чіткій послідовності;
- чіткість етапів дозволяє планувати терміни завершення всіх робіт і відповідні ресурси (грошові і людські);
- вимоги залишаються незмінними протягом усього циклу.
Мінуси:
- складності при формулюванні чітких вимог і неможливість їхньої зміни;
- тестування починається тільки з середини розвитку проєкту;
- до завершення процесу розробки користувачі не можуть переконатися, чи якісний продукт, який розробляється.
V-подібна модель (V-model)
Дана модель стала послідовником каскадної моделі, так як з її допомогою можна усунути недоліки, які були раніше.
Суть цієї моделі полягає в тому, що процеси на всіх етапах контролюються, щоб переконатися в можливості переходу на наступний рівень. Вже на стадії написання вимог починається процес тестування.
Плюси:
- сувора етапізація;
- мінімізація ризиків і усунення потенційних проблем за рахунок того, що тестування з'являється на самих ранніх стадіях;
- вдосконалений тайм-менеджмент.
Мінуси:
- неможливість адаптуватися до змінених вимог замовника;
- тривалий час розробки (іноді триває до декількох років) призводить до того, що продукт може бути вже не потрібний замовнику, оскільки його потреби змінюються;
- немає дій, спрямованих на аналіз ризиків.
Інкрементна модель (Incremental model)
Відповідно до інкрементної моделі (англ. Increment - збільшення, прирощення) програмне забезпечення розробляється з лінійною послідовністю стадій, але в кілька інкрементів (версій). Таким чином поліпшення продукту проходить заплановано весь час, поки життєвий цикл розробки ПЗ не завершиться.
Вимоги до системи визначаються на самому початку роботи, після чого процес розробки проводиться у вигляді послідовності версій, кожна з яких є закінченим і працездатним продуктом.
Плюси:
- замовник може дати свій відгук щодо кожної версії продукту;
- є можливість переглянути ризики, які пов'язані з витратами і дотриманням графіка;
- звикання замовника до нової технології відбувається поступово.
Мінуси:
- функціональна система повинна бути повністю визначена на початку життєвого циклу для виділення ітерацій;
- при постійних змінах структура системи може бути порушена;
- терміни здачі системи можуть бути збільшені через обмеженість ресурсів (виконавці, фінанси).
Спіральна модель (Spiral model)
У спіральної моделі життєвий шлях продукту, що розробляється зображується у вигляді спіралі, яка, розпочавшись на етапі планування, розкручується з проходженням кожного наступного кроку. Таким чином, на виході з чергового витка отримуємо готовий протестований прототип, який доповнює існуючу збірку. Прототип, що задовольняє всі вимоги, готовий до випуску.
Плюси:
- приділяється особлива увага управлінню ризиками;
- додаткові функції можуть бути додані на пізніх етапах;
- є можливість гнучкого проєктування.
Мінуси:
- оцінка ризиків на кожному етапі є досить витратною;
- постійні відгуки і реакція замовника може провокувати все нові і нові ітерації, які можуть призводити до тимчасового затягування розробки продукту;
- більш застосовується для великих проєктів.
Гнучка модель (Agile model)
Являє собою сукупність різних підходів до розробки ПЗ. Включає серії підходів до розробки програмного забезпечення, орієнтованого на використання ітеративної розробки (в Scrum ітерації називаються спринтами), динамічне формування вимог і забезпечення їхньої реалізації в результаті постійної взаємодії всередині самоорганізованих робочих груп, що складаються з фахівців різного профілю. Окрема ітерація являє собою мініатюрний програмний проєкт. Однією з основних ідей Agile є взаємодія всередині команди і з замовником напряму.
Плюси:
- швидке прийняття рішень завдяки постійним комунікаціям;
- мінімізація ризиків;
- полегшена робота з документацією.
Мінуси:
- велика кількість мітингів і обговорень, що може збільшити час розробки продукту;
- складно планувати процеси, так як вимоги постійно змінюються;
- рідко використовується для реалізації великих проєктів.
Скрам (Scrum)
Скрам - це гнучка модель розробки ПЗ, в якій робиться акцент на якісному контролі процесу розробки.
Ролі в методології (Scrum Master, Product Owner, Team) дозволяють чітко розподілити обов'язки в процесі розробки. За успіх Scrum в проєкті відповідає Scrum Master і є сполучною ланкою між менеджментом і командою. За розробку продукту відповідає Product Owner, який також ставить завдання і приймає остаточні рішення для команди.
Команда - це єдине ціле, в ній результати оцінюються не по кожному окремому учаснику, а по тому, що виходить в результаті у всіх.
Спринти в даній методології тривають від 1 до 4 тижнів. Після кожного спринту команда надає варіант закінченого продукту.
Плюси:
- швидкий зворотній зв'язок від фахівців в різних сферах (дизайнерів, архітекторів, тестувальників та ін.);
- завдяки залученості тестувальника в роботу відбувається швидке додавання нового функціоналу і швидкий запуск продукту з мінімальними функціями;
- самостійна і самоорганізована команда.
Мінуси:
- деякі люди, які знають продукт, стають незамінними, так як документація не надається в процесі розробки;
- неможливо спланувати точну дату завершення, так як все уточнюється за результатами попереднього спринту;
- замовники не завжди можуть зрозуміти суть даної методології і необхідно витратити час на "лікбез".
Існує безліч варіантів моделей розробки ПЗ. Вибір того чи іншого варіанту залежить від особливостей і вимог проєкту, моделей оплати. Частково методології перетинаються і схожі одна на одну, але тим не менш, кожна знаходить своїх шанувальників.