Наверное, всякий, кто когда-либо пытался осознать специфику различных подходов к разработке программного обеспечения, задавался вопросами: в чём отличие между итеративной и инкрементальной разработкой? Agile – итеративный? RUP – инкрементальный?
Под катом очередное рассуждение на эту тему и заочный спор с Карлом Вигерсом.
В 3-м издании книги Карла Вигерcа «Разработка требований к программному обеспечению» есть иллюстрация, демонстрирующая распределение усилий по работе с требованиями на протяжении проектов с разным жизненным циклом разработки (SDLC).
![](https://habrastorage.org/r/w1560/files/256/5d2/fd9/2565d2fd90f24888a1ac2c1a150f2cf0.png)
Итак, картинка разделяет Agile и итеративные подходы. Корректно ли это?
Для начала определимся с терминами.
Википедия подсказывает:
Значит, если в рамках спринта в гибком Scrum’е или итерации в RUP Вы перерабатываете результаты предыдущего этапа и одновременно реализуете новые части продукта, Ваша разработка и итеративна, и инкрементальна.
Ниже изображение, поясняющее разницу между итеративной и инкрементальной разработкой на примере создания портрета Карла Вигерса.
![](https://habrastorage.org/r/w1560/files/d2e/6b3/52f/d2e6b352fb1345ddb6e57346cec62aa1.png)
Вывод
Разделять гибкие и итеративные подходы некорректно. Вигерс, ты не прав!
Под катом очередное рассуждение на эту тему и заочный спор с Карлом Вигерсом.
В 3-м издании книги Карла Вигерcа «Разработка требований к программному обеспечению» есть иллюстрация, демонстрирующая распределение усилий по работе с требованиями на протяжении проектов с разным жизненным циклом разработки (SDLC).
![](https://habrastorage.org/files/256/5d2/fd9/2565d2fd90f24888a1ac2c1a150f2cf0.png)
Итак, картинка разделяет Agile и итеративные подходы. Корректно ли это?
Для начала определимся с терминами.
- Итеративность – повторение операций в целях переработки результатов предыдущего этапа.
- Инкрементирование – приращение результатов предыдущего этапа.
Википедия подсказывает:
«Гибкая методология разработки (англ. Agile software development, agile-методы) — серия подходов к разработке программного обеспечения, ориентированных на использование итеративной разработки…»
Значит, если в рамках спринта в гибком Scrum’е или итерации в RUP Вы перерабатываете результаты предыдущего этапа и одновременно реализуете новые части продукта, Ваша разработка и итеративна, и инкрементальна.
Ниже изображение, поясняющее разницу между итеративной и инкрементальной разработкой на примере создания портрета Карла Вигерса.
![](https://habrastorage.org/files/d2e/6b3/52f/d2e6b352fb1345ddb6e57346cec62aa1.png)
Вывод
Разделять гибкие и итеративные подходы некорректно. Вигерс, ты не прав!
Only registered users can participate in poll. Log in, please.
Agile – это итеративная разработка?
75.38% да49
24.62% нет16
65 users voted. 45 users abstained.