Funktsionaalne spetsifikatsioon kirjeldab tarkvararakenduse põhifunktsioone. Tavaliselt töötatakse see välja tarkvaraarenduse nõuete analüüsi osana. See toimib programmeerijatele projekti lähtekoodi ja rakenduse katsejuhtumite väljatöötamiseks.
Üldiselt on iga tarkvararakenduse arendamise nõuete analüüsiga seotud palju erinevaid osalejaid. Nende mängijate hulka kuuluvad ärimehed, kes peaksid tarkvara kasutama, andmeanalüütikud, programmeerijad ja muud tehnilised töötajad. Ärimehed selgitavad teistele meeskonnaliikmetele täpselt, mida nad ärilisest vaatenurgast tarkvaralt ootavad.
Ärinõuded liidetakse jäädvustamist vajavate andmetega ja neid kasutatakse selleks, et töötada välja viis, kuidas meeskond soovib, et iga ekraan töötaks. Funktsionaalse spetsifikatsiooni dokumenteerimiseks tuleb kogu see nõuete analüüs läbi viia. Kui funktsionaalne spetsifikatsioon on ligikaudu dokumenteeritud, töötab meeskond selle täpsustamiseks. Meeskond vaatab need dokumendid üle ja täidab nõuete analüüsis kõik lüngad. Pärast nõuete analüüsi lõpetamist kiidab meeskond funktsionaalse spetsifikatsiooni heaks. Kinnitatud spetsifikatsioonidokumenti kasutatakse tarkvaraarenduse plaanina.
Lähtekood ja testjuhtumid töötatakse välja funktsionaalse spetsifikatsiooni abil. Meeskonnaliikmed kasutavad funktsionaalseid spetsifikatsioone testjuhtumite väljatöötamiseks, mis on vajalikud tarkvara toimimise kinnitamiseks. Tarkvara silumiseks kasutatud testjuhtumite arv sõltub arendatud tarkvara keerukusest. Kui programmeerijad tarkvara arendavad, arendab teine osa meeskonnast testjuhtumeid. Tarkvara kinnitamise testimisprotsess algab siis, kui programmeerijad annavad meeskonnale teada, et see on testimiseks valmis.
Funktsionaalne spetsifikatsioon ei täpsusta selliseid asju nagu programmeerijate kasutatav tarkvara keel. Funktsionaalses spetsifikatsioonis leiduvad spetsifikatsioonid piirduvad programmi tegelike funktsioonidega. Spetsifikatsioonidokument selgitab, mis juhtub siis, kui programmi kasutaja klõpsab ekraanil kindlal nupul, kuid mitte seda, kuidas programmeerija konkreetse funktsiooni käivitab.
Sõltuvalt arendatava tarkvara keerukusest kasutavad mõned meeskonnad mitmel tasemel funktsionaalsete spetsifikatsioonide dokumente. Juhtkond võib osaleda kõrgetasemeliste funktsioonide määratlemises, samas kui vanemanalüütikute rühm võib konkreetseid funktsioone täpsemalt määratleda ning ärianalüütikute ja programmeerijate ühine meeskond võib määratleda iga ekraani. Kõiki nende tasemete väljunddokumente võib pidada funktsionaalseks spetsifikatsiooniks.