Funkcinė specifikacija apibūdina pagrindines programinės įrangos funkcijas. Paprastai jis kuriamas kaip programinės įrangos kūrimo reikalavimų analizės dalis. Programuotojams jis naudojamas kaip paprastas atspaudas kuriant programos šaltinio kodą ir bandomuosius atvejus.
Paprastai kiekvienos programinės įrangos kūrimo reikalavimų analizėje dalyvauja daug skirtingų žaidėjų. Šie žaidėjai yra verslo žmonės, kurie turėtų naudoti programinę įrangą, duomenų analitikai, programuotojai ir kiti techniniai darbuotojai. Verslo žmonės paaiškina kitiems komandos nariams, ko jie tikisi iš programinės įrangos verslo požiūriu.
Verslo reikalavimai sujungiami su duomenimis, kuriuos reikia užfiksuoti, ir naudojami kuriant, kaip komanda norėtų, kad kiekvienas ekranas veiktų. Visa ši reikalavimų analizė turi būti atlikta, kad būtų galima dokumentuoti funkcinę specifikaciją. Kai funkcinė specifikacija yra apytiksliai dokumentuota, komanda stengiasi ją tiksliai suderinti. Komanda peržiūri šiuos dokumentus ir užpildo visas reikalavimų analizės spragas. Atlikus reikalavimų analizę, komanda patvirtina funkcinę specifikaciją. Patvirtintas specifikacijos dokumentas naudojamas kaip programinės įrangos kūrimo planas.
Šaltinio kodas ir bandomieji atvejai sukurti naudojant funkcinę specifikaciją. Komandos nariai naudoja funkcines specifikacijas, kad sukurtų testavimo atvejus, kurių reikia norint patvirtinti, kad programinė įranga veikia taip, kaip nurodyta. Programinės įrangos derinimui naudojamų bandomųjų atvejų skaičius skiriasi priklausomai nuo sukurtos programinės įrangos sudėtingumo. Programuotojams kuriant programinę įrangą, kita komandos dalis kuria bandomuosius atvejus. Programinės įrangos patvirtinimo testavimo procesas prasideda, kai programuotojai praneša komandai, kad ji yra pasirengusi išbandyti.
Funkcinė specifikacija nenurodo tokių dalykų kaip programinės įrangos kalba, kurią turi naudoti programuotojai. Funkcinėje specifikacijoje pateiktos specifikacijos apsiriboja tikrosiomis programos funkcijomis. Specifikacijos dokumente paaiškinama, kas nutinka, kai programos vartotojas spusteli konkretų mygtuką ekrane, bet ne kaip programuotojas ketina atlikti konkrečią funkciją.
Priklausomai nuo kuriamos programinės įrangos sudėtingumo, kai kurios komandos naudoja kelių lygių funkcinių specifikacijų dokumentus. Vadovybės komanda gali dalyvauti nustatant aukšto lygio funkcijas, o vyresniųjų analitikų grupė gali detaliau apibrėžti konkrečias funkcijas, o bendra verslo analitikų ir programuotojų komanda gali apibrėžti kiekvieną ekraną. Kiekvienas šių lygių išvesties dokumentas gali būti laikomas funkcine specifikacija.