Nie istniej jedna, uniwersalna metoda wdrażania systemów informatycznych, która sprawdzi się w realiach każdego projektu i przedsiębiorstwa. Obecnie dominuję dwie formy: tzw. model kaskadowy (waterfall) i zwinny (agile). Model kaskadowy to tradycyjny model zarządzania projektami. Jest to podejście liniowe i sekwencyjne. Zadania wykonane w jednej fazie, muszą zostać przeanalizowane i zweryfikowane przed przejściem do następnej fazy. Metodologia agile to z kolei podejście przyrostowe, oparte na elastycznym reagowaniu na zmiany.
Jakie zalety i wady posiadają te metody. W przypadku jakich projektów sprawdzają się najlepiej?
Model kaskadowy (waterfall)
Zarządzanie projektami kaskadowymi to podejście sekwencyjne, które dzieli projekt na odrębne fazy. Do typowych faz należą: zbieranie wymagań, analiza, projektowanie, kodowanie, testy wewnętrzne, testy akceptacyjne, instalacja, wdrożenie, szkolenie i uruchomienie. Następna faza może być kontynuowana tylko wtedy, gdy poprzednia faza została pomyślnie zakończona.
Jednym z największych wyzwań związanych z modelem kaskadowym jest fakt, że odbiorca systemu może zweryfikować rezultat prac dopiero po zakończeniu poszczególnego etapu lub całego projektu. W negatywnym scenariuszu może to doprowadzić do sytuacji, gdy klient dopiero na etapie testów akceptacyjnych stwierdza, że efekt nie jest zgodny z jego oczekiwaniami. Oznacza to zmarnowanie czasu i pieniędzy, a także istotnie zwiększa ryzyko anulowania projektu.
Z modelem kaskadowym wiąże się obszerna dokumentacja projektowa. Przy jej tworzeniu często wykorzystuje się instrukcje i dobre praktyki zawarte metodyce PRINCE2 czy wskazaniach PMI (Project Management Institute).Wysoki poziom formalizacji ogranicza jednak elastyczność projektu, obniża zdolność do reagowania w przypadku dużej ilości lub znaczącej zmiany wymagań.
Wszystko to sprawia, że model kaskadowy nie jest zalecany w przypadku długoterminowych projektów, obarczonych wysokim ryzykiem i niepewnością. Metoda ta nie sprawdzi się, gdy na etapie planowania nie można określić pełnych wymagań i rezultatów. Jeśli zaistnieje konieczność wprowadzenia znaczących modyfikacji zakresu projektu, nieuniknione może stać się jego anulowanie i rozpoczęcie od nowa.
Zalety modelu kaskadowego:
- proste planowanie i projektowanie dzięki precyzyjnym założeniem określonym na początku projektu;
- projekt systemu od początku obejmuje pełen zakres prac,
- precyzyjnie określony zakres prac;
- relatywnie proste określenie budżetu;
- łatwa weryfikacja postępu prac.
Wady modelu kaskadowego:
- sztywna konstrukcja utrudnia wprowadzenie zmian;
- nie uwzględniania czynnika niepewności;
- potwierdzenie, że zostały spełnione wymagania projektu następuje po jego zakończeniu;
- wymaga obszernej dokumentacji;
- przejście do kolejnej fazy możliwe jest dopiero po zakończeniu poprzedniej;
- ograniczone zaangażowanie klienta może skutkować obniżoną satysfakcją z rezultatów;
- podejście kaskadowe jest ryzykowne w przypadku długoterminowych projektów, których końcowy efekt jest odległy w czasie.
Model zwinny (agile)
Metodyki zwinne pozwalają wdrożyć system informatyczny metodą małych kroków. Zapewnia to dużą elastyczność procesu, lepszą kontrolę i wysokie zdolności adaptacji rozwiązań do zmieniających się potrzeb. Ideą wdrożenia zwinnego jest szybkie rozpoczęcie pracy ze standardową wersją aplikacji, a następnie stopniowe, iteracyjne dopasowywanie jej do szczegółowych potrzeb użytkownika.
Metoda zwinna kładzie nacisk na ścisła współpracę i zadowolenie klienta. Definiuje ograniczone czasowo etapy nazywane sprintami lub timeboxami, których czas wynosi zwykle tydzień, dwa tygodnie lub miesiąc.
Na początku każdego sprintu tworzona jest lista zadań, ustalana według priorytetów określonych wspólnie z klientem. Klient może dowolnie modyfikować priorytet dla wszystkich nieopracowywanych jeszcze funkcji systemu. Pod koniec sprintu dostawca systemu i klient przeglądają i oceniają postępy prac.
Model zwinny ułatwia racjonalizację kosztów. Dostawcy oprogramowania, gdy składają ofertę na wdrożenie systemu w modelu tradycyjnym, zazwyczaj zakładają pewien bufor, tak aby zabezpieczyć się przed nieprzewidzianymi sytuacjami. Konieczność prognozowania nakładów pracy w długim horyzoncie sprawia, że taka oferta często jest przeszacowana.
Zalety modelu agile
- szybkie uruchomienie dzięki rozpoczęciu pracy na wersji bazowej, pozwala to rozłożyć w czasie często najbardziej czasochłonny etap projektu jakim są dostosowania pod specyficzne wymagania użytkownika;
- efektywne testowaniedzięki podzieleniu go na małe fragmenty i prowadzenie na bieżąco;
- szybszy cykl życia oprogramowania;
- szybka weryfikacja założeń, klient może szybko przekonać się, jak poszczególne funkcje systemu sprawdzają się w praktyce;
- stałe zaangażowanie klienta w proces tworzenia kolejnych iteracji systemu pozwala uniknąć nieporozumień, a co za tym idzie marnotrawstwa czasu i środków;
- większe zaangażowanie klienta w rozwój systemu przekłada się często na lepszy odbiór przez użytkowników;
- racjonalizacja kosztów.
Wady modelu agile
- wymaga znaczącego zaangażowania klienta;
- członkowie zespołu projektowego muszą mieć wysoką świadomość zasad kierujących metodykami zwinnymi, a także muszą być silnie zmotywowani;
- całkowite koszty projektu są trudniejsze do oszacowania niż w modelu kaskadowym;
- uboższa dokumentacja niż w modelu kaskadowym.
Model kaskadowa a zwinny – zestawienie różnic
Idea – agile to podejście przyrostowe i iteracyjne, model kaskadowy to podejście liniowe i sekwencyjne.
Budowa – agile dzieli projekt na sprinty, a metoda kaskadowa na fazy.
Zastosowanie – metoda zwinna pomaga w realizacji wielu małych projektów, model waterfall lepiej sprawdza się w celu ukończenia jednego, dużego projektu.
Relacje z klientem – agile kładzie nacisk na ścisłą współpracę z klientem, model kaskadowy koncentruje się na realizacji założeń projektu.
Ewaluacja – w podejściu zwinnym założenia projektu są monitorowane na bieżąco podczas codziennych spotkań, ewaluacja w modelu kaskadowym następuje po zakończeniu danej fazy.
Wprowadzenie zmian – agile pozwala zmodyfikować wymagania w dowolnym momencie, podejście waterfall sztywno trzyma się założonego zakresu.
Testowanie – w modelu zwinnym testowanie odbywa się na bieżąco, w modelu kaskadowym przeprowadza się je w końcowej fazie projektu.
Model kaskadowy i zwinny to diametralnie różne podejścia do zarządzania projektem. Obydwie metody posiadają istotne zalety i wady. O tym, który z nich okaże się w danej sytuacji lepszy decydują przede wszystkim: nastawienie klienta, model finansowania, skala i horyzont czasowy wdrożenia.