Екстремно програмиране срещу SCRUM | XP срещу SCRUM
През годините в софтуерната индустрия са използвани редица различни методологии за разработка на софтуер, като метод за разработка на водопад, V-Model, RUP и няколко други линейни, итеративни и комбинирани линейно-итеративни методи. Agile модел (или по-правилно, група методологии) е по-нов модел за разработка на софтуер, въведен от манифеста Agile за справяне с недостатъците, открити в тези традиционни методологии за разработка на софтуер.
Agile методите се основават на итеративно развитие и използват обратната връзка от потребителите като основен механизъм за контрол. Agile може да се нарече подход, ориентиран към хората, отколкото традиционните методи. Agile модел доставя работеща версия на продукта много рано, като разгражда системата до много малки и управляеми части, така че клиентът да може да реализира някои от предимствата в началото. Времето за цикъл на тестване на Agile е сравнително кратко в сравнение с традиционните методи, тъй като тестването се извършва паралелно с развитието. Поради всички тези предимства, Agile методите са предпочитани пред традиционните методологии в момента. Scrum и Extreme програми са две от най-популярните вариации на Agile методите.
Какво е SCRUM?
Както бе споменато по-горе, SCRUM е инкрементален и итеративен процес на управление на проекти, който принадлежи към семейството на Agile методи. SCRUM се основава на отдаване на висок приоритет на участието на клиентите в началото на цикъла на развитие. Препоръчва да се включи тестване от клиента рано и често, колкото е възможно. Тестването се извършва във всяка точка, когато стане налична стабилна версия. Основата на SCRUM се основава на започване на тестове от началото на проекта и продължаване до края на проекта.
Основната стойност на SCRUM е „качеството е отговорност на екипа“, което подчертава, че качеството на софтуера е отговорност на целия екип (не само на екипа за тестване). Друг важен аспект на SCRUM е разграждането на софтуера на по-малки управляеми части и доставянето им на клиента много бързо. Доставката на работещ продукт е от изключително значение. Тогава екипът продължава да усъвършенства софтуера и да предоставя постоянно при всяка основна стъпка. Това се постига чрез много кратки цикли на освобождаване (наречени спринти) и получаване на обратна връзка за подобрение в края на всеки цикъл.
SCRUM дефинира няколко ключови роли за безпроблемната работа на екипа за развитие. Те са собственикът на продукта (който представлява клиента и поддържа изоставането на продукта), майсторът на Scrum (който действа като организатор и координатор на екипа чрез провеждане на срещи на scrum, поддържане на sprint backlog и изгаряне на класации) и други членове на екипа. Екип може да се състои от традиционните роли, но най-вече те са самоуправляващи се екипи. Основни артефакти на Scrum са затваряне на продукти / бележки за пускане на продукти (списък с желания), спринцовки / дефекти на дефекти (задачи във всяка итерация), изгаряне на диаграми (оставаща спрямо дата). Основните церемонии на SCRUM са срещи с продукти за продукти, Спринт среща и Ретроспект среща.
Какво е екстремно програмиране?
Extreme Programming (съкратено XP) е методология за разработка на софтуер, която принадлежи към модела Agile. Екстремното програмиране извършва фази в много малки непрекъснати стъпки (в сравнение с традиционните методи). Първият пропуск, който отнема само ден или седмица, е умишлено непълен. За да осигурите конкретни цели за разработване на софтуера, в началото се пишат автоматизирани тестове. Тогава разработчиците правят кодирането. Фокусът е върху правенето на програми като двойки. След като преминат всички тестове, кодирането се счита за завършено. Следващата фаза е дизайн и архитектура, която се занимава с рефакторинг на кода от същия набор от програмисти. В края на тази фаза непълен (но функционален) продукт се представя пред заинтересованите страни. Веднага след това започва следващата фаза (която се фокусира върху следващия набор от най-важни характеристики).
Каква е разликата между Extreme Programming и 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 е подходящ за леко зрели екипи, които са открили стойността на гореспоменатите практики (вместо да ги използват, защото са били помолени да го направя).