Razvoj softvera
Razvoj bilo kakve složenije aplikacije danas nije posao koji se prepušta slučaju. U pitanju je proces koji sve više podleže standardizaciji i kome se i te kako ozbiljno i planski pristupa.
Sam tok razvoja softvera može se podeliti na nekoliko etapa, a jedna podela bila bi na:
- planiranje,
- analizu zahteva,
- dizajn,
- programiranje,
- testiranje i
- korišćenje u realnim uslovima.
Prve tri etape predstavljaju pripremne faze, kojima se određuju plan i metodologija rada i oblikuje koncept aplikacije. Sledi programiranje koje rezultuje radnom verzijom programa. Program se tada testira i ispravljaju mu se greške, da bi potom počelo njegovo korišćenje u probnom periodu, tokom koga se ocenjuje koliko program odgovara početnim zahtevima. Čak i kada program potpuno odgovara zahtevima, angažman programera se nastavlja na održavanju i unapređenju softvera. Suštinski, ove etape predstavljaju 4 faze klasičnog razvoja – definisanje šta program radi, definisanje kako program to treba da radi, programiranje i korišćenje.[3]
Postoji veliki broj metodologija rada koje u manjoj ili većoj meri mogu biti efikasne prilikom razvoja softvera, a dve osnovne su metod vodopada i agilno programiranje.
Metod vodopada predstavlja metodologiju prema kojoj etape u razvoju softvera doslovno prate jedna drugu, počev od analize zahteva, preko dizajna, programiranja, testiranja, pa do instalacije i održavanja. Svaka faza se kompletira i predstavlja osnov za sledeću. Pri tome se svaka etapa realizuje veoma pažljivo kako se ne bi desile greške koje bi bile skupo plaćene u kasnijim fazama. Metod vodopada predstavlja klasičan, disciplinovani način razvoja softvera, koji se u velikoj meri oslanja na detaljnu dokumentaciju u svakoj etapi.[1]
Agilno programiranje predstavlja metodologiju koja nastaje kao odgovor na rigidni metod vodopada. Zagovornici agilnog programiranja smatraju da je nemoguće apsolutno kompletirati ijednu fazu a da ne dođe do grešaka. Kod ove metodologije kreira se veliki broj međuverzija softvera koje prolaze kroz sve navedene etape razvoja, što rezultira malim brojem grešaka i brzim razvojem aplikacije koja odgovara potrebama naručioca. Razvojni tim izbegava uplitanje u hijerarhijske strukture nadređenih i podređenih, a članovi redovno međusobno komuniciraju. U svakom timu učestvuje bar jedan predstavnik klijenta koji je naručio softver. Ova metodologija se zasniva na komunikaciji, a ne na papirologiji i birokratiji. Na ovaj način postiže se visoka fleksibilnost i efikasnost u radu.[2]
U neke od vidova agilnog programiranja spadaju i ekstremno programiranje (XP – eXtreme Programming), rapidni razvoj aplikacija (RAD – Rapid Application Development), minimalističko programiranje (LD – Lean softvare Development), itd.
- Waterfall Model, All About the Waterfall Model
- Coplien, J.O. and Bjornvig, G. (2010), Lean Architecture for Agile Software Development, Chichester: John Wiley & Sons
- Donaldson, S.E. (2001), Successful Software Development, 2nd ed. New Jersey: Prentice Hall