Iterative and Incremental Development включает в себя элементы итеративного и инкрементального подходов. То есть, когда программное обеспечение развивается повторяющимися итерациями (циклами), при этом добавляя каждый раз некоторую часть продукта к имеющейся. Такую модель можно считать довольно сбалансированной. Она позволяет разработке быстрее адаптироваться к меняющимся требованиям, которые в свою очередь имеют некоторую неопределенность.
— Итерации — весь проект делится на определенное множество итераций. Каждая из них по сути мини — проект, в котором есть собственный цикл планирования, анализа, разработки и тестирования.
— Инкременты — каждый инкремент это созданное в ходе итерации улучшение существующего продукта или добавление новой функциональности.
— Гибкость — модель можно считать гибкой, так как она позволяет вносить в проект изменения и корректировки на основе обратной связи от заинтересованных сторон или пользователей.
— Гибкость к изменениям требований — модель позволяет вносить изменения в требования во время разработки, что увеличивает релевантность конечного продукта.
— Ранняя доставка ценности — каждая итерация создает работающий продукт, а значит, заинтересованные стороны смогут раньше увидеть и оценить результаты разработки и внести изменения в требования.
— Улучшенное управление рисками — при каждой итерации проводят анализ и тестирование, что позволяет идентифицировать и устранять риски на ранних этапах разработки, тем самым сократив расходы на разработку.
— Постепенное улучшение — получение обратной связи после каждой итерации, что дает возможность своевременно улучшать качество продукта.
— Управление и планирование — это касается по большей части крупных проектов, где сложно дать качественную координацию итераций и инкрементов. Модель требует эффективного планирования и управления.
— Затраты на изменения — несмотря на то, что модель гибка к изменениям, стоит учитывать, что частые изменения требований или их множественное добавление могут увеличить денежные и временные затраты на разработку.
— Планирование — определяются цели и задачи для текущей итерации, определяются требования, которые необходимо реализовать и сроки.
— Анализ требований и проектирование — проводится анализ новых требований или изменений в существующих, выполняется проектирование системы для их последующей реализации.
— Реализация — доработка существующей функциональности в продукте или разработка новой.
— Тестирование — проверка созданных в продукте изменений.
— Оценка — демонстрация работы всем заинтересованным сторонам или пользователям с целью получить обратную связь, в ходе которой могут быть собраны новые требования или изменения к существующим.
6.2.5. Agile Software Development
Agile Software Development — представляет собой набор принципов для разработки программного обеспечения, который поддерживает создание продуктов через регулярное, итерационное сотрудничество между самоорганизующимися кросс — функциональными командами. Популярный выбор команд разработки, следующих главной цели Agile — удовлетворение потребности клиента через раннюю и непрерывную поставку ценного программного обеспечения.
— При итерационном и инкрементальном подходе используют короткие итерации (циклы), в результате которых приносится новый инкремент в разрабатываемый продукт. Позволяет быстро адаптироваться к изменениям.
— Сотрудничество с клиентом — в процессе разработки активно участвует заказчик или клиент, что обеспечивает своевременную обратную связь и корректировку требований.
— Работающий продукт — главным приоритетом является доставка работающего программного обеспечения, которое можно регулярно и часто обновлять.
— Гибкость и адаптивность — допустимы изменения в проекте даже на поздних этапах разработки.
— Улучшенное удовлетворение клиента — постоянная и частая обратная связь даёт больше удовлетворенности в конечном продукте.
— Повышенная адаптивность к изменениям — легкая и очень гибкая способность адаптироваться под новые тренды рынка или требования.
— Более быстрая доставка продукта — короткие итерации обеспечивают более ранний выход на рынок и ускоряют возврат средств.
— Повышение качества продукта — тестирование и оценку проводят в каждой итерации, что помогает обнаруживать и устранять ошибки на ранних стадиях.
— Трудности с масштабированием — в больших организациях или проектах могут возникать трудности с использованием этой методологии.
— Неопределенность в планировании и бюджете — гибкость вызывает неопределенность сроков и объемов работ, что может вызвать непредвиденное удорожание продукта.