Računalna industrija obiluje dvosmislenim jezikom, oštrim žargonom i složenim idejama koje je teško razumjeti i mogu dovesti vaš um do bijesa računalnog spremanja u međuspremnik.
Slap? Ološ? Okretan?
Ako su vam ove fraze potpuno strane, ne brinite; vaš korisni tim HashDork tehnoloških štrebera je tu da vam pomogne razumjeti razlike između ovih ključnih faza razvojnog procesa kako biste mogli postati upućeniji.
Agilne, scrum i tehnike vodopada bit će obrađene u ovom postu na blogu, zajedno s načinom na koji svaka može pomoći vašem timu kao cjelini.
Počnimo s agilnim, a nastavit ćemo s ostatkom.
Što je Agile?
Agilni razvoj softvera slijedi iterativni, inkrementalni pristup. Umjesto opsežnih priprema na početku projekta, agilne tehnike fleksibilne su potrebama koje se mijenjaju tijekom vremena i promiču stalne povratne informacije od krajnjih korisnika.
Višefunkcionalni timovi rade na iteracijama proizvoda tijekom vremena, a taj se posao kategorizira u zaostatke i daje im se prioritet na temelju poslovne ili korisničke vrijednosti. Svrha svake iteracije je stvoriti upotrebljiv proizvod.
Liderstvo promiče suradnju, odgovornost i komunikaciju licem u lice u agilnim metodologijama.
Poslovni dionici i programeri moraju surađivati kako bi osigurali da proizvod ispunjava zahtjeve potrošača i ciljeve tvrtke.
Izraz "agilni razvoj" odnosi se na niz metoda i okvira koji se temelje na idealima i načelima navedenim u Agilni manifest.
Stručnjaci savjetuju pridržavanje agilnih načela i vrijednosti te njihovo korištenje kao vodič za odlučivanje o pravim radnjama 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 agilni razvoj softvera.
Timovima je dopušteno da samostalno odlučuju kako će se uhvatiti u koštac s određenim projektom, ali to ne znači da supervizori ne postoje. Agilni timovi su stoga višefunkcionalni.
U agilnoj paradigmi menadžeri su još uvijek potrebni. Oni se brinu da svaki član tima ima ili stekne potrebne sposobnosti za projekt.
Menadžeri u agilnom okviru djeluju tako da njeguju atmosferu koja donosi najbolje u timu. Ali umjesto da preuzmu vodstvo, često se povuku i prepuste timu da odluči kako će isporučiti stvari.
Menadžeri se uključuju samo kada timovi opetovano pokušavaju riješiti probleme bez uspjeha.
Agilni razvojni ciklus
Faze razvojnog ciklusa Agile navedene su u nastavku. Ključno je zapamtiti da se ove faze ne bi trebale odvijati redom 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 izvediva, počinju tražiti značajke. Ova faza ima za cilj odrediti prioritet svake značajke i dodijeliti je iteraciji nakon razbijanja ideje na manje dijelove (značajke).
- Analiza zahtjeva: Za utvrđivanje poslovnih zahtjeva, ovaj korak uključuje nekoliko rasprava s upraviteljima, dionicima i korisnicima. Tko će koristiti proizvod i kako će ga koristiti među detaljima koje tim mora prikupiti. Ti standardi moraju biti specifični, primjenjivi i kvantitativni.
- dizajn: Zahtjevi pronađeni u prethodnoj fazi koriste se za pripremu dizajna sustava i softvera. Tim mora uzeti u obzir izgled proizvoda ili rješenja. Tim za testiranje također razvija strategiju ili plan za testiranje.
- Implementacija, kodiranje ili razvoj: Fokus ove faze je na izgradnji i evaluaciji značajki i planiranju implementacije iteracija (slijedeći pristup iterativnog i inkrementalnog razvoja [IID]). Budući da nema značajki, počinje 0. iteracija razvojnog razdoblja. Dovršetkom aktivnosti poput ugovaranja, postavljanja postavki i financiranja, ova iteracija pruža temelj za budući rast.
- Ispitivanje: Nakon što je kod kreiran, testira se prema zahtjevima kako bi se osiguralo da proizvod stvarno zadovoljava zahtjeve korisnika i ispunjava poslovne ciljeve. U ovoj fazi provode se testiranje jedinice, integracije, sustava i prihvatljivosti.
- razvoj: Nakon testiranja, proizvod se šalje klijentima kako bi ga mogli koristiti. No projekt nije dovršen nakon postavljanja. Kupci se mogu susresti s dodatnim problemima nakon što počnu koristiti proizvod, za koje će trebati projektni tim da pronađe rješenje.
Prednosti
- Brža, kvalitetnija dostava: Rastavljanjem projekta na iteracije (upravljive jedinice), tim se može koncentrirati na kvalitetniju suradnju, razvoj i testiranje. Kada se testiranje provodi sa svakom iteracijom, problemi se pronalaze i rješavaju brže. Dodatno, uz stalne naknadne revizije, ovaj visokokvalitetni softver može se isporučiti brže.
- Promjena je dobrodošla: Iako su ciklusi planiranja kraći, jednostavno je prihvatiti i prilagoditi se promjenama u bilo kojem trenutku projekta. Zaostaci se uvijek mogu poboljšati i promijeniti prioritete, omogućujući timovima da naprave promjene u projektu u nekoliko tjedana.
- Krajnji cilj možda nije poznat: Agile je izvrstan za projekte kada krajnji cilj nije jasno definiran. Kako projekt bude napredovao, ciljevi će postati jasni, a razvoj će se moći lako prilagoditi ovim promjenjivim potrebama.
- Stalno poboljšanje: Agilni programi promoviraju unos korisnika i tima u svim fazama projekta, omogućujući primjenu naučenog za bolju sljedeću iteraciju.
- Mišljenja kupaca se cijene: Postoji nekoliko prilika za kupce da gledaju kako se posao dovršava, nude povratne informacije i stvarno utječu na konačni rezultat. Tako intimnom interakcijom s projektnim timom mogli bi razviti osjećaj vlasništva.
- Snažan timski rad: Agile naglašava važnost redovite komunikacije i osobnih susreta. Ljudi mogu preuzeti odgovornost i posjedovati određene komponente projekta kada rade u timovima.
Nedostaci
- Članovi tima moraju imati znanjee: Agilni timovi često su mali. Stoga članovi tima moraju imati širok raspon 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 točan datum isporuke. Agile je izgrađen na vremenski ograničenoj isporuci, a voditelji projekata često mijenjaju prioritete zadataka. Stoga je vjerojatno da neki od isporučenih rezultata koji su prvobitno bili planirani za isporuku neće biti dovršeni na vrijeme. Dodatno, više sprinteva može se dodati u bilo kojem trenutku tijekom projekta, produžujući cijeli raspored.
- Dokumentacija se može zanemariti: Neki članovi tima možda vjeruju da je koncentracija na dokumentaciju manje ključna budući da Agile Manifest daje prednost radnom softveru ispred temeljite dokumentacije. Agilni timovi trebali bi pronaći idealnu ravnotežu između dokumentacije i dijaloga, čak iako temeljita dokumentacija sama po sebi ne može jamčiti uspjeh projekta.
- Konačni rezultat može se znatno razlikovati: Možda nije postojala jasna strategija za početni Agile projekt i stoga bi se konačni ishod mogao uvelike razlikovati od onoga što je prvotno očekivano. Značajno drugačiji konačni rezultat može proizaći iz dodavanja novih iteracija na temelju mijenjanja unosa klijenta, budući da je Agile tako prilagodljiv.
- Vremenska obveza programera: Razvojni tim mora biti u potpunosti predan projektu kako bi agilni bio učinkovit. Agilna metoda, koja traje dulje od konvencionalnog pristupa, zahtijeva stalno aktivno sudjelovanje i suradnju. Osim toga, to podrazumijeva da se programeri moraju posvetiti cijeloj duljini projekta.
Što je vodopad?
Najpopularnija iteracija životnog ciklusa razvoja sustava (SDLC) za softversko inženjerstvo i IT projekte poznata je kao "vodopadni pristup", koji slijedi sekvencijalni, linearni postupak.
Gantogram, oblik stupčastog grafikona koji prikazuje datume početka i završetka svakog posla, povremeno se koristi za njegovo planiranje.
Razvojni tim prelazi na sljedeću razinu nakon završetka jedne od osam faza. Tim se ne može vratiti na prethodnu fazu bez ponovnog pokretanja cijele procedure.
Osim toga, klijent će možda trebati procijeniti i prihvatiti zahtjeve prije nego što tim može prijeći na sljedeću razinu.
Model vodopada razvijen je u visoko organiziranim okruženjima proizvodnog i građevinskog sektora, gdje bi prilagodbe mogle biti preskupe ili čak nemoguće.
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. Jedan je da su faze planiranja i dizajna projekta dobro uhodane.
Korisnici i razvojni tim više su usklađeni kada je riječ o isporukama projekta dok koriste vodopadni razvoj softvera. Budući da ste od početka svjesni opsega projekta, razvoj vodopada također olakšava praćenje napretka.
Proces vodopada koristi stručnjake, programere, analitičare i testere da se koncentriraju na svoje poslove u projektu umjesto da cijeli tim naglašava jedan korak.
Faze vodopada
Svih šest koraka vodopada mora se dogoditi jedan za drugim:
- Zahtjevi za prikupljanje i skladištenje: Trebali biste prikupiti temeljito znanje o tome što ovaj projekt zahtijeva u ovom trenutku. Postoji nekoliko tehnika za prikupljanje ovih podataka, uključujući intervjue, ankete i zajedničko razmišljanje. Potrebe projekta trebale bi biti očite do završetka ove faze i vaš bi tim trebao primiti kopiju dokumenta sa zahtjevima.
- Dizajn sustava: Sustav je dizajnirao vaš tim koristeći unaprijed određene specifikacije. Tijekom ove faze ne radi se kodiranje, ali tim postavlja zahtjeve za hardver ili programski jezik.
- Izvršenje: Ova faza uključuje kodiranje. Podatke iz prethodne faze programeri koriste za izradu upotrebljivog proizvoda. Kod se često implementira u malenim dijelovima koji se kombiniraju na kraju jedne faze ili na početku druge.
- Ispitivanje: Proizvod se može početi testirati nakon dovršetka koda. Testeri pomno pronalaze sve probleme i prijavljuju ih. Vaš će se projekt možda morati vratiti u prvu fazu radi ponovne procjene ako se pojave značajni problemi.
- Isporuka/postavljanje: Proizvod je u ovom trenutku gotov, a vaš tim dostavlja rezultate za implementaciju ili izdavanje.
- održavanje: Klijent je primio proizvod i koristi ga. Vaš će tim možda morati razviti popravke i ažuriranja kada se pojave problemi kako bi ih popravio. Opet, značajni problemi mogu zahtijevati povratak na prvi korak.
Prednosti
- Jednostavan za rad i upravljanje: Vodopadni pristup je jednostavan za korištenje i razumijevanje jer se svakim projektom rukuje na isti sekvencijalni način. Prije početka Waterfall projekta, tim ne mora imati nikakvu prethodnu stručnost ili obuku. Pristup vodopada je vrlo strog; svaki stupanj ima skup isporučenih rezultata i pregled, što ga čini jednostavnim za administraciju i održavanje.
- Potrebna je dobro dokumentirana metodologija: Dokumentacija koju zahtijeva metodologija vodopada pomaže u razjašnjavanju razloga iza testova i koda. Dodatno, stvara papirnati trag u slučaju da dionici žele dodatne informacije o određenoj fazi ili za bilo kakve buduće inicijative.
- Provođenje stege: Svaki korak u vodopadnom projektu ima početak i kraj, što olakšava komuniciranje napretka dionicima i klijentima. Tim može smanjiti mogućnost propuštanja roka postavljanjem zahtjeva i dizajna 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 Waterfall. U ovoj ranoj fazi projekta moglo bi biti izazovno utvrditi njihove posebne zahtjeve. Kupci često saznaju o svojim zahtjevima dok se projekt razvija, umjesto da ih izraze unaprijed.
- Promjene se teško podnose: Posada ne može nastaviti s radom nakon završetka faze. Vrlo je teško i skupo vratiti se i popraviti ga ako tijekom faze testiranja saznaju da nedostaje funkcionalnost tijekom procesa zahtjeva.
- Softver se isporučuje nakon isteka roka: Dvije do četiri faze projekta moraju biti dovršene prije nego što počne pravo kodiranje. Kao rezultat toga, zainteresirane strane neće vidjeti funkcionalan softver sve do kraja životnog ciklusa.
Što je Scrum?
Jedan od najomiljenijih procesnih okvira za primjenu Agilea u praksi je Scrum, koji je podskup Agilea.
To je iterativna paradigma za upravljanje stvaranjem složenog softvera i proizvoda. Sprintevi, koji su iteracije fiksne duljine koje traju jedan do dva tjedna, omogućuju timu izdavanje softvera prema redovnom rasporedu.
Dionici i članovi tima okupljaju se kako bi razgovarali o sljedećim koracima nakon svakog sprinta. Uloge, odgovornosti i sastanci u Scrumu ostaju nepromijenjeni.
Na primjer, Scrum navodi planiranje sprinta, dnevno ustajanje, demonstraciju sprinta i retrospektivu sprinta kao četiri rituala koji osiguravaju svaku strukturu sprinta.
Tim će tijekom svakog sprinta koristiti vizualne artefakte poput ploča sa zadacima ili dijagrama sagorijevanja kako bi pokazao napredak i dobio inkrementalne povratne informacije.
U scrumu, tim i vlasnik proizvoda blisko surađuju kako bi identificirali i odredili prioritet funkcionalnosti sustava. 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 značajke trebaju biti uključeni u red čekanja. Višefunkcionalni timovi moraju procijeniti i prijaviti se za isporuku povećanja softvera tijekom kontinuiranih Sprintova, koji obično traju 30 dana, nakon što se utvrde ciljevi.
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, ponovno određuje prioritet, a sljedeći skup isporučenih proizvoda odabire se da bude dio sljedećeg sprinta.
Scrum proces
- Broj zaostalih proizvoda: Za naručivanje stavki u zaostatku proizvoda, sastaju se vlasnik proizvoda i Scrum tim (rad na zaostatku proizvoda proizlazi iz korisničkih priča i zahtjeva). Zaostatak proizvoda je popis svih željenih značajki za proizvod, a ne popis zadataka koje je potrebno dovršiti. Nakon toga, razvojni tim odabire zadatke iz zaostatka proizvoda koje će izvršiti tijekom svakog sprinta.
- Planiranje sprinta: Prije svakog sprinta, Product Owner isporučuje timu najvažnije stavke u zaostatku na sastanku za planiranje sprinta. Grupa zatim odabire stavke iz zaostatka proizvoda koje može završiti tijekom sprinta i premješta ih u zaostatak sprinta (što je popis zadataka koje treba izvršiti u sprintu).
- Pročišćavanje/dotjerivanje zaostataka: Kako bi se osiguralo da je zaostatak pripremljen za sljedeći sprint, tim i vlasnik proizvoda sastaju se na kraju jednog sprinta. Tim može odbaciti korisničke priče koje više nisu relevantne, dodati nove, revidirati redoslijed kojim bi se trebale baviti ili podijeliti korisničke priče na manje zadatke. Tijekom ovog sastanka "dotjerivanja" pobrinut će se da zaostatak sadrži samo stvari koje su relevantne, detaljne i u skladu s ciljevima projekta.
- Scrum sastanci svaki dan: Na 15-minutnom stand-up sastanku pod nazivom Daily Scrum, svaki član tima raspravlja o svojim ciljevima i problemima koji su se pojavili. Svaki dan tijekom cijelog sprinta, tim sudjeluje u Daily Scrumu, koji drži sve na zadatku.
- Sastanak za procjenu sprintat: tim predstavlja svoj rad na preglednom sastanku sprinta na kraju svakog sprinta. Umjesto izvješća ili PowerPoint prezentacije, ovaj sastanak trebao bi uključivati pravu demonstraciju.
- Retrospektivni sprint miting: Tim raspravlja o svim izmjenama koje je potrebno napraviti u sljedećem sprintu kao io tome koliko dobro Scrum radi za njih na kraju svakog sprinta. Tim može raspravljati o pozitivnim aspektima sprinta, negativnim aspektima i područjima za poboljšanje.
Prednosti
- Više odgovornosti tima: Ne postoji voditelj projekta koji daje upute scrum timu što i kada treba učiniti. O poslu koji se može završiti u svakom sprintu umjesto toga odlučuje tim kao cjelina. Svi oni surađuju i pomažu jedni drugima, poboljšavajući timski rad i njegujući individualnost svakog člana tima.
- Poboljšana vidljivost i transparentnost projekta: Manje je nesporazuma i neizvjesnosti jer su svi u timu svjesni svojih obaveza zahvaljujući čestim stand-up sastancima. Tim se može nositi s problemima prije nego što izmaknu kontroli jer se problemi uočavaju unaprijed.
- Poboljšano smanjenje troškova: Stalna komunikacija obavještava tim o svim problemima ili promjenama čim se dogode, što pomaže u uštedi troškova i poboljšanju kvalitete. Manji dijelovi značajki pružaju stalne povratne informacije i omogućuju rano ispravljanje pogrešaka prije nego što ispravljanje većih pogrešaka postane preskupo.
- Jednostavan za prilagođavanje promjenama: Jednostavnije je nositi se s promjenama i prilagođavati im se kada postoje česte povratne sprege i kratki sprintevi. Kao ilustracija, ako tim tijekom jednog sprinta naiđe na potpuno novu korisničku priču, mogu brzo dodati tu značajku sljedećem sprintu na sastanku za doradu zaostataka.
Nedostaci
- Opasnost od puzanja opsega: Zbog nepostojanja određenog datuma završetka, određeni Scrum projekti mogu se suočiti s ograničenim opsegom. Zainteresirane strane mogle bi biti potaknute da nastave zahtijevati više značajki ako ne postoji rok za završetak.
- Loš Scrum Master može sve poremetiti: Voditelj projekta nije isto što i scrum master. Scrum Master mora vjerovati timu koji nadgleda i nikada im ne daje upute. Scrum Master nema moć nad timom. Projekt će propasti ako scrum master pokuša upravljati timom.
- Problemi s točnošću mogu nastati zbog loše navedenih zadataka: Ako zadaci nisu jasno navedeni, projektni troškovi i rasporedi neće biti točni. Planiranje postaje izazovno i sprintovi mogu trajati dulje od predviđenog ako početni ciljevi nisu definirani.
- Iskustvo i predanost su neophodni za tim: Da bi tim bio uspješan, uloge i dužnosti moraju biti jasno definirane. Scrum tim zahtijeva članove tima s tehničkim vještinama jer nema jasno definiranih uloga (svi rade sve). Tim se također mora posvetiti sudjelovanju u dnevnim Scrum sesijama i držati se zajedno tijekom cijelog projekta.
Agile protiv Scruma
Iako Agile i Scrum koriste istu metodologiju, postoje neke varijacije između njih dvoje. Agile Manifest ocrtava skup načela za stvaranje softvera kroz iterativni razvoj.
Scrum je, s druge strane, skup smjernica kojih se morate pridržavati tijekom Agile razvoja softvera. Agile je koncept, dok je Scrum tehnika za njegovu primjenu u praksi.
Scrum je metoda implementacije Agilea, stoga obje imaju mnogo toga zajedničkog. Oba su pristupa iterativna, daju prioritet ranoj i čestoj isporuci softvera i prihvaćaju promjene. Oni također podržavaju otvorenost i kontinuirani razvoj.
Agilni protiv vodopada
Kruto nasuprot fleksibilnom najbolje opisuje razlike između procesa vodopada i agile. Dok je Agile fluidan i stalno se mijenja, Waterfall je mnogo stroža, rigidnija metodologija.
Ove daljnje razlike među njima su sljedeće:
- Agile ne zahtijeva linearni 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 Agilea, Waterfall projekti ne dopuštaju izmjene na poslu koji je dovršen u prethodnoj fazi.
- Vodopad je organizirana procedura u kojoj morate završiti svaki korak prije nego prijeđete na sljedeći. Međutim, Agile je fleksibilna metodologija koja vam omogućuje da nastavite s projektom vlastitim tempom.
Agile vs Waterfall Vs Scrum
- Vodopad povećava povjerenje u ono što će biti pruženo vrlo brzo nakon što je planirano. Agile se oslanja na najbolju praksu razvojnog okruženja. Ovdje se može dobro upravljati nizom projektnih rizika jer se rezultati kontinuirano ocjenjuju.
- Waterfall ne predviđa da tim i projekt budu smješteni na istoj lokaciji. Dok scrum i agile trebaju kolokaciju zaposlenika.
- Agile se fokusira na smanjenje prerade projekta i potiče da se promjene ugrade mnogo ranije. Za razliku od vodopada, koji drugačije reagira, scrum također omogućuje rano otkrivanje promjena.
- Kompaktniji nacrt za konačni proizvod osiguravaju agile i scrum. To stvara problem s obećanjima danim kupcu. Nasuprot tome, grafika vodopada daje klijentima i programerima bolji dojam o gotovom rezultatu.
- Svaka od ovih tehnika ima skup alata za organiziranje i simulaciju zadataka uključenih u njihovu izradu.
Zaključak
Ako ste do sada pratili i sigurni ste u svoje znanje o razlikama između procesa Waterfall, Agile i Scrum, trebali biste već znati koja će strategija biti najbolja za vas i vaš tim.
Tehnika vodopada, koja je za projekte s određenim opsegom, vremenskim okvirom i proračunom, može biti vaša najbolja opcija ako volite stroga pravila i procedure i smatrate da donose jasnoću.
S druge strane, ako vas sloboda i prilagodljivost koje nudi Agile inspiriraju, to bi moglo biti mjesto na koje biste trebali obratiti pozornost.
No, 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 krajnjeg ishoda.
Ostavi odgovor