Programowanie zwinne (ang. agile software development) – grupa metod zarządzania procesem produkcji oprogramowania opartego na programowaniu iteracyjno-przyrostowym. Najważniejszym założeniem metodyk zwinnych jest obserwacja, że wymagania odbiorcy (klienta) często ewoluują podczas trwania procesu produkcyjnego[1]. Oprogramowanie wytwarzane jest przy współpracy samozarządzalnych zespołów, których celem jest przeprowadzanie procesów wytwarzania oprogramowania. Pojęcie zwinnego programowania zostało zaproponowane w 2001 w Manifeście agile.

Generalnie grupa metodyk oparta jest na zdyscyplinowanym zarządzaniu procesem produkcji oprogramowania, które zakłada częste inspekcje wymagań i rozwiązań wraz z procesami adaptacji (zarówno specyfikacji, jak i oprogramowania). Najczęściej znajdują zastosowanie w małych zespołach programistycznych, w których nie występuje problem komunikacji, przez co nie trzeba tworzyć rozbudowanej dokumentacji kodu. Kolejne etapy wytwarzania oprogramowania zamknięte są w iteracjach, w których za każdym razem przeprowadza się testowanie wytworzonego kodu, zebranie wymagań, planowanie rozwiązań itd. Nastawione są na szybkie wytwarzanie oprogramowania wysokiej jakości.

Skład zespołów jest zazwyczaj wielofunkcyjny oraz samozarządzalny, bez zastosowania jakiejkolwiek hierarchii organizacyjnej. Członkowie zespołu biorą odpowiedzialność za zadania postawione w każdej iteracji. Sami decydują, jak osiągnąć postawione cele.

Metodyki zwinne dużą wagę przywiązują do bezpośredniej komunikacji między członkami zespołu, minimalizując potrzebę tworzenia dokumentacji. Jeśli członkowie zespołu są w różnych lokalizacjach, to planuje się codzienne kontakty za pośrednictwem dostępnych kanałów komunikacji (wideokonferencja, e-mail itp.).

Częstym błędem występującym u osób i zespołów stosujących metodykę agile jest nadinterpretacja jej założeń i całkowicie błędne pomijanie bardzo ważnych etapów procesu tj. fazy zbierania wymagań, a następnie na ich podstawie faz analizy oraz planowania.

Metodyki zwinne sprawdzają się bardzo dobrze, gdy wykorzystują je osoby oraz zespoły potrafiące dobrze ustrukturyzować swoją pracę nad danym procesem produkcyjnym oraz jego poszczególnymi zadaniami w oparciu o „etapy” programowania zwinnego. Wynika to z faktu, iż jest ona mniej sformalizowana, przez co większy ciężar dbania o organizację i systematykę pracy spoczywa na osobach bezpośrednio realizujących poszczególne zadania. W przypadku osób i zespołów o „chaotycznym/niezorganizowanym” podejściu niepotrafiących ustrukturyzować swojej pracy, zalecane jest korzystanie ze sformalizowanych metod programowania. Metodyki te przejmują na siebie większy ciężar szczegółowego strukturyzowania zadań w projekcie i tym samym pozwalają zapewnić większą kontrolę nad spójną realizacją poszczególnych elementów procesu produkcji oprogramowania.

Wyzwania metodyk zwinnych obejmują trudności z adaptacją w dużych organizacjach, gdzie istnieją silnie zakorzenione struktury hierarchiczne i procesy, które mogą ograniczać elastyczność i szybkość reakcji. Ponadto, brak odpowiedniego wsparcia ze strony kierownictwa, brak zaangażowania zespołów lub brak zrozumienia filozofii metodyk zwinnych mogą prowadzić do niepowodzeń w implementacji. Krytyka metodyk zwinnych dotyczy nadmiernego skupiania się na szybkim dostarczaniu produktu kosztem jakości, braku wystarczającej dokumentacji oraz trudnościach w przewidywaniu czasu i kosztów projektu. Niektórzy krytycy argumentują także, że takie podejście może być mniej odpowiednie dla projektów o wysokim stopniu złożoności lub o dużym zakresie, gdzie konieczne jest szczegółowe zaplanowanie i analiza wymagań przed rozpoczęciem prac[2].

Etapy

Przy realizacji zadań w procesie produkcji oprogramowania w oparciu o metodykę programowania zwinnego wyróżnia się następujące po sobie etapy:

Powyższe etapy tworzą cykl powtarzany do czasu zakończenia danego zadania. Bardzo ważne jest zaznaczenie, iż kolejne cykle mają służyć ewentualnemu skorygowaniu przygotowanego zadania na bazie informacji klienta lub elastycznemu wprowadzaniu ewentualnych zmian wymagań ze strony klienta, jeżeli takie się pojawiły w formie informacji zwrotnej (feedback). Kolejne cykle nie mają natomiast na celu – jak błędnie przyjmuje część „chaotycznych / niezorganizowanych” osób lub zespołów – nieskończone poprawianie błędów danego zadania wynikających z pominięcia lub niedokładnego przeprowadzenia etapu Planowania w tym zbierania i analizy wymagań od klienta.

Poszczególne etapy można opisać następująco:

Podstawowe zasady

 Osobny artykuł: Manifest Agile.

Manifest agile (ang. Agile Manifesto) – założenia:

Zobacz też

Przypisy

  1. Agile & Waterfall Methodologies – A Side-By-Side Comparison.
  2. Natalia Charzyńska, Metodyka Agile - Kompleksowy Poradnik cz.2. Wady i zalety [online], Profesjonalnie o Meta Ads i Marketingu - charzynska.pl, 4 lipca 2019 [dostęp 2024-02-20] (pol.).

Linki zewnętrzne