• Nie Znaleziono Wyników

Elementy zbie˙zno´sci metodyk zwinnych z koncepcj ˛ a przed-

2.2 Metodyki wytwarzania oprogramowania

2.2.3 Metodyki zwinne

2.2.3.1 Elementy zbie˙zno´sci metodyk zwinnych z koncepcj ˛ a przed-

Wraz ze wzrostem znaczenia oprogramowania „metodyka klasyczna okazała si˛e jednak zbyt mało elastyczna i niewystarczaj ˛aca przy dynamicznie zmieniaj ˛acych si˛e potrzebach biz-nesowych” [Grobelna, Trzcieli´nski 2017]. W odpowiedzi na te zmiany, zachodz ˛ace zarówno

w ´srodowisku zewn˛etrznym, jak i wewn˛etrznym poprzez modyfikowanie wymaga´n, w 2001 roku w bran˙zy IT ogłoszono Manifest Zwinnych Metodyk (Manifesto for Agile Software De-velopment) [Manifesto... 2001]. Zapocz ˛atkowało to nurt zwinnych metodyk wytwarzania opro-gramowania. Manifest zawiera cztery zasady, które stanowi ˛a trzon zwinnego podej´scia do wy-twarzania oprogramowania [Martin, Marti 2006]:

• „ludzie i interakcje ponad procesy i narz˛edzia,

• działaj ˛ace oprogramowanie ponad obszern ˛a dokumentacj˛e,

• współpraca z klientem ponad formalne ustalenia,

• reagowanie na zmiany ponad pod ˛a˙zanie za planem.”

Powy˙zsze o´swiadczenie nale˙zy interpretowa´c, i˙z cho´c wprawdzie cały czas wa˙zne i docenia-ne pozostaj ˛a elementy wymienione po prawej stronie, to jednak na znaczeniu znacz ˛aco zyskuj ˛a elementy wymienione po lewej stronie i to one s ˛a wa˙zniejszymi warto´sciami.

Za nadrz˛edny cel metodyk zwinnych (iteracyjnych) uwa˙za si˛e zapewnienie jak najwi˛ekszej satysfakcji klienta w mo˙zliwie najkrótszym czasie, przy jednoczesnym zapewnieniu

mo˙zliwo-´sci ci ˛agłego udoskonalenia projektu [Balsamski, Gamrat 2014, s. 13]. W podej´sciu tym za stał ˛a uznaje si˛e przede wszystkim jako´s´c, a czasem równie˙z czas oraz koszty, natomiast zakres pod-lega zmianom.

Działaj ˛ace oprogramowanie jest tu dostarczanie w krótkich okresach (tzw. iteracjach). Faza rozpocz˛ecia i zamkni˛ecia przedsi˛ewzi˛ecia nie jest jasno zdefiniowana, a tak˙ze o ile nie jest to niezb˛edne, nie powstaje pocz ˛atkowa dokumentacja, do której mo˙zna by porówna´c wyniki [Grobelna, Trzcieli´nski 2017].

Jedna z zasad Manifestu Agile mówi: “twórz projekty wokół zmotywowanych osób. Stwórz im warunki, zaspokajaj ich potrzeby i obdarz ich zaufaniem, tak aby zadania zostały wykona-ne” („Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done”) [Manifesto... 2001]. Zdaniem praktyków [Wieczorek 2014] „zwinne metodyki maj ˛a mi˛edzy innymi na celu lepsze motywowanie członków zespołu programistycznego”. Jest to jedna z ró˙znic ukazuj ˛aca now ˛a jako´s´c w wytwarzaniu oprogramo-wania w porównaniu z metodykami tradycyjnymi.

Równie˙z w podej´sciu zwinnym bardzo silnie widoczny jest wpływ in˙zynierii produkcji i za-rz ˛adzania na in˙zynieri˛e oprogramowania. Wła´snie w produkcji, najpierw zacz˛eto odchodzi´c od podej´scia sekwencyjnego na rzecz in˙zynierii współbie˙znej. Metoda ta bazuje na realizowaniu poszczególnych faz cyklu w sposób współbie˙zny, co oznacza, ˙ze co najmniej cz˛e´sciowo na-kładaj ˛a si˛e one na siebie, przez co cały cykl ulega istotnemu skróceniu [Grobelna, Trzcieli´nski 2016]. Interpretuj ˛ac dalej to podej´scie, mo˙zna stwierdzi´c, ˙ze cała metodyka agile opiera si˛e na maksymalnym zrównolegleniu prac nad produktem. Nie ma ju˙z jasno oddzielonych od siebie faz wytwarzania produktu, a on sam nie „przechodzi” pomi˛edzy ró˙znymi zespołami/działami.

Za cały produkt (poprzez wszystkie fazy, tj. od jego analizy biznesowej, wytworzenia, poprzez utrzymanie oraz ewentualne wycofanie) odpowiada jeden zespół/dział . W zwi ˛azku z tym od-powiedzialno´s´c takiego zespołu jest znacznie wi˛eksza. W zwinnych metodykach wytwarzania oprogramowania mówi si˛e o samoorganizuj ˛acym si˛e zespole. Oznacza to, ˙ze takiemu zespołowi nie zostaje narzucony z góry podział pracy czy wewn˛etrzne zasady. Jest to odpowied´z na tzw.

upodmiotowienie szczebla wykonawczego (ang. empowerment) w metakoncepcji lean. Zespół, który jest uprawniony do podejmowania decyzji, zobowi ˛azany jest równie˙z do brania na siebie odpowiedzialno´sci. Aby ta odpowiedzialno´s´c nie była rozproszona, konieczne jest wyposa˙ze-nie pracowników w odpowiedni ˛a wiedz˛e (w lean oznacza to nastawienie przedsi˛ebiorstwa na kultur˛e uczenia si˛e). Podej´scie to jest obecne równie˙z w zwinnych zespołach programistycz-nych i objawia si˛e nie tylko nastawieniem na ci ˛agły rozwój i zdobywanie nowej wiedzy, ale przede wszystkim wymaganiem od członków zespołu wszechstronno´sci, tj. znajomo´sci ró˙z-nych technologii, j˛ezyków programowania oraz pełnienia ró˙zró˙z-nych funkcji (tworzenie wizualne oraz funkcjonalne oprogramowania, testowanie, wdra˙zanie itp., gdy˙z odpowiadaj ˛a oni za cały produkt11). Zatem nacisk na samorozwój w nowoczesnych metodach wytwarzania oprogramo-wania jest bardzo wysoki.

Kolejnym elementem zbie˙zno´sci pomi˛edzy metodykami zwinnymi wytwarzania oprogra-mowania a koncepcj ˛a przedsi˛ebiorstwa szczupłego (lean) jest metoda sterowania przepływów produkcji kanban. Polega ona na takim organizowaniu procesu wytwórczego, aby ka˙zda komór-ka organizacyjna produkowała dokładnie tyle, ile w danej chwili jest potrzebne. W metodzie tej za czynnik krytyczny zarz ˛adzania materiałami uznano sterowanie zapasami. Podobnie w

me-11W metodykach zwinnych nie ma ju˙z stricte podziału na programistów backendowych, frontendowych czy testerów. Zespół odpowiada za produkt informatyczny na ka˙zdym etapie jego wytwarzani.

todzie o tej samej nazwie przy wytwarzaniu oprogramowania limituje si˛e prace rozpocz˛ete lub b˛ed ˛ace w danej fazie. Słowo kanban – w pierwotnym jego znaczeniu z j˛ezyka japo´nskiego – oznacza: szyld, tabliczk˛e z napisem informuj ˛acym, billboard. Kanban jako metoda wytwarza-nia oprogramowawytwarza-nia opiera si˛e wła´snie o wizualizacj˛e, tzw. tablic˛e kanbanow ˛a [Kniberg, Skarin 2010].

Zasada ci ˛agłego przepływu (w lean - flow), cho´c mo˙ze nie tak oczywista w zwinnych me-todykach, stanowi ich clou. Stosunkowo krótkie iteracje zapewniaj ˛a mo˙zliwo´s´c pokazywania i oddawania klientowi cho´cby niewielkich przyrostów tworzonego produktu. Poszczególne prace w etapie s ˛a maksymalnie minimalizowane, dzi˛eki czemu przechodzenie przez etapy jest szybkie i nast˛epuje bez przerw i przestojów. Zasada ci ˛agłego przepływu odnosi si˛e równie˙z do przepływu informacji. Niezb˛edny jest bie˙z ˛acy przepływ informacji pomi˛edzy ró˙znymi zespo-łami, samymi członkami zespołu, zespołem a managementem oraz zespołem i klientami. Ta potrzeba informacji zwrotnej wynika równie˙z z nastawienia na odbiorc˛e. Z kolei cała meta-koncepcja zarz ˛adzania zwinnego opiera si˛e na kompleksowym zaspokajaniu potrzeb klientów, szczególnie poprzez zapewnienie elastyczno´sci i adaptacyjnych mo˙zliwo´sci przedsi˛ebiorstwa.

Dokładnie te same zasady buduj ˛a zwinne metodyki wytwarzania oprogramowania, st ˛ad i zbie˙z-no´s´c nazw nie jest przypadkowa (metodyki agile). Wyra˙za to czwarta zasada Manifestu Agile (reagowanie na zmiany ponad pod ˛a˙zanie za planem).

Kolejn ˛a, wydaj ˛ac ˛a si˛e oczywist ˛a, analogi ˛a le˙z ˛ac ˛a u podstaw obecnie stosowanych podej´s´c zarówno do zarz ˛adzania przedsi˛ebiorstwem, jak i wytwarzania oprogramowania jest zoriento-wanie na klienta. Filary podej´scia lean, zało˙zenia agile oraz Manifest Agile stawiaj ˛a odbiorc˛e prac na najwy˙zszym miejscu. Wszystkie metody i narz˛edzia maj ˛a na celu jak najszybsze zaspo-kajanie (cz˛esto poprzez konsultowanie) potrzeb klienta oraz usprawnianie współpracy z nim.

Jest to tak samo wa˙zne na poziomie wytwarzania produktu (równie˙z produktu informatyczne-go), jak i podczas zarz ˛adzania całym przedsi˛ebiorstwem [Grobelna, Trzcieli´nski 2017].

Istot ˛a programowania zwinnego jest cykliczno´s´c, iteracyjno´s´c całego procesu. Rozpoczyna si˛e on od zdefiniowanie wymaga´n (cho´c nie s ˛a one tak formalne i szczegółowe, jak miało to miejsce w metodykach klasycznych), nast˛epnie wytwarzane jest oprogramowanie w kilku cy-klach (zgodnie z wybran ˛a metodyk ˛a) oraz nast˛epuje wdro˙zenie. w tym miejscu nale˙zy zada´c pytanie, czy wdro˙zony fragment oprogramowania spełnia wymogi klienta; je´sli tak - nast˛epuje przekazanie oprogramowania klientowi, je´sli nie - wprowadzane s ˛a zmiany, nast˛epuje ponowna

priorytetyzacja zada´n oraz przygotowanie do kolejnej iteracji. Na poni˙zszym diagramie (Rys.

2.7) przedstawiona została koncepcj˛e programowania zwinnego.

Rysunek 2.7: Model programowania zwinnego Zródło: Patel 2019´

Podsumowuj ˛ac, zwinne metodyki wytwarzania oprogramowania (ang. agile software deve-lopment) opieraj ˛a si˛e na iteracyjnym modelu, gdzie wymagania i rozwi ˛azania ewoluuj ˛a przy współpracy samoorganizuj ˛acych si˛e zespołów. Najwa˙zniejsze zasady, którymi kieruj ˛a si˛e te metodyki to [Agile Business Consortium 2014]:

• satysfakcja klienta jako najwa˙zniejszy element udanego projektu, osi ˛agana poprzez szyb-kie i regularne dostarczanie działaj ˛acego oprogramowania,

• zmiany wymaga´n, jako nieodzowna cz˛e´s´c projektu - akceptacja zmian, na ka˙zdym etapie produktu (nawet w pó´znych etapach powstawania),

• widoczny przyrost i post˛ep prac - cz˛este dostarczanie działaj ˛acego oprogramowania (ty-godnie nie miesi ˛ace),

• działaj ˛ace oprogramowanie jako najwa˙zniejsza miara post˛epu prac,

• zrównowa˙zone wytwarzanie, zdolno´s´c utrzymania ci ˛agłego (wzgl˛ednie stałego) tempa,

• bliska współpraca mi˛edzy biznesem, a zespołem wytwarzaj ˛acym oprogramowanie,

• ograniczenie dokumentacji - bezpo´srednie ustalenia jako najlepsza i najszybsza forma komunikacji,

• projekty budowane wokół zmotywowanych jednostek, godnych zaufania – du˙zy nacisk na rozwój i motywacj˛e zespołu,

• stała jako´s´c, wzgl˛ednie stały koszt i czas, przy zmiennym zakresie,

• regularne przystosowywanie si˛e do zmieniaj ˛acych si˛e okoliczno´sci.

Obecnie metodyki te powszechnie uznawane s ˛a za najefektywniejsz ˛a form˛e wytwarzania oprogramowania.