Zwinne programowanie Przekierowano ze strony: Agile software development ang. agile software development

Zwinne programowanie – grupa metod wytwarzania oprogramowania opartego na modelu iteracyjnym. Wymagania oraz rozwiązania ewoluują 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.

Spis treści

Charakterystyka

Generalnie metodyka oparta jest na zdyscyplinowanym zarządzaniu projektem, które zakłada częste inspekcje wymagań i rozwiązań wraz z procesami adaptacji (zarówno specyfikacji jak i oprogramowania). Metodyka ta najczęściej znajduje 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. Metoda nastawiona jest na szybkie wytwarzanie oprogramowania wysokiej jakości.

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

Metoda nastawiona jest na bezpośrednią komunikację pomię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.).

Warto dodać, że bez względu na wymaganą dyscyplinę rozwoju każdy zespół Agile musi posiadać w swoim składzie przedstawiciela klienta. Osoba ta jest powoływana przez zainteresowane strony do działania w ich imieniu i sprawia, że ​​są oni jakby osobiście zaangażowani i są dostępni dla programistów, aby odpowiedzieć na mnożące się w trakcie iteracji pytania. Na końcu każdej iteracji, interesariusze oraz przedstawiciele klienta dokonują przeglądu postępów oraz ponowną ocenę priorytetów w celu optymalizacji tzw. zwrotu z inwestycji (ROI) i zapewniają dostosowanie do potrzeb klientów i celów firmy.

Proces wytwórczy oprogramowania

Oprogramowanie wytwarzane jest od stosunkowo niedawna, dlatego procesy wytwórcze oprogramowania szybko się zmieniają w czasie, zmienia się też często opinia na temat 'który jest najlepszy'. Istnieje wiele szkół mówiących o tym, jak należy wytwarzać oprogramowanie:
  • Rational Unified Process – proces wytwarzania oprogramowania opracowany przez firmę Rational Software (która jest również twórcą języka UML). Proces dostosowany jest do prowadzenia większych projektów.
  • Open Unified Process – metodyka wytwarzania oparta na metodyce RUP. Szablon do tworzenia procesu zaimplementowany jest w produkcje Eclipse Process Framework rozwijanym przez Eclipse Foundation.


W metodyce nurtu zwinnego wymienić możemy z kolei m.in.:
  • XP (ang. Extreme Programming) – proces lżejszy od metodyki RUP, obarczony jednak większym ryzykiem – jest znacznie mniej sformalizowany (i przez to lubiany przez programistów).
  • Scrum – jest bardziej sformalizowany od XP, ale wciąż przyjemny i przyjazny dla programistów. Oprogramowanie jest tworzone w wyszczególnionych odstępach czasowych, tzw. sprintach, timebox'ach, w czasie których zespół ma za zadanie wykonać z góry określone wymogami zadania. Nad zespołem czuwa Scrum Master, który jest raczej pomocnikiem niż liderem zespołu.


Cele

Główne cele i zasady, jakie spełniają zwinne metodyki zostały spisane Manifeście Agile, który uważany jest obecnie za główne źródło wiedzy. Poniżej prezentujemy kompilację głównych celów i zasad przyświecająca stosowaniu zwinnych metodyk w ramach zarządzania projektami:
  • elastyczność i adaptacyjność projektowania względem dynamicznie zmieniających się potrzeb i oczekiwań klienta
  • tworzenie wartościowych i innowacyjnych rozwiązań zarówno dla firmy jak i konsumentów na każdym etapie projektowania;
  • minimalizacja kosztów m.in. dzięki skróceniu harmonogramów procesu wytwarzania;
  • koncentracja na członkach zespołu projektowego, wzrost motywacji wśród pracowników i bezstresowa realizacja projektów;
  • ścisła współpraca z klientem - preferowany jest kontakt bezpośredni;
  • prostota i samo-organizujące się zespoły;
  • satysfakcja klientów dzięki szybkiemu i regularnemu dostarczaniu wartościowego produktu;
  • minimalizacja ryzyka.


Porównanie z innymi metodami

Istnieją zarówno metody adaptacyjne, jak predykcyjne. Metody zwinne należą bezapelacyjne do tych adaptacyjnych. Adaptacyjne metody koncentrują się na szybszej adaptacji do zmieniających się realiów. Gdy istnienie potrzeba zmiany projektu, zespół także potrafi się dostosować. Taki adaptacyjny zespół będzie miał oczywiście trudności z opisaniem tego co się stanie w przyszłości. Nie potrafi przewidzieć co będzie robić za tydzień, ale potrafi przygotować sobie zadania na najbliższy miesiąc.

Metody predykcyjne, w przeciwieństwie do metod zwinnych, skupiają się na szczegółowym planowaniu przyszłości. Predykcyjny zespół musi ustalić dokładnie, jakie funkcje i zadania planowane są w ciągu trwania całego projektu. Zespoły takie mają przez to trudności ze zmianą kierunku działania. Plan jest zazwyczaj optymalizowany tak, aby dane zadanie zostało wykonane. Wszelkie poprawki mogą być wdrażane dopiero po jego skończeniu i zamknięciu.

Wymienić ponadto możemy metody formalne, które w przeciwieństwie do metod adaptacyjnych i predykcyjnych, koncentrują się na teoriach informatycznych. Formalne metody próbują udowodnić brak błędów przy pewnych poziomach determinizmu. Niektóre formalne metody są oparte na modelu kontroli kodów. Zespoły Agile mogą czasem korzystać z bardzo formalnych metod.

Stosowane metodyki

Do najbardziej znanych zwinnych metodyk należą:

Bibliografia

Znaki towarowe

  • DSDM® and Atern® are registered trademarks of Dynamic Systems Development Method Limited in the United Kingdom and other countries;
  • DSDM® and Atern® are registered trademarks of Dynamic Systems Development Method Limited in the United Kingdom and other countries;
ostatnia modyfikacja 20 sierpnia 2016 r.