Tworzenie oprogramowania można porównać do gry w bilard, w której działania zaplanowane przez programistów zderzają się niczym bile z nie zawsze precyzyjnie określonymi wymaganiami klienta, ograniczeniami technologicznymi czy nieoczekiwanymi trudnościami technicznymi.
Każdy, kto choć raz grał w bilard, mógł zauważyć, że po pierwszym rozbiciu bil, ogólny plan gry trzeba skorygować odpowiednio do tego, w jakim miejscu aktualnie znajduje się prowadząca kula. Wytrawni gracze są w stanie zaplanować wszystkie sekwencje posunięć z wyprzedzeniem. Jednak nawet oni muszą czasem rozegrać spotkanie niezgodnie z wcześniej zaplanowaną kolejnością. Wszystko zależy od tego, jaką pozycję po kolejnym uderzeniu zajmie biała kula.
Podobnie jest w pracy nad oprogramowaniem. Planowanie kaskadowe jest jak próba przewidzenia wszystkich ruchów na stole bilardowym. W metodykach zwinnych dopuszczamy korektę planu lub inny kierunek działania w zależności od rozwoju sytuacji. Kluczowy jest wybór takiej strategii, która umożliwi tworzenie oprogramowania zgodnie z założeniami, a zarazem podążanie za zmieniającymi się potrzebami klienta.
Odpowiedzią na to wyzwanie jest metodyka hybrydowa, łącząca w sobie zalety dwóch najpopularniejszych obecnie podejść – Waterfall i Agile.
Waterfall, czyli zaplanowane od początku do końca
Waterfall to jedna z pierwszych metodyk, mająca systematyzować i ułatwiać pracę twórców oprogramowania dzięki ustalonym harmonogramom zadań. Z czasem metoda ta ewoluowała; w efekcie aktualizacji i modyfikacji powstały modele V, a następnie W, uwzględniające testowanie równolegle do innych działań.
Waterfall jest modelem kaskadowym, to znaczy składa się z kolejno po sobie następujących etapów. Są to: zebranie i uporządkowanie wymagań biznesowych, analiza, projektowanie systemu, programowanie, testowanie i walidacja, a na końcu wdrożenie. Pożądane założenia i budżet określane są zazwyczaj na samym początku. Możliwe jest również określenie precyzyjnej daty zakończenia przedsięwzięcia. Metodyka Waterfall jest zatem dla tych, którzy cenią sobie przewidywalność kolejnych kroków i trzymanie się przejrzystego schematu działania.
Rys. 1. Etapy pracy w modelu kaskadowym Waterfall / Soflab
Co to znaczy Agile?
Programowanie zwinne Agile można z kolei określić jako metodę otwartą, która nie opiera się na ściśle określonym planie działania. Charakteryzuje się elastycznością – możliwością wdrażania zmian, reagowania na różne sytuacje oraz sterowania budżetem w trakcie trwania projektu.
W tym podejściu pracę dzielimy na krótkie cykle – sprinty. Są one od siebie niezależne. W trakcie każdego sprintu należy wykonać określoną ilość priorytetowych zadań. Wszystkie działania wpisujące się w metodykę Agile prowadzone są tak, aby osiągnąć sprecyzowany cel sprintu, dopasowując działania do bieżących potrzeb i możliwości.
Agile to tak naprawdę cała grupa metodyk zwinnych, które obejmują różne sposoby zwinnego wytwarzania oprogramowania, jak najpopularniejszy obecnie Scrum, czy również bardzo znane XP, Lean, Kanban, DSDM, itd. Ogólnym założeniem metodyki Agile jest bieżące tworzenie, wdrażanie pomysłów, testowanie rozwiązań, przy jednoczesnym udoskonalaniu pozostałych elementów oprogramowania. Podejście to zadowoli zatem klientów ceniących sobie elastyczność i możliwość szybkiego reagowania na pojawiające się zmiany.
Jakie są najistotniejsze różnice między Waterfall a Agile?
Waterfall to praca zgodna z ustalonym harmonogramem działań w projektach podzielonych na kolejne etapy. Jest to liniowy model działania ze ściśle określonymi założeniami i budżetem, a także datą zakończenia całego projektu. Przyjęte na początku założenia są realizowane konsekwentnie, do końca. Dopiero wtedy następuje weryfikacja czy efekt jest zgodny z początkowym wyobrażeniem.
Istotną różnicą podejścia zwinnego w stosunku do podejścia kaskadowego jest to, że zleceniodawca może decydować o kierunku rozwoju projektu w jego trakcie. Decyzje te podejmuje biorąc pod uwagę postępy działań oraz konieczność reakcji na nowe lub zmieniające się okoliczności biznesowe.
Metoda hybrydowa
Skoro każda zwinna metodyka polega na dobieraniu najefektywniejszego narzędzia i najlepszego sposobu realizacji projektu IT, dlaczego nie wykorzystać rozwiązań, które sprawdziły się w Waterfall, przenosząc je na grunt Agile i tworząc w ten sposób własną metodę pracy nad oprogramowaniem? Tego rodzaju kompilacja łącząca walory Agile z tym, co najlepsze w innych podejściach – takich jak Scrum, Kanban, czy Waterfall – otworzyłaby przed nami nowe możliwości.
I tak się już dzieje. Jak pokazuje poniższa grafika, w wielu prowadzonych obecnie projektach wykorzystuje się model hybrydowy w którym Scrum adaptuje się i modyfikuje pod konkretne potrzeby firmy.
Rys. 2. Jaki model wytwarzania jest aktualnie stosowany w twoim projekcie?
Źródło: HP online survey of 601 development and IT professionals
Na podobne tendencje wskazuje także raport ScrumAlliance, prezentujący dane z ponad 90 krajów. Jak się okazuje, coraz mniej firm opiera swe działanie wyłącznie na jednym podejściu – w 2017 roku liczba ankietowanych posługujących się jedynie Scrum spadła o połowę w stosunku do roku poprzedniego. Jednocześnie znacząco wzrósł odsetek podmiotów wykorzystujących metodyki mieszane.
Rys. 3. Metodyka hybrydowa – tendencje wykorzystania metodyk w projektach.
Źródło grafiki: https://www.monolit-it.pl/2018/02/Water-Scrum-Fall
Gdzie może sprawdzić się metoda hybrydowa?
Realizacja krótkoterminowego projektu o ustalonym budżecie i jasno określonych wynikach
Połączenie modelu Waterfall o ściśle ustalonej strukturze z charakterystyczną dla Agile większą dynamiką i wykorzystaniem pracy zespołowej pozwoli na podzielenie procesu tworzenia oprogramowania na etapy i ułatwi zespołowi współpracę z klientem. Z pewnością przełoży się to na ostateczny kształt produktu i pozytywnie wpłynie na jego jakość.
Realizacja krótkoterminowego projektu o ograniczonym ryzyku i z dużym gronem interesariuszy
Jeśli zlecenie musi zostać ukończone w krótkim czasie a ryzyko niedotrzymania terminu ma być ograniczone do minimum, znakomicie sprawdzi się podejście Waterfall, z jego precyzyjnie ustalonym harmonogramem działań. Model Agile pozwoli natomiast na uzyskanie informacji zwrotnych od zainteresowanych stron.
Metoda hybrydowa – model Water-Scrum-Fall
Metodyka hybrydowa może przybierać tak wiele form, że trudno byłoby je wszystkie opisać. Skupmy się zatem na jednej z najpopularniejszych kombinacji: Water-Scrum-Fall. Początkowo nazwa ta odnosiła się do projektów, w których nie powiodło się wdrożenie Scrum. Dziś już jednak nie ma negatywnych konotacji – oznacza nowy typ podejścia i stanowi jedną z dróg skutecznego tworzenia oprogramowania, choć reguły tej metody nie zostały jeszcze ostatecznie określone.
Water-Scrum-Fall możemy opisać jako połączenie klasycznego podejścia (Waterfall) oraz zwinnego procesu wytwarzania oprogramowania (Agile), przy czym w fazie implementacji najczęściej wykorzystuje się metodykę Scrum.
1. Etap „WATER” – faza ustaleń biznesowych, projektowania i planowania. Obejmuje ona: analizę przypadku biznesowego i procesu biznesowego, zbieranie i dokumentowanie wysoko poziomowych wymagań, projektowanie architektury IT, przekładanie procesu biznesowego na wspierające go systemy informatyczne oraz szczegółowe zdefiniowanie interfejsów międzysystemowych docelowej architektury.
2. Etap „SCRUM” – faza implementacji. Zakłada szczegółową analizę systemową i produkcję oprogramowania – czynności są realizowane z zastosowaniem metodyk Agile, w oparciu o plany i dokumentację z etapu Water korygowane na bieżąco przy każdej iteracji.
3. Etap „FALL” – faza testów i ich dostarczania działającego oprogramowania lub konkretnej funkcjonalności w ramach określonych wdrożeń. Rozpoczyna się po zakończeniu „zwinnego” etapu Scrum; przewiduje testy systemowe, integracyjne i akceptacyjne.
Rys. 4. Metodyka hybrydowa – połączenie Waterfall z Agile / Soflab
Water-Scrum-Fall nie zawsze bywa ostateczną wizją prowadzenia projektu w firmie. Często postrzega się go jako etap pośredni, czyli moment przejścia między metodyką kaskadową a metodyką zwinną. Z powodu mody na Agile, przedsiębiorstwa celują w posługiwanie się zwinnymi metodami i technikami a korzystanie ze struktur klasycznych często wynika z ograniczeń czy stanu stagnacji firmy. Water-Scrum-Fall wielokrotnie zostaje nazywany metodyką niedojrzałą, niekompletną.
Jednakże metodyka hybrydowa Water-Scrum-Fall świetnie zagospodarowuje nam obszary do łatwej zmiany, pozostawiając te najbardziej problematyczne aspekty tradycyjnemu, kaskadowemu podejściu.
W pierwszej kolejności możemy wykorzystać ją w procesie implementacji, który jest fragmentem procesu stosunkowo łatwo adaptującym metodyki zwinne, natomiast przyswojenie zmian bywa trudne w fazach takich jak:
- dokumentowanie procesu biznesowego,
- kompletowanie wymagań,
- projektowania architektury,
- przeprowadzanie testów oprogramowania.
Dlatego w takim przypadku ich realizacja odbywa się ponownie za pomocą modelu kaskadowego (Waterfall).
Jak uczynić metodę Water-Scrum-Fall bardziej „zwinną”?
Fazę zwinnej realizacji projektu w modelu Water-Scrum-Fall możemy próbować poszerzać w dwóch kierunkach:
− poprzez skracanie fazy „Water-”, minimalizując liczbę analiz i projektowania jeszcze przed rozpoczęciem budowy oprogramowania (tym samym włączając analizę do zwinnej fazy realizacji);
− poprzez eliminowanie lub skrócenie fazy „-fall”, za pomocą ciągłego dostarczania i częstego wdrażania oprogramowania do środowisk testów akceptacyjnych i produkcyjnych.
Zarówno jedna, jak i druga opcja pogłębiają zwinności metodyk w projekcie. To, w jakim stopniu dana zmiana zostanie zintensyfikowana, zależy od możliwości, doświadczenia i determinacji konkretnej organizacji. Jeżeli celem przedsiębiorstwa jest dalsza transformacja i osiągnięcie większej zwinności w metodykach, to należy uwzględnić obowiązkowy punkt planowania projektu – stworzenie dodatkowego planu zarządzania granicami pomiędzy trzema fazami „Water-Scrum-Fall”. W efekcie powinniśmy osiągnąć maksymalną zwinność w projektach.
Water-Scrum-Fall jako metodyka hybrydowa może być zatem jedynie przystankiem do całkowitej zmiany metodyki w firmie.
Metoda hybrydowa okiem testera – słabe strony w projektach opartych na Water-Scrum-Fall
Water-Scrum-Fall łączy wprawdzie najlepsze rozwiązania metodyk, na których został oparty, nie jest jednak modelem idealnym. Jego słabą stroną jest etap testowania, który znalazł się poza fazą sprintów. Utrudnia to działania zespołu testującego bezpieczeństwo, funkcjonalność i wydajność oprogramowania, zwiększa ryzyko podejmowania zbędnych zadań, spowalnia dynamikę pracy nad defektami produktu. W konsekwencji efekty prac nie są właściwie ocenione.
Konstrukcja metody powoduje, że na końcowym etapie projektu wytracana jest prędkość, z jaką wprowadzane są zmiany. Dotyczy to także fazy wdrożeń, które przebiegają nieregularnie i z mniejszą częstotliwością.
Kolejne trudności wynikają ze ścisłego zaplanowania pewnych faz projektu. Zespoły przyzwyczajone do elastycznych warunków pracy mogą czuć się ograniczone sztywnymi zasadami narzuconymi na danym etapie i nie będą umiały w pełni zaangażować się w jego realizację.
Modele hybrydowe, takie jak Water-Scrum-Fall, wymagają od menadżerów dużej sprawności w zakresie planowania i zarządzania sprintami. Wiele osób, zarówno z kadry zarządzającej, jak i spośród pracowników przydzielonych do danego projektu, styka się ze „zwinnym” podejściem po raz pierwszy. Konieczne jest więc odpowiednie przygotowanie i zaznajomienie ze specyfiką tej metody.
Wreszcie, podejście hybrydowe może generować zbyt wiele zmiennych prowadzących do opóźnień czy przekraczania przewidzianego budżetu.
Jeśli nie metoda hybrydowa, to co innego?
Przed epoką metodyk hybrydowych, w odpowiedzi na wyzwania i problemy klientów związane ze skalowaniem projektów opracowany został SAFe®. Jest to zbiór sprawdzonych i zintegrowanych praktyk stosowanych w metodach Lean i Agile, wykorzystywanych na szeroką skalę przez duże podmioty biznesowe. Skalowalność i budowa modułowa pozwalają na zastosowanie SAFe® w dowolnej firmie, w celu osiągnięcia lepszych wyników finansowych, ale także poprawy satysfakcji i zaangażowania pracowników.
Ciągły rozwój metodyk tworzenia oprogramowania
Branża IT przeobraża się niezwykle szybko. Zmieniają się tym samym metodyki tworzenia oprogramowania. Wydaje się więc prawdopodobne, że w przyszłości powstaną kolejne, nowe modele, które dorównają popularnością Waterfall i Agile.
Może się również okazać, że Water-Scrum-Fall doczeka się oficjalnych podręczników teoretyczno-praktycznych, ściśle spisanych reguł i zainteresowania organizacji wydających cerftyfikaty. Jakkolwiek ułoży się przyszłość metodyk stosowanych w branży IT, kluczem do skutecznej i efektywnej pracy niezmiennie pozostawać będzie jedno: podejście musi być dopasowane do specyfiki naszej firmy, charakteru projektu i oczekiwań klienta.