Funkcionalna specifikacija opisuje osnovne funkcije programske aplikacije. Na splošno se razvija kot del analize zahtev pri razvoju programske opreme. Programerjem služi kot načrt za razvoj izvorne kode in testnih primerov za aplikacijo.
Na splošno je v analizo zahtev za razvoj vsake programske aplikacije vključenih veliko različnih akterjev. Ti igralci vključujejo poslovneže, za katere se pričakuje, da bodo uporabljali programsko opremo, analitike podatkov, programerje in drugo tehnično osebje. Poslovni ljudje drugim članom ekipe natančno pojasnijo, kaj pričakujejo od programske opreme s poslovnega vidika.
Poslovne zahteve so združene s podatki, ki jih je treba zajeti, in se uporabljajo za razvoj načina, na katerega bi skupina želela, da vsak od zaslonov deluje. Vso to analizo zahtev je treba dokončati, da se dokumentira funkcionalna specifikacija. Ko je funkcionalna specifikacija grobo dokumentirana, jo ekipa natančno prilagodi. Ekipa pregleda te dokumente in zapolni vse vrzeli v analizi zahtev. Po končani analizi zahtev ekipa odobri funkcionalno specifikacijo. Potrjeni specifikacijski dokument se uporablja kot načrt za razvoj programske opreme.
Izvorna koda in testni primeri so razviti z uporabo funkcionalne specifikacije. Člani ekipe uporabljajo funkcionalno specifikacijo za razvoj testnih primerov, potrebnih za potrditev, da programska oprema deluje, kot je določeno. Število testnih primerov, uporabljenih za odpravljanje napak v programski opremi, se razlikuje glede na kompleksnost razvite programske opreme. Ko programerji razvijajo programsko opremo, drugi del ekipe razvija testne primere. Postopek testiranja za odobritev programske opreme se začne, ko programerji svetujejo skupini, da je pripravljena za testiranje.
Funkcionalna specifikacija ne določa stvari, kot je jezik programske opreme, ki ga uporabljajo programerji. Specifikacije v funkcionalni specifikaciji so omejene na resnične funkcije programa. Dokument s specifikacijo pojasnjuje, kaj se zgodi, ko uporabnik programa klikne določen gumb na zaslonu, ne pa tudi, kako bo programer izvedel določeno funkcijo.
Glede na kompleksnost programske opreme, ki jo je treba razviti, nekatere ekipe uporabljajo več ravni dokumentov funkcionalnih specifikacij. Vodstvena skupina lahko sodeluje pri specifikaciji funkcij na visoki ravni, medtem ko lahko skupina višjih analitikov podrobneje opredeli posebne funkcije, skupna skupina poslovnih analitikov in programerjev pa lahko definira vsak zaslon. Vsak izhodni dokument iz teh ravni se lahko šteje za funkcionalno specifikacijo.