Programowanie ekstremalne vs SCRUM | XP vs SCRUM
Na przestrzeni lat w branży oprogramowania stosowano wiele różnych metodologii opracowywania oprogramowania, takich jak metoda opracowywania Waterfall, Model V, RUP i kilka innych metod liniowych, iteracyjnych i kombinowanych liniowo-iteracyjnych. Model zwinny (a dokładniej grupa metodologii) to nowszy model tworzenia oprogramowania wprowadzony przez manifest Agile w celu usunięcia niedociągnięć stwierdzonych w tych tradycyjnych metodologiach tworzenia oprogramowania.
Metody zwinne opierają się na iteracyjnym rozwoju i wykorzystują informacje zwrotne od użytkowników jako główny mechanizm kontroli. Zwinność można nazwać podejściem skoncentrowanym na ludziach niż metodami tradycyjnymi. Zwinny model dostarcza działającą wersję produktu bardzo wcześnie, dzieląc system na bardzo małe i łatwe w zarządzaniu części, dzięki czemu klient może wcześnie dostrzec niektóre korzyści. Czas cyklu testowania Agile jest stosunkowo krótki w porównaniu do tradycyjnych metod, ponieważ testy są wykonywane równolegle z programowaniem. Ze względu na wszystkie te zalety metody Agile są w tej chwili preferowane w stosunku do tradycyjnych metod. Programowanie Scrum i Extreme to dwie najpopularniejsze odmiany metod Agile.
Co to jest SCRUM?
Jak wspomniano powyżej, SCRUM to przyrostowy i iteracyjny proces zarządzania projektami, który należy do rodziny metod Agile. SCRUM opiera się na nadaniu wysokiego priorytetu uczestnictwu klienta na wczesnym etapie cyklu rozwoju. Zaleca wcześniejsze i częste przeprowadzanie testów przez klienta. Testowanie odbywa się w każdym momencie, gdy dostępna jest stabilna wersja. Podstawą SCRUM jest rozpoczęcie testów od początku projektu i kontynuacja do końca projektu.
Kluczową wartością SCRUM jest „jakość jest obowiązkiem zespołu”, co podkreśla, że za jakość oprogramowania odpowiedzialny jest cały zespół (nie tylko zespół testujący). Innym ważnym aspektem SCRUM jest podział oprogramowania na mniejsze części możliwe do zarządzania i bardzo szybkie dostarczenie ich do klienta. Dostarczenie działającego produktu ma ogromne znaczenie. Następnie zespół kontynuuje ulepszanie oprogramowania i ciągłe dostarczanie na każdym ważnym etapie. Osiąga się to poprzez bardzo krótkie cykle uwalniania (zwane sprintami) i uzyskiwanie informacji zwrotnych na temat ulepszeń na końcu każdego cyklu.
SCRUM definiuje kilka kluczowych ról dla płynnego działania zespołu programistów. Są to: właściciel produktu (który reprezentuje klienta i utrzymuje backlog produktu), mistrz Scrum (który działa jako organizator i koordynator zespołu, prowadząc spotkania scrumowe, utrzymując zaległości sprintu i spalając wykresy) oraz inni członkowie zespołu. Zespół może składać się z tradycyjnych ról, ale w większości są to zespoły samozarządzające. Głównymi artefaktami Scruma są zaległości produktu / zaległości wydania (lista życzeń), zaległości sprintu / zaległości defektów (zadania w każdej iteracji), spalanie wykresów (pozostała praca vs. data). Główne ceremonie SCRUM to spotkanie dotyczące backlogu produktu, spotkanie w sprincie i spotkanie w retrospekcji.
Co to jest programowanie ekstremalne?
Extreme Programming (w skrócie XP) to metodologia tworzenia oprogramowania, która należy do modelu Agile. Ekstremalne programowanie wykonuje fazy w bardzo małych, ciągłych krokach (w porównaniu do metod tradycyjnych). Pierwsze przejście, które trwa tylko dzień lub tydzień, jest celowo niekompletne. Aby przedstawić konkretne cele dotyczące rozwoju oprogramowania, na początku są pisane automatyczne testy. Następnie programiści wykonują kodowanie. Nacisk kładziony jest na programowanie jako pary. Po przejściu wszystkich testów kodowanie uznaje się za zakończone. Kolejnym etapem jest projektowanie i architektura, która zajmuje się refaktoryzacją kodu przez ten sam zestaw programistów. Pod koniec tej fazy interesariuszom prezentowany jest niekompletny (ale funkcjonalny) produkt. Zaraz potem rozpoczyna się kolejna faza (która skupia się na następnym zestawie najważniejszych funkcji).
Jaka jest różnica między Extreme Programming a SCRUM?
Extreme Programming i SCRUM są, co zrozumiałe, bardzo podobne i dostosowane metodologie. Istnieją jednak subtelne, ale ważne różnice między tymi dwiema metodami. Sprinty SCRUM trwają 2-4 tygodnie, podczas gdy typowe iteracje XP są krótsze (ostatnie 1-2 tygodnie). Zwykle zespoły SCRUM nie zezwalają na zmiany w sprintach, ale zespoły XP są nieco bardziej elastyczne na zmiany w iteracjach. Na przykład po planowaniu sprintu zestaw elementów tego sprintu pozostaje niezmieniony, ale funkcja, nad którą jeszcze nie zaczęto pracować, można w dowolnym momencie zamienić na inną funkcję w XP. Kolejna różnica między XP a SCRUM polega na tym, że kolejność funkcji opracowanych w XP jest ściśle ustalana przez klienta, podczas gdy zespół SCRUM decyduje o kolejności elementów (po tym, jak zaległości produktu zostaną nadane przez właściciela produktu SCRUM).
W przeciwieństwie do XP, SCRUM nie ustanawia żadnych praktyk inżynierskich. Na przykład XP jest napędzany przez praktyki takie jak programowanie testowe (TDD), programowanie par, refaktoryzacja itp. Jednak niektórzy uważają, że nałożenie zestawu praktyk na zespoły samoorganizujące się może mieć negatywny wpływ i można to rozważyć wada XP. Kolejną wadą programowania Extreme jest to, że niedoświadczone zespoły mogą mieć tendencję do refaktoryzacji bez żadnych zautomatyzowanych testów lub TDD (lub po prostu hakowania). Dlatego niektórzy sugerują, że SCRUM jest lepszy do gapienia się (ponieważ przynosi duże ulepszenia po prostu poprzez skoncentrowane iteracje z timeboxedem), a XP jest odpowiedni dla lekko dojrzałych zespołów, które odkryły wartość wyżej wymienionych praktyk (zamiast używać ich, ponieważ zostały o to poproszone zrobić to).