Итеративная и инкрементальная разработка

редактировать

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

Использование этого термина началось в разработке программного обеспечения, с давнего сочетания двух терминов итеративный и инкрементный, которые широко предлагались для крупных усилий по разработке. Например, 1985 DOD-STD-2167 упоминает (в разделе 4.1.2): «Во время разработки программного обеспечения может выполняться более одной итерации цикла разработки программного обеспечения одновременно». и «Этот процесс можно описать как подход« эволюционного приобретения »или« постепенного наращивания »». В программном обеспечении взаимосвязь между итерациями и приращениями определяется общим процессом разработки программного обеспечения.

Итерационная модель разработки
СОДЕРЖАНИЕ
  • 1 Обзор
    • 1.1 Фазы
    • 1.2 Использование / История
    • 1.3 Контраст с развитием Водопад
    • 1.4 Рекомендации по внедрению
  • 2 Использование в аппаратных и встроенных системах
  • 3 См. Также
  • 4 Примечания
  • 5 ссылки
Обзор
Упрощенная версия типичного итерационного цикла в гибком управлении проектами.

Основная идея этого метода заключается в разработке системы посредством повторяющихся циклов (итеративно) и небольшими частями за раз (инкрементально), что позволяет разработчикам программного обеспечения использовать преимущества того, что было изучено во время разработки более ранних частей или версий системы. Обучение происходит как при разработке, так и при использовании системы, где возможные ключевые этапы процесса начинаются с простой реализации подмножества требований к программному обеспечению и итеративно улучшают развивающиеся версии до тех пор, пока не будет реализована вся система. На каждой итерации вносятся изменения в дизайн и добавляются новые функциональные возможности.

Сама процедура состоит из шага инициализации, шага итерации и контрольного списка проекта. На этапе инициализации создается базовая версия системы. Цель этой первоначальной реализации - создать продукт, на который пользователь может реагировать. Он должен предлагать выборку ключевых аспектов проблемы и предлагать решение, достаточно простое для понимания и легкого внедрения. Для управления итерационным процессом создается контрольный список проекта, содержащий записи всех задач, которые необходимо выполнить. Он включает в себя такие элементы, как новые функции, которые будут реализованы, и области редизайна существующего решения. Контрольный список постоянно обновляется в результате фазы анализа.

Итерация включает в себя редизайн, и реализация итерации должна быть простой, понятной и модульной, поддерживая редизайн на этом этапе или в качестве задачи, добавленной в контрольный список проекта. Уровень детализации дизайна не зависит от итеративного подхода. В облегченном итеративном проекте код может представлять собой основной источник документации системы; однако в критически важном итеративном проекте можно использовать формальный документ по разработке программного обеспечения. Анализ итерации основан на отзывах пользователей и доступных средствах анализа программы. Он включает в себя анализ структуры, модульности, удобства использования, надежности, эффективности и достижения целей. Контрольный список проекта модифицируется с учетом результатов анализа.

Итеративная разработка.

Фазы

Инкрементальная разработка разбивает функциональность системы на инкременты (части). В каждом приращении часть функциональности предоставляется через междисциплинарную работу, от требований до развертывания. В унифицированном процессе приращение групп / итерации в фазы: начало, разработка, строительство и переход.

  • Начало определяет объем проекта, требования (функциональные и нефункциональные) и риски на высоком уровне, но достаточно подробно, чтобы можно было оценить работу.
  • Разработка обеспечивает рабочую архитектуру, которая снижает основные риски и выполняет нефункциональные требования.
  • Построение постепенно заполняет архитектуру готовым к производству кодом, полученным в результате анализа, проектирования, реализации и тестирования функциональных требований.
  • Transition вводит систему в производственную операционную среду.

Каждую из фаз можно разделить на 1 или несколько итераций, которые обычно ограничены по времени, а не по функциям. Архитекторы и аналитики опережают разработчиков и тестировщиков на одну итерацию, чтобы заполнить список невыполненных работ.

Использование / История

Многие примеры раннего использования представлены в статье Крейга Лармана и Виктора Басили «Итеративное и инкрементное развитие: краткая история», одним из самых ранних является проект НАСА « Меркурий » 1960-х годов.

Некоторые из этих инженеров Mercury позже сформировали новое подразделение в IBM, где «еще одним ранним и ярким примером крупного успеха IID [было] самое сердце программного обеспечения космического шаттла НАСА - основной программной системы авионики, которую [они] построили с 1977 года. по 1980 год. Команда применяла IID в серии из 17 итераций в течение 31 месяца, в среднем около восьми недель на итерацию. Их мотивация избежать «водопада» жизненного цикла заключалась в том, что требования программы шаттла менялись в процессе разработки программного обеспечения ».

Некоторые организации, такие как Министерство обороны США, отдают предпочтение итерационным методологиям, начиная с MIL-STD-498, «явно поощряющего эволюционное приобретение и IID».

В инструкции DoD 5000.2, выпущенной в 2000 году, явно отдавалось предпочтение IID:

Есть два подхода, эволюционный и пошаговый [водопад], к полной возможности. Предпочтительно эволюционный подход. … [В этом] подходе конечные возможности, предоставляемые пользователю, делятся на два или более блока с увеличивающимися приращениями возможностей... Разработка программного обеспечения должна следовать итеративному спиральному процессу разработки, в котором постоянно расширяющиеся версии программного обеспечения основаны на извлечении уроков из опыта. более ранняя разработка. Это также можно делать поэтапно.

Последние версии DoDI 5000.02 больше не относятся к «спиральной разработке», но отстаивают общий подход как основу для программно-интенсивных программ разработки / закупок. Кроме того, Агентство США по международному развитию (USAID) также применяет итеративный и поэтапный подход к своему программному циклу для разработки, мониторинга, оценки, изучения и адаптации проектов международного развития с подходом к управлению проектами, который фокусируется на объединении сотрудничества и обучения., а также стратегии адаптации для повторения и адаптации программирования.

Контраст с разработкой Waterfall

Парадигмы программирования

Основная причина неудач проектов по разработке программного обеспечения - выбор модели, поэтому к нему следует подходить с большой осторожностью.

Например, парадигма разработки Waterfall завершает рабочие продукты проекта каждой дисциплины за один шаг перед переходом к следующей дисциплине на следующем шаге. Бизнес-ценность предоставляется сразу и только в самом конце проекта, тогда как при итеративном подходе возможен возврат с возвратом. Сравнивая два подхода, начинают вырисовываться некоторые закономерности:

  • Вовлеченность пользователя: в каскадной модели пользователь участвует в двух этапах модели: требования и приемочное тестирование и, возможно, создание учебных материалов для пользователей. В то время как в инкрементальной модели клиент участвует на каждом этапе.
  • Вариативность: программное обеспечение предоставляется пользователю только после завершения этапа сборки жизненного цикла для пользовательского приемочного тестирования. С другой стороны, каждое приращение доставляется пользователю, и после одобрения пользователя разработчику разрешается перейти к следующему модулю.
  • Человеческие ресурсы: в инкрементальной модели потенциально требуется меньше персонала по сравнению с водопадной моделью.
  • Ограничение по времени: рабочий продукт доставляется через несколько месяцев, в то время как в инкрементальной модели продукт предоставляется пользователю в течение нескольких недель.
  • Размер проекта: модель водопада не подходит для небольших проектов, в то время как инкрементная модель подходит как для небольших, так и для крупных проектов.

Рекомендации по внедрению

Рекомендации по внедрению и анализу программного обеспечения включают:

  • Любые трудности в дизайне, кодировании и тестировании модификации должны сигнализировать о необходимости перепроектирования или перекодирования.
  • Модификации должны легко помещаться в изолированные и легко обнаруживаемые модули. Если они этого не сделают, возможно, потребуется некоторый редизайн.
  • Внесение изменений в таблицы должно быть особенно простым. Если какое-либо изменение таблицы не выполняется быстро и легко, указывается изменение дизайна.
  • По мере выполнения итераций вносить изменения будет проще. Если это не так, существует основная проблема, такая как недостаток дизайна или большое количество исправлений.
  • Исправлениям обычно разрешается существовать только в течение одной или двух итераций. Исправления могут потребоваться, чтобы избежать переделки на этапе реализации.
  • Существующую реализацию следует часто анализировать, чтобы определить, насколько хорошо она соответствует целям проекта.
  • Средства программного анализа должны использоваться всякий раз, когда они доступны, чтобы помочь в анализе частичных реализаций.
  • Реакцию пользователей следует запрашивать и анализировать на предмет выявления недостатков в текущей реализации.
Использование в аппаратных и встроенных системах

Хотя термин « итеративная и инкрементная разработка» появился в индустрии программного обеспечения, во многих разработках аппаратного и встроенного программного обеспечения используются итеративные и инкрементные методы.

Примеры этого можно увидеть в ряде отраслей. Один из секторов, на который в последнее время существенно повлиял этот сдвиг мышления, - это индустрия космических запусков, где действуют новые существенные конкурентные силы, вызванные более быстрыми и более масштабными технологическими инновациями, вызванными образованием частных компаний, занимающихся запусками в космос. Эти компании, такие как SpaceX и Rocket Lab, в настоящее время предоставляют услуги коммерческого орбитального запуска за последнее десятилетие, что было сделано только шестью странами до десяти лет назад. Новые инновации в подходах к разработке технологий, ценообразовании и предложениях услуг - включая возможность, которая существовала только с 2016 года, летать в космос на ранее использовавшейся (многоразовой) ступени ускорителя - еще больше снижают стоимость доступа в космос.

SpaceX открыто заявляет о своих усилиях по внедрению методов итеративного проектирования в космическую отрасль и использует эту технику на космических кораблях, ракетах-носителях, электронике и авионике, а также в операциях с эксплуатационным летным оборудованием.

По мере того, как отрасль начала меняться, другие конкуренты, запускающие запуск, также начинают менять свои методы долгосрочного развития с государственными учреждениями. Например, крупный американский провайдер пусковых услуг United Launch Alliance (ULA) в 2015 году начал десятилетний проект по реструктуризации своего пускового бизнеса - сокращение двух пусковых аппаратов до одного - с использованием итеративного и поэтапного подхода для перехода к частичному повторному использованию и гораздо более дешевую систему запуска в течение следующего десятилетия.

Смотрите также
Примечания
использованная литература
Последняя правка сделана 2023-04-13 01:49:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте