Гнучка розробка програмного забезпечення (Agile) відноситься до групи методологій розробки програмного забезпечення, заснованих на ітеративній розробці, де вимоги і рішення розвиваються завдяки співпраці між самоорганізаційними крос-функціональними командами.

Agile-методи зазвичай сприяють впорядкованому процесу управління проєктами, який передбачає часті перевірки і адаптацію, командну роботу, самоорганізацію і звітність. Це набір передових методів проєктування, призначених для швидкого релізу високоякісного програмного забезпечення, і бізнес-підхід, який прив’язує розвиток продукту до потреб клієнтів і цілей компанії. Гнучка розробка відноситься до будь-якого процесу розробки, який узгоджується з концепціями Agile Manifesto. Маніфест був розроблений групою з чотирнадцяти провідних фігур в індустрії програмного забезпечення і відображає їх досвід того, які підходи сприяють якості в розробці програмного забезпечення.

Ця методологія рятує від ризику витрат місяців або років на процес, який в кінцевому підсумку дає збій через невелику помилку на ранній стадії. Замість цього передбачається, що співробітники команди працюють безпосередньо з клієнтами, щоб зрозуміти цілі і запропонувати рішення швидким і оптимізованим способом.

Переваги гнучкої методології

Взаємодія із зацікавленими сторонами

Agile надає безліч можливостей для взаємодії із зацікавленими сторонами і командою – до, під час і після кожного спринту. Залучаючи клієнта в кожен етап розробки проєкту можна отримати високу ступінь співробітництва між клієнтом і командою, надаючи групі більше можливостей для розуміння кінцевого продукту. Своєчасне надання робочого програмного забезпечення підвищує довіру між зацікавленими сторонами і спонукає їх більш активно брати участь в проєкті.

Прозорість

Підходи Agile надають унікальну можливість для клієнтів брати участь у проєкті – визначати пріоритети і функції, планувати ітерації і огляди, збірки програмного забезпечення, що містять нові функції. Однак це також вимагає від клієнтів розуміння того, що вони бачать незавершену роботу в обмін на перевагу активної участі в плануванні і розробці.

Ранній та передбачуваний реліз

Завдяки використанню фіксованого розкладу спринтів з періодом 1-4 тижні, нові функції надаються швидко і часто, з високим рівнем передбачуваності. Це також дає можливість випустити або провести бета-тестування програмного забезпечення раніше, ніж планувалося, якщо це має достатню цінність для бізнесу.

Передбачувані витрати і графік

Оскільки кожен спринт має фіксовану тривалість, вартість передбачувана і обмежена обсягом робіт, які можуть бути виконані командою в тимчасовому вікні з фіксованим розкладом. За оцінками, наданими перед кожним спринтом, клієнт може легше зрозуміти приблизну вартість кожного завдання, що покращує процес прийняття рішень щодо пріоритету завдань і необхідності додаткових ітерацій.

Можливість вносити зміни

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

Орієнтованість на цінність для бізнесу

Дозволяючи клієнту визначати пріорітет задач, команда розуміє, що є найважливішим для клієнта, і може надати корисні функції.

Орієнтованість на користувачів

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

Покращення якості

Розбиваючи проєкт на керовані одиниці команда проєкту може зосередитися на високоякісній розробці, тестуванні та спільній роботі. Якість ПЗ покращується завдяки частим збіркам та проведенню тестування на кожній ітерації. Такі перевірки сприяють швидкому виявленню та виправленню дефектів, ранньому виявленню невідповідностей з очікуваним результатом.

Diagram_cycle

Схема циклу розробки програмного забезпечення AGILE

Agile-маніфест

  1. Люди і взаємодія важливіше процесів та інструментів.
  2. Працюючий продукт важливіше вичерпної документації.
  3. Співпраця із замовником важливіше узгодження умов контракту.
  4. Готовність до змін важливіше проходження початкового плану.

12 принципів Agile

  1. Головним пріоритетом є задоволення клієнта за рахунок своєчасного і безперервного випуску програмного забезпечення.
  2. Розробка працюючого програмного забезпечення триває від кількох тижнів до кількох місяців, вважаючи за краще найкоротші терміни.
  3. Створення проєкту навколо мотивованих людей. Надання середовища і підтримки, яких вони потребують, довіри щодо виконання роботи.
  4. Робоче програмне забезпечення є основною мірою прогресу.
  5. Постійна увага до технічної досконалості і хорошого дизайну підвищує швидкість розробки.
  6. Найкращі вимоги до архітектури і дизайну з'являються від самоорганізованих команд.
  7. Легкі зміни вимог присутні навіть на пізніх стадіях розробки для забезпечення конкурентних переваг замовнику.
  8. Користувачі і розробники повинні щодня працювати разом на протязі всього проєкту.
  9. Найважливіший і ефективний метод передачі інформації в команді – особиста розмова.
  10. Гнучкі процеси сприяють сталому розвитку. Замовники, розробники і користувачі повинні мати можливість підтримувати постійний темп на невизначений термін.
  11. Простота – це мистецтво не робити зайвої роботи.
  12. Необхідно аналізувати проведену роботу команди для визначення того, як можна зробити її більш ефективною, і, відповідно, коригувати процеси.

Види гнучких методологій розробки ПЗ

Scrum це гнучкий метод управління проєктами, який використовується в основному для проєктів розробки програмного забезпечення. Його мета – значно підвищити продуктивність праці в групах і надавати нове програмне забезпечення кожні 2-4 тижні. До методології Scrum входить формування команд з сильними комунікативними навичками, відгуками клієнтів, великою кількістю користувачів розроблених ними продуктів і т. ін.

Kanban одна з найпопулярніших методологій розробки програмного забезпечення, що застосовуються сьогодні Agile командами. Як і Scrum, Kanban – це методологія, розроблена для того, щоб допомогти командам працювати більш ефективно.

Проте є деякі відмінності.

Відмінності між Scrum і Kanban

Scrum  Kanban
Команда приймає участь у конкретній ітерації Необов'язкова участь
Використання швидкості як засобу покращення процесу Використання часових рамок у якості засобів для покращення процесів.
Попередня оцінка Попередня оцінка
Затримка спрінта належить одній команді Канбан-дошка може бути розділена між декількома командами
Включає в  себе використання як мінімум 3-ох ролей ( власник продукту, скрам-майстер, скрам команда) Відсутність ролей
Скрам-дошка змінюється між спринтами Канбан-дошка незмінна
Для кожного спринта пріоритет встановлюється в беклозі спринта Призначення пріоритетів не обов'язкове
Scrum_Kanban

Agile це потужна методологія для розробки програмного забезпечення, яка не тільки забезпечує переваги для команди розробників, але також надає ряд важливих бізнес-переваг для клієнта. Agile допомагає проєктним групам впоратись з багатьма поширеними підводними каменями проєкту (наприклад, непередбачуваність графіка, необхідність швидко вносити зміни в проєкт) більш контрольованим чином. Шляхом реорганізації та переосмислення дій, пов'язаних з розробкою програмного забезпечення, Agile досягає цілей гнучким і орієнтованим на бізнес способом.