Методологии разработки ПО: Agile

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

Гибкость во всем

Agile – это способность создавать изменения и реагировать на них. Это средство справиться и, в окончательном результате, преуспеть в неопределенной и турбулентной среде. Авторы Agile Manifesto выбрали «Agile» ярлыком для всей этой идеи, что представляет реакцию на изменения, которые были так важны для их подхода.

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

Гибкая разработка ПО – это больше, чем такие структуры, как Scrum, Extreme Programming или Feature-Driven Development (FDD). Одна особенность, которая отличает Agile от других методик – это ориентация на людей, которые выполняют работу, и на то, как они делают это вместе. Решения достигаются благодаря партнерству между многофункциональными группами с использованием методов, которые соответствуют их контексту.

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

Идея и принципы

В конечном счете, Agile – это образ мышления, который основан на идеях, содержащихся в Agile Manifesto и его 12 принципах. Последние дают рекомендации о создании изменений, реагировании на них, и том, как справляться с неопределенностью.

Манифест дал возможность сформулировать следующие 12 принципов:

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

Командный дух

Основными задачами Scrum является облегчение бесперебойной работы коллектива. В Scrum имеется три важные роли. Владелец ответственен за определение и установление приоритетов требований. Scrum Master отвечает за соблюдение правил Scrum и устраняет проблемные места, которые мешают работе команды. Третью роль играет команда. Все три роли составляют команду Scrum.

Команды, работающие со Scrum, самоорганизуются, что имеет два важных преимущества. С одной стороны, в конце каждого спринта есть «продукт, который может быть потенциально реализован», то есть продукт, который был протестирован и задокументирован. Он поэтому принципиально не изменится и может быть интегрирован в общую систему в любое время. Так, доставка ПО клиенту возможна после каждого спринта. Еще одно преимущество работы в самоорганизующихся командах заключается в том, что сочетание различных способностей позволяет просматривать задачи и истории пользователей с разных точек зрения. Команда отслеживает ситуацию, быстрее распознает проблемы, а также быстрее находит решение.

При ближайшем рассмотрении это означает для отдельных этапов следующее:

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

Реализовать новые идеи немедленно

Гибкие методы, такие как Scrum, основаны на итерационных и инкрементальных процедурах, которые позволяют следить за «наиболее важными» функциями. Итеративная разработка позволяет определить продукт для новых запросов и улучшить его в любое время. Команда может реализовывать новые идеи одновременно и принимать решения, основанные на фактах (текущая версия продукта), а не на спекуляциях (воображение или идея функции). Команда должна представлять готовую версию продукта на каждом конце итерации – с помощью Scrum один спринт длится две или четыре недели – поэтому команда за это время должна разработать новую функцию, внедрить ее, интегрировать в существующее ПО и протестировать. Только если эти задачи выполнены, спринт можно назвать успешным. Для этого необходим кросс-функциональный режим работы команды.

Аспект самоорганизации очень важен, потому что крайние сроки являются чрезвычайно строгими, и в связи с этим требуется, чтобы команда постоянно совершенствовала свои лучшие практики и вместе искала решения. Автоматизация тестирования играет важную роль, потому что продукт передается только после успешного тестирования. Без автоматизации тестирования команда не сможет обеспечить высокое качество всех интегрированных новых разработок в короткие сроки этапа спринта. Что касается тестирования, за последние 15 лет было разработано множество передовых практик, таких как Автоматическое тестирование, Непрерывная интеграция и Автоматическая сборка, первоначально инициированных Extreme Programming (XP).

XP — программируем экстремально!

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

Экстремальные практики

Общие характеристики практик, в которых подходит XP, описаны Доном Уэллсом:

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

Ядро XP – это взаимосвязанный набор методов разработки ПО, перечисленных ниже. Хотя эти практики можно выполнять изолированно, многие команды обнаружили, что некоторые практики усиливают другие, и их следует применять совместно, чтобы полностью устранить риски, с которыми вы часто сталкиваетесь при разработке ПО:

  • Планирование игры
  • Небольшие релизы
  • Приемочные тесты
  • Простой дизайн
  • Парное программирование
  • Разработка через тестирование
  • Рефакторинг
  • Непрерывная интеграция
  • Коллективный код собственности
  • Стандарты кодирования
  • Метафоры
  • Устойчивый темп

Парное программирование — одна из полезных практик XP

Парное программирование означает, что все производственное ПО разработано двумя людьми, сидящими за одной машиной. Идея этой практики заключается в том, что два мозга и четыре глаза лучше, чем один мозг и два глаза. Вы фактически получаете непрерывный обзор кода и более быстрое реагирование на неприятные проблемы, которые могут остановить одного человека в замешательстве.

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

Экстремально — не значит плохо

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

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

Никакого волшебства

Agile это никакое не чудодейственное лекарство от всех бед проекта, что часто ему приписывают, но это прекрасный метод управления проектами. Agile предлагает ряд преимуществ для всех участников проекта.

Преимущества Agile

  • Удовлетворенность клиентов быстротой и беспрерывной поставкой необходимого ПО.
  • Здесь важны люди и их взаимодействие, а не инструменты.
  • Рабочее ПО поставляется часто (неделя, а не месяц).
  • Личная беседа – наилучшая форма общения.
  • Тесное ежедневное сотрудничество заказчиков и разработчиков.
  • Внимание к техническому совершенству и дизайну характеризуется постоянством.
  • Регулярная адаптация к меняющимся обстоятельствам.
  • В проекте приветствуются даже поздние изменения в ТЗ.

Темная сторона силы: недостатки Agile

Многие профессионалы достигли значительных успехов благодаря преимуществам Agile, в то время как немногие столкнулись с недостатками:

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

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

Кому подойдет Agile

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

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

Присоединяйся к DevEducation — стань востребованным специалистом и построй карьеру в IT!