Računarska industrija obiluje dvosmislenim jezikom, grubim žargonom i složenim idejama koje je teško razumjeti i koje mogu poslati vaš um u pomamu računalnog baferiranja.
Vodopad? Scrum? Agilan?
Ako su vam ove fraze potpuno strane, ne brinite; vaš tim od pomoći HashDork tech geeks-a je tu da vam pomogne da shvatite razlike između ovih ključnih faza procesa razvoja kako biste stekli znanja.
Agilne, scrum i waterfall tehnike će sve biti pokrivene u ovom postu na blogu, zajedno s tim kako svaka može pomoći vašem timu u cjelini.
Počnimo s agilnim, a mi ćemo ponijeti ostalo.
Šta je Agile?
Agilan razvoj softvera prati iterativni, inkrementalni pristup. Umjesto opsežne pripreme na početku projekta, Agile tehnike su fleksibilne prema promjenjivim potrebama tokom vremena i promovišu stalne povratne informacije od krajnjih korisnika.
Međufunkcionalni timovi rade na iteracijama proizvoda tokom vremena, a ovaj rad je kategorisan u zaostatak i prioritet na osnovu poslovne vrednosti ili vrednosti korisnika. Svrha svake iteracije je stvaranje upotrebljivog proizvoda.
Liderstvo promoviše saradnju, odgovornost i komunikaciju licem u lice u Agile metodologijama.
Poslovni dionici i programeri moraju sarađivati kako bi osigurali da proizvod ispunjava zahtjeve potrošača i ciljeve kompanije.
Izraz "agilan razvoj" odnosi se na niz metoda i okvira koji su zasnovani na idealima i načelima navedenim u Agilni manifest.
Stručnjaci savjetuju da se pridržavate agilnih principa i vrijednosti i da ih koristite kao vodič za odlučivanje o pravim akcijama koje treba poduzeti u određenom okruženju dok pristupate razvoju softvera.
Suradnički i samoorganizirajući tim glavna su područja fokusa zajednice za razvoj agilnog softvera.
Timovima je dozvoljeno da samostalno odlučuju kako će se pozabaviti određenim projektom, ali to ne znači da supervizori ne postoje. Agilni timovi su stoga međufunkcionalni.
U agilnoj paradigmi menadžeri su i dalje neophodni. Oni se staraju da svaki član tima ima ili stekne potrebne sposobnosti za projekat.
Menadžeri u agilnom okviru djeluju tako što njeguju atmosferu koja donosi najbolje u timu. Ali umjesto da preuzmu vodstvo, oni često zauzimaju pozadinu i puštaju tim da odluči kako će isporučiti stvari.
Menadžeri se uključuju samo kada timovi bezuspješno pokušavaju riješiti probleme.
Agilni razvojni ciklus
Faze Agile razvojnog ciklusa su navedene u nastavku. Ključno je zapamtiti da se ove faze ne bi trebale odvijati po redu jer su fleksibilne i stalno se mijenjaju. Mnoge od ovih faza odvijaju se istovremeno.
- planiranje: Nakon što projektni tim odluči da je ideja praktična i izvodljiva, počinju tražiti karakteristike. Ova faza ima za cilj da odredi prioritet svake karakteristike i dodijeli je iteraciji nakon što se ideja razbije na manje radne komade (osobine).
- Analiza zahtjeva: Da bi se odredili poslovni zahtjevi, ovaj korak uključuje nekoliko diskusija s menadžerima, dionicima i korisnicima. Ko će koristiti proizvod i kako će ga koristiti su među detaljima koje tim mora prikupiti. Ovi standardi moraju biti specifični, primjenjivi i kvantitativni.
- dizajn: Zahtjevi pronađeni u prethodnoj fazi koriste se za pripremu dizajna sistema i softvera. Tim mora razmotriti izgled proizvoda ili rješenja. Testni tim takođe razvija strategiju ili plan za testiranje.
- Implementacija, kodiranje ili razvoj: Fokus ove faze je na izgradnji i evaluaciji karakteristika i planiranju implementacije iteracija (prateći iterativni i inkrementalni razvojni pristup [IID]). Budući da nema pruženih karakteristika, počinje iteracija 0 razvojnog perioda. Dovršavanjem aktivnosti kao što su ugovaranje, postavljanje postavki i finansiranje, ova iteracija pruža osnovu za budući rast.
- testiranje: Nakon što je kod kreiran, testira se u skladu sa zahtjevima kako bi se osiguralo da proizvod zaista zadovoljava zahtjeve korisnika i poslovne ciljeve. U ovoj fazi se provode testiranje jedinice, integracije, sistema i prihvatljivosti.
- razvoj: Nakon testiranja, proizvod se šalje klijentima kako bi ga mogli koristiti. Međutim, projekat nije završen nakon postavljanja. Kupci mogu naići na dodatne probleme nakon što počnu koristiti proizvod, za koje će projektni tim trebati pronaći rješenje.
prednosti
- Brža, kvalitetnija dostava: Rastavljanjem projekta na iteracije (upravljive jedinice), tim je u mogućnosti da se koncentriše na kvalitetniju saradnju, razvoj i testiranje. Kada se testiranje obavi sa svakom iteracijom, problemi se pronalaze i rješavaju brže. Osim toga, uz stalne, naknadne revizije, ovaj visokokvalitetni softver može se isporučiti brže.
- Promjena je dobrodošla: Iako su ciklusi planiranja kraći, lako je prihvatiti i prilagoditi promjene u bilo kojoj tački projekta. Zaostatak se uvijek može poboljšati i promijeniti prioritete, omogućavajući timovima da izvrše promjene u projektu za nekoliko sedmica.
- Krajnji cilj možda nije poznat: Agile je odličan za projekte kada krajnji cilj nije jasno definiran. Kako projekat bude napredovao, ciljevi će postati jasni, a razvoj će moći lako da se prilagodi ovim promenljivim potrebama.
- Kontinuirano poboljšanje: Agilni programi promovišu korisnički i timski unos u svim fazama projekta, omogućavajući primjenu naučenog za bolju sljedeću iteraciju.
- Mišljenja kupaca se cijene: Postoji nekoliko prilika za klijente da gledaju radove koji se završavaju, daju povratne informacije i stvarno utiču na konačni rezultat. Tako intimnom interakcijom sa projektnim timom, oni bi mogli razviti osjećaj vlasništva.
- Snažan timski rad: Agile naglašava značaj redovne komunikacije i ličnih susreta. Ljudi mogu preuzeti odgovornost i posjedovati određene komponente projekta kada rade u timovima.
nedostaci
- Članovi tima moraju imati znanjee: Agilni timovi su često mali. Stoga, članovi tima moraju imati širok spektar vještina. Osim toga, moraju razumjeti i osjećati se opušteno koristeći odabranu Agile tehniku.
- Planiranje bi moglo biti manje precizno: Povremeno bi moglo biti teško odrediti tačan datum isporuke. Agile je izgrađen na vremenski ograničenoj isporuci, a projektni menadžeri često mijenjaju prioritete zadataka. Stoga je vjerovatno da neki od isporuka koji su prvobitno bili planirani za isporuku neće biti gotovi na vrijeme. Dodatno, više sprintova se može dodati u bilo kojem trenutku tokom projekta, produžavajući cijeli raspored.
- Dokumentacija se može zanemariti: Neki članovi tima mogu vjerovati da je koncentriranje na dokumentaciju manje presudno jer Agile Manifesto favorizira radni softver iznad detaljne dokumentacije. Agilni timovi bi trebali postići idealnu ravnotežu između dokumentacije i dijaloga, čak iako detaljna dokumentacija ne može sama po sebi garantirati uspjeh projekta.
- Konačni rezultat može se znatno razlikovati: Možda nije postojala jasna strategija za početni Agile projekat, pa bi se gotovi ishod mogao uvelike promijeniti od onoga što se prvo očekivalo. Značajno drugačiji konačni rezultat može rezultirati dodavanjem novih iteracija zasnovanih na promjeni unosa klijenta, budući da je Agile toliko prilagodljiv.
- Posvećenost vremena programera: Razvojni tim mora biti u potpunosti posvećen projektu da bi agile bio efikasan. Agilna metoda, koja traje duže od konvencionalnog pristupa, zahtijeva stalno aktivno učešće i saradnju. Dodatno, to implicira da se programeri moraju posvetiti cijeloj dužini projekta.
Šta je vodopad?
Najpopularnija iteracija životnog ciklusa razvoja sistema (SDLC) za softversko inženjerstvo i IT projekte je poznata kao „pristup vodopada“, koji prati sekvencijalnu, linearnu proceduru.
Gantov grafikon, oblik trakastog grafikona koji prikazuje datum početka i završetka svakog posla, povremeno se koristi za njegovo planiranje.
Razvojni tim napreduje na sljedeći nivo nakon što se završi jedna od osam faza. Tim se ne može vratiti u prethodnu fazu bez ponovnog pokretanja cijele procedure.
Pored toga, klijent će možda morati da proceni i prihvati zahteve pre nego što tim može da pređe na sledeći nivo.
Model vodopada je razvijen u visoko organizovanim okruženjima u proizvodnom i građevinskom sektoru, gde prilagođavanja mogu biti preskupa ili čak nemoguća.
Tehnika vodopada je tako nazvana jer je namijenjena da teče u samo jednom smjeru - prema dolje - baš kao vodopad. Njegove faze uključuju analizu, početak, testiranje, dizajn, izgradnju, implementaciju, održavanje i testiranje.
Tehnika vodopada ima nekoliko prednosti, kao i svaka druga strategija. Jedna je da su faze planiranja i dizajna projekta bolje uspostavljene.
Kupci i razvojni tim su više usklađeni kada su u pitanju rezultati projekta dok koriste razvoj softvera vodopada. Budući da ste od početka svjesni obima projekta, razvoj vodopada također olakšava praćenje napretka.
Vodopad proces koristi stručnjake, programere, analitičare i testere da se koncentrišu na svoje poslove u projektu umjesto da cijeli tim naglašava jedan korak.
Faze vodopada
Šest koraka vodopada moraju se odvijati jedan za drugim:
- Zahtjevi za prikupljanje i skladištenje: Trebalo bi da steknete temeljno znanje o tome šta ovaj projekat zahteva u ovom trenutku. Postoji nekoliko tehnika za prikupljanje ovih podataka, uključujući intervjue, ankete i zajednički brainstorming. Potrebe projekta trebale bi biti očigledne do završetka ove faze, a vaš tim bi trebao dobiti kopiju dokumenta sa zahtjevima.
- Dizajn sistema: Sistem je dizajnirao vaš tim koristeći unaprijed određene specifikacije. Tokom ove faze ne radi se nikakvo kodiranje, ali tim postavlja zahtjeve za hardver ili programski jezik.
- izvršenje: Ova faza uključuje kodiranje. Programeri koriste podatke iz prethodne faze da naprave upotrebljiv proizvod. Kod se često implementira u sićušnim komadima koji se kombinuju na kraju jedne faze ili na početku druge.
- testiranje: Proizvod može početi s testiranjem nakon što se kod završi. Testeri pažljivo pronalaze i prijavljuju sve probleme. Vaš projekat će možda morati da se vrati na prvu fazu radi ponovne evaluacije ako se pojave značajni problemi.
- Isporuka/raspoređivanje: Proizvod je gotov u ovom trenutku, a vaš tim šalje rezultate za implementaciju ili oslobađanje.
- održavanje: Klijent je primio proizvod i koristi ga. Vaš tim će možda morati razviti popravke i ažuriranja kada se pojave problemi kako bi ih riješio. Opet, značajni problemi mogu zahtijevati povratak na prvi korak.
prednosti
- Jednostavan za rukovanje i upravljanje: Vodopad pristup je jednostavan za korištenje i razumijevanje jer se svaki projekt obrađuje na isti sekvencijalni način. Prije početka projekta vodopada, od tima se ne traži prethodno stručno znanje ili obuka. Pristup vodopadu je vrlo strog; svaka faza ima skup rezultata i pregled, što ga čini jednostavnim za administriranje i održavanje.
- Potrebna je dobro dokumentovana metodologija: Dokumentacija koja je potrebna metodologijom vodopada pomaže u razjašnjavanju razloga iza testova i koda. Osim toga, stvara se papirni trag u slučaju da dionici žele dodatne informacije o određenoj fazi ili za bilo koje buduće inicijative.
- Sprovođenje discipline: Svaki korak u projektu vodopada ima početak i kraj, što olakšava komuniciranje napretka zainteresovanim stranama i klijentima. Tim može smanjiti mogućnost propuštanja roka stavljajući zahtjeve i dizajn na prvo mjesto prije izrade koda.
nedostaci
- Može biti teško prikupiti precizne zahtjeve: Razgovor s potrošačima i dionicima kako bi se utvrdile njihove potrebe jedna je od početnih faza projekta vodopada. U ovoj ranoj fazi projekta, moglo bi biti izazovno utvrditi njihove posebne zahtjeve. Kupci često uče o svojim zahtjevima kako se projekat razvija, umjesto da ih unaprijed izražavaju.
- Promjene je teško prihvatiti: Posada ne može nastaviti s radom nakon završetka faze. Vrlo je teško i skupo vratiti se i popraviti ako tokom faze testiranja saznaju da je funkcionalnost nedostajala tokom procesa zahtjeva.
- Softver se isporučuje nakon njegovog roka: Dvije do četiri faze projekta moraju biti završene prije nego što počne pravo kodiranje. Kao rezultat, zainteresovane strane neće vidjeti funkcionalan softver sve do kasno u životnom ciklusu.
Šta je Scrum?
Jedan od najomiljenijih okvira procesa za stavljanje Agile-a u praksu je Scrum, koji je podskup Agile-a.
To je iterativna paradigma za upravljanje kreiranjem složenog softvera i proizvoda. Sprintovi, koji su iteracije fiksne dužine koje traju jednu do dvije sedmice, omogućavaju timu da objavi softver po redovnom rasporedu.
Zainteresovane strane i članovi tima se okupljaju kako bi razgovarali o sljedećim koracima nakon svakog sprinta. Uloge, odgovornosti i sastanci u Scrum-u ostaju konstantni.
Na primjer, Scrum specificira planiranje sprinta, dnevni stand-up, demo sprint i retrospektivu sprinta kao četiri rituala koji obezbjeđuju strukturu svakog sprinta.
Tim će koristiti vizuelne artefakte kao što su table sa zadacima ili grafikoni sagorevanja tokom svakog sprinta kako bi demonstrirali napredak i dobili inkrementalne povratne informacije.
U scrumu, tim i vlasnik proizvoda blisko sarađuju kako bi identificirali i odredili prioritet funkcionalnosti sistema. To postižu stvaranjem zaostatka proizvoda, koji sadrži sve zadatke potrebne za proizvodnju softvera koji funkcionira kako je predviđeno.
Zakrpe grešaka, nefunkcionalni zahtjevi i funkcije bi trebali biti uključeni u red čekanja. Međufunkcionalni timovi moraju procijeniti i prijaviti se za isporuku softverskih inkremenata tokom kontinuiranih sprintova, koji obično traju 30 dana, nakon što su ciljevi postavljeni.
Samo tim može dodati funkcionalnost Sprintu nakon što izvrši zaostatak za taj sprint.
Sljedeća isporuka sprinta, zaostatak proizvoda se procjenjuje i, ako je potrebno, mijenja prioritete, a sljedeći skup isporučenih rezultata se bira da bude dio sljedećeg sprinta.
Scrum proces
- Zastoj proizvoda: Da bi naručili stavke u zaostatku proizvoda, sastaju se vlasnik proizvoda i Scrum tim (rad na zaostatku proizvoda dolazi iz korisničkih priča i zahtjeva). Zaostatak proizvoda je lista svih željenih funkcija za proizvod, a ne lista zadataka koje treba završiti. Nakon toga, razvojni tim bira zadatke iz zaostatka proizvoda koje će izvršiti tokom svakog sprinta.
- Sprint planiranje: Prije svakog sprinta, vlasnik proizvoda isporučuje timu najvažnije stavke u zaostatku na sastanku planiranja sprinta. Grupa zatim bira stavke iz zaostatka proizvoda koje mogu završiti tokom sprinta i premješta ih u zaostatak sprinta (što je lista zadataka koje treba završiti u sprintu).
- Prečišćavanje/sređivanje zaostalih predmeta: Kako bi se osiguralo da je zaostatak pripremljen za sljedeći sprint, tim i vlasnik proizvoda se sastaju na kraju jednog sprinta. Tim može odbaciti korisničke priče koje više nisu relevantne, dodati nove, revidirati redoslijed kojim bi ih trebalo adresirati ili podijeliti korisničke priče na manje zadatke. Tokom ovog sastanka „uređivanja“, pobrinut će se da zaostatak sadrži samo stvari koje su relevantne, detaljne i u skladu sa ciljevima projekta.
- Scrum sastanci svaki dan: Na 15-minutnom stand-up sastanku pod nazivom Daily Scrum, svaki član tima raspravlja o svojim ciljevima i svim problemima koji su se pojavili. Svaki dan tokom sprinta, tim učestvuje u Daily Scrum-u, koji sve drži na zadatku.
- Sastanak za procjenu sprintat: Tim predstavlja svoj rad na sastanku pregleda sprinta na kraju svakog sprinta. Umjesto izvještaja ili PowerPoint prezentacije, ovaj sastanak bi trebao uključivati pravu demonstraciju.
- Retrospektivni sprint sastanak: Tim raspravlja o svim modifikacijama koje treba napraviti u sljedećem sprintu, kao io tome koliko dobro Scrum radi za njih na kraju svakog sprinta. Tim može razgovarati o pozitivnim aspektima sprinta, negativnim aspektima i područjima za poboljšanje.
prednosti
- Više odgovornosti od tima: Ne postoji menadžer projekta koji upućuje scrum tim šta da radi i kada. Umjesto toga, o poslu koji se može završiti u svakom sprintu odlučuje tim kao cjelina. Svi oni sarađuju i pomažu jedni drugima, poboljšavajući timski rad i njegujući individualnost kod svakog člana tima.
- Poboljšana vidljivost i transparentnost projekta: Manje je nesporazuma i neizvjesnosti jer su svi u timu svjesni svoje odgovornosti zahvaljujući čestim stand-up sastancima. Tim se može nositi s problemima prije nego što izmaknu kontroli jer se problemi unaprijed uočavaju.
- Poboljšano smanjenje troškova: Konstantna komunikacija obavještava tim o svim problemima ili promjenama čim se dogode, što pomaže u uštedi troškova i poboljšanju kvaliteta. Manji dijelovi funkcija pružaju stalne povratne informacije i omogućavaju ranu korekciju grešaka prije nego što veće greške postanu preskupe za otklanjanje.
- Jednostavan za prilagođavanje promjenama: Jednostavnije je nositi se i prilagođavati se promjenama kada postoje česte povratne sprege i kratki sprintovi. Ilustracije radi, ako tim naiđe na potpuno novu korisničku priču tokom jednog sprinta, može brzo dodati tu funkciju sljedećem sprintu na sastanku za preciziranje zaostatka.
nedostaci
- Opasnost od puzanja dometa: Zbog nedostatka određenog datuma završetka, određeni Scrum projekti mogu se suočiti sa smanjenjem obima. Zainteresovane strane bi se mogle navesti da nastave tražiti više funkcija ako ne postoji rok za završetak.
- Loš Scrum Master može sve poremetiti: Projekt menadžer nije isto što i scrum master. Scrum Master mora vjerovati timu koji nadgleda i nikada im ne davati upute. Scrum Master nema moć nad timom. Projekat će propasti ako scrum master pokuša upravljati timom.
- Problemi s preciznošću mogu biti rezultat loše navedenih zadataka: Ako zadaci nisu jasno navedeni, troškovi projekta i rasporedi neće biti tačni. Planiranje postaje izazovno i sprintovi mogu potrajati duže nego što je predviđeno ako početni ciljevi nisu definirani.
- Iskustvo i posvećenost su neophodni za tim: Da bi tim bio uspješan, uloge i dužnosti moraju biti jasno definirane. Scrum tim zahtijeva članove tima sa tehničkim vještinama jer nema jasno definiranih uloga (svi rade sve). Tim se također mora posvetiti učešću u dnevnim Scrum sesijama i držati se zajedno do kraja života projekta.
Agilni protiv Scrum-a
Iako Agile i Scrum koriste istu metodologiju, postoje neke varijacije između njih. Agilni manifest opisuje skup principa za kreiranje softvera kroz iterativni razvoj.
Scrum je, s druge strane, skup smjernica kojih se morate pridržavati dok radite na razvoju Agile softvera. Agile je koncept, dok je Scrum tehnika za provođenje u praksi.
Scrum je metoda implementacije Agile-a, stoga oboje imaju mnogo zajedničkih stvari. Oba pristupa su iterativni, daju prioritet ranoj i čestoj isporuci softvera i prihvataju promjene. Oni također podržavaju otvorenost i stalni razvoj.
Agilni protiv vodopada
Rigid vs. flexible najbolje opisuje razliku između Waterfall procesa i Agile. Dok je Agile fluidan i stalno se mijenja, Waterfall je mnogo stroža i rigidnija metodologija.
Ove dalje razlike između njih su sljedeće:
- Agile ne zahtijeva linearan pristup, dok je Waterfall sekvencijalan.
- Iako su potrebe često unaprijed definirane u Waterfall projektima, očekuje se da će se mijenjati i prilagođavati u Agile inicijativama.
- Za razliku od Agile-a, projekti vodopada ne dozvoljavaju modifikacije rada koji je završen u prethodnoj fazi.
- Vodopad je organizirana procedura u kojoj morate završiti svaki korak prije nego što pređete na sljedeći. Međutim, Agile je fleksibilna metodologija koja vam omogućava da nastavite s projektom vlastitim tempom.
Agilni protiv vodopada vs Scrum
- Vodopad povećava povjerenje u ono što će biti pruženo vrlo brzo nakon planiranja. Agile se oslanja na najbolje prakse razvojnog okruženja. Ovdje se brojnim projektnim rizicima može dobro upravljati jer se rezultati kontinuirano ocjenjuju.
- Waterfall ne predviđa da se tim i projekat nalaze na istoj lokaciji. Dok scrum i agile trebaju kolokaciju zaposlenih.
- Agile se fokusira na smanjenje prerade projekta i potiče promjene da se ugrade mnogo ranije. Za razliku od vodopada koji različito reagira, scrum također omogućava rano otkrivanje promjena.
- Kompaktniji nacrt za konačni proizvod pružaju agile i scrum. To stvara problem sa obećanjima datim kupcu. Nasuprot tome, grafika vodopada daje klijentima i programerima bolji utisak o gotovom rezultatu.
- Svaka od ovih tehnika ima skup alata za organiziranje i simulaciju zadataka uključenih u njihovo kreiranje.
zaključak
Ako ste do sada pratili i sigurni ste u svoje znanje o razlikama između Waterfall, Agile i Scrum procesa, trebali biste već znati koja strategija će najbolje funkcionirati za vas i vaš tim.
Vodopad tehnika, koja je za projekte sa određenim opsegom, vremenskim okvirom i budžetom, može biti vaša najbolja opcija ako volite stroga pravila i procedure i smatrate da oni donose jasnoću.
S druge strane, ako vas sloboda i prilagodljivost koju nudi Agile inspiriraju, to bi moglo biti mjesto na koje biste trebali obratiti pažnju.
Međutim, Scrum je pravi put ako želite malo discipline unutar fleksibilnog okvira.
Međutim, ove pristupe morate razmotriti u svjetlu projekta na kojem radite i vašeg konačnog ishoda.
Ostavite odgovor