Гибкая разработка программного обеспечения
Гибкая разработка программного обеспечения (Agile software development) — это семейство итеративных, инкрементальных методов, которые отдают приоритет работающему программному обеспечению, сотрудничеству с заказчиком и быстрой реакции на изменения, а не всестороннему предварительному планированию и документации.
Definition
Гибкая разработка программного обеспечения — это подход, при котором требования и решения развиваются посредством коротких, ограниченных по времени итераций кросс-функциональных команд, которые поставляют работающие инкременты и непрерывно учитывают обратную связь от заинтересованных сторон.
Scope
Эта тема охватывает ценности и принципы Agile-манифеста; конкретные фреймворки, такие как Scrum, экстремальное программирование (XP) и Kanban; практики, включая короткие итерации, непрерывную обратную связь, разработку через тестирование, парное программирование, рефакторинг и частые релизы; а также роли, церемонии и артефакты, которые структурируют гибкие команды.
Core questions
- Какие ценности и принципы отличают гибкие методы от разработки, управляемой планом?
- Как фреймворки, такие как Scrum и XP, структурируют итерации, роли и обратную связь?
- Какие инженерные практики делают возможной частую и надежную поставку?
- Когда и насколько хорошо гибкие методы масштабируются для крупных или распределенных организаций?
Key theories
- Ценности Agile-манифеста
- Четыре ценностных утверждения отдают приоритет людям и взаимодействиям, работающему программному обеспечению, сотрудничеству с заказчиком и реагированию на изменения, с двенадцатью поддерживающими принципами, подчеркивающими раннюю и непрерывную поставку и приветствующими меняющиеся требования.
- Фреймворк Scrum
- Scrum организует работу в спринты фиксированной длительности с определенными ролями (владелец продукта, скрам-мастер, разработчики), артефактами (бэклог продукта и спринта, инкремент) и событиями (планирование спринта, ежедневный скрам, обзор, ретроспектива) для инкрементальной поставки ценности.
- Практики экстремального программирования
- XP сочетает короткие итерации с дисциплинированными инженерными практиками, такими как разработка через тестирование, парное программирование, непрерывная интеграция, коллективное владение кодом и рефакторинг, чтобы поддерживать низкую стоимость изменений.
Clinical relevance
Гибкие методы в настоящее время являются доминирующим подходом в коммерческом программном обеспечении, улучшая реакцию на меняющиеся рынки и обеспечивая частую поставку ценности; их эффективность зависит от инженерной дисциплины, расширения прав и возможностей команды и культуры обратной связи, а не только от церемоний.
Evidence & guidelines
Руководство Scrum (The Scrum Guide) предоставляет широко принятое определение фреймворка Scrum, а Agile-манифест остается основополагающим заявлением о гибких ценностях; фреймворки масштабирования, такие как SAFe и LeSS, расширяют гибкие практики на крупные организации.
History
Легковесные методы, такие как Scrum и XP, появились в 1990-х годах как реакция на тяжеловесные, ориентированные на документацию процессы. В 2001 году семнадцать практиков опубликовали Agile-манифест, объединив эти методы под общими ценностями; впоследствии гибкая разработка стала мейнстримом и породила фреймворки масштабирования в 2010-х годах.
Debates
- Масштабирование Agile для крупных организаций
- Сохраняют ли принципы Agile свои преимущества при масштабировании с помощью таких фреймворков, как SAFe, является предметом споров; критики утверждают, что тяжеловесное масштабирование вновь вводит бюрократию, в то время как сторонники считают структурированную координацию необходимой для крупных предприятий.
Key figures
- Kent Beck
- Ken Schwaber
- Jeff Sutherland
- Martin Fowler
- Alistair Cockburn
Related topics
Seminal works
- beck2001
- beck2004
- schwaber2020
Frequently asked questions
- Является ли Agile противоположностью дисциплинированной инженерии?
- Нет. Эффективный Agile в значительной степени зависит от инженерной дисциплины, такой как автоматизированное тестирование, непрерывная интеграция и рефакторинг; акцент Agile делается на быстрой адаптации к изменениям, а не на отказе от строгости.
- В чем разница между Scrum и Agile?
- Agile — это широкий набор ценностей и принципов; Scrum — это один конкретный фреймворк, который реализует их с помощью определенных ролей, событий и артефактов. XP и Kanban — это другие Agile-фреймворки с различными акцентами.