Specyfikacja funkcjonalna opisuje podstawowe funkcje aplikacji. Jest zwykle opracowywany jako część analizy wymagań w tworzeniu oprogramowania. Służy jako plan dla programistów do opracowania kodu źródłowego i przypadków testowych dla aplikacji.
Ogólnie rzecz biorąc, w analizę wymagań dotyczących tworzenia każdej aplikacji zaangażowanych jest wielu różnych graczy. Do tych graczy należą ludzie biznesu, od których oczekuje się korzystania z oprogramowania, analitycy danych, programiści i inny personel techniczny. Ludzie biznesu wyjaśniają pozostałym członkom zespołu dokładnie, czego oczekują od oprogramowania z biznesowego punktu widzenia.
Wymagania biznesowe są łączone z danymi, które muszą zostać przechwycone i są wykorzystywane do opracowania sposobu, w jaki zespół chciałby funkcjonować na każdym z ekranów. Cała ta analiza wymagań musi zostać zakończona w celu udokumentowania specyfikacji funkcjonalnej. Gdy specyfikacja funkcjonalna zostanie z grubsza udokumentowana, zespół pracuje nad jej dopracowaniem. Zespół dokonuje przeglądu tych dokumentów i uzupełnia wszelkie luki w analizie wymagań. Po zakończeniu analizy wymagań zespół zatwierdza specyfikację funkcjonalną. Zatwierdzony dokument specyfikacji jest używany jako plan rozwoju oprogramowania.
Kod źródłowy i przypadki testowe są opracowywane przy użyciu specyfikacji funkcjonalnej. Członkowie zespołu wykorzystują specyfikację funkcjonalną do opracowywania przypadków testowych potrzebnych do potwierdzenia, że oprogramowanie działa zgodnie ze specyfikacją. Liczba przypadków testowych używanych do debugowania oprogramowania różni się w zależności od złożoności opracowanego oprogramowania. W miarę jak programiści rozwijają oprogramowanie, inna część zespołu rozwija przypadki testowe. Proces testowania w celu zatwierdzenia oprogramowania rozpoczyna się, gdy programiści poinformują zespół, że jest gotowe do testowania.
Specyfikacja funkcjonalna nie określa takich rzeczy jak język oprogramowania, który ma być używany przez programistów. Specyfikacje znajdujące się w specyfikacji funkcjonalnej są ograniczone do prawdziwych funkcji programu. Dokument specyfikacji wyjaśnia, co się dzieje, gdy użytkownik programu kliknie określony przycisk na ekranie, ale nie wyjaśnia, w jaki sposób programista ma zamiar wykonać określoną funkcję.
W zależności od złożoności tworzonego oprogramowania, niektóre zespoły używają wielu poziomów dokumentów specyfikacji funkcjonalnej. Zespół zarządzający może uczestniczyć w specyfikacji funkcji wysokiego poziomu, podczas gdy grupa starszych analityków może bardziej szczegółowo zdefiniować konkretne funkcje, a wspólny zespół analityków biznesowych i programistów może zdefiniować każdy ekran. Każdy z dokumentów wyjściowych z tych poziomów można uznać za specyfikację funkcjonalną.