Przemysł rozwoju oprogramowania charakteryzuje się wieloma różnymi podejściami — niektóre to nowe wersje starych metod, a inne wykorzystują stosunkowo nowe praktyki. Dwa najbardziej popularne podejścia toAgile, takie jakScrum, Kanban i Lean, oraz tradycyjny model Waterfall, takie jak metody strukturalne lub nowszy RUP.
Większość firm tworzących oprogramowanie, które stosują te dwa paradygmaty, uważa, że wybrana metoda jest lepsza pod pewnymi względami. Przed odpowiedzią na pytanie „Która metoda jest bardziej skuteczna?” — przeanalizujmy ich kluczowe różnice.
Podejście Waterfall
Waterfall to podejście liniowe w rozwoju oprogramowania. Każdy etap reprezentuje osobny etap w procesie, zazwyczaj zakończony przed rozpoczęciem następnego. Między każdym etapem rozwoju często istnieją punkty kontrolne.
- Zorganizowane jako duży projekt w procesie sekwencyjnym
- Dobre dla środowisk, w których zmiany są rzadkie
- Wymaga pełnej definicji wymagań na początku
Dlatego model Waterfall nakłada wymóg przejścia do następnego etapu dopiero po weryfikacji i walidacji poprzedniego, jak pokazano na rysunku poniżej:

Podejście Waterfall
W oryginalnym modelu Waterfall Royce’a następujące etapy są wykonywane w kolejności:
- Wymagania systemowe i oprogramowania: Zapisane w dokumentie wymagań produktu
- Analiza: Tworzy modele, architekturę i zasady biznesowe
- Projektowanie: Tworzy architekturę oprogramowania
- Kodowanie: Rozwój, weryfikacja i integracja oprogramowania
- Testowanie: Systematyczne wykrywanie i usuwanie błędów
- Eksploatacja: Pełna instalacja systemu, migracja, wsparcie i utrzymanie
Podejście Agile
Agile pochodzi od myślenia Lean, stosując koncepcję „Lean” w środowiskach IT. Kluczowym celem metod Lean jest:
- Usuń straty w procesach
- Zminimalizuj działalność biznesową nieprzynoszącą wartości
- Maksymalizuj wartość z perspektywy klienta

Podejścia agilne
Agilność to sprawdzona metoda zarządzania projektami, która zachęca do zastosowania następujących podstawowych zasad:
- Częste inspekcje i dostosowania
- Zachęca do współpracy zespołu, samoorganizacji i odpowiedzialności
- Zbiór najlepszych praktyk inżynierskich umożliwiających szybkie dostarczanie projektów o wysokiej jakości
- Podejście biznesowe, które dopasowuje rozwój do potrzeb klientów i celów firmy
Rozwój agilny – cykliczny cykl życia
Rozwój agilny obejmuje tradycyjne fazy takie jak planowanie, analiza wymagań, projektowanie, kodowanie, testowanie i wdrażanie — ale tworzą one pętlę zamiast linii prostej. Oznacza to, że proces jest elastyczny, powtarzalny i może odbywać się w dowolnej kolejności lub równolegle. Pozwala to na zbieranie opinii użytkowników, ciągłe testowanie w różnych środowiskach oraz zmianę zakresu projektu w trakcie działania.
Podstawy metodyki agilnej
- Empiryzm:Zdolność do wykonywania, zatrzymywania, reflektowania, poprawiania i kontynuowania w sposób prowadzący do stopniowego zwiększania produktywności.
- Priorytetowość:Dostarczaj pracę na podstawie wartości biznesowej.
- Samooorganizacja:Zespół najlepiej rozumie, jak dostarczyć pracę przy dostępnych zasobach i ograniczeniach.
- Ograniczenie czasowe:Zespół musi ukończyć określone zadanie w ustalonym czasie.
- Współpraca:Zespół zobowiązuje się do dostarczenia ostatecznego produktu w ustalonym czasie, zachęcając do współpracy między zespołami i kreatywnego wykonywania zadań.
Agilność wobec klasycznego podejścia – Trójwymiarowy ograniczony
Największą zaletą podejścia klasycznego jest stałość kosztów i przewidywalność. Znasz cenę i termin dostawy. Jego największą wadą jest brak elastyczności. Metody agilne są bardzo elastyczne i mogą ewoluować w kierunku produktów znacznie różnych od pierwotnej wizji.

Agilność wobec klasycznego podejścia
Klasyczne podejścieopiera się na trójwymiarowym ograniczeniu czasu, kosztów i zakresu. Dostosowanie dowolnej z tych zmiennych wymusza zmianę co najmniej jednej innej. Sukces projektu zależy od zrównoważenia tych wzajemnie się wykluczających zmiennych. Jednak jak wiemy, po prostu dodanie zasobów do projektu nie zawsze prowadzi do oczekiwanego efektu. W rzeczywistości dodanie zasobów na końcu projektu oprogramowania może mieć negatywny wpływ.
Podejście agilneprzyjmuje inne podejście, odwracając trójwymiarowe ograniczenie. Zamiast traktować zakres jako stały od początku, agilność ustala czas (iteracje) i koszt (członkowie zespołu) jako stałe, a następnie dostosowuje zakres, skupiając się na najważniejszych elementach. Agilność zakłada, że zakres będzie się zmieniać z czasem. Celem jest spełnienie najważniejszych wymagań klienta w ramach budżetu i czasu. W miarę postępu projektu agilność pozwala na wprowadzanie nowych wymagań lub zmianę priorytetów.

Agilność wobec klasycznego podejścia – Jakość
Agile czy Waterfall? Spójrz na dane
Nowy raport z Standish Group obejmuje projekty badane w latach 2013–2017. Poniżej przedstawiono ogólne sukcesy, wyzwania i porażki projektów Agile i Waterfall. Projekty Agile mają około dwukrotnie większe szanse na sukces i trzykrotnie mniejsze szanse na porażkę niż projekty Waterfall.

Agile vs Waterfall – wskaźnik sukcesu projektów
Zalety Agile
Od powstania Manifestu Agile w 2001 roku Agile zyskało istotny impuls. W rzeczywistości Agile to nie jedna metodyka, ale mentalność, która pozwala zespołom i organizacjom innowować, szybko reagować na zmieniające się wymagania i zmniejszać ryzyko. Organizacje mogą elastycznie stosować różne dostępne ramy pracy, takie jak Scrum, Kanban, Lean, XP i inne.

Zalety Agile
Podejście Lean
Organizacje Lean rozumieją wartość dla klienta i skupiają się na swoich podstawowych procesach, aby ciągle ją poprawiać. Ostatecznym celem jest dostarczanie idealnej wartości klientowi poprzez proces tworzenia wartości bez strat.
Pięciostopniowy proces myślenia kierujący wdrożeniem Lean jest łatwy do zapamiętania, ale nie zawsze łatwy do wykonania:
- Określ wartość z perspektywy końcowego klienta.
- Zaznacz wszystkie kroki w strumieniu wartości dla każdego produktu, eliminując kroki nieprzynoszące wartości tam, gdzie to możliwe.
- Ustal, by kroki tworzące wartość płynnie i sekwencyjnie docierały do klienta.
- Pozwól klientowi pobierać wartość z kolejnej aktywności w przepływie, gdy będzie to potrzebne.
- Ciągle poprawiaj, identyfikując strumienie wartości, eliminując straty, wprowadzając przepływ i pobieranie, i powtarzając proces, aż osiągnie się doskonałość — czyli dostarczanie idealnej wartości bez strat.

Pięciostopniowe podejście Lean
Podejście Scrum
Scrum to sposób Agile zarządzania projektami, zazwyczaj w rozwoju oprogramowania. Używanie Scrumu w rozwoju oprogramowania Agile często postrzegane jest jako metoda — jednak zamiast traktować Scrum jako metodę, powinien być postrzegany jako ramy zarządzania procesem.

Kanwa procesu Scrum
Podejście Kanban
Kanban to japońskie słowo oznaczające „sygnał wizualny” lub „karta”. Pracownicy linii produkcyjnych Toyoty używali Kanbanu do przedstawienia kroków w procesie produkcji. Jako część podejścia Lean, wysoka wizualność systemu pozwala zespołom łatwiej komunikować, co należy zrobić i kiedy. Umożliwia również standaryzowanie przepływu pracy i doskonalenie procesu, pomagając zmniejszyć straty i maksymalizować wartość. Podobnie jak tablica Scrumu, Kanban śledzi aktywności „Do zrobienia – W trakcie – Zakończone”, ale ogranicza liczbę zadań „W trakcie” (określonych przez lidera zespołu i nie mogą być przekroczonych).

Podejście Kanban
Istnieją cztery podstawowe zasady Kanbanu:
- Wizualizuj pracę, aby zwiększyć komunikację i współpracę.
- Ogranicz pracę w toku, aby uniknąć nieskończonych łańcuchów niepriorytetowych otwartych zadań.
- Mierz i optymalizuj przepływ — zbieraj metryki, przewidywuj przyszłe problemy.
- Nieustannie poprawiaj poprzez analizę i feedback.