Ітеративна та інкрементна розробка
Ітеративна та інкрементна розробка — це серцевина циклічного процесу розробки ПЗ, який був розроблений у відповідь на слабкі сторони водоспадної моделі. Процес починається з початкового планування і закінчується впровадженням (готового ПЗ) з циклічними взаємодіями між цими етапами.
Ітеративна та інкрементна розробка є суттєвою частиною Rational Unified Process, Екстремального програмування та різноманітних фреймоворків гнучкої розробки ПЗ.
Головна ідея
ред.Часто помилково вважають, що «ітеративний» це синонім до «інкрементний». Хоча, в розробці ПЗ та програмних систем вони часто йдуть пліч-о-пліч. Основна ідея полягає в тому, щоб розробити систему шляхом циклів, що повторюються (ітеративний) та в менші проміжки часу (інкрементний), даючи змогу розробнику скористатися перевагами того, що було вивчене під час розробки попередніх порцій або версій системи. Навчання приходить як з процесу розробки так і з процесу використання системи, де можливі ключові кроки процесу починаються з простої реалізації підмножини вимог до програмного продукту та ітеративного вдосконалення версій, які еволюціонують доки повна система не буде реалізована. На кожному кроці (ітерації) виконуються зміни дизайну та додаються нові функціональні можливості.
Процедура складається з кроку ініціалізації, ітеративного кроку та контрольного списку проєкту. Крок ініціалізації створює базову версію системи. Метою початкової реалізації є створення продукту на який можуть відгукнутися користувачі. Цей продукт повинен запропонувати набір зразків ключових аспектів проблеми і забезпечити розв'язання, яке буде достатньо простим для того, щоб легко зрозуміти і реалізувати його. Для керування ітеративним процесом створюється контрольний список проєкту, який вміщує записи усіх завдань, які потрібно виконати. Він включає такі елементи: нові можливості програми, які потрібно реалізувати та частини поточного рішення, які потрібно переробити. Контрольний список постійно змінюється, в результаті фази аналізу.
Ітерація включає реконструювання та реалізацію завдань з контрольного списку, а також аналіз поточної версії системи. Рівень деталізації проєктного плану(дизайну) не диктується ітеративним підходом. У невеликих ітеративних проєктах код може представляти джерело документації системи. Проте, у критичних до організації проєктах може використовуватися формальний документ-план програмного продукту. Аналіз ітерації базується на відгуках користувачів та на доступних засобах аналізу програми. Він включає аналіз структури, модульності, зручності у використанні, надійності, продуктивності та досягнення поставлених цілей. Контрольний список проєкту змінюють на основі результатів аналізу.
Ітераційна/Інкрементна розробка
ред.Інкрементна розробка поділяє систему на інкременти(порції). У кожній порції доставляється певна частина функціональності. Уніфікований процес поділяє порції/ітерації на такі фази: початок, створення плану, побудова та перехід.
- Початок визначає масштаб проєкту, ризики і вимоги(функціональні та нефункціональні) на високому рівні, але достатньому для того, щоб оцінити складність.
- Результатом створення плану стає виробнича архітектура, яка пом'якшує найзначніші ризики та заповнює нефункціональні вимоги.
- Побудова поступово(інкрементно) заповнює архітектуру готовим кодом, який створено завдяки аналізу, плануванню, реалізації та тестуванню функціональних вимог.
- Перехід переводить систему у виробниче середовище.
Кожна з фаз може бути розділена на 1 або більше ітерацій, які, зазвичай, обмежені у часі, а не у функціональності. Архітектори та аналітики працюють на одну ітерацію попереду програмістів та тестувальників, для того, щоб тримати їхній перелік завдань повним.
Джерела
ред.Див. також
ред.Посилання
ред.- Going round and round and getting nowhere eXtremely fast? Another look at incremental & iterative development [Архівовано 24 вересня 2010 у Wayback Machine.] from www.methodsandtools.com
- The «Case» for Waterfall Development from www.fromthetrench.com
- Iterative Development and The Leaning Tower of Pisa from www.fromthetrench.com]