Методология Agile и Манифест

Что такое метод водопада?
Методология модели водопада также известна как модель последовательного жизненного цикла лайнера. За ним следуют в последовательном порядке, поэтому команда разработчиков проекта переходит к следующему этапу разработки или тестирования только в том случае, если предыдущий шаг завершен успешно.
Что такое методология Agile?
Agile — это итеративный подход к управлению проектами и разработке программного обеспечения, который помогает командам приносить пользу своим клиентам. Гибкие методы разбивают продукт на небольшие пошаговые сборки, в отличие от одиночной сборки в каскадных методах. Эти сборки предоставляются в итерациях.

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

1. Концепция
На этапе разработки концепции владелец продукта определяет объем своего проекта. Владелец продукта обсудит ключевые требования с клиентом и подготовит документацию для их описания, в том числе какие функции будут поддерживаться и предполагаемые конечные результаты. На этапе концепции владелец продукта также оценит время и стоимость потенциальных проектов. Этот подробный анализ поможет им решить, осуществим ли проект, прежде чем приступить к работе.
2. Начало
После того, как концепция определена, пришло время создать команду разработчиков программного обеспечения. Владелец продукта проверит доступность своих коллег и выберет лучших людей для проекта, а также предоставит им необходимые инструменты и ресурсы. Затем они могут начать процесс проектирования. Команда создаст макет пользовательского интерфейса и построит архитектуру проекта. На этом этапе заинтересованные стороны вносят дополнительный вклад, чтобы полностью конкретизировать требования на диаграмме и определить функциональные возможности продукта.
3. Итерация
Этот этап, как правило, самый продолжительный, так как здесь выполняется основная часть работы. Разработчики будут работать с дизайнерами UX, чтобы объединить все требования к продукту и отзывы клиентов, превратив дизайн в код. Цель состоит в том, чтобы создать функциональность продукта к концу первой итерации или спринта. Дополнительные функции и настройки могут быть добавлены в более поздних версиях. Этот этап является краеугольным камнем гибкой разработки программного обеспечения, позволяя разработчикам быстро создавать работающее программное обеспечение и вносить улучшения, чтобы удовлетворить клиента.
4. Выпуск
Продукт почти готов к выпуску, команде обеспечения качества необходимо выполнить некоторые тесты (системное/интеграционное тестирование), чтобы убедиться, что программное обеспечение полностью функционально. Эти члены Agile-команды будут тестировать систему, чтобы убедиться, что код чистый — если будут обнаружены потенциальные ошибки или дефекты, разработчики быстро их исправят. На этом этапе также будет проводиться обучение пользователей, для чего потребуется дополнительная документация. Когда все это будет завершено, окончательная итерация продукта может быть запущена в производство.
5. Обслуживание
После того как программное обеспечение будет полностью развернуто и станет доступным для клиентов, оно перейдет к этапу обслуживания. На этом этапе команда разработчиков программного обеспечения будет оказывать постоянную поддержку для обеспечения бесперебойной работы системы и устранения любых новых ошибок. Они также будут готовы предложить дополнительное обучение пользователей и убедиться, что они знают, как использовать продукт. Со временем могут происходить новые итерации, чтобы обновить существующий продукт с помощью обновлений и дополнительных функций.
6. Вывод из эксплуатации
Есть две причины, по которым продукт переходит в фазу выведения из эксплуатации: либо он заменяется новым программным обеспечением, либо сама система со временем устаревает или становится несовместимой с организацией. Группа разработчиков программного обеспечения сначала уведомит пользователей о том, что программное обеспечение выводится из эксплуатации. В случае замены пользователи будут перенесены на новую систему. Наконец, разработчики выполнят все оставшиеся действия по окончании срока службы и прекратят поддержку существующего программного обеспечения.
Agile-манифест
Манифест Agile — это документ, определяющий четыре ключевые ценности и 12 принципов, которые, по мнению его авторов, должны использоваться разработчиками программного обеспечения в своей работе.
Agile-методологии утверждают, что четыре ценности, изложенные в Agile-манифесте, продвигают процесс разработки программного обеспечения, ориентированный на качество, путем создания продуктов, отвечающих потребностям и ожиданиям потребителей.
12 принципов предназначены для создания и поддержки рабочей среды, ориентированной на клиента, соответствующей бизнес-целям и способной быстро реагировать и меняться по мере изменения потребностей пользователей и рыночных сил.
Четыре ценности Agile

Двенадцать принципов Agile
Еще в 2001 году с Agile Manifesto возникла потребность в новом подходе, который может помочь организациям быть более гибкими, быстро реагировать и адаптироваться к изменениям. Следующие 12 принципов основаны на Манифесте Agile.
- Нашим наивысшим приоритетом является удовлетворение потребностей клиентов за счет быстрой и непрерывной поставки ценного программного обеспечения.
- Приветствуйте меняющиеся требования, даже на поздних стадиях разработки. Гибкие процессы используют изменения для конкурентного преимущества клиента.
- Поставляйте работающее программное обеспечение часто, от пары недель до нескольких месяцев, отдавая предпочтение более коротким временным рамкам.
- Деловые люди и разработчики должны ежедневно работать вместе на протяжении всего проекта.
- Создавайте проекты вокруг мотивированных людей. Обеспечьте им необходимые условия и поддержку и доверьте им выполнение работы.
- Самый эффективный и действенный метод передачи информации команде разработчиков и внутри нее — беседа лицом к лицу.
- Работающее программное обеспечение является основным мерилом прогресса.
- Гибкие процессы способствуют устойчивому развитию. Спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределенный срок.
- Постоянное внимание к техническому совершенству и хорошему дизайну повышает маневренность.
- Простота — искусство максимизировать количество невыполненной работы — имеет важное значение.
- Лучшие архитектуры, требования и проекты создаются самоорганизующимися командами.
- Через регулярные промежутки времени команда размышляет о том, как стать более эффективной, а затем соответствующим образом настраивает и корректирует свое поведение.
Внедрение 12 принципов Agile поможет вашей организации:
- Будьте более гибкими, чтобы вы могли адаптироваться к возникающим изменениям в процессе
- Сократите количество отходов в вашей системе, чтобы сделать рабочий процесс и окончательное решение более экономичными.
- Сосредоточьтесь на ранней доставке ценности, чтобы получить быструю обратную связь с рынком, а также реализовать более быструю окупаемость вашего продукта / услуги.
- Создайте здоровую рабочую среду, в которой каждый чувствует, что его ценят, и, таким образом, лучше способствует удовлетворению требований клиентов.
Agile-фреймворки
Agile framework можно определить как особый подход к разработке программного обеспечения, основанный на гибкой философии, сформулированной в Agile Manifesto. Различные организации используют множество популярных фреймворков. Организации модифицируют части фреймворков по своему усмотрению и повторяют свои собственные гибкие процессы. Ниже приведены несколько часто используемых и хорошо задокументированных фреймворков для гибкой разработки программного обеспечения.
- Скрам
- Канбан
- Экстремальное программирование (XP)
- Метод разработки динамических систем (DDSM)
- Разработка, управляемая функциями (FDD)
- Адаптивная разработка программного обеспечения (ASD)
- Кристалл
- Бережливая разработка программного обеспечения (LSD)
- Дисциплинированный Agile (DA)
- Масштабируемая гибкая структура (SAFe)
- Быстрая разработка приложений (RAD)
Agile-команда Ключевые роли и обязанности
Структура команды Agile обычно определяет конкретные роли для каждого члена команды. Хотя основное внимание уделяется набору навыков человека, а не его должности, определенный набор ролей может внести ясность в рабочие процессы Agile. Вот некоторые из ключевых ролей в структуре Agile-команды:
Scrum Master:Scrum Master отвечает за координацию команды и обеспечение бесперебойной работы процессов. Они будут организовывать входящие запросы, управлять задачами, контролировать рабочие процессы и проводить встречи. Они также будут следить за тем, чтобы команда следовала принципам, изложенным в Agile-манифесте.
Владелец продукта. Владелец продукта представляет потребности клиента. Их работа состоит в том, чтобы четко обозначить требования заказчика и обеспечить их выполнение на протяжении всего жизненного цикла Agile-проекта. Они будут регулярно общаться с командой, предлагая рекомендации по включению функций и информируя их о приоритетах.
Член команды.Член команды — это широкий термин, который может обозначать различные роли в разных отраслях. Например, команда разработки Agile будет состоять из программистов, дизайнеров UX, разработчиков программного обеспечения и тестировщиков по обеспечению качества. С другой стороны, в команду цифрового маркетинга могут входить копирайтеры, редакторы, PPC-менеджеры, SEO-специалисты и другие. Всех этих людей можно назвать членами команды в структуре Agile-команды.
Заинтересованная сторона.Заинтересованная сторона не принимает непосредственного участия в деятельности проекта, но играет важную роль в определении конечных результатов. Заинтересованные стороны будут регулярно связываться с руководителем группы, владельцем продукта и членами команды, чтобы внести свой вклад в процесс разработки. Их отзывы могут существенно повлиять на конечный результат проекта. Примеры заинтересованных сторон включают конечных пользователей, инвесторов и руководителей высшего звена компании.
Преимущество Agile в проекте
- Снижение риска
- Повышение шансов оправдать ожидания клиентов
- Показатели эффективности и принятия решений на основе данных
- Улучшенная видимость и прозрачность производительности
- Лучшее сотрудничество в команде и постоянное совершенствование
- Сосредоточьтесь на улучшении и контроле качества
- Команды могут последовательно предоставлять услуги и эффективно управлять изменяющимися требованиями клиентов.
- Легче прогнозировать затраты на более короткие периоды времени, чем для долгосрочного проекта, что упрощает процесс оценки.
- Регулярно оценивайте прогресс во время спринтов, лучше просматривайте проект и быстро выявляйте потенциальные препятствия.
Ключевые концепции Agile

Истории пользователей. История пользователя — это наименьшая единица работы в гибкой структуре. Это конечная цель, а не функция, выраженная с точки зрения пользователя программного обеспечения. Пользовательская история — это неформальное общее объяснение функции программного обеспечения, написанное с точки зрения конечного пользователя или клиента.
Ежедневная встреча. Ежедневная схватка, также называемая стендапом, – это короткая ежедневная встреча, предназначенная для того, чтобы команда могла спланировать свою работу на день и выявить любые препятствия, которые могут повлиять на ее работу. Большинство команд проводят эти встречи утром и ограничивают их 10-15 минутами.
Команда. Agile-команда — это группа специализированных специалистов, обладающих нужными знаниями и опытом, необходимыми для выполнения проектов с использованием гибкой методологии. У гибкой команды есть все необходимые ресурсы, необходимые для завершения проектов. Члены agile-команды имеют все необходимое для выполнения различных этапов проекта, включая создание структуры декомпозиции работ (WBS), работу над задачами, тестирование, развертывание и закрытие проекта.
Пошаговая разработка. Все Agile-команды отдают предпочтение стратегии пошаговой разработки; в контексте Agile это означает, что каждую последующую версию продукта можно использовать, и каждая из них основывается на предыдущей версии, добавляя видимые пользователю функции.
Итеративная разработка. Agile-проекты являются итеративными, поскольку они намеренно позволяют повторять действия по разработке программного обеспечения и, возможно, пересматривать одни и те же рабочие продукты.
Этап ретроспективы. После того, как проект находится в стадии реализации в течение некоторого времени или в конце проекта, все члены команды уделяют от одного до трех дней подробному анализу значимых событий проекта.
Заключение
Методологии Agile — это соглашения, которым команда выбирает следовать таким образом, чтобы следовать ценностям и принципам Agile. Agile не определяется набором церемоний или конкретными методами разработки. Скорее, agile — это группа методологий, демонстрирующих приверженность тесным циклам обратной связи и постоянному совершенствованию. Команды выбирают Agile, чтобы они могли быстро реагировать на изменения на рынке или отзывы клиентов, не нарушая годовой план.
Спасибо за прочтение. Если у вас есть какие-либо комментарии, вопросы или рекомендации, не стесняйтесь публиковать их в разделе комментариев ниже! 👇 и, пожалуйста, поделитесь и хлопайте 👏👏 если вам понравился этот пост.