Екстремальне програмування проти SCRUM | XP проти SCRUM
Протягом багатьох років у галузі програмного забезпечення було використано чимало різних методологій розробки програмного забезпечення, таких як метод розробки водоспаду, V-Model, RUP та кілька інших лінійних, ітеративних та комбінованих лінійно-ітеративних методів. Agile модель (або правильніше, група методологій) - це більш нова модель розробки програмного забезпечення, запроваджена маніфестом Agile для усунення недоліків, виявлених у тих традиційних методологіях розробки програмного забезпечення..
Agile методи засновані на ітераційній розробці та використовують зворотний зв'язок від користувачів як основний механізм управління. Agile можна назвати підходом, орієнтованим на людей, ніж традиційні методи. Модель Agile доставляє робочу версію продукту дуже рано, розбиваючи систему на дуже маленькі та керовані підрозділи, щоб замовник міг реалізувати деякі переваги на початку. Час циклу тестування Agile порівняно короткий порівняно з традиційними методами, оскільки тестування проводиться паралельно розробці. Через всі ці переваги в даний час перевагу Agile віддають перевагу традиційним методологіям. Програмування Scrum і Extreme - це дві найпопулярніші варіанти методів Agile.
Що таке СКРУМ?
Як було сказано вище, SCRUM - це поступовий та ітеративний процес управління проектами, який належить до сімейства методів Agile. SCRUM заснований на наданні високого пріоритету участі клієнтів на початку циклу розробки. Він рекомендує включати тестування замовником якнайшвидше та часто, наскільки це можливо. Тестування проводиться в кожній точці, коли стає доступною стабільна версія. Основа SCRUM базується на тому, щоб почати тестування з початку проекту та продовжувати впродовж кінця проекту.
Ключове значення SCRUM - «якість - це відповідальність команди», яка підкреслює, що за якість програмного забезпечення покладається відповідальність всієї команди (а не лише на тестувальну команду). Ще один важливий аспект SCRUM - це розбиття програмного забезпечення на менші керовані частини та дуже швидка доставка їх до замовника. Постачання робочого продукту має надзвичайно важливе значення. Потім команда продовжує вдосконалювати програмне забезпечення та здійснювати постійне обслуговування на кожному великому кроці. Це досягається за рахунок дуже коротких циклів випуску (званих спринтами) та отримання зворотного зв'язку для покращення в кінці кожного циклу.
SCRUM визначає кілька ключових ролей для безперебійної роботи команди розвитку. Це власник продукту (який представляє замовника та підтримує рентабельність товару), майстер Scrum (який виступає організатором і координатором команди, проводячи збори scrum, підтримуючи відставання спринту та згоряючи графіки) та інші члени команди. Команда може складатися з традиційних ролей, але в основному це команди, що керують самоврядуваннями. Основними артефактами Scrum є відставання продукту / випуск продукту (список бажань), запуски / дефекти спринту (завдання в кожній ітерації), спалювання графіків (робота, що залишилася проти дати). Основними церемоніями SCRUM є зустріч із відставанням продуктів, зустріч зі спринтами та зустріч на ретроспективі.
Що таке екстремальне програмування?
Екстремальне програмування (скорочено XP) - це методологія розробки програмного забезпечення, що належить до моделі Agile. Екстремальне програмування здійснює фази в дуже малих безперервних кроках (порівняно з традиційними методами). Перший пропуск, який займає лише день або тиждень, навмисно є неповним. Для забезпечення конкретних цілей розробки програмного забезпечення на початку пишуться автоматизовані тести. Потім розробники роблять кодування. Основна увага приділяється програмуванню як пари. Після проходження всіх тестів кодування вважається завершеним. Наступний етап - це дизайн та архітектура, яка займається рефакторингом коду тим самим набором програмістів. Наприкінці цієї фази незавершений (але функціональний) продукт представлений зацікавленим сторонам. Відразу після цього починається наступна фаза (яка зосереджена на наступному наборі найважливіших особливостей).
Яка різниця між Екстремальним програмуванням та SCRUM?
Екстремальне програмування та SCRUM зрозуміло дуже схожі та узгоджені методології. Однак між цими двома методами є тонкі, але важливі відмінності. Спринти SCRUM тривають 2-4 тижні, тоді як типові ітерації XP коротші (останні 1-2 тижні). Зазвичай команди SCRUM не дозволяють змінювати спринти, але команди XP трохи гнучкіші до змін в рамках ітерацій. Наприклад, після планування спринту набір елементів цього спринту залишається незмінним, але функцію, яка не почала працювати, можна будь-коли замінити на якусь іншу функцію в XP. Ще одна відмінність XP від SCRUM полягає в тому, що порядок розроблених в XP функцій є строго пріоритетним замовником, тоді як команда SCRUM приймає рішення про порядок позицій (після того, як затримка продукту визначається пріоритетом власника продукту SCRUM).
На відміну від XP, SCRUM не встановлює жодної інженерної практики. Наприклад, XP керується такими практиками, як тестова розробка (TDD), програмування пар, рефакторинг тощо. Однак деякі вважають, що встановлення набору практик для самоорганізуючих команд може мати негативний вплив, і це можна врахувати. недолік XP. Ще один недолік програмування Extreme полягає в тому, що недосвідчені команди можуть прагнути до рефактора без будь-яких автоматизованих тестів або TDD (або просто злому). Тому деякі припускають, що SCRUM краще для початку (оскільки він приносить великі вдосконалення просто за допомогою цілеспрямованих ітерацій з тимчасовим графіком), а XP підходить для зрілих команд, які виявили цінність вищезгаданих практик (а не використовувати їх, тому що їх запитали робити так).