Metodyka Waterfall a Scrum
Ostatnia aktualizacja 2 czerwca, 2023
Model kaskadowy (z angielskiego Waterfall model) jest jednym z najstarszych podejść do zarządzania projektami w tworzeniu oprogramowania. W latach 70. XX wieku Winston W. Royce opisał model kaskadowy w artykule pt. “Zarządzanie procesem tworzenia dużych systemów oprogramowania”, jednak zastrzegł, że model liniowy może bywać zawodny.
Można powiedzieć, że były to prorocze słowa. Szybki rozwój technologiczny wymusił zmiany w zarządzaniu projektami i w 2001 roku, z inicjatywy 17 programistów, powstał Agile Manifesto, który dał początek zwinnym metodom pracy. Pod parasolem Agile’a kryje się m.in. Scrum. Zdobył on popularność ze względu na swoją adaptacyjność i skupienie na dostarczaniu wartości dla klienta w krótkich iteracjach.
Waterfall – cechy charakterystyczne
Waterfall to sekwencyjny proces projektowy, w którym poszczególne etapy są realizowane jeden po drugim, tworząc wizualizację procesu przypominającą wodospad.
Zasady działania tego modelu są proste i jasne – fazy projektu występują jedna po drugiej, w stałej kolejności, tworząc kaskadowy ciąg etapów.
Proces ten można zobrazować na schemacie:
Analiza wymagań
↓
Projektowanie
↓
Implementacja
↓
Testowanie
↓
Utrzymanie
Analiza wymagań
Na tym etapie zespół projektowy gromadzi wszystkie informacje i wymagania od klienta. Obejmuje to rozmowy z klientem, a także pracę analityków systemowych. Efektem tej fazy jest zrozumienie celów biznesowych, które ma realizować oprogramowanie oraz zebranie wszystkich wymagań funkcjonalnych i niefunkcjonalnych.
Projektowanie
Na podstawie zgromadzonych wymagań, zespół projektowy tworzy architekturę systemu. Zazwyczaj obejmuje to tworzenie modeli danych, interfejsów użytkownika, diagramów systemu oraz planów implementacji różnych funkcji. W efekcie powstaje szczegółowy plan, który będzie podstawą do napisania kodu.
Implementacja
Na tym etapie programiści zaczynają pisać kod na podstawie projektu. Zwykle realizuje się go w małych częściach, które są stopniowo integrowane z całością. Na koniec tej fazy powinno powstać działające już oprogramowanie.
Testowanie
Po implementacji przeprowadza się testy, które mają na celu wykrycie błędów i niedociągnięć. Obejmują one przede wszystkim:
- testy jednostkowe,
- testy integracyjne,
- testy systemowe,
- testy akceptacyjne.
Na tym etapie testerzy sprawdzają, czy oprogramowanie działa zgodnie z założeniami.
Utrzymanie
Po dostarczeniu oprogramowania wchodzi ono w fazę utrzymania. Obejmuje to wsparcie dla użytkowników, naprawianie błędów, dodawanie nowych funkcji oraz aktualizację oprogramowania do zmieniających się wymagań biznesowych lub technologicznych.
Jednym z głównych ograniczeń modelu kaskadowego jest fakt, że każdy etap musi być zakończony przed rozpoczęciem kolejnego, co sprawia, że zmiany są trudne do wprowadzenia po rozpoczęciu procesu. Dlatego jest często zastępowany przez bardziej elastyczne metodyki, np. Scrum.
Ponadto model Waterfall wymusza skupienie na planowaniu i dokumentacji, a nie na dostarczaniu wartości, co może prowadzić do opóźnień w dostawach.
Dalsza część tekstu znajduje się pod wideo:
Scrum
Scrum jest elastycznym, iteracyjnym modelem pracy, który skupia się na dostarczaniu wartości dla klienta w krótkich cyklach zwanych sprintami. W przeciwieństwie do modelu kaskadowego, Scrum pozwala na wprowadzanie zmian i adaptację do nowych wymagań podczas trwania projektu. Umożliwia skupienie się na ciągłym doskonaleniu, dlatego jest idealny dla projektów wymagających szybkiego reagowania na zmiany.
Proces w Scrumie zawiera następujące elementy:
- Planowanie Produktu (Product Backlog) – Właściciel Produktu (Product Owner) tworzy i priorytetyzuje listę funkcji, które mają być zaimplementowane w produkcie.
- Planowanie Sprintu (Sprint Planning) – zespół Scrum wybiera elementy z Product Backlogu do pracy w nadchodzącym sprincie (zazwyczaj 2-4 tygodnie). W tym czasie określane są cele sprintu.
- Sprint – przez ustalony okres zespół pracuje nad wybranymi zadaniami.
- Codzienne spotkania (Daily Scrum / Stand-up) – każdego dnia zespół spotyka się na krótkim 15-minutowym spotkaniu, aby omówić postępy i ewentualne przeszkody.
- Przegląd Sprintu (Sprint Review) – na końcu sprintu zespół prezentuje ukończone funkcje Product Ownerowi i zbiera informacje zwrotne.
- Retrospektywa Sprintu (Sprint Retrospective) – zespół omawia, co poszło dobrze, co można poprawić i jakie zmiany wprowadzić w następnym sprincie.
- Następny Sprint – proces zaczyna się od nowa z nowymi elementami z Product Backlogu.
Wady Scruma
Scrum również ma swoje wyzwania. Jest trudny do nauczenia i wymaga silnego przywództwa oraz samodzielnych zespołów. Co warto mieć na uwadze, chcąc stosować tę metodykę?
- Wysokie wymagania co do zaangażowania – Scrum wymaga intensywnej komunikacji i adaptacji, co może być obciążające.
- Potrzeba samodzielnych zespołów – metodyka Scrum działa najlepiej z samodzielnie decydującymi zespołami, co może być trudne w hierarchicznych organizacjach.
- Zmiana roli klienta – klienci muszą być aktywnie zaangażowani, co nie zawsze jest możliwe lub pożądane.
- Brak konkretnej dokumentacji – Scrum może nie generować wystarczająco szczegółowej dokumentacji dla niektórych sektorów.
- Trudność w szacowaniu – precyzyjne szacowanie czasu i kosztów może być trudne z powodu iteracyjnej natury Scruma.
Czytaj więcej:
Wypalenie zawodowe zbiera żniwo w IT
ChatGPT może być pomocny w walce z hakerami
Design – co warto wiedzieć przed wejściem do branży