Agile стал одним из основных модных слов в индустрии разработки программного обеспечения. Но что такое гибкая разработка? Проще говоря, гибкая разработка — это другой способ выполнения команд и проектов по разработке программного обеспечения.
Чтобы понять, что нового, давайте вспомним традиционные методы. При обычной разработке программного обеспечения требования к продукту дорабатываются до начала разработки.
Модель водопада
Наиболее часто используемая модель разработки программного обеспечения с этой характеристикой — это модель водопада, как показано на следующей диаграмме. Однако в большинстве случаев добавляются новые функции, а также могут изменяться более ранние требования. Модель «Водопад» не структурирована для учета таких постоянных изменений требований. Кроме того, пользователь не будет иметь ясности в отношении функциональности продукта, пока продукт не станет доступным в полном объеме.
Итеративная инкрементная модель
В итерационной инкрементальной модели разработка начинается с ограниченного числа завершенных и приоритетных требований. Результат представляет собой рабочий прирост продукта. Набор действий от требований до разработки кода называется итерацией. На основе функциональных возможностей приращения и любых или всех новых измененных ожидающих требований следующая партия требований присваивается следующей итерации. Результатом последующей итерации является увеличение рабочего приращения продукта. Это повторяется до тех пор, пока продукт не выполнит необходимые функции.
Пользователь обычно не участвует в работе по разработке, и это может привести к разрывам связи, что приведет к неправильной функциональности. Участие положительно для команды разработчиков, но требует времени команды и может добавить задержки. Кроме того, любые неформальные изменения требований во время итерации могут привести к путанице и могут также привести к ползучести области. С этой предпосылкой возникла Agile-разработка.
Agile Development
Гибкая разработка основана на итеративной инкрементальной разработке, в которой требования и решения развиваются благодаря совместной работе команды. Он рекомендует использовать итеративный подход с учетом временных рамок и способствует быстрому и гибкому реагированию на изменения. Это теоретическая основа, которая не определяет какую-либо конкретную практику, которой должна следовать команда разработчиков. Scrum — это конкретная гибкая структура процесса, которая определяет методы, которые необходимо соблюдать.
Ранние реализации гибких методов включают Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), адаптивную разработку программного обеспечения, функционально-ориентированную разработку (1997) и метод разработки динамических систем (DSDM) (1995). Теперь они все вместе называются гибкими методологиями , после того как Agile Manifesto был опубликован в 2001 году.
Agile Manifesto
Agile Manifesto был опубликован командой разработчиков программного обеспечения в 2001 году, подчеркивая важность, которую необходимо уделить команде разработчиков, учитывая изменяющиеся требования, участие клиентов.
Agile Manifesto выглядит следующим образом:
«Мы открываем лучшие способы разработки программного обеспечения, делая это и помогая другим делать это. Благодаря этой работе мы пришли к оценке:
- Индивидуумы и взаимодействия над процессами и инструментами
- Рабочее программное обеспечение над всеобъемлющей документацией
- Сотрудничество с клиентом в процессе переговоров
- Реагирование на изменения после плана
То есть, хотя в пунктах справа есть значение, мы больше ценим элементы слева ».
… Манифест для гибкой разработки программного обеспечения, Авторы: Бек, Кент и др. (2001)
Определение проворных элементов манифеста
Пункты манифеста слева можно описать следующим образом:
Предмет манифеста | Описание |
---|---|
Индивидуумы и взаимодействия | Значение должно быть уделено:
|
Рабочее программное обеспечение | Поставка рабочего программного обеспечения через короткие промежутки времени помогает завоевать доверие и уверенность клиентов в команде. |
Сотрудничество с клиентами | Постоянное участие заказчика в команде разработчиков обеспечивает связь необходимых модификаций. |
Отвечая на изменения | Сосредоточьтесь на быстром реагировании на предложенные изменения, что стало возможным благодаря коротким итерациям. |
Ключевым элементом Agile Manifesto является то, что мы должны доверять людям и их способности сотрудничать. По этой причине разработанные специальные гибкие методологии используют возможности членов команды, подчеркивая командную работу и сотрудничество на протяжении всего жизненного цикла проекта.
Ключевые принципы Agile
Agile Manifesto основан на следующих принципах:
Принцип | Описание |
---|---|
Удовлетворение и доставка | Удовлетворение потребностей клиентов благодаря раннему и непрерывному программному обеспечению. |
Приветствие перемен | Приветствуем меняющиеся требования даже на более поздних этапах разработки. |
Доставить часто | Поставляйте работающее программное обеспечение часто (еженедельно, а не ежемесячно). |
Коммуникация — это ключ | Обеспечить тесную связь разработчиков с деловыми людьми на ежедневной основе. |
Окружающая среда и доверие | Создавайте проекты вокруг мотивированных людей. Оказывайте им необходимую поддержку и доверяйте им. |
Личное общение | Поощряйте личную беседу, чтобы обеспечить эффективное и действенное общение. |
Программное обеспечение как мера прогресса | Рабочее программное обеспечение является основной мерой прогресса. |
Устойчивое развитие | Содействие устойчивому развитию с возможностью поддерживать постоянный темп на протяжении всего развития. |
Внимание к деталям | Постоянное внимание к техническому совершенству и хорошему дизайну. |
Сила Меньше | Простота необходима. |
Самоорганизующиеся Команды | Регулярное внимание команды к тому, чтобы стать эффективным в меняющихся обстоятельствах. |
Agile методологии
Методология динамического развития системы (DSDM)
Это гибкая структура для программных проектов. Он был использован для тонкой настройки традиционных подходов. Самая последняя версия DSDM называется DSDM Atern. Название Atern — сокращение от Arctic Tern — морской птицы, которая может путешествовать на огромные расстояния, что представляет многие особенности метода, такие как естественные способы работы, такие как расстановка приоритетов и сотрудничество.
Scrum
Это самая популярная гибкая среда, которая концентрируется, в частности, на том, как управлять задачами в командной среде разработки. Scrum использует модель итеративной и инкрементальной разработки с более короткой продолжительностью итераций. Scrum относительно прост в реализации и ориентирован на быстрые и частые поставки.
Экстремальное программирование (XP)
Это тип гибкой разработки программного обеспечения. Он поддерживает частые выпуски в короткие циклы разработки, которые предназначены для повышения производительности и введения контрольных точек, где могут быть приняты новые требования клиентов. Методология получила свое название от идеи, что полезные элементы традиционных практик разработки программного обеспечения выведены на экстремальные уровни. (Экстремальное программирование — это дисциплина в области разработки программного обеспечения, которая организует людей для более продуктивного производства высококачественного программного обеспечения.) В XP рассматриваются этапы анализа, разработки и тестирования с помощью новых подходов, которые существенно влияют на качество конечного продукта.
Разработка через тестирование (TDD)
Это процесс разработки программного обеспечения, который основан на повторении очень короткого цикла разработки: сначала разработчик пишет автоматизированный тестовый пример, который определяет желаемое улучшение или новую функцию, затем он производит наименьшее количество кода, чтобы пройти этот тест, и наконец, доводит новый код до приемлемых стандартов.
Опираться
Это производственная практика, при которой расходование ресурсов для любой цели, кроме создания ценности для конечного потребителя, является расточительным и, следовательно, является целью устранения. Работая с точки зрения потребителя, который потребляет продукт или услугу, термин «стоимость» определяется как любое действие или процесс, за которые клиент будет готов заплатить. Lean сосредоточен на сохранении ценности с меньшим количеством работы.
Kanban
Это система для улучшения и поддержания высокого уровня производства. Kanban — это один из методов, с помощью которого достигается Just-In-Time (JIT), стратегия, используемая организациями для контроля затрат на инвентаризацию. Kanban стал эффективным инструментом поддержки всей производственной системы, и это оказалось отличным способом для продвижения улучшений.
Заключение
За последние 10 лет постоянно растет количество историй успеха, в которых компании значительно улучшили успех и производительность своих групп по разработке ИТ и проектов с гибкими практиками. Это привело к тому, что Agile получил широкое распространение в различных отраслях, включая СМИ и технологии, крупные корпорации и даже правительство.
Agile Framework помогает командам извлечь выгоду из:
- Более быстрое время доставки / Рынок
- Уменьшить неопределенность и риск
- Увеличьте возврат инвестиций (ROI), сосредоточившись на потребительской ценности
Среди этих различных гибких методологий Scrum за последние 20 лет оказался чрезвычайно успешным во всем мире.