Экстремальное программирование против SCRUM | XP против SCRUM
На протяжении многих лет в индустрии программного обеспечения использовалось множество различных методологий разработки программного обеспечения, таких как метод разработки Waterfall, V-Model, RUP и несколько других линейных, итерационных и комбинированных линейно-итерационных методов. Модель Agile (или, точнее, группа методологий) - это более новая модель разработки программного обеспечения, представленная манифестом Agile для устранения недостатков, обнаруженных в этих традиционных методологиях разработки программного обеспечения.
Гибкие методы основаны на итеративной разработке и используют обратную связь от пользователей в качестве основного механизма контроля. Agile можно назвать подходом, ориентированным на людей, чем традиционные методы. Гибкая модель предоставляет рабочую версию продукта на очень раннем этапе, разбивая систему на очень маленькие и управляемые части, чтобы заказчик мог сразу же реализовать некоторые преимущества. Время цикла тестирования Agile относительно короткое по сравнению с традиционными методами, поскольку тестирование проводится параллельно с разработкой. Из-за всех этих преимуществ Agile-методы в настоящее время предпочтительнее традиционных. Скрам и экстремальное программирование - два самых популярных варианта гибких методов.
Что такое SCRUM?
Как упоминалось выше, SCRUM - это инкрементный и итеративный процесс управления проектами, который принадлежит к семейству Agile-методов. SCRUM основан на уделении первоочередного внимания участию клиентов на ранних этапах цикла разработки. Он рекомендует включать тестирование заказчиком как можно раньше и как можно чаще. Тестирование проводится на каждом этапе, когда становится доступной стабильная версия. Основа SCRUM основана на том, что тестирование начинается с начала проекта и продолжается до конца проекта.
Ключевое значение SCRUM - «качество - это ответственность команды», которая подчеркивает, что за качество программного обеспечения отвечает вся команда (а не только команда тестирования). Еще один важный аспект SCRUM - разбиение программного обеспечения на более мелкие управляемые части и очень быстрая доставка их заказчику. Предоставление работающего продукта имеет первостепенное значение. Затем команда продолжает улучшать программное обеспечение и непрерывно выполнять каждый важный шаг. Это достигается за счет очень коротких циклов выпуска (называемых спринтами) и получения обратной связи для улучшения в конце каждого цикла.
SCRUM определяет несколько ключевых ролей для бесперебойной работы команды разработчиков. Это владелец продукта (который представляет клиента и ведет журнал отставания по продукту), мастер Scrum (который действует как организатор и координатор команды, проводя встречи схватки, поддерживая список невыполненных работ по спринту и графики сжигания) и другие члены команды. Команда может состоять из традиционных ролей, но в основном это самоуправляемые команды. Основными артефактами Scrum являются невыполненные работы по продукту / невыполненные выпуски (список пожеланий), невыполненные спринты / невыполненные отчеты по дефектам (задачи на каждой итерации), графики выгорания (остаток работы по сравнению с датой). Основные церемонии SCRUM - это встреча по работе с продуктом, встреча Sprint и встреча Retrospect.
Что такое экстремальное программирование?
Экстремальное программирование (сокращенно XP) - это методология разработки программного обеспечения, относящаяся к модели Agile. Экстремальное программирование выполняет фазы очень маленькими непрерывными шагами (по сравнению с традиционными методами). Первый проход, который занимает всего день или неделю, намеренно неполный. Для определения конкретных целей разработки программного обеспечения в самом начале пишутся автоматизированные тесты. Затем разработчики занимаются кодированием. Основное внимание уделяется программированию в парах. После прохождения всех тестов кодирование считается завершенным. Следующим этапом является проектирование и архитектура, который занимается рефакторингом кода той же группой программистов. В конце этого этапа заинтересованным сторонам представляется неполный (но функциональный) продукт. Сразу после этого начинается следующий этап (который фокусируется на следующем наборе наиболее важных функций).
В чем разница между экстремальным программированием и SCRUM?
Понятно, что экстремальное программирование и SCRUM очень похожи и согласованы между собой методологиями. Однако между этими двумя методами есть тонкие, но важные различия. Спринты SCRUM длятся 2-4 недели, тогда как типичные итерации XP короче (длятся 1-2 недели). Обычно команды SCRUM не позволяют вносить изменения в спринты, но группы XP немного более гибки в отношении изменений в рамках итераций. Например, после планирования спринта набор элементов этого спринта остается неизменным, но функция, работа над которой еще не началась, может быть в любой момент заменена какой-либо другой функцией в XP. Еще одно различие между XP и SCRUM заключается в том, что порядок функций, разрабатываемых в XP, строго определяется заказчиком, в то время как команда SCRUM определяет порядок элементов (после того, как владелец продукта SCRUM установит приоритет отставания продукта).
В отличие от XP, SCRUM не требует никаких инженерных решений. Например, XP управляется такими практиками, как разработка через тестирование (TDD), парное программирование, рефакторинг и т. Д. Однако некоторые полагают, что обязательное использование набора практик для самоорганизующихся команд может иметь негативное влияние, и это можно считать недостаток XP. Еще один недостаток экстремального программирования заключается в том, что неопытные команды могут склоняться к рефакторингу без каких-либо автоматических тестов или TDD (или просто взлома). Таким образом, некоторые предполагают, что SCRUM лучше подходит для того, чтобы сразу начать (поскольку он приносит большие улучшения просто за счет целенаправленных итераций с ограниченным по времени), а XP подходит для немного зрелых команд, которые открыли для себя ценность вышеупомянутых практик (а не используют их, потому что их просили сделать так).