Funkcionalna specifikacija opisuje osnovne funkcije softverske aplikacije. Općenito se razvija kao dio analize zahtjeva u razvoju softvera. Programerima služi kao nacrt za razvoj izvornog koda i test slučajeva za aplikaciju.
Općenito, postoji mnogo različitih igrača uključenih u analizu zahtjeva za razvoj svake softverske aplikacije. Ti igrači uključuju poslovne ljude od kojih se očekuje da će koristiti softver, analitičare podataka, programere i ostalo tehničko osoblje. Poslovni ljudi objašnjavaju ostalim članovima tima što točno očekuju od softvera, iz poslovne perspektive.
Poslovni zahtjevi spojeni su s podacima koje je potrebno uhvatiti i koriste se za razvoj načina na koji tim želi da svaki od zaslona funkcionira. Sva ova analiza zahtjeva mora biti dovršena kako bi se dokumentirala funkcionalna specifikacija. Nakon što je funkcionalna specifikacija grubo dokumentirana, tim radi na njenom finom podešavanju. Tim pregleda ove dokumente i ispunjava sve praznine u analizi zahtjeva. Nakon što je analiza zahtjeva završena, tim odobrava funkcionalnu specifikaciju. Odobreni dokument specifikacije koristi se kao nacrt za razvoj softvera.
Izvorni kod i testni slučajevi razvijeni su korištenjem funkcionalne specifikacije. Članovi tima koriste funkcionalnu specifikaciju za razvoj testnih slučajeva potrebnih za potvrdu funkcioniranja softvera kako je navedeno. Broj testnih slučajeva koji se koriste za otklanjanje pogrešaka softvera varira ovisno o složenosti razvijenog softvera. Dok programeri razvijaju softver, drugi dio tima razvija testne slučajeve. Proces testiranja za odobravanje softvera počinje nakon što programeri savjetuju tim da je spreman za testiranje.
Funkcionalna specifikacija ne navodi stvari kao što je softverski jezik koji će koristiti programeri. Specifikacije koje se nalaze unutar funkcionalne specifikacije ograničene su na stvarne funkcije programa. Dokument sa specifikacijama objašnjava što se događa kada korisnik programa klikne na određeni gumb na ekranu, ali ne i kako će programer izvesti određenu funkciju.
Ovisno o složenosti softvera koji treba razviti, neki timovi koriste više razina dokumenata funkcionalne specifikacije. Upravljački tim može sudjelovati u specifikaciji funkcija visoke razine, dok grupa viših analitičara može detaljnije definirati specifične funkcije, a zajednički tim poslovnih analitičara i programera može definirati svaki ekran. Svaki od izlaznih dokumenata s ovih razina može se smatrati funkcionalnom specifikacijom.