Вігерс, ти не правий! Ще раз про ітеративну та інкрементальну розробку

Напевно, всякий, хто коли-небудь намагався усвідомити специфіку різних підходів до розробки програмного забезпечення, задавався питаннями: у чому відмінність між ітеративною та інкрементальною розробкою? Agile - ітеративний? RUP - інкрементальний?

Під катом чергове міркування на цю тему і заочна суперечка з Карлом Вігерсом.

У 3-му виданні книги Карла Вігерса «Розробка вимог до програмного забезпечення» є ілюстрація, що демонструє розподіл зусиль по роботі з вимогами протягом проектів з різним життєвим циклом розробки (SDLC).

Отже, картинка поділяє Agile і ітеративні підходи. Чи це коректно?

Для початку визначимося з термінами.

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

Вікіпедія підказує:

«Гнучка методологія розробки (англ. Agile software development, agile-методи) - серія підходів до розробки програмного забезпечення, орієнтованих на використання ітеративної розробки...»

Значить, якщо в рамках спринту в гнучкому Scrum'e або ітерації в RUP Ви переробляєте результати попереднього етапу і одночасно реалізуєте нові частини продукту, Ваша розробка і ітеративна, і інкрементальна.

Нижче зображення, що пояснює різницю між ітеративною та інкрементальною розробкою на прикладі створення портрета Карла Вігерса.

Вивід

Розділяти гнучкі та ітеративні підходи некоректно. Вігерс, ти не правий!

Тільки зареєстровані користувачі можуть брати участь в опитуванні. Увійдіть, будь ласка.

Agile - це ітеративна розробка?

74.6% так 47

25.4% немає 16

Проголосували 63 користувачі. Утрималися 45 користувачів.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND