stringtranslate.com

Гибкая разработка программного обеспечения

Гибкая разработка программного обеспечения — это общий термин для подходов к разработке программного обеспечения , которые отражают ценности и принципы, согласованные Agile Alliance , группой из 17 специалистов по разработке программного обеспечения в 2001 году. [1] Как указано в их Манифесте по гибкой разработке программного обеспечения, специалисты по разработке программного обеспечения ценят: [2]

Практикующие специалисты черпают вдохновение из новых практик того времени, включая экстремальное программирование , Scrum , метод разработки динамических систем , адаптивную разработку программного обеспечения , а также с пониманием относятся к необходимости альтернативы тяжеловесным процессам разработки программного обеспечения, основанным на документации. [3]

Многие практики разработки программного обеспечения возникли из гибкого мышления. Эти основанные на гибкости практики, иногда называемые Agile (с большой буквы) [4], включают требования, открытие и улучшение решений посредством совместных усилий самоорганизующихся и кросс-функциональных команд с их клиентами / конечными пользователями . [5] [6]

Хотя существует множество неофициальных свидетельств того, что гибкое мышление и основанные на гибкой методологии практики улучшают процесс разработки программного обеспечения, эмпирические данные ограничены и не являются убедительными. [7] [8] [9]

История

Итеративные и инкрементальные методы разработки программного обеспечения можно проследить еще в 1957 году [10] , а эволюционное управление проектами [11] [12] и адаптивная разработка программного обеспечения [13] появились в начале 1970-х годов [14] .

В 1990-х годах появилось несколько методов легкой разработки программного обеспечения в ответ на преобладающие тяжеловесные методы (часто называемые в совокупности водопадом ), которые критики описывали как чрезмерно регулируемые, планируемые и микроуправляемые . [15] К этим легким методам относятся: быстрая разработка приложений (RAD) с 1991 года; [16] [17] унифицированный процесс (UP) и метод разработки динамических систем (DSDM) с 1994 года; Scrum с 1995 года; Crystal Clear и экстремальное программирование (XP) с 1996 года; и разработка на основе функций (FDD) с 1997 года. Хотя все они возникли до публикации Agile Manifesto , теперь их в совокупности называют методами гибкой разработки программного обеспечения. [3]

Уже с 1991 года аналогичные изменения происходили в производстве [18] [19] и управленческом мышлении [20], основанном на бережливом управлении .

В 2001 году семнадцать разработчиков программного обеспечения встретились на курорте в Сноуберде , штат Юта , чтобы обсудить методы облегченной разработки. Это были: Кент Бек (экстремальное программирование), Уорд Каннингем (экстремальное программирование), Дэйв Томас ( прагматическое программирование , Ruby), Джефф Сазерленд (Scrum), Кен Швабер (Scrum), Джим Хайсмит (адаптивная разработка программного обеспечения), Алистер Кокберн (Crystal), Роберт К. Мартин ( SOLID ), Майк Бидл (Scrum), Ари ван Беннекум, Мартин Фаулер ( OOAD и UML ), Джеймс Греннинг, Эндрю Хант (прагматическое программирование, Ruby), Рон Джеффрис (экстремальное программирование), Джон Керн, Брайан Марик (Ruby, разработка через тестирование ) и Стив Меллор ( OOA ). Группа, The Agile Alliance, опубликовала Манифест гибкой разработки программного обеспечения . [2]

В 2005 году группа под руководством Кокберна и Хайсмита написала дополнение к принципам управления проектами — Декларацию взаимозависимости руководителей проектов [21] , — призванную направлять управление программными проектами в соответствии с гибкими методами разработки программного обеспечения.

В 2009 году группа, работающая с Мартином, написала расширенную версию принципов разработки программного обеспечения — « Манифест мастерства программного обеспечения» , призванный направлять гибкую разработку программного обеспечения в соответствии с профессиональным поведением и мастерством.

В 2011 году Agile Alliance создал Руководство по Agile-практикам (переименованное в Agile Glossary в 2016 году) [22] — постоянно обновляемый сборник с открытым исходным кодом рабочих определений гибких практик, терминов и элементов, а также интерпретаций и рекомендаций по опыту от мирового сообщества практиков Agile.

Ценности и принципы

Ценности

Agile-манифест гласит: [2]

Мы открываем лучшие способы разработки программного обеспечения, делая это и помогая другим делать это. Благодаря этой работе мы пришли к ценности:

То есть, хотя предметы справа имеют ценность, мы больше ценим предметы слева.

Скотт Эмблер объяснил: [23]

Представляя манифест от имени Agile Alliance, Джим Хайсмит сказал:

Движение Agile не является антиметодологией, на самом деле многие из нас хотят восстановить доверие к слову «методология». Мы хотим восстановить баланс. Мы принимаем моделирование, но не для того, чтобы заполнить какую-то диаграмму в пыльном корпоративном репозитории. Мы принимаем документацию, но не сотни страниц никогда не поддерживаемых и редко используемых томов. Мы планируем, но осознаем ограничения планирования в нестабильной среде. Те, кто хотел бы заклеймить сторонников XP или SCRUM или любой другой Agile-методологии как «хакеров», не знают ни методологий, ни первоначального определения термина «хакер».

—  Джим Хайсмит, История: Манифест Agile [24]

Принципы

Ценности основаны на следующих принципах: [25]

  1. Удовлетворенность клиентов за счет своевременной и непрерывной поставки ценного программного обеспечения.
  2. Приветствуем изменение требований даже на поздних этапах разработки.
  3. Регулярно поставляйте работающее программное обеспечение (недели, а не месяцы).
  4. Тесное ежедневное сотрудничество между предпринимателями и застройщиками.
  5. Проекты строятся вокруг мотивированных людей, которым следует доверять.
  6. Лучшая форма общения – личное общение (совместное размещение).
  7. Основным показателем прогресса является работающее программное обеспечение.
  8. Устойчивое развитие, способное поддерживать постоянный темп.
  9. Постоянное внимание к техническому совершенству и хорошему дизайну.
  10. Простота — искусство максимизировать объем невыполненной работы — имеет решающее значение.
  11. Лучшие архитектуры , требования и проекты рождаются в самоорганизующихся командах.
  12. Команда регулярно размышляет о том, как стать более эффективной, и вносит соответствующие коррективы.

Обзор

Итеративный, инкрементальный и эволюционный

Большинство методов гибкой разработки разбивают работу по разработке продукта на небольшие этапы, которые минимизируют объем предварительного планирования и проектирования. Итерации, или спринты, представляют собой короткие временные рамки ( таймбоксы ) [26] , которые обычно длятся от одной до четырех недель. [27] : 20  Каждая итерация включает в себя кросс-функциональную команду, работающую во всех функциях: планирование , анализ , проектирование , кодирование , модульное тестирование и приемочное тестирование . В конце итерации заинтересованным сторонам демонстрируется работающий продукт. Это минимизирует общий риск и позволяет продукту быстро адаптироваться к изменениям. [28] [29] Итерация может не добавить достаточно функциональности, чтобы гарантировать выпуск на рынок, но цель состоит в том, чтобы иметь доступный релиз (с минимальным количеством ошибок ) в конце каждой итерации. [30] Благодаря инкрементальной разработке продукты имеют возможность « часто и рано терпеть неудачу » на протяжении каждой итеративной фазы, а не радикально в дату окончательного выпуска. [31] Для выпуска продукта или новых функций может потребоваться несколько итераций. Рабочее программное обеспечение является основным показателем прогресса. [25]

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

Эффективное и личное общение

Шестой принцип гибкого манифеста по разработке программного обеспечения гласит: «Наиболее эффективным и действенным методом передачи информации команде разработчиков и внутри нее является личное общение». Манифест, написанный в 2001 году, когда видеоконференции не были широко распространены, утверждает это в отношении передачи информации, а не обязательно того, что команда должна находиться в одном месте.

Принцип совместного размещения заключается в том, что коллеги в одной команде должны располагаться вместе, чтобы лучше определить идентичность как команды и улучшить коммуникацию. [32] Это обеспечивает личное взаимодействие , в идеале перед доской, что сокращает время цикла, которое обычно требуется, когда вопросы и ответы передаются по телефону, в постоянном чате , вики или по электронной почте. [33] С широким распространением удаленной работы во время пандемии COVID-19 и изменениями в инструментах было проведено больше исследований [34] вокруг совместного размещения и распределенной работы, которые показывают, что совместное размещение становится все менее актуальным.

Независимо от того, какой метод разработки используется, в каждой команде должен быть представитель заказчика (известный как владелец продукта в Scrum ). Этот представитель соглашается заинтересованными сторонами действовать от их имени и берет на себя личное обязательство быть доступным для разработчиков, чтобы отвечать на вопросы на протяжении всей итерации. В конце каждой итерации заинтересованные стороны проекта вместе с представителем заказчика проверяют прогресс и переоценивают приоритеты с целью оптимизации возврата инвестиций (ROI) и обеспечения соответствия потребностям заказчика и целям компании. Важность удовлетворенности заинтересованных сторон, подробно изложенная в частом взаимодействии и обзоре в конце каждой фазы, является причиной того, что подход часто обозначается как методология, ориентированная на заказчика . [35]

Информационный радиатор

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

Очень короткий цикл обратной связи и адаптации

Распространенной характеристикой гибкой разработки программного обеспечения является ежедневный стендап (известный как ежедневный скрам в фреймворке Scrum). В течение короткого сеанса (например, 15 минут) члены команды сообща рассматривают, как они продвигаются к своей цели, и соглашаются, нужно ли им адаптировать свой подход. Чтобы придерживаться согласованного лимита времени, команды часто используют простые закодированные вопросы (например, что они завершили в предыдущий день, что они намерены завершить в этот день и есть ли какие-либо препятствия или риски для прогресса) и откладывают подробные обсуждения и решение проблем до окончания стендапа. [38]

Фокус на качестве

Парное программирование , гибкая методика разработки, используемая в XP

Конкретные инструменты и методы, такие как непрерывная интеграция , автоматизированное модульное тестирование , парное программирование , разработка через тестирование , шаблоны проектирования , разработка на основе поведения , проектирование на основе домена , рефакторинг кода и другие методы часто используются для улучшения качества и повышения гибкости разработки продукта. [39] Это основано на проектировании и создании качества с самого начала и возможности продемонстрировать программное обеспечение клиентам в любой момент или, по крайней мере, в конце каждой итерации. [40]

Философия

По сравнению с традиционной разработкой программного обеспечения, гибкая разработка программного обеспечения в основном нацелена на сложные системы и разработку продуктов с динамическими, недетерминированными и нелинейными свойствами . Точные оценки, стабильные планы и прогнозы часто трудно получить на ранних стадиях, и уверенность в них, вероятно , будет низкой. Практикующие Agile используют свою свободную волю , чтобы сократить « прыжок веры », который необходим, прежде чем можно будет получить какие-либо доказательства ценности . [41] Требования и проектирование считаются возникающими . Большие предварительные спецификации, вероятно, приведут к большим потерям в таких случаях, т. е. не являются экономически обоснованными. Эти основные аргументы и предыдущий отраслевой опыт , извлеченные из многих лет успехов и неудач, помогли сформировать благоприятные условия гибкой разработки для адаптивного, итеративного и эволюционного развития. [42]

Адаптивный против предиктивного

Методы разработки существуют в континууме от адаптивных до предиктивных . [43] Методы гибкой разработки программного обеспечения лежат на адаптивной стороне этого континуума. Одним из ключевых методов адаптивной разработки является подход «набегающей волны» к планированию расписания, который определяет контрольные точки, но оставляет гибкость в пути их достижения, а также позволяет изменять сами контрольные точки. [44]

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

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

Анализ рисков может использоваться для выбора между адаптивными ( гибкими или ориентированными на ценность ) и прогнозными ( ориентированными на план ) методами. [45] Барри Бём и Ричард Тернер предполагают, что каждая сторона континуума имеет свою собственную базу , а именно: [46]

Agile против водопада

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

Поскольку тестирование выполняется в каждой итерации, которая разрабатывает небольшую часть программного обеспечения, пользователи могут часто использовать эти новые части программного обеспечения и проверять ценность. После того, как пользователи узнают реальную ценность обновленной части программного обеспечения, они могут принимать более обоснованные решения о будущем программного обеспечения. Наличие ретроспективы ценности и сессии перепланирования программного обеспечения в каждой итерации — в Scrum итерации обычно длятся всего две недели — помогает команде постоянно адаптировать свои планы, чтобы максимизировать ценность, которую она предоставляет. Это следует шаблону, похожему на цикл «планируй-делай-проверяй-действуй » (PDCA), поскольку работа планируется , выполняется , проверяется (в обзоре и ретроспективе), и любые согласованные изменения вносятся в действие .

Этот итеративный подход поддерживает мышление продукта, а не проекта . Это обеспечивает большую гибкость в процессе разработки; тогда как в проектах требования определяются и фиксируются с самого начала, что затрудняет их последующее изменение. Итеративная разработка продукта позволяет программному обеспечению развиваться в ответ на изменения в бизнес-среде или требованиях рынка.

Код против документации

В письме в IEEE Computer Стивен Ракитин выразил цинизм по поводу гибкой разработки программного обеспечения, назвав ее « очередной попыткой подорвать дисциплину разработки программного обеспечения » и переведя « рабочее программное обеспечение вместо исчерпывающей документации » как « мы хотим тратить все наше время на кодирование. Помните, настоящие программисты не пишут документацию ». [47]

Это оспаривается сторонниками гибкой разработки программного обеспечения, которые утверждают, что разработчики должны писать документацию, если это лучший способ достичь соответствующих целей, но что часто существуют лучшие способы достижения этих целей, чем написание статической документации. [48] Скотт Эмблер утверждает, что документация должна быть «едва достаточно хорошей» (JBGE), [49] что слишком много или всеобъемлющая документация обычно приводит к потерям, и разработчики редко доверяют подробной документации, потому что она обычно не синхронизирована с кодом, [48] в то время как слишком мало документации может также вызывать проблемы для обслуживания, общения, обучения и обмена знаниями. Алистер Кокберн писал о методе Crystal Clear :

Crystal рассматривает разработку как серию кооперативных игр и предполагает, что документации будет достаточно, чтобы помочь следующей победе в следующей игре. Рабочие продукты для Crystal включают варианты использования, список рисков, план итерации, основные модели домена и проектные заметки для информирования о выборе... однако для этих документов нет шаблонов, а описания обязательно расплывчаты, но цель ясна, достаточно документации для следующей игры. Я всегда склонен характеризовать это для своей команды так: что бы вы хотели знать, если бы присоединились к команде завтра.

—  Алистер Кокберн [50]

Методы

Поддержка жизненного цикла разработки программного обеспечения [51]
В основе Agile Unified Process (AUP) лежит унифицированный процесс (фреймворк итеративного и инкрементального процесса разработки программного обеспечения).

Методы гибкой разработки программного обеспечения поддерживают широкий спектр жизненного цикла разработки программного обеспечения . [51] Некоторые методы фокусируются на практиках (например, XP , прагматичное программирование , гибкое моделирование), в то время как некоторые фокусируются на управлении потоком работы (например, Scrum, Kanban). Некоторые поддерживают деятельность по спецификации требований и разработке (например, FDD ), в то время как некоторые стремятся охватить полный жизненный цикл разработки (например, DSDM , RUP ).

Известные гибкие фреймворки разработки программного обеспечения включают в себя:

Гибкие методы разработки программного обеспечения

Гибкая разработка программного обеспечения поддерживается рядом конкретных практик, охватывающих такие области, как требования, проектирование, моделирование, кодирование, тестирование, планирование, управление рисками, процесс, качество и т. д. Некоторые известные гибкие практики разработки программного обеспечения включают в себя: [52]

Разработка на основе приемочных испытаний

Разработка на основе приемочных испытаний (ATDD) — это методология разработки , основанная на общении между бизнес-клиентами, разработчиками и тестировщиками. [53] ATDD охватывает многие из тех же практик, что и спецификация по примерам (SBE), [54] [55] разработка на основе поведения (BDD), [56] разработка на основе примеров (EDD), [57] и разработка на основе поддержки, также называемая разработкой на основе тестовых историй (SDD). [58] Все эти процессы помогают разработчикам и тестировщикам понять потребности заказчика до внедрения и позволяют заказчикам общаться на их родном языке.

Гибкое моделирование

Agile modeling (AM) — это методология моделирования и документирования программных систем, основанная на передовом опыте. Это набор ценностей и принципов, которые можно применять в (agile) проекте разработки программного обеспечения. Эта методология более гибкая, чем традиционные методы моделирования, что делает ее более подходящей для быстро меняющейся среды. [59] Она является частью набора инструментов гибкой разработки программного обеспечения.

Agile-тестирование

Agile-тестирование — это практика тестирования программного обеспечения , которая следует принципам гибкой разработки программного обеспечения. Agile-тестирование охватывает всех членов кросс-функциональной гибкой команды, с особым опытом, предоставляемым тестировщиками, для обеспечения предоставления желаемой клиентом бизнес-ценности с частыми интервалами, работая в устойчивом темпе. Спецификация по примерам используется для фиксации примеров желаемого и нежелательного поведения и руководства кодированием.

Отставание

В рамках гибкого управления проектами бэклог продукта относится к приоритетному списку функциональности, которую должен содержать продукт. Иногда его называют списком дел [60] , и он считается «артефактом» (формой документации) в рамках разработки программного обеспечения Scrum . [61] Бэклог продукта имеет разные названия в различных рамках управления проектами, например, бэклог продукта в Scrum, [61] [62] список рабочих элементов в дисциплинированном Agile [62] [ 63] и пул опций в Lean [62] В рамках Scrum создание и постоянное поддержание бэклога продукта является частью ответственности владельца продукта [64] .

Развитие, основанное на поведении

Разработка на основе поведения (BDD) подразумевает именование тестов программного обеспечения с использованием языка предметной области для описания поведения кода .

Непрерывная интеграция

Непрерывная интеграция (CI) — это практика частой интеграции изменений исходного кода и обеспечения работоспособности интегрированной кодовой базы.

Кросс-функциональная команда

Кросс -функциональная команда (XFN), также известная как многопрофильная команда или междисциплинарная команда, [65] [66] [67] представляет собой группу людей с различным функциональным опытом, работающих над достижением общей цели. [68] Она может включать людей из финансового , маркетингового , операционного и кадрового отделов. Как правило, она включает сотрудников со всех уровней организации. Члены также могут приходить извне организации (в частности, от поставщиков, ключевых клиентов или консультантов).

Ежедневный стендап

Стоячая встреча (stum) — это встреча , в которой участники обычно участвуют стоя . Дискомфорт от длительного стояния призван сделать встречи короткими.

Метод пошива

В литературе понятие адаптации метода обозначается разными терминами, включая «адаптацию метода», «адаптацию фрагмента метода» и «ситуационную инженерию метода». Адаптация метода определяется как:

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

—  Мехмет Нафиз Айдын и др., Метод разработки гибких информационных систем в действии [69]

Ситуационную целесообразность следует рассматривать как отличительную характеристику между гибкими методами и более плановыми методами разработки программного обеспечения, при этом гибкие методы позволяют группам разработки продукта адаптировать рабочие практики в соответствии с потребностями отдельных продуктов. [70] [69] Потенциально большинство гибких методов могут быть пригодны для адаптации методов, [51] например, DSDM , адаптированный в контексте CMM . [71] и XP, адаптированный с помощью техники Rule Description Practices (RDP). [72] Однако не все сторонники гибких методов согласны со Швабером, отмечающим, что «именно так мы изначально попали в беду, думая, что проблема была в отсутствии идеальной методологии. Усилия [должны] быть сосредоточены на изменениях, [необходимых] на предприятии». [73] Бас Водде усилил эту точку зрения, предположив, что в отличие от традиционных, больших методологий, которые требуют от вас выбора элементов, Scrum предоставляет основы, поверх которых вы добавляете дополнительные элементы для локализации и контекстуализации его использования. [74] Практикующие специалисты редко используют методы разработки систем или, в частности, гибкие методы по инструкции, часто предпочитая исключить или адаптировать некоторые практики метода, чтобы создать внутренний метод. [75]

На практике методы можно адаптировать с помощью различных инструментов. Общие языки моделирования процессов, такие как Unified Modeling Language, можно использовать для адаптации методов разработки программного обеспечения. Однако существуют также специализированные инструменты для разработки методов, такие как Essence Theory of Software Engineering of SEMAT . [76]

Крупномасштабные, офшорные и распределенные

Гибкая разработка программного обеспечения широко рассматривается как очень подходящая для определенных типов сред, включая небольшие группы экспертов, работающих над новыми проектами , [46] [77], а проблемы и ограничения, возникающие при внедрении гибких методов разработки программного обеспечения в крупной организации с устаревшей инфраструктурой , хорошо документированы и понятны. [78]

В ответ на это был разработан ряд стратегий и моделей для преодоления проблем, связанных с крупномасштабными усилиями по разработке (>20 разработчиков) [79] [80] или распределенными (не размещенными в одном месте) командами разработчиков [81] [82] , а также с другими проблемами; и в настоящее время существует несколько признанных фреймворков, которые стремятся смягчить или избежать этих проблем.

Существует множество противоречивых точек зрения относительно того, являются ли все эти подходы эффективными или действительно ли они соответствуют определению гибкой разработки, и это остается активной и продолжающейся областью исследований. [79] [83]

Когда гибкая разработка программного обеспечения применяется в распределенной среде (с командами, разбросанными по нескольким бизнес-локациям), ее обычно называют распределенной гибкой разработкой программного обеспечения . Цель состоит в том, чтобы использовать уникальные преимущества, предлагаемые каждым подходом. Распределенная разработка позволяет организациям создавать программное обеспечение, стратегически настраивая команды в разных частях земного шара, фактически создавая программное обеспечение круглосуточно (чаще называемое моделью follow-the-sun). С другой стороны, гибкая разработка обеспечивает повышенную прозрачность, непрерывную обратную связь и большую гибкость при реагировании на изменения.

Регулируемые домены

Методы гибкой разработки программного обеспечения изначально рассматривались как наиболее подходящие для разработки некритических продуктов, поэтому их исключили из использования в регулируемых областях, таких как медицинские приборы , фармацевтика, финансы, ядерные системы, автомобилестроение и авионика и т. д. Однако за последние несколько лет было предпринято несколько инициатив по адаптации гибких методов для этих областей. [84] [85] [86] [87] [88]

Существует множество стандартов, которые могут применяться в регулируемых областях, включая ISO 26262 , ISO 9000 , ISO 9001 и ISO/IEC 15504. Ряд ключевых проблем имеют особое значение в регулируемых областях: [89]

Опыт и принятие

Хотя гибкие методы разработки программного обеспечения могут использоваться с любой парадигмой или языком программирования на практике, изначально они были тесно связаны с объектно-ориентированными средами, такими как Smalltalk, Lisp и позднее Java, C#. Первоначальными последователями гибких методов обычно были небольшие и средние команды, работающие над беспрецедентными системами с требованиями, которые было трудно окончательно определить и которые, вероятно, менялись по мере разработки системы. В этом разделе описываются общие проблемы, с которыми сталкиваются организации, когда они пытаются принять гибкие методы разработки программного обеспечения, а также различные методы измерения качества и производительности гибких команд. [90]

Измерение гибкости

Внутренние оценки

Индекс измерения гибкости , среди прочего, оценивает разработки по пяти измерениям разработки продукта (продолжительность, риск, новизна, усилия и взаимодействие). [91] Другие методы основаны на измеримых целях [92] , и одно исследование предполагает, что скорость может использоваться как метрика гибкости. Существуют также гибкие самооценки для определения того, использует ли команда гибкие методы разработки программного обеспечения (тест Nokia, [93] тест Karlskrona, [94] тест на 42 балла). [95]

Опросы общественного мнения

Одним из первых исследований, сообщающих о росте качества, производительности и удовлетворенности бизнеса за счет использования гибких методов разработки программного обеспечения, был опрос, проведенный компанией Shine Technologies с ноября 2002 года по январь 2003 года. [96]

Аналогичное исследование, State of Agile , проводится каждый год, начиная с 2006 года, с тысячами участников из сообщества разработчиков программного обеспечения. Оно отслеживает тенденции в отношении предполагаемых преимуществ гибкости, извлеченных уроков и передового опыта. В каждом исследовании сообщалось об увеличении числа тех, кто утверждает, что гибкая разработка программного обеспечения помогает им быстрее поставлять программное обеспечение; улучшает их способность справляться с меняющимися приоритетами клиентов; и повышает их производительность. [97] Опросы также постоянно показывают лучшие результаты с гибкими методами разработки продуктов по сравнению с классическим управлением проектами. [98] [99] В целом, есть сообщения о том, что некоторые считают, что гибкие методы разработки все еще слишком молоды, чтобы проводить обширные академические исследования их успеха. [100]

Распространенные ошибки гибкой разработки программного обеспечения

Организации и команды, внедряющие гибкую разработку программного обеспечения, часто сталкиваются с трудностями при переходе от более традиционных методов, таких как каскадная разработка , например, когда командам навязывают гибкий процесс. [101] Их часто называют антишаблонами гибкой разработки или, что более распространено, запахами гибкой разработки . Ниже приведены некоторые распространенные примеры:

Отсутствие общего дизайна продукта

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

Добавление историй в итерацию в процессе

В гибкой разработке программного обеспечения истории (похожие на описания вариантов использования ) обычно используются для определения требований, а итерация — это короткий период времени, в течение которого команда обязуется достичь определенных целей. [103] Добавление историй к итерации в процессе работы вредит хорошему потоку работы. Их следует добавлять в бэклог продукта и расставлять по приоритетам для последующей итерации, или в редких случаях итерация может быть отменена. [104]

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

Отсутствие спонсорской поддержки

Agile-разработка программного обеспечения часто реализуется как низовое усилие в организациях командами разработчиков программного обеспечения, пытающимися оптимизировать свои процессы разработки и обеспечить согласованность в жизненном цикле разработки программного обеспечения. Не имея поддержки спонсоров, команды могут столкнуться с трудностями и сопротивлением со стороны деловых партнеров, других команд разработчиков и руководства. Кроме того, они могут пострадать без соответствующего финансирования и ресурсов. [105] Это увеличивает вероятность неудачи. [106]

Недостаточная подготовка

Опрос, проведенный VersionOne, показал, что респонденты назвали недостаточное обучение наиболее значимой причиной неудачных внедрений Agile [107]. Команды попали в ловушку, предполагая, что сокращенные процессы разработки Agile-ПО по сравнению с другими подходами, такими как каскадная модель, означают, что фактических правил для Agile-разработки ПО не существует. [ необходима ссылка ]

Роль владельца продукта не заполнена должным образом

Владелец продукта отвечает за представление бизнеса в процессе разработки и часто является самой ответственной ролью. [108]

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

Команды не сосредоточены

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

Чрезмерная подготовка/планирование

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

Решение проблем в ежедневном стендапе

Ежедневный стендап должен быть целенаправленным, своевременным собранием, на котором все члены команды распространяют информацию. Если происходит решение проблем, оно часто может включать только определенных членов команды и потенциально не является лучшим использованием времени всей команды. Если во время ежедневного стендапа команда начинает погружаться в решение проблем, его следует отложить до тех пор, пока подгруппа не сможет обсудить, обычно сразу после завершения стендапа. [111]

Постановка задач

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

Назначение работы также ограничивает членов команды определенными ролями (например, член команды А всегда должен выполнять работу с базой данных), что ограничивает возможности для перекрестного обучения. [112] Члены команды сами могут выбирать для себя задачи, которые расширяют их возможности и предоставляют возможности перекрестного обучения.

Scrum-мастер как участник

В фреймворке Scrum, который утверждает, что соответствует ценностям и принципам Agile, роль скрам-мастера заключается в обеспечении соблюдения процесса скрам и в обучении команды скрам в ходе этого процесса. Распространенной ошибкой является то, что скрам-мастер действует как участник. Хотя фреймворк Scrum не запрещает это, скрам-мастер должен убедиться, что у него есть возможность действовать в роли скрам-мастера в первую очередь, а не работать над задачами разработки. Роль скрам-мастера заключается в содействии процессу, а не в создании продукта. [113]

Если Scrum-мастер также будет заниматься несколькими задачами одновременно, это может привести к слишком частым переключениям контекста, что не позволит быть продуктивным. Кроме того, поскольку Scrum-мастер отвечает за устранение препятствий, чтобы команда могла двигаться вперед, выгода, получаемая от продвижения вперед отдельных задач, может не перевесить препятствия, отложенные из-за нехватки мощности. [114]

Отсутствие автоматизации тестирования

Из-за итеративной природы гибкой разработки часто требуется несколько раундов тестирования. Автоматизированное тестирование помогает снизить влияние повторяющихся модульных, интеграционных и регрессионных тестов и освобождает разработчиков и тестировщиков для сосредоточения на более ценной работе. [115]

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

Позволяя техническому долгу накапливаться

Сосредоточение на предоставлении новой функциональности может привести к увеличению технического долга . Команда должна выделить себе время на исправление дефектов и рефакторинг. Технический долг затрудняет планирование, увеличивая объем незапланированной работы, поскольку производственные дефекты отвлекают команду от дальнейшего прогресса. [116]

По мере развития системы важно проводить рефакторинг . [117] Со временем отсутствие постоянного обслуживания приводит к увеличению дефектов и затрат на разработку. [116]

Попытка взять на себя слишком много за одну итерацию

Распространенное заблуждение заключается в том, что гибкая разработка программного обеспечения допускает непрерывные изменения, однако бэклог итерации — это соглашение о том, какая работа может быть завершена в течение итерации. [118] Слишком много незавершенной работы (WIP) приводит к неэффективности, такой как переключение контекста и очередность. [119] Команда должна избегать ощущения давления, заставляющего ее брать на себя дополнительную работу. [120]

Фиксированное время, ресурсы, объем и качество

Agile-разработка программного обеспечения фиксирует время (продолжительность итерации), качество и, в идеале, ресурсы заранее (хотя поддержание фиксированных ресурсов может быть затруднено, если разработчики часто отвлекаются от задач для решения производственных инцидентов), в то время как область действия остается переменной. Заказчик или владелец продукта часто настаивают на фиксированной области действия для итерации. Однако команды должны неохотно брать на себя обязательства по фиксированному времени, ресурсам и области действия (обычно известному как треугольник управления проектами ). Попытки добавить область действия к фиксированному времени и ресурсам гибкой разработки программного обеспечения могут привести к снижению качества. [121]

Выгорание разработчиков

Из-за сфокусированного темпа и непрерывного характера гибких практик существует повышенный риск выгорания среди членов команды поставки. [122]

Гибкое управление

Agile-управление проектами — это итеративный процесс разработки, в котором от пользователей и заинтересованных сторон постоянно собирается обратная связь для создания правильного пользовательского опыта. Для выполнения гибкого процесса могут использоваться различные методы, в том числе Scrum , Extreme Programming , Lean и Kanban . [123] Термин Agile Management применяется к итеративному, инкрементальному методу управления проектированием и сборкой в ​​области инжиниринга, информационных технологий и других бизнес-областей, которые направлены на обеспечение разработки новых продуктов или услуг в очень гибкой и интерактивной манере на основе принципов, изложенных в Manifesto for Agile Software Development . [124] Метрики Agile Project Management помогают уменьшить путаницу, выявить слабые места и измерить производительность команды на протяжении всего цикла разработки. Гибкость цепочки поставок — это способность цепочки поставок справляться с неопределенностью и изменчивостью предложения и спроса. Гибкая цепочка поставок может быстро увеличивать и уменьшать свою мощность, поэтому она может адаптироваться к быстро меняющемуся спросу клиентов. Наконец, стратегическая гибкость — это способность организации менять свой курс действий по мере развития ее среды. Ключом к стратегической гибкости является достаточно раннее распознавание внешних изменений и распределение ресурсов для адаптации к этим меняющимся условиям. [123]

Методы Agile X также можно назвать экстремальным управлением проектами . Это вариант итеративного жизненного цикла [125] , где результаты представляются поэтапно. Основное различие между гибкой и итеративной разработкой заключается в том, что гибкие методы завершают небольшие части результатов в каждом цикле поставки (итерации), [126] в то время как итеративные методы развивают весь набор результатов с течением времени, завершая их ближе к концу проекта. Как итеративные, так и гибкие методы были разработаны в качестве реакции на различные препятствия, которые возникли в более последовательных формах организации проекта. Например, по мере того, как технологические проекты становятся сложнее, конечные пользователи, как правило, испытывают трудности с определением долгосрочных требований, не имея возможности просматривать прогрессивные прототипы. Проекты, которые развиваются итерациями, могут постоянно собирать обратную связь, чтобы помочь уточнить эти требования.

Agile-менеджмент также предлагает простую структуру, способствующую общению и размышлениям о прошлой работе среди членов команды . [127] Команды, которые использовали традиционное каскадное планирование и приняли гибкий способ разработки, обычно проходят фазу трансформации и часто получают помощь от гибких тренеров, которые помогают командам пройти через более плавную трансформацию. Обычно существует два стиля гибкого коучинга: основанный на подталкивании и основанный на вытягивании гибкий коучинг. Здесь «система подталкивания» может относиться к предварительной оценке того, какие задачи могут быть вписаны в спринт (подталкивающая работа), например, типичная для Scrum; тогда как «система вытягивания» может относиться к среде, в которой задачи выполняются только при наличии возможностей. [128] Подходы гибкого управления также использовались и адаптировались к деловому и государственному секторам. Например, в федеральном правительстве Соединенных Штатов Агентство США по международному развитию (USAID) использует подход к управлению совместными проектами, который фокусируется на включении стратегий сотрудничества, обучения и адаптации (CLA) для итерации и адаптации программирования. [129]

Методы Agile упоминаются в Руководстве к своду знаний по управлению проектами ( Руководство PMBOK, 6-е издание ) в определении жизненного цикла разработки продукта :

В жизненном цикле проекта обычно есть одна или несколько фаз, связанных с разработкой продукта, услуги или результата. Они называются жизненным циклом разработки (...) Адаптивные жизненные циклы бывают гибкими, итеративными или инкрементальными. Подробный объем определяется и утверждается до начала итерации. Адаптивные жизненные циклы также называются гибкими или жизненными циклами, управляемыми изменениями. [130]

Приложения вне сферы разработки программного обеспечения

Конференция Agile Brazil 2014

По словам Жана-Лу Рише (научный сотрудник Института стратегических инноваций и услуг ESSEC ), «этот подход может быть эффективно использован для непрограммных продуктов и для управления проектами в целом, особенно в областях инноваций и неопределенности». Результатом является продукт или проект, который наилучшим образом соответствует текущим потребностям клиентов и поставляется с минимальными затратами, отходами и временем, что позволяет компаниям достигать конечного результата раньше, чем при использовании традиционных подходов. [131]

Методы гибкой разработки программного обеспечения широко использовались для разработки программных продуктов, и некоторые из них используют определенные характеристики программного обеспечения, такие как объектные технологии . [132] Однако эти методы могут применяться для разработки непрограммных продуктов, таких как компьютеры, медицинские приборы, продукты питания, одежда и музыка. [133] Методы гибкой разработки программного обеспечения использовались при развертывании и миграции ИТ-инфраструктуры, не связанной с разработкой . Некоторые из более широких принципов гибкой разработки программного обеспечения также нашли применение в общем управлении [134] (например, стратегия, управление, риски, финансы) в терминах гибкости бизнеса или гибкого управления бизнесом. Методологии гибкого программного обеспечения также были приняты для использования в процессе обучения инженерии , итеративном процессе, основанном на данных, который применяет науки обучения , проектирование, ориентированное на человека , и принятие решений на основе данных для поддержки учащихся и их развития. [135]

Парадигмы гибкой разработки программного обеспечения могут быть использованы в других областях жизни, таких как воспитание детей. Их успех в развитии детей может быть основан на некоторых базовых принципах управления: коммуникации, адаптации и осведомленности. В своем выступлении на TED Talk Брюс Файлер рассказал, как он применил базовые гибкие парадигмы к управлению домашним хозяйством и воспитанию детей. [136]

Критика

Agile-методологии были названы потенциально неэффективными в крупных организациях и определенных типах разработки. [137] Многие организации считают, что гибкие методологии разработки программного обеспечения слишком экстремальны, и принимают гибридный подход [138] , который смешивает элементы гибкой разработки программного обеспечения и подходы, основанные на плане. [139] Некоторые методы, такие как метод разработки динамических систем (DSDM), пытаются сделать это дисциплинированным образом, не жертвуя фундаментальными принципами.

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

Алистер Кокберн организовал празднование 10-й годовщины Манифеста гибкой разработки программного обеспечения в Сноуберде, штат Юта, 12 февраля 2011 года, собрав около 30+ человек, которые были вовлечены в первоначальную встречу и с тех пор. Был собран список из примерно 20 слонов в комнате ('необсуждаемые' agile-темы/проблемы), включая аспекты: альянсы, неудачи и ограничения практик гибкой разработки программного обеспечения и контекст (возможные причины: коммерческие интересы, деконтекстуализация, отсутствие очевидного способа добиться прогресса на основе неудач, ограниченные объективные доказательства, когнитивные предубеждения и ошибки рассуждения), политика и культура. [141] Как писал Филипп Крухтен :

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

—  Филипп Крухтен [141]

«Манифест» мог оказать негативное влияние на управление и руководство в сфере высшего образования, поскольку он предлагал администраторам заменить более медленные традиционные и совещательные процессы более «гибкими». Эта концепция редко находила признание среди университетских преподавателей. [142]

Другая критика заключается в том, что во многих отношениях гибкое управление и традиционные методы управления в конечном итоге оказываются в оппозиции друг к другу. Распространенная критика этой практики заключается в том, что время, потраченное на попытки изучить и внедрить практику, слишком дорого, несмотря на потенциальные выгоды. Переход от традиционного управления к гибкому управлению требует полного подчинения гибкому и твердой приверженности всех членов организации доведению процесса до конца. Такие проблемы, как неравные результаты в организации, слишком много изменений для способности сотрудников справиться или отсутствие гарантий в конце трансформации, — вот лишь несколько примеров. [143]

Смотрите также

Ссылки

  1. ^ "Что такое Agile?". Agile Alliance . Получено 16 июля 2024 г.
  2. ^ abc Кент Бек ; Джеймс Греннинг; Роберт К. Мартин ; Майк Бидл; Джим Хайсмит ; Стив Меллор ; Ари ван Беннекум; Эндрю Хант ; Кен Швабер ; Алистер Кокберн ; Рон Джеффрис ; Джефф Сазерленд ; Уорд Каннингем ; Джон Керн; Дэйв Томас ; Мартин Фаулер ; Брайан Марик (2001). «Манифест гибкой разработки программного обеспечения». Agile Alliance . Получено 14 июня 2010 г.
  3. ^ ab Larman, Craig (2004). Agile и итеративная разработка: руководство для менеджеров . Addison-Wesley. стр. 27. ISBN 978-0-13-111155-4.
  4. ^ Rally (2010). «Agile с заглавной «A» против Agile с маленькой «a»». Архивировано из оригинала 5 января 2016 года . Получено 9 сентября 2015 года .{{cite web}}: CS1 maint: unfit URL (link)
  5. ^ Коллиер 2011.
  6. ^ "Что такое Agile Software Development?". Agile Alliance. 8 июня 2013 г. Получено 4 апреля 2015 г.
  7. ^ Dybå, Tore; Dingsøyr, Torgeir (1 августа 2008 г.). «Эмпирические исследования гибкой разработки программного обеспечения: систематический обзор». Information and Software Technology . 50 (9–10): 833–859. doi :10.1016/j.infsof.2008.01.006. ISSN  0950-5849. S2CID  2244031.
  8. ^ Ли, Гванху; Ся, Вэйдун (2010). «На пути к гибкости: комплексный анализ количественных и качественных полевых данных о гибкости разработки программного обеспечения». MIS Quarterly . 34 (1): 87–114. doi :10.2307/20721416. JSTOR  20721416. S2CID  26477249.
  9. ^ Кролл, Дж.; Ричардсон, И.; Прикладницки, Р.; Оди, Дж. Л. (2018). «Эмпирические доказательства в разработке программного обеспечения компании Sun: систематическое картографическое исследование». Информационные и программные технологии . 93 : 30–44. doi : 10.1016/j.infsof.2017.08.011. hdl : 10344/6233 .
  10. ^ Джеральд М. Вайнберг , цитируется в Larman & Basili 2003, стр. 47–56 «Мы занимались инкрементальной разработкой еще в 1957 году в Лос-Анджелесе под руководством Берни Димсдейла в корпорации IBM Service Bureau . Он был коллегой Джона фон Неймана , так что, возможно, он научился этому там или считал это совершенно естественным. Я помню, как Герб Джейкобс (в первую очередь, хотя мы все участвовали) разрабатывал большую симуляцию для Motorola, где использовалась техника, насколько я могу судить... Все мы, насколько я помню, считали, что каскадная модель огромного проекта была довольно глупой или, по крайней мере, невежественной по отношению к реалиям. Я думаю, что описание водопадной модели помогло нам понять, что мы занимаемся чем-то другим, чем-то неназванным, кроме как «разработка программного обеспечения».
  11. ^ "Evolutionary Project Management (Оригинальная страница, внешний архив)". Gilb. Архивировано из оригинала 27 марта 2016 года . Получено 30 апреля 2017 года .
  12. ^ "Evolutionary Project Management (Новая страница)". Gilb . Получено 30 апреля 2017 г. .
  13. ^ Эдмондс, EA (1974). «Процесс разработки программного обеспечения для нетехнических пользователей как адаптивной системы». Общие системы . 19 : 215–18.
  14. ^ Гилб, Том (1 апреля 1981 г.). «Эволюционное развитие». ACM SIGSOFT Software Engineering Notes . 6 (2): 17. doi :10.1145/1010865.1010868. S2CID  33902347.
  15. ^ Свамидасс, П. М., ред. (2000), «Тяжелая проектная организацияHEAVYWEIGHT PROJECT ORGANIZATION», Энциклопедия управления производством и производством , Бостон, Массачусетс: Springer US, стр. 261–262, doi :10.1007/1-4020-0612-8_400, ISBN 978-1-4020-0612-8, получено 22 июня 2022 г.
  16. ^ Мартин, Джеймс (1991). Быстрая разработка приложений. Macmillan. ISBN 978-0-02-376775-3.
  17. ^ Керр, Джеймс М.; Хантер, Ричард (1993). Внутри RAD: как построить полностью функциональную систему за 90 дней или меньше . McGraw-Hill. стр. 3. ISBN 978-0-07-034223-1.
  18. ^ Институт Якокки (1991). «Стратегия производственного предприятия 21-го века: взгляд с позиций отрасли». Институт Якокки, Университет Лихай, Бетлехем, Пенсильвания.
  19. ^ Пресли, А., Дж. Миллс и Д. Лайлс (1995). «Гибкое аэрокосмическое производство». Nepcon East 1995, Бостон.
  20. ^ Санчес, Луис (ноябрь 2010 г.). «Обзор гибких производственных систем». Международный журнал исследований производства (39(16):3561-3600).
  21. ^ Андерсон, Дэвид (2005). «Декларация о взаимозависимости». Архивировано из оригинала 27 января 2018 года . Получено 4 октября 2018 года .
  22. ^ Макдональд, Кент (1 ноября 2016 г.). «Как вы можете помочь Agile Alliance помочь вам». Блог Agile Alliance . Получено 4 июля 2017 г.
  23. ^ "Examining the Agile Manifesto". Ambysoft Inc. Получено 6 апреля 2011 г.
  24. ^ Джим Хайсмит (2001). «История: Манифест Agile». agilemanifesto.org.
  25. ^ ab Kent Beck ; James Grenning; Robert C. Martin ; Mike Beedle; Jim Highsmith ; Steve Mellor ; Arie van Bennekum; Andrew Hunt ; Ken Schwaber ; Alistair Cockburn ; Ron Jeffries ; Jeff Sutherland ; Ward Cunningham ; Jon Kern; Dave Thomas ; Martin Fowler ; Brian Marick (2001). "Principles behind the Agile Manifesto". Agile Alliance. Архивировано из оригинала 14 июня 2010 года . Получено 6 июня 2010 года .
  26. ^ Институт управления проектами 2021, 2.3.3 Подходы к разработке.
  27. ^ Рубин 2013.
  28. ^ Институт управления проектами 2021, §3.12 Обеспечение изменений для достижения предполагаемого будущего состояния.
  29. ^ Моран, А. (2014). Agile Risk Management . Springer Verlag. ISBN 978-3319050072.
  30. ^ Бек, Кент (1999). «Принятие изменений с помощью экстремального программирования». Компьютер . 32 (10): 70–77. doi :10.1109/2.796139.
  31. ^ Мергель, Инес (июль 2016 г.). «Гибкое управление инновациями в правительстве: исследовательская программа». Government Information Quarterly . 33 (3): 516–523. doi :10.1016/j.giq.2016.07.004.
  32. ^ Прейсс, Дебора Хартманн (13 октября 2006 г.). «Исследование: Совместно размещенные команды против фермы-кубика». InfoQ . Получено 23 октября 2018 г. .
  33. ^ Кокберн, Алистер (2007). «Agile Software Development: The Cooperative Game». www.pearson.com (2-е изд.). Addison-Wesley Professional . Получено 23 октября 2018 г.
  34. ^ «Изменение управления | Исследования».
  35. ^ Джейн, Парита; Шарма, Арун; Ахуджа, Лакшми (август 2018 г.). «Влияние процесса гибкой разработки программного обеспечения на качество программного продукта». 2018 7-я Международная конференция по надежности, технологиям инфокоммуникаций и оптимизации (тенденции и будущие направления) (ICRITO) . Нойда, Индия: IEEE. стр. 812–815. doi :10.1109/ICRITO.2018.8748529. ISBN 978-1-5386-4692-2. S2CID  195775457.
  36. ^ Институт управления проектами 2021, §2.7.3.2 Информационные излучатели.
  37. ^ Эмблер, Скотт (12 апреля 2002 г.). Agile Modeling: Effective Practices for EXtreme Programming and the Unified Process . John Wiley & Sons. стр. 12, 164, 363. ISBN 978-0-471-20282-0.
  38. ^ Василяускас, Видас (2014). «Разработка гибких методов управления задачами и командами проектов». Eylean. Архивировано из оригинала 15 сентября 2014 г. Получено 15 сентября 2014 г.
  39. ^ Джеффрис, Рон; Андерсон, Энн; Хендриксон, Чет (2001). Extreme Programming installed. Addison-Weslsy. стр. 72–147. ISBN 978-0201-70842-4.
  40. ^ Лиза Криспин; Джанет Грегори (2009). Agile Testing: A Practical Guide for Testers and Agile Teams . Addison-Wesley.
  41. ^ Митчелл, Ян (2016). Agile Development in Practice . Tamare House. стр. 11. ISBN 978-1-908552-49-5.
  42. ^ Ларман, Крейг (2004). Гибкая и итеративная разработка: руководство для менеджеров . Addison-Wesley. стр. 27. ISBN 978-0-13-111155-4.
  43. ^ Boehm, B. ; R. Turner (2004). Баланс между гибкостью и дисциплиной: руководство для озадаченных . Бостон, Массачусетс: Addison-Wesley. ISBN 978-0-321-18612-6.Приложение А, страницы 165–194
  44. ^ Ларман, Крейг (2004). "Глава 11: Практические советы". Agile и итеративная разработка: Руководство для менеджеров . Addison-Wesley Professional. стр. 253. ISBN 9780131111554. Получено 14 октября 2013 г.
  45. ^ Sliger, Michele; Broderick, Stacia (2008). Мост менеджера программного проекта к гибкости . Addison-Wesley. стр. 46. ISBN 978-0-321-50275-9.
  46. ^ ab Boehm, B. ; R. Turner (2004). Баланс гибкости и дисциплины: руководство для растерянных . Бостон, Массачусетс: Addison-Wesley. стр. 55–57. ISBN 978-0-321-18612-6.
  47. ^ Ракитин, Стивен Р. (2001). "Манифест вызывает цинизм: письмо читателя редактору Стивена Р. Ракитина". IEEE Computer . 34 (12): 4. doi :10.1109/MC.2001.10095. S2CID  221106984. Статья под названием "Гибкая разработка программного обеспечения: бизнес инноваций" ... является еще одной попыткой подорвать дисциплину разработки программного обеспечения ... Мы хотим тратить все свое время на кодирование. Помните, настоящие программисты не пишут документацию.
  48. ^ Скотт Эмблер (16 апреля 2023 г.). «Agile/Lean документация: стратегии гибкой разработки программного обеспечения».
  49. ^ Скотт Эмблер. «Just Barely Good Enough Models and Documents: An Agile Best Practice». Архивировано из оригинала 8 октября 2014 г. Получено 24 января 2014 г.
  50. Джеффри Уайзман (18 июля 2007 г.). «Требуют ли гибкие методы документирования?». InfoQ.цитируя Купера, Яна (6 июля 2007 г.). "Сигналы Staccato: Agile и документация". WordPress.com .
  51. ^ abc Абрахамсон П., Сало О, Ронкайнен Дж, Варста Дж (2002). Гибкие методы разработки программного обеспечения: обзор и анализ (PDF) (Технический отчет). ВТТ . 478.
  52. ^ "Guide to Agile Practices". Agile Alliance. Архивировано из оригинала 9 февраля 2014 г.
  53. ^ Пью, Кен (2011). Lean-Agile Acceptance Test-Driven Development: Better Software Through Collaboration . Addison-Wesley. ISBN 978-0321714084.
  54. ^ Аджич, Гойко. (2009) Преодоление разрыва в коммуникации: спецификация на примере и гибкое приемочное тестирование , Neuri Limited,
  55. ^ Аджич, Гойко (2011). Спецификация на примере: как успешные команды поставляют правильное программное обеспечение . Мэннинг. ISBN 978-0-321-27865-4.
  56. ^ Челимски, Дэвид, Дэйв Астелс, Зак Деннис, Аслак Хеллесой, Брайан Хелмкамп и Дэн Норт. Книга RSpec: Разработка на основе поведения с RSpec, Cucumber и друзьями. Книжная полка Pragmatic.
  57. ^ "Example Driven Design" . Получено 15 апреля 2013 г. .
  58. ^ "Story Test-Driven Development" (PDF) . Получено 15 апреля 2013 г. .
  59. ^ Домашняя страница Agile Modeling (AM), эффективные методы моделирования и документирования
  60. ^ Atlassian. «Бэклог продукта: ваш окончательный список дел». Atlassian . Получено 19 декабря 2021 г. .
  61. ^ ab "Что такое бэклог продукта?". Scrum.org . Получено 19 декабря 2021 г.
  62. ^ abc "Agile Core Practice: Prioritized Requirements". agilemodeling.com . Получено 19 декабря 2021 г. .
  63. ^ "Артефакт: Список рабочих элементов". www.utm.mx . Получено 19 декабря 2021 г. .
  64. ^ "Produkteier | Digitaliseringsdirektoratet" . Проверено 15 ноября 2021 г.
  65. ^ Что такое кросс-функциональная команда? Определение и значение
  66. ^ Использование XFN в качестве аббревиатуры
  67. ^ Блог о лидерстве под названием XFN.
  68. ^ Краевский, Л. Дж. и Л. П. Ритцман. 2005. Управление операциями: процессы и цепочки создания стоимости. Pearson Education, Верхняя Сэддл-Ривер.
  69. ^ ab Aydin, MN; Harmsen, F.; Slooten; Stagwee, RA (2004). «Использование метода разработки гибких информационных систем». Turk J Elec Engin . 12 (2): 127–138.
  70. ^ Моррис, Дэвид (2015). Парадокс Agile-трансформации: почему слишком большие попытки стать Agile мешают организациям стать по-настоящему гибкими . Новая Зеландия: Университет Окленда. doi : 10.13140/RG.2.2.32698.08640.
  71. ^ Абрахамссон, П., Варста, Дж., Сипонен, М. Т. и Ронкайнен, Дж. (2003). Новые направления в гибких методах: сравнительный анализ. Труды ICSE'03 , 244-254
  72. ^ Мирахорли, М.; Рад, АК; Шамс, Ф.; Пазоки, М.; Мирахорли, А. (2008). «Метод RDP: практика настройки XP». Труды международного семинара 2008 года по изучению гибких практик или перестрелке в загоне для гибких методов (APOS '08) . ACM. стр. 23–32. doi :10.1145/1370143.1370149. ISBN 978-1-60558-021-0. S2CID  9528636.
  73. ^ Швабер, К (2006) Scrum — это сложно и разрушительно.
  74. ^ Водде, Б. (2016) История LeSS. Заключительный доклад. Scrum Australia, Мельбурн. Апрель 2016 г.
  75. ^ Лагстедт, А. и Дальберг, Т. (2018). Понимание редкости выбора метода ИСД – ограниченная рациональность и функциональная глупость. Труды PACIS 2018. 154. https://aisel.aisnet.org/pacis2018/154.
  76. ^ Парк, Дж. С., Макмахон, П. Э. и Майбург, Б. (2016). Scrum на основе Essence. Заметки по программной инженерии ACM SIGSOFT, 41(1), стр. 1–8.
  77. ^ Бек, К. (1999). Объяснение экстремального программирования: примите изменения . Бостон, Массачусетс: Addison-Wesley. ISBN 978-0-321-27865-4.
  78. ^ Эванс, Ян. "Agile Delivery в British Telecom" . Получено 21 февраля 2011 г.
  79. ^ ab W. Scott Ambler (2006) Supersize Me в журнале доктора Добба, 15 февраля 2006 г.
  80. ^ Шааф, Р. Дж. (2007). Конференция Agility XL Systems and Software Technology 2007 Архивировано 13 марта 2016 г. в Wayback Machine , Тампа, Флорида
  81. ^ "Преодоление расстояния". Sdmagazine.com . Получено 1 февраля 2011 г.
  82. ^ Фаулер, Мартин. «Использование гибкого процесса разработки программного обеспечения с офшорной разработкой». Martinfowler.com . Получено 6 июня 2010 г.
  83. ^ Agile Processes Workshop II Управление несколькими параллельными Agile-проектами. Вашингтон: OOPSLA 2002
  84. ^ Коули, Ойсин; Ван, Сяофэн; Ричардсон, Ита (2010). «Методологии разработки бережливого/гибкого программного обеспечения в регулируемых средах – современное состояние». В Абрахамссон, Пекка; Оза, Нилай (ред.). Программное обеспечение и системы Lean Enterprise . Конспект лекций по обработке деловой информации. Том 65. С. 31–36. doi :10.1007/978-3-642-16416-3_4. hdl :10344/683. ISBN 978-3-642-16415-6.
  85. ^ Макхью, Мартин; Маккаффери, Фергал; Коди, Гаррет (4 ноября 2014 г.). «Agile Implementation within a Medical Device Software Organization». В Митасиунас, Антанас; Раут, Терри; О'Коннор, Рори В.; и др. (ред.). Software Process Improvement and Capability Determination. Communications in Computer and Information Science. Vol. 477. pp. 190–201. doi :10.1007/978-3-319-13036-1_17. ISBN 978-3-319-13035-4.
  86. ^ Ван, Ян; Рамадани, Жасмин; Вагнер, Стефан (29 ноября 2017 г.). «Исследовательское исследование применения процесса разработки Scrum для систем, критически важных для безопасности». Улучшение процесса разработки программного обеспечения, ориентированного на продукт . Конспект лекций по информатике. Том 10611. С. 324–340. arXiv : 1703.05375 . Bibcode :2017arXiv170305375W. doi :10.1007/978-3-319-69926-4_23. ISBN 9783319699257. S2CID  4585465.
  87. ^ "SafeScrum - СИНТЕФ" . Синтеф.номер . Проверено 26 марта 2019 г.
  88. ^ Тор Миклебуст, Тор Столхан, Гейр Кьетил Ханссен, Тормод Вен и Борге Хаугсет: Scrum, документация и стандарт программного обеспечения IEC 61508-3: 2010, http://www.sintef.no/globalassets/ec-61508-documentation-and -safescrum-psam12.pdf
  89. ^ Фицджеральд, Б.; Стол, К.-Дж.; О'Салливан, Р.; О'Брайен, Д. (май 2013 г.). «Масштабирование гибких методов в регулируемых средах: отраслевой пример». 2013 35-я Международная конференция по программной инженерии (ICSE) . стр. 863–872. doi :10.1109/ICSE.2013.6606635. hdl :10344/3055. ISBN 978-1-4673-3076-3. S2CID  192403.
  90. ^ Бек, Кент (2000). Объяснение экстремального программирования. Addison-Wesley. С. 1–24. ISBN 978-0201616415.
  91. ^ Датта, Субхаджит (2006). «Индекс измерения гибкости: метрика для перекрестка методологий разработки программного обеспечения». ACM-SE 44 Труды 44-й ежегодной региональной конференции Юго-Востока . стр. 271. doi :10.1145/1185448.1185509. ISBN 1595933158.
  92. ^ Питер Лаппо; Генри CT Эндрю. «Оценка гибкости» (PDF) . Архивировано из оригинала (PDF) 15 сентября 2009 г. . Получено 6 июня 2010 г. .
  93. ^ Джо Литтл (2 декабря 2007 г.). «Тест Nokia, тест, специфичный для Scrum». Agileconsortium.blogspot.com . Получено 6 июня 2010 г.
  94. ^ Марк Зойферт; Mayberg, Швеция. "Тест Карлскроны, общий тест на принятие гибкой методологии". Mayberg.se . Получено 5 апреля 2014 г.
  95. ^ «Насколько вы гибки? (Пройдите этот тест из 42 пунктов)». allaboutagile.com/. Архивировано из оригинала 5 мая 2014 г. Получено 3 апреля 2014 г.
  96. ^ "Результаты опроса Agile Methodologies" (PDF) . Shine Technologies. Январь 2003 г. Архивировано из оригинала (PDF) 21 августа 2010 г. Получено 3 июня 2010 г. 95% заявили, что эффекта не было или наблюдалось снижение затрат... 93% заявили, что производительность повысилась или значительно повысилась... 88% заявили, что качество повысилось или значительно повысилось... 83% заявили, что удовлетворенность бизнесом повысилась или значительно повысилась
  97. ^ "Отчет о состоянии Agile за 2013 год: почему Agile?". stateofagile.com. 27 января 2014 г. Архивировано из оригинала 28 августа 2014 г. Получено 13 августа 2014 г.
  98. ^ Status Quo Agile, Второе исследование успеха и форм использования гибких методов. Получено 1 июля 2015 г.
  99. ^ Эмблер, Скотт (3 августа 2006 г.). «Опрос говорит: Agile работает на практике». Доктор Доббс . Получено 3 июня 2010 г. Только 6% указали, что их производительность снизилась... 34% респондентов не сообщили об изменении производительности, а 60% сообщили о повышении производительности... 66% [ответили], что качество стало выше... 58% организаций сообщают о повышении удовлетворенности, тогда как только 3% сообщают о снижении удовлетворенности.
  100. ^ «Ответ на вопрос «Где доказательства того, что гибкие методы работают»». Agilemodeling.com. 19 января 2007 г. Получено 2 апреля 2010 г.
  101. ^ Шор и Уорден 2008, стр. 47
  102. ^ Бек, Кент (2000). Объяснение экстремального программирования. Addison-Wesley. С. 48–49. ISBN 978-0201616415.
  103. ^ Рауз, Маргарет. «Определение спринта (разработки программного обеспечения)». searchsoftwarequality.techtarget.com . Получено 2 октября 2015 г.
  104. ^ Голдштейн, Илан (11 октября 2011 г.). «Проблемы спринта – когда спринты превращаются в ползание». www.axisagile.com.au . Получено 8 июня 2014 г.
  105. ^ "Роли проекта и распределение ответственности". agile-only.com . Получено 15 июня 2014 г. .
  106. ^ Борн, Линда. «Что на самом деле делает спонсор проекта?». blogs.pmi.org . Архивировано из оригинала 7 июня 2014 г. Получено 8 июня 2014 г.
  107. ^ "9th State of Agile Report". Stage of Agile Survey . VersionOne. Архивировано из оригинала 12 января 2015 г. Получено 8 июня 2014 г.
  108. ^ Симс, Крис; Джонсон, Хиллари Луиза (15 февраля 2011 г.). Элементы Scrum (изд. Kindle). Dymaxicon. стр. 73.
  109. ^ Ротман, Джоанна Ротман (25 августа 2011 г.). «Когда у вас вообще нет владельца продукта». www.jrothman.com . Получено 8 июня 2014 г.
  110. ^ Фокс, Алисса (8 апреля 2014 г.). «Работа в нескольких гибких командах». techwhirl.com/ . Получено 14 июня 2014 г.
  111. ^ "Ежедневное собрание Scrum". www.mountaingoatsoftware.com . Получено 14 июня 2014 г. .
  112. ^ ab May, Robert. "Effective Sprint Planning". www.agileexecutives.org . Архивировано из оригинала 28 июня 2014 г. . Получено 14 июня 2014 г. .
  113. ^ Берчук, Стив. «Миссия выполнима: Scrum-мастер и технический участник». www.agileconnection.com . Получено 14 июня 2014 г.
  114. ^ "Как внедрить Agile Scrum" . Получено 4 января 2022 г.
  115. ^ Намта, Раджниш. «Мысли об автоматизации тестирования в Agile». www.infoq.com . Получено 14 июня 2014 г.
  116. ^ ab Band, Zvi (22 марта 2014 г.). "Технический долг + Красный октябрь" . Получено 8 июня 2014 г.
  117. ^ Шор, Джеймс. «Искусство гибкой разработки: рефакторинг». www.jamesshore.com . Получено 14 июня 2014 г.
  118. ^ "Шаг 4: Планирование спринта (задачи)". www.allaboutagile.com . Архивировано из оригинала 29 июня 2014 . Получено 14 июня 2014 .
  119. ^ Джордж, Клэр (3 марта 2014 г.). «Почему ограничение вашей работы в процессе имеет значение». leankit.com . Получено 14 июня 2014 г.
  120. ^ "Sprint Planning Meeting". www.mountaingoatsoftware.com . Получено 14 июня 2014 г. .
  121. ^ Макмиллан, Кит (13 мая 2010 г.). «Время, ресурсы, масштаб... и качество». www.adeptechllc.com . Получено 15 июня 2014 г. .
  122. ^ «Текущее исследование ограничений Agile». Procedia Computer Science . 78 : 291–297. Январь 2016. doi : 10.1016/j.procs.2016.02.056 .
  123. ^ ab «Закупки Agile. Что это значит?». 1 ноября 2019 г.
  124. ^ Моран, Алан (2015). Управление Agile: стратегия, реализация, организация и люди . Springer. ISBN 978-3-319-16262-1.
  125. ^ «Какой жизненный цикл лучше всего подходит для вашего проекта?». PMHut . 22 октября 2008 г. Получено 23 октября 2009 г.
  126. ^ "Agile Project Management". VersionOne . Получено 1 июня 2015 г. .
  127. ^ "Что такое Agile Management?". Project Laneways . Получено 1 июня 2015 г.
  128. ^ Бенсон, Джим; Де Мария Барри, Тонианн (2011). Персональный Канбан: картографирование работы, навигация по жизни (1-е изд.). Сиэтл, Вашингтон: Modus Cooperandi Press. стр. 38. ISBN 978-1-4538-0226-7.
  129. ^ USAID. "ADS Chapter 201 Program Cycle Operational Policy" Архивировано 23 октября 2019 г. на Wayback Machine . Получено 19 апреля 2017 г.
  130. ^ Институт управления проектами , Руководство к своду знаний по управлению проектами (Руководство PMBOK), шестое издание
  131. ^ Рише, Жан-Лу (2013). Гибкие инновации . Примеры и прикладные исследования, № 31. ЭССЕК-ИСИС. ISBN 978-2-36456-091-8 
  132. ^ Смит, Престон Г. (2007). Гибкая разработка продукта . Jossey-Bass. стр. 25. ISBN 978-0-7879-9584-3.
  133. ^ Ньютон Ли (2014). «Попасть в чарты Billboard: музыкальное производство как гибкая разработка программного обеспечения», Digital Da Vinci: компьютеры в музыке. Springer Science+Business Media. ISBN 978-1-4939-0535-5.
  134. ^ Моран, Алан (2015). Управление Agile: стратегия, реализация, организация и люди . Springer Verlag. ISBN 978-3-319-16262-1.
  135. ^ Барретт, М.; Гуделл, Дж. (2022), «Инструменты бережливой и гибкой разработки», Learning Engineering Toolkit , Routledge, стр. 269–278, doi :10.4324/9781003276579-16, ISBN 978-1-003-27657-9
  136. ^ «Гибкое программирование — для вашей семьи».
  137. ^ Ларман, Крейг; Бас Водде (13 августа 2009 г.). Десять основных организационных препятствий для крупномасштабного внедрения Agile. InformIT.
  138. ^ «Введение в гибридное управление проектами». 20 июля 2016 г.
  139. ^ Барлоу, Джордан Б.; Джастин Скотт Гибоуни; Марк Джеффри Кит; Дэвид У. Уилсон; Райан М. Шуцлер; Пол Бенджамин Лоури; Энтони Вэнс (2011). «Обзор и руководство по гибкой разработке в крупных организациях». Сообщения Ассоциации информационных систем . 29 (1): 25–44. doi : 10.17705/1CAIS.02902 .
  140. Куперсмит, Купе (4 июля 2011 г.). «Agile — это мода».
  141. ^ аб Крухтен, Филипп (20 июня 2011 г.). «Подростковый кризис Agile?». ИнфоВ.
  142. Ричард Утц, «Против административной речи», Chronicle of Higher Education, 24 июня 2020 г.
  143. ^ Кон, Майк (2015). Успех с Agile . Пирсон. С. 5–10. ISBN 978-0-321-57936-2.

Дальнейшее чтение

Внешние ссылки