1. Agile Model

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

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

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

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

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

В основу XP входять короткі зустрічі учасників команди, які відбуваються щодня, та регулярні збори (раз на тиждень чи рідше). На щоденних мітингах (daily standup) зазвичай обговорюються:

  • поточні результати роботи;
  • перелік завдань, які необхідно виконати кожному учаснику команди;
  • проблеми, що виникли, та варіанти їх вирішення.

2. Маніфест

Agile є цілим напрямком у розробці, тому правила роботи за ним декларовані у спеціальному документі — Agile Manifesto. До нього входять як практики, так і принципи, за якими має працювати команда.

Agile Manifesto складається з 4-х основних ідей і 12 принципів.

Основні ідеї:

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

Що стосується 12 принципів Agile, то ось вони:

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

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

3. Методології

В Agile Manifesto існує також кілька методологій, які пояснюють цінності та принципи:

  • Agile Modeling;
  • Agile Unified Process;
  • Agile Data Method;
  • Rapid Application Development (DSDM);
  • Essential Unified Process;
  • Extreme programming;
  • Feature driven development;
  • Getting Real;
  • OpenUP;
  • Scrum.

Agile Modeling – це перелік принципів, термінів та практик, використання яких прискорює та спрощує розробку моделей ПЗ та документацію.

Мета Agile Modeling полягає у покращенні моделювання та створенні документації. Важливо врахувати, що сюди не входить кодування, тестування чи питання, пов'язані з контролем над проєктом, розгортанням та підтримкою. Однак ця методологія включає перевірку коду.

Agile Unified Process – методологія, яка спрощує для користувачів наближення (модель). Зазвичай застосовується для розробки комерційного софта.

Agile Data Method – кілька схожих методологій, у яких умови замовника досягаються завдяки співпраці кількох команд.

DSDM – цей підхід відрізняється від інших тим, що в ньому поряд з розробниками активну участь беруть користувачі майбутнього продукту.

Feature driven development – методологія розробки, що має тимчасове обмеження: "кожну функцію потрібно реалізовувати не довше, ніж за два тижні".

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

Getting Real — ітеративна методологія, за якої спочатку ведеться розробка інтерфейсу програми, а потім її функціоналу.

OpenUP – метод розробки, який поділяє цикл проєкту на чотири стадії: початкову, стадію уточнення, конструювання та передачі.

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

Що стосується Scrum, то він регулює правила управління процесом розробки та дозволяє застосовувати вже наявні практики кодування з можливістю коригування умов або внесенням змін. Використання цієї методології дозволяє побачити та усунути відхилення від очікуваного результату на ранніх стадіях розробки.

Давайте ознайомимося з цим трохи докладніше.