En funktionsspecifikation beskriver de grundläggande funktionerna i ett program. Den utvecklas generellt som en del av kravanalysen inom mjukvaruutveckling. Det fungerar som en blå utskrift för programmerare att utveckla källkod och testfall för applikationen.
Generellt är det många olika aktörer involverade i kravanalysen för att utveckla varje mjukvaruapplikation. Dessa aktörer inkluderar affärsmän som förväntas använda programvaran, dataanalytiker, programmerare och annan teknisk personal. Affärsmännen förklarar för de andra medlemmarna i teamet exakt vad de förväntar sig av programvara att göra, ur ett affärsperspektiv.
Affärskrav slås samman med den data som behöver fångas och används för att utveckla hur teamet vill att var och en av skärmarna ska fungera. All denna kravanalys måste genomföras för att kunna dokumentera funktionsspecifikationen. När den funktionella specifikationen är grovt dokumenterad arbetar teamet med att finjustera den. Teamet granskar dessa dokument och fyller i eventuella luckor i kravanalysen. Efter att kravanalysen är klar godkänner teamet funktionsspecifikationen. Det godkända specifikationsdokumentet används som en ritning för mjukvaruutveckling.
Källkod och testfall utvecklas med hjälp av funktionsspecifikationen. Teammedlemmar använder funktionsspecifikationen för att utveckla de testfall som behövs för att bekräfta att programvaran fungerar som specificerat. Antalet testfall som används för att felsöka programvaran varierar beroende på komplexiteten hos den utvecklade programvaran. När programmerarna utvecklar programvaran utvecklar en annan del av teamet testfallen. Testprocessen för att godkänna programvaran börjar när programmerarna har meddelat teamet att den är redo att testas.
Funktionsspecifikationen specificerar inte sådant som programspråket som ska användas av programmerarna. Specifikationerna som finns i en funktionsspecifikation är begränsade till programmets verkliga funktioner. Specifikationsdokumentet förklarar vad som händer när en programanvändare klickar på en specifik knapp på skärmen men inte hur programmeraren ska få den specifika funktionen att inträffa.
Beroende på komplexiteten hos programvaran som ska utvecklas använder vissa team flera nivåer av funktionsspecifikationsdokument. Ledningsgruppen kan delta i specifikationen av funktioner på hög nivå medan en grupp senioranalytiker kan definiera de specifika funktionerna mer i detalj och ett gemensamt team av affärsanalytiker och programmerare kan definiera varje skärm. Vart och ett av utdatadokumenten från dessa nivåer kan betraktas som en funktionsspecifikation.