База знань

Ітеративна модель (Iterative model)

 iterative

Ітеративний підхід (англ. Iteration, «повторення») в розробці програмного забезпечення – це виконання робіт паралельно з безперервним аналізом отриманих результатів і коригуванням попередніх етапів роботи. Проект при цьому підході в кожній фазі розвитку проходить повторюваний цикл PDCA (англ. Plan-do- check-act cycle): Планування – Реалізація – Перевірка – Оцінка.

Вперше запропонована Філіпом Крачтеном в 1995 р, дана модель об’єднує головні переваги спіральної, інкрементної, каскадної моделей, а також методів розробки на основі створення прототипів і об’єктно-орієнтованого підходу. Вона завоювала більшу популярність і в тому чи іншому вигляді використовується в багатьох сучасних проектах.

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

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

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

Філіп Крачтен довгий час працює у фірмі Rational Software, яка зараз належить IBM. Саме з цієї причини ітеративна модель стала основою RUP (Rational Unified Process) – одного з найбільш поширених методів комплексного управління процесом розробки ПЗ. На її ж основі розроблений головний конкурент RUP з боку Microsoft – MSF (Microsoft Solutions Framework), а також аналогічний підхід компанії Borland – ALM (Application Lifecycle Management).

Переваги ітеративного підходу:

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

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

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

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

Переваги ітеративної моделі:

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

Недоліки ітеративної моделі:

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

Коли використовувати ітеративну модель:

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

Ітеративна модель є ключовим елементом так званих «гнучких» (Agile) підходів до розробки програмного забезпечення.

 

Набагато більше інформації на курсі базовий модуль тестування