AGILE

Metodologia Agile ma do zaproponowania bardziej elastyczne podejście do zarządzania projektami, charakteryzujące się swego rodzaju ziarnistością procesu tworzenia oprogramowania. W przeciwieństwie do Waterfall, Agile jest metodyką, której podstawą jest reaktywność. Zasada reaktywności otwiera pracownikom możliwość samoorganizacji, samodzielnego wyznaczania priorytetów i podejmowania decyzji o tym, które z zadań przewidzianych w planach projektów są najistotniejsze. Agile pozwala na realizację i dostarczanie mniejszych porcji prac składających sie na dany projekt, tak aby pozostawić jeszcze pole na uwzględnienie zmiennych oczekiwań klientów w trakcie jego realizacji. Szybki sygnał zwrotny jest w cenie, a odkrywanie nowych wymagań odbiorców finalnego rezultatu umożliwia jego twórcom przystosować przyszły kod tak, aby pozwolił dostarczyć udoskonalony produkt.

Dominującą dla metodyki Agile jest koncepcja szybkiego ujawniania awarii. Testowanie trwa nieustannie przez cały proces realizacji projektu, a defekty naprawiane są od ręki, zamiast czekać na jeden kompleksowy cykl testów na samych końcu. Projekty, którym służy posługiwanie się metodologią Agile to te, w których procesy realizowane są wg. ścieżki wstępującej. Projekty związane z szybko zmieniającymi się przestrzeniami lub gałęziami przemysłu, a także oprogramowaniem i usługami o wysokiej konkurencyjności i zapotrzebowaniu na szybkie dostosowanie do wymagań rynkowych. Agile umożliwia maksymalizację kreatywności w warunkach elastyczności oczekiwań.

Jest to podejście o charakterze wstępującym, samo napędzającym się, które aby przynosić właściwe rezultaty, potrzebuje podobnej kultury pracy. Agile to zupełne przeciwieństwo Waterfall. Metodologia ta zorientowana jest na nowe standardy pracy pracowników oraz podchodzenia do potrzeb klientów, a także tworzenie dodatkowej wartości w ramach projektów.



HISTORIA AGILE

„Manifest o tworzeniu oprogramowania według metodologii Agile” został opublikowany w lutym 2001 r., po tym jak 17 programistów spotkało się w kurorcie narciarskim w Utah, w celu podjęcia dyskusji o metodach tworzenia oprogramowania. Manifest wskazuje na 4 wartości promowane w ramach metodologii Agile: jednostki i interakcje między nimi, działające oprogramowanie, współpraca z klientem i reakcja na zmiany. W skrócie, metodologia Agile nie poświęca uwagi planowaniu projektów, których realizacja przebiega według porządku sekwencyjnego. Agile przede wszystkim stawia klienta i oprogramowanie w centralnym miejscu, ponad planami, umowami, dokumentacją czy procesami.

MODEL AGILE

Stymulując szybkie postępy prac, Agile stawia na iteracyjność procesu twórczego, dostarczającego rezultaty porcjami składającymi się na większą całość, tak aby zapewnić ich zgodność z oczekiwaniami klientów w trakcie całej ścieżki realizacji projektu. Wymagania wobec projektu ulegają zmianom w trakcie jego realizacji, zaś metodyka ta umożliwia zręczne dostosowywanie się do trudno przewidywalnych okoliczności. Nierzadko Agile bywa stosowana w innych obszarach działalno- ści firmy, takich jak marketing, lub też przez zespoły dostarczające usług o dużym stopniu kreatywności. Elastyczność i częste dostarczanie rezultatów prac klientom pozwala na uzyskiwanie od nich na bieżąco informacji zwrotnych na temat oprogramowania, co przekłada się na optymalizację jakości finalnego produktu.

W metodyce Agile jakość i wkład klienta w projekt cenione są wyżej niż umowy i przewidywalność działań. Agile organizuje większe przedsięwzięcia w szereg mniejszych zadań, które ubiera w określone ramy czasowe. Typowy harmonogram pracy zespołu pracującego w ramach Agile (zwany sprintem lub iteracją) rozciąga się na okres jednego do czterech tygodni. Ponieważ każde zadanie podzielone jest na wiele mniejszych porcji, każdy członek danego, wielofunkcyjnego zespołu może uczestniczyć w pracach równolegle - na koniec zespół dostarcza roboczy produkt, podlegający ocenie klienta. Całość prac, od kodowania po testowanie, jest zakończona w zadanym odcinku czasu, na koniec którego klientowi dostarczane jest robocze oprogramowanie.

ZWROTY POWSZECHNIE STOSOWANE W RAMACH AGILE

Burndown Chart

(Wykres spalania prac)

Wykres graficzny przedstawiający pozostałe do wykonania prace w perspektywie czasu, jaki jest potrzebny na ich realizację. Wykres służy pomiarowi postępów prac na poziomie całego projektu i na poziomie danej iteracji.

Cross-functional Teams

(Wielofunkcyjne zespoły

Zespół składający się z 4 do 8 osób, tworzących kolektyw dysponujący zasobami i kompetencjami potrzebnymi do dostarczenia kompletnego, roboczego produktu.

Daily Standup/Scrum

(Codziennie podsumowania)

Krótkie, codziennie zebrania członków zespołów, składających indywidualne sprawozdania z prac zrealizowanych w dniu poprzednim, wytyczających zakres prac, jaki powinien zostać zrealizowany w danym dniu, oraz określających wszelkie możliwe przeszkody na drodze postępu wykonywanych prac.

Epic

(Duża historia użytkownika)

Historia działań danego użytkownika z pokaźną listą wymagań. Są one zwykle dzielone na mniejsze historie, w celu ułatwienia planowania.

Product Backlog

(Spis epików i historii użytkownika)

Zbiór historii użytkowników oraz wymagań, które zapewniają bazę doświadczeń, wykorzystywaną do przyszłych przedsięwzięć. Poszczególnym opisom nadawane są odpowiednie wagi, tak aby najbardziej priorytetowe sprawy były jak najwcze- śniej załatwiane.

Scrum Master

(Mistrz Scrum)

Scrum Master nie jest postrzegany jako lider zespołu. Zapewnia on zespołowi swego rodzaju bufor ochronny przed napływającymi poleceniami oraz zjawiskami zakłócającymi prace. Istotą jego obowiązków jest koncentrowanie uwagi zespołu na zadaniu.

Sprint/Literation

((Sprint/Iteracja)

Okres czasu, zwykle rozciągający się na 1 do 4 tygodni. Na koniec każdego sprintu dostarczany jest działający produkt.

Sprint Backlog

(Spis zadań sprintu)

Zestawienie zadań, które zgodnie z planem zespół ma za zadanie ukończyć w ramach danego sprintu.

Story Points

(Miara trudności)

Jest to jednostka pomiaru poziom trudności i złożoności danego zadania w ramach projektu realizowanego zgodnie z metodyką Agile. Im więcej punktów przypisuje się dla danego zadania, tym bardziej wydłuża się czas jego realizacji.

User Story

(Historia użytkownika)

Jedno-, dwuzdaniowe opisy najważniejszych z punktu widzenia użytkownika cech produktu. Pozwalają one oszacować czas potrzebny do wytworzenia produktu.

POPULARNE METODYKI OPARTE NA MODELU AGILE


Scrum

Polega na oferowaniu elastycznego środowiska przeznaczonego do tworzenia oprogramowania. Scrum to jedna z najpopularniejszych metodyk Agile. Jej cechy to iteracyjność, stopniowy rozwój, a także poleganie na ciągłej komunikacji wewnątrz zespołu oraz interakcji z klientami. Prace mogą być przesuwane poza sprint lub wciągane w jego zakres, tak, aby maksymalnym stopniu spełnić potrzeby klienta.

Kanban

Metoda Kanban opiera się na dostarczeniu produktu dokładnie na czas. Zadania znajdują się we wspólnej kolejce, a pracownicy przesuwają prace na tablicy Kanban z jednego etapu do kolejnego. Metoda ta nie jest ściśle związana czasem, a wykorzystuje wertykalnie ułożone szpalery zadań, które mają określone limity prac będących w toku (WIP - work in progress) - ograniczające ilość prac, mogących znajdować się jednocześnie w tej samej sekcji wspomnianej tablicy. Prace przesuwane są na tablicy pomiędzy kolumnami, nazwanymi odpowiednio : „Gotowe do rozpoczęcia”, „Nowe zadanie”, „W toku”, „Cykl prac” (często różny dla poszczególnych zespołów) oraz „Ukończone”.

eXtreme Programming (XP)

XP cechuje częste wypuszczanie kolejnych wersji produktu w „krótkich cyklach pracy”. Metodę tą można określić jako rygorystyczny Scrum, który nie dopuszcza do tego, aby zadania były wyłączane z lub dołączone do danego sprintu, podczas gdy Scrum jest metodą bardziej płynną i elastyczną. W oby metodykach prace zostają rozbite na mikro-zadania, a produkty tworzone są w krótkim czasie.

Lean Software Development

Podobnie jak Lean Manufacturing, Lean Software Development skupia się na wyeliminowaniu jakichkolwiek zbędnych naleciałości związanych z procesem tworzenia i dostarczenia kodu. Wszystko, począwszy od niepotrzebnych funkcjonalności, aż po przeciągające się dyskusje między zespołami, traktowane jest jako źródło strat, których należy się pozbyć w celu zapewnienia wyższej jakości dostarczonego produktu. Członkowie zespołów są upoważnieni do wstrzymywania prac w każdym czasie, jeżeli jakakolwiek funkcjonalność nie spełnia oczekiwań co do jakości. Pracownicy mogą żądać naprawy wszelkich usterek i innych zakłóceń, przed kontynuowaniem prac.

KIEDY STOSUJEMY AGILE

Można wyróżnić 3 kluczowe czynniki warunkujące powodzenie projektu realizowanego metodologią Agile: 1) szybkość wykonania produktu jest ważniejsza niż jego jakość, 2) klient posiada możliwość zmiany oczekiwań co do finalnego projektu, oraz 3) twórcy oprogramowania posiadają swobodę w doborze sposobów uzyskania optymalnego rezultatu.

Jeżeli sprecyzowanie końcowego rezultatu staje się istotniejsze niż częste przedstawianie klientowi nowego kodu podczas realizacji projektu, bądź zespół nie jest w stanie pracować w zamkniętych przedziałach czasu, projekt realizowany przy zastosowaniu Agile najprawdopodobniej zostanie skazany na niepowodzenie.

ZALETY I WADY AGILE

ZALETY

Przegląd, przegląd, przegląd

Metodyka Agile pozwala twórcom dokonywać przeglą- du poszczególnych kroków w procesie tyle razy, ile jest to konieczne. Wraz ze zmianą zakresu projektu, twórcy mogą modyfikować zestaw niezbędnych do wykonania prac, tak aby sprostać ewoluującym oczekiwaniom klienta. Agile w przeciwieństwie do Waterfall, pozwala klientowi na utrzymywanie stałego dialogu z zespołem projektowym, co zwiększa szanse na dostosowanie i poprawę produktu stosownie do najbardziej aktualnych potrzeb.

Bieżące testy bieżących rezultatów

Kompleksowy projekt podzielony zostaje na prostsze zadania, co umożliwia zespołom zadaniowym na skupienie uwagi na przygotowaniu i przetestowaniu kodów w ramach tego samego odcinka czasu. Częste testy to gwarancja tworzenia produktów wyższej jakości na końcu procesu oraz szybsze dostarczenie produktu niż ma to miejsce w przypadku metodyki Waterfall, która wymaga jednego, czasochłonnego etapu testów w końcowej fazie prac.

Całkowita orientacja na klienta

Fundamentem Agile są potrzeby klientów. Poprzez wykorzystanie kryteriów akceptacji w narracji historii każdego użytkownika, zespół jest świadomy czego oczekuje klient. Z kolei dzięki możliwości dostarczania kodów z większą częstotliwością niż w przypadku metodologii Waterfall, Agile pozwala twórcom szybko zidentyfikować błędy i skierować projekt na właściwe tory w odpowiednim czasie, unikając w ten sposób potrzeby angażowania większych środków finansowych czy znacznego zwiększania ram czasowych projektu.

WADY

Brak ścisłego etapu wstępnego

W przeciwieństwie do Waterfall, w ramach metodyki Agile nie rozpoczyna się realizacji projektów od pieczołowicie przygotowywanych planów i harmonogramów. Proces planowania jest realizowany równolegle z zasadniczą pracą nad projektem. Wprawdzie pozwala to na szybkie zmiany koncepcji, jednakże nie sprawdza się w przypadku klientów, którzy nie mają zaufania do zespołów zadaniowych lub oczekują precyzyjnie określonego produktu w ściśle określonym czasie.

Finał różny od zaplanowanego

Założenia projektu realizowanego w ramach metodologii Agile mogą bardzo różnić się od rezultatów prac. Projekt, który rozpoczyna się na ścieżce X, może równie dobrze wylądować na ścieżce Y, w związku ze zmianą wymagań projektowych i doprowadzić do innego celu niż pierwotnie planowany. Gdy projekt wymaga przede wszystkim zręczności i elastyczności istnieje ryzyko, że zostanie zakończony nie będąc w pełni zgodny z oczekiwaniami klienta lub też wpadnie w kolizję z działaniami w innych obszarach organizacji. Przykładowo, brak w pełni sprecyzowanej, nie zmienianej w toku prac, charakterystyki produkt końcowy może istotnie utrudnić działowi marketingu promowanie nowego rozwiązania wśród klientów.

Ciągłe poleganie na innych

Manifest Agile i zasady całej metodyki oparte są na za- łożeniu, że członkowie zespołu projektowego posiadają w pełni właściwe kalifikacje i są godni zaufania. W przypadku gdy kierownik projektu lub któryś z członków zespołu, nie reprezentują tych wartości może pojawić się problem niedokończonych prac lub niepotrzebnych sprintów, które wpływają na rozrastanie się projektu pod kątem czasochłonności i kosztów wykonania.