Funkcionalna specifikacija softvera / aplikacije / programa – Kako se piše specifikacija za izradu neke aplikacije
Funkcionalna specifikacija softvera je nešto veoma važno što naši ljudi veoma zapostavljaju. Plastično rečeno, ovo je porodilište za programe i aplikacije, odnosno mesto gde se od same ideje prelazi u realizaciju iste i pravljenju odgovarajućeg programa koji će imati sve funkcije koje su zahtevane. Dakle ovo je stavka broj jedan posle inicijalne ideje i želje za ravojem nekog programa. Zbog sve većeg broja zehtava koji dobijamo tipskog sadržaja “potrebna aplikacija za to, koliko to košta” ili “koliko košta izrada aplikacije poput ove” ili “Želimo da uradimo aplikaciju za Androd i IoS na kojoj kupci mogu da kupe naše proizvode” rešio sam da napišem blog na temu šta je funkcionalna specifikacija aplikacije, čemu služi i kome je namenjena.
Šta je to funkcionalna specifikacija softvera?
Najkraće rečeno to je opis kako radi sam program/software/aplikacija bilo kako da nazivate taj proizvod. Namenjen je gotovo uvek za dve strane. Prva strana je naručilac posla ili investitor i osoba koja ima ideju, dok je druga strana osoba ili tim ljudi koji tu ideju trebaju da realizuju i neki program/aplikaciju, dakle neki developeri i programeri. Odmah jedna napomena da se u dokumentu ne barata stručnim terminima koje samo programeri razumeju, već običan tekst i navođenje funkcionalnosti koje određeni program treba da ima kao što su na primer, registracija i logovanje korisnika uz resetovanje šifre. Dakle to bi trebalo biti dovoljno za početni deo, ali bilo bi dobro odmah i napomenuti da li su pored standardnih polja neophodni i ostali zahtevi za registraciju poput ostavljanja kreditne kartice, telefonskog broja i slično što nije tipično registrovanje. Isto tako ne podrazumeva se da aplikacija radi samo kad ste registrovani ili ne, pošto može postojati mogučnost i rada bez i rada sa registrovanim korisnikom.
Zašto je važna funcionalna specifikacija aplikacije?
Iz jednog prostog razloga a to su vreme i cena. Dakle, taj dokument nema za cilj mučenje naručioca posla ili programera, već naprotiv, da olakša saradnju i da se može sve lepo predvideti od funkcionalnosti do rokova izrade i cene. Često posle ove specifikacije mnogi projekti, tačnije ideje “propadnu”, jer se već u ovom koraku dosta sve vidi. I koliko novca je potrebno i vremena i da je na kraju rezultat samo neki program koji ako niko ne koristi nema ekonomsku ili popularnije rečeno matematičku računicu, tako da se u ovom slučaju investitoru veoma isplati da uradi dobro funcionalnu specifikaciju aplikacije kako eventualno ne bi otišao u gubitke bez potrebe.
Zašto je važno pisati specifikaciju iz ugla investitora ili firme koja želi neki program:
- Da bi ste programerima objasnili zaista šta sve tačno želite, ni opciju više ni opciju manje
- Da bi ste uštedeli vreme i novac kada tražite ponudu od različitih firmi koje nude izradu aplikacija (u suprotnom morate svima obično usmeno da pričate šta želite, dok će vam velika većina firmi odmah tražiti specifikaciju u pisanoj formi jer sa usmenim zahtevima ne rade)
- Da bi ste rizik i gubitak vremena i novca smanjili na minimum jer imate jasno precizirano šta aplikacija treba da ima od funkcionalnosti
- Da bi ste dobili ponudu u novcu koja je verodostojna, jer u suprotnom možete dobiti raspon cena npr od 1000 – 10 000eur
- Da bi ste dobili rok izrade koji se ne meri od 2 meseca do 2 godine
Ko piše funcionalnu specifikaciju aplikacije?
Naravno da funkcije i funcionalnosti nekog programa treba da piše naručilac posla. Dakle investitor, osoba koja ima ideju ili kako god da ga nazovemo je osoba koja treba da piše koje sve funcionalnosti treba da ima jedna aplikacija. U praksi se pokazalo da ukoliko investitor pomene reč “samo” ili “samo ovo” kod funcionalnosti nekog programa, ne zna da piše i napiše valjanu specifikaciju i da taj posao treba da prepusti nekome drugom. U programerskom svetu ne postoji reč samo. Ono što je za običnog čoveka samo, za računar i neki program je možda gomila reda programskog koda. Računar, tj program koji se radi od nule nije svestan ni Vašeg imena, ni prezimena, ni da je to Vaša email adresa, ni da je Sunce žute boje, ni da je registracija ili kupovina nekog proizvoda na samo jedan klik od korisnika. To sve može da se napravi da bude tako prosto i jednostavno, ali računaru treba sve podrobno objasniti i šta je korisnik, i šta je proizvod, i da je ovo cena proizvoda pa da je sabira u korpi sa drugim proizvodima, a da je dostava besplatna ukoliko cena pređe određeni iznos i slično. Sve to su neke funcije i funcionalnosti koje aplikacija treba da zadovolji i čega nije ni svesna dok joj se detaljno ne objasni, a da bi joj se objasnilo prvo mora razvojnom timu da bude zaista jasno šta sve želite.
Šta raditi ukoliko ne umete da napišete sami specifikaciju?
Ovo pitanje bi se isto moglo postaviti šta bi ste radili ukoliko ne umete da sastavite vozilo pa Vašoj meri. Zamislite da se automobili prave ne za široke narodne mase nego isključivo po porudžbini za Vas. Morali bi ste da kažete i dužinu i širinu, i koliki gepek i koje točkove, i da li želite automatik i manuelni. Da li želite šiber ili ne, klimu i kamare itd itd. Možda bolji primer je da zovete poslastičarnicu i kažete “ja želim da mi napravite tortu”. Kada Vas pitaju kakvu želite Vi recite slatku! Dakle, ukoliko imate ideju za neki program i tačno znate šta želite onda se to potrudite da stavite “na papir” u figurativnom smislu. Svakako da je preporučeno da specifikacija bude u nekom elektronskom obliku radi lakšeg deljenja. Veliki problem tu nastaje što osobe i firme koje žele da naprave neki program ne žele da odvoje vreme i da zaista napišu šta žele. To nije posao od 5 minuta već od nekoliko sati, a u praksi se najbolje pokazalo i od nekoliko dana kada još malo dodatno razmislite i zaključite da Vam možda treba i neka sporedna ili opciona funcionalnost. Kao primer uzeo bih neki shop, sve ste lepo stavili “na papir” aplikacija gotova, i onda dođete do zaključka da želite recenzije od samih kupaca i ocenjivanje. Odmah ste u problemu jer to nećete dobiti gratis, već je to update aplikacije koji se dodatno tarifira i ne ulazi u cenu izrade same aplikacije. Dakle, ovom poslu treba posvetiti vreme, a ukoliko ga nemate ili ne želite “da se smarate” možete angažovati neku firmu koja se bavi konsaltingom u IT.
Da li treba platiti nekome da vam uradi fincionalnu specifikaciju aplikaicje?
Odgovor je i da i ne. Ukoliko krenete da pišete i u toku pisanja funcija stavite reč “samo” znači da Vam treba pomoć. Gore u članku sam već pomenuo da reč “samo” u računarskom svetu ne postoji, i da u nekom primeru “treba dodati samo recenzije” znači verovatno i dodavanje nove tabele u bazi podataka gde će se čuvati ocene, u programu zahtevati proveru pre ocenjivanja kako osoba ne bi dva puta glasala, ili ugasiti ocenjivanje korisniku koji je već glasao i slično. U dizajnerskom smislu ima promena na view-u jer treba dodati i ocenjivanje, a isto tako treba dodati i prikaz već ocenjenih proizova. Kada smo kod toga, verovatno bi bio i zahtev neko dugme ili filter koji će raditi neko sortiranje prema recenzijama i slično. Dakle to “samo” je postalo pravi jedan zahtev sam za sebe.
Drugi razlog da se plati ova izrada je verovatno dosta veće iskustvo i takvim konsultantima možete reći samo, a oni će od tog samo postavljati podpitanja ili pisati odmah funcionalnosti bez kojih se ne može. Kao primer treba aplikacija da ima logovanje, konsultantu znači da aplikacija treba da ima logovanje, registraciju, reset lozinke i slično kao sastavni deo login sistema.
Kome platiti izradu funcionalne specifikacije programa?
Firmama koje se bave konsaltingom u IT ili programerima ukoliko imaju tu uslugu i želju da to rade. Možda ćete se pitati zašto to programeri ne odrade gratis i dostave je kao ponudu? Jednostavno to nije moguće jer ponuda nije obavezujuća, a specifikacija da se napiše i dostavi iziskuje dosta vremena, pa u nekoj hipotetičkoj varijanti, od njih dobijete specifikaciju i ponudu koja vam finansijski ili vremenski ne odgovara i onda tu specifikaciju dostavite nekoj drugoj firmi i kod njih uradite program. Iz tog razloga gotovo ni jedna programerska kuća Vam neće gratis odraditi specifikaciju, a i ako je urade uz neke garancije da se aplikacija po pisanju specifikacije radi, znajte da je uključena i u cenu izrade. Nešto poput kupovina na rate bez kredita, gde je u cenu već uračunata kamata koji vi realno u maloprodajnom objektu i ne vidite.
Da li treba pisati funcionalne specifikacije programa?
Apsolutno da iz više razloga koje sam već neke pomenuo. Ušteda vremena i novca, u samom startu proverite i ideju da li je finansijski isplativa, mogućnost dobijanja velikog broja ponude i slično. Imajte na umu da su svi programi koje koristite u svakodnevnom životu ovo imali. Izrada mobilnih aplikacija, ili izrada web aplikacija kao i bilo kog drugog programa na zahtev nije moguća bez samog zahteva koji ne može biti “ja želim aplikacu da radi to i to”.