Scrum jest najbardziej popularną adaptacyjną metodyką wytwarzania oprogramowania z nurtu agile. Główne założenia podejścia zostały zaprezentowane przez Hirotakę Takeuchiego i Ikujiro Nonakę w artykule The New Product Development Game, opublikowanym w Harvard Business Review w styczniu 1986 roku. Zasady opracowane przez Jeffa Suterlanda oraz Kena Schwabera zostały opublikowane w Scrum Guide. Wg autorów jest to szybszy, bardziej niezawodny i efektywny sposób tworzenia oprogramowania w branży technicznej. Stosowanie Scrum pozwala zaakceptować pewien stopień zmienności jako niezbędny do stworzenia czegoś nowego.
Etymologia słowa Scrum pochodzi z gry rugby. Jest określenie figury sportowej, w której wszyscy gracze stają razem w kole i omawiają strategię przeprowadzenia rozgrywki. Jest to klucz do zrozumienia istoty Scrum’a jako pracy w której cały zespół dąży do osiągnięcia sukcesu w przyjętym projekcie.
Scrum czerpie z najlepszych praktyk wytwarzania oprogramowania. Nie jest jednak instrukcją postępowania ani techniką wytwórczą. Nie podaje gotowych rozwiązań i odpowiedzi w jaki sposób wytwarzać oprogramowanie lub jak radzić sobie z konkretnymi problemami projektowymi. Jest to schemat, prezentujący ramy postępowania (ang. framework), w którym sposoby ich stosowania powinny być dostosowane do konkretnych potrzeb. Scrum, z zasady prosty i nieskomplikowany, jest jednocześnie trudny do zastosowania w projekcie i organizacji.
Sami autorzy mówią w Scrum Guide, że jest on:
- lekki
- prosty do zrozumienia
- trudny do opanowania.
Zasady Scrum są opisane na kilkunastu stronach (Scrum Guide liczy łącznie tylko 16 stron), opisane są 3 role, 3 główne artefakty oraz 5 zdarzeń oraz reguły Scruma. Reguły Scruma łączą ze sobą zdarzenia, role i artefakty, regulując powiązania i relacja pomiędzy nimi. Główne elementy Scrum przedstawione przedstawia poniższy rysunek:
Rysunek 1. Główne elementy Scrum, źródło opracowanie własne
Wszystkie zdarzenia mają ściśle określony maksymalny czas trwania (ang. time- boxing), proces jest nieskomplikowany, a jednak mimo to zastosowanie Scrum wymaga ogromnych zmian w podejściu do projektu – zarówno wśród wykonawców, klientów jak i całej organizacji. Scrum działa wg cyklu Sprawdź i Dostosuj (ang. inspect and adapt), co powoduje ogromne trudności organizacjom próbującym wprowadzić Scrum bez zmiany sposobu i kultury pracy. Częste inspekcje, zmiana odpowiedzialności zespołu oraz transparentność procesu powodują ujawnienie złych praktyk oraz nieskutecznych procesów. Wiąże się to także z nasileniem ukrytych konfliktów personalnych. Brak elastyczności organizacji w zakresie dostosowania procesu wytwórczego oraz problemy ko- munikacyjne są jednym z największych problemów skutecznego wdrożenia Scrum.
Scrum stosuje podejście przyrostowe (według niektórych autorów opisywane jako iteracyjno-przyrostowe).
• Iteracja – czynność powtarzania kolejnych kroków lub procesu w celu osiągnięcia pożądanego celu albo rezultatu. Podejście to zakłada, że efekty pracy będą udoskonalane w kolejnych iteracjach, natomiast pierwsze wyniki pracy (na przykład fragmenty systemu) mogą być niedoskonałe. Jest to skuteczna metoda dająca możliwość udoskonalania produktu wraz ze wzrostem świadomości klienta.
• Przyrost – część całości, która rozwija się z czasem. W wytwarzaniu oprogramowania oznacza funkcjonalny fragment oprogramowania, dostarczany jako wynik iteracji. Dzięki dzieleniu ostatecznego produktu na mniejsze części, widząc po- wstające fragmenty, możliwe jest wprowadzenie poprawek i adaptacja wymagańw miarę rozwoju oprogramowania. Unika się w ten sposób odrzucenia produktu na koniec procesu wytwarzania całego produktu.
Model iteracyjno – przyrostowy umożliwia stopniowy, przyrostowy rozwój oprogramowania. Umożliwia to bieżące tworzenie, wdrażanie i użytkowanie kolejnych fragmentów systemu.
Rysunek 2. Iteracyjno – przyrostowy cykl życia systemu, Źródło: opracowanie własne na podstawie Rubin K. (2014), SCRUM, praktyczny przewodnik po najpopularniejszej metodyce Agile, Helion, Gliwice.
Scrum bazuje na krótkich cyklach (iteracjach), które zwane są sprintami. W czasie każdego sprintu Zespół Developerski wytwarza ściśle określony zbiór funkcjonalności zgodny z priorytetami określonymi przez Właściciela Produktu. W trakcie każdej iteracji wykonywane są wszystkie czynności takie jak analiza, projektowanie, budowanie, testowanie, integracja. Efektem pracy sprintu powinien być potencjalnie gotowy do użycia produkt, tzw. przyrost. W czasie inspekcji mającej miejsce podczas Przeglądu Sprintu produkt jest oceniany pod względem zgodności z wymaganiami. Niezwłocznie po zakończeniu sprintu, rozpoczyna się kolejna iteracja.
Podstawą Scrum jest empiryczna kontrola nad procesem. Empiryzm to doktryna filozoficzna głosząca, iż wiedza pochodzi z doświadczenia a decyzje powinny być oparte na znanym. W sercu tej zasady leżą trzy główne filary Scrum: przejrzystość, inspekcja i adaptacja.
Rysunek 3. 3 filary SCRUM, źródło: opracowanie własne
Przejrzystość (ang. Transparency) – oznacza pełną jasność, klarowność i zrozumienie realizowanego projektu dla wszystkich zainteresowanych – wykonawców, klientów a na- wet osób niezaangażowanych bezpośrednio w realizacje a jedynie obserwujących proces z zewnątrz. Zasady są jasne, zrozumiałe dla wszystkich zainteresowanych: postęp prac widoczny i jawny, definicja ukończenia – właściwie interpretowana także przez osoby odbierające produkt.
Inspekcja (ang. Inspection) –Inspekcja w Scrum oznacza nie tylko kontrolę produktu, ale także procesu wytwórczego. Badane jest nie tylko to co budujemy, ale też w jaki sposób to powstaje. Uczestnicy Scrum dokonują inspekcji procesu umożliwiającej znalezienie niepożądanych odchyleń oraz inspekcji produktu dającej szanse na szybkie wprowadzenie poprawek. Inspekcja powinna być na tyle częsta, by wprowadzenie poprawek nie wiązało się z wysokimi kosztami, a także nie tak częsta, by zakłócała pracę. Scrum wyznacza trzy główne zdarzenia służące inspekcji (przeglądowi) – Przegląd Sprintu (ang. Sprint Review), Sprint Retrospective (ang. Sprint Retrospective) oraz Codzienny Scrum(ang. Daily Scrum). Zdarzenia te zostaną omówione w oddzielnych postach.
Adaptacja (ang. Adaptation)– zgodnie ze Scrum Guide oznacza, iż jeśli jakieś aspekty procesu lub produktu nie spełniają przyjętych norm, produkt nie może być zaakcepto- wany i konieczne jest wprowadzenie zmian – dostosowanie procesu lub produktu – tak, by zminimalizować kolejne odstępstwa. Tylko dzięki jak najszybszej reakcji możliwe jest osiągnięcie lepszych rezultatów.
W praktyce przejrzystość, inspekcja i adaptacja jest ciągłym elementem procesu scrumowego.
Rysunek 4. Empiryczna kontrola procesu w Scrum, źródło: opracowanie własne na podstawie Rubin K., SCRUM, praktyczny przewodnik po najpopularniejszej metodyce Agile, Helion, Gliwice 2014
Bibliografia:
- https://pl.wikipedia.org/wiki/Scrum
- Sutherland J., SCRUM – jak robić dwa razy więcej dwa razy szybciej, PWN, Warszawa 2015,
- Rubin K., SCRUM, praktyczny przewodnik po (..) metodyce Agile, Helion, Gliwice 2014,
- Schwaber K, Sutherland J., Tworzenie oprogramowania w 30 dni, Helion, Gliwice 2013,
- Schwaber K., Sutherland J., Scrum Guide, 2013,
- Kaczor K., SCRUM i nie tylko, teoria i praktyka w metodach AGILE, PWN, Warszawa 2014
- Informatyka ekonomiczna, pod red. S. Wrycza
- Wiegers K., Beatty J., Specyfikacja oprogramowania Inżynieria wymagań, Helion, Gliwice 2014