Una especificación funcional describe las funciones básicas de una aplicación de software. Generalmente se desarrolla como parte del análisis de requisitos en el desarrollo de software. Sirve como un anteproyecto para que los programadores desarrollen código fuente y casos de prueba para la aplicación.
Generalmente, hay muchos actores diferentes involucrados en el análisis de requisitos para el desarrollo de cada aplicación de software. Estos actores incluyen a los empresarios que se espera que utilicen el software, los analistas de datos, los programadores y otro personal técnico. Los empresarios explican a los demás miembros del equipo exactamente lo que esperan que haga el software, desde una perspectiva empresarial.
Los requisitos comerciales se fusionan con los datos que deben capturarse y se utilizan para desarrollar la forma en que el equipo desea que funcione cada una de las pantallas. Todo este análisis de requisitos debe completarse para documentar la especificación funcional. Una vez que la especificación funcional está aproximadamente documentada, el equipo trabaja para ajustarla. El equipo revisa estos documentos y llena cualquier vacío en el análisis de requisitos. Una vez finalizado el análisis de requisitos, el equipo aprueba la especificación funcional. El documento de especificación aprobado se utiliza como modelo para el desarrollo de software.
El código fuente y los casos de prueba se desarrollan utilizando la especificación funcional. Los miembros del equipo utilizan la especificación funcional para desarrollar los casos de prueba necesarios para confirmar que el software funciona según lo especificado. El número de casos de prueba utilizados para depurar el software varía según la complejidad del software desarrollado. A medida que los programadores desarrollan el software, otra parte del equipo desarrolla los casos de prueba. El proceso de prueba para aprobar el software comienza una vez que los programadores notifican al equipo que está listo para ser probado.
La especificación funcional no especifica cosas como el lenguaje de software que utilizarán los programadores. Las especificaciones que se encuentran dentro de una especificación funcional se limitan a las verdaderas funciones del programa. El documento de especificación explica qué sucede cuando un usuario de un programa hace clic en un botón específico en la pantalla, pero no cómo el programador va a hacer que ocurra la función específica.
Dependiendo de la complejidad del software que se va a desarrollar, algunos equipos utilizan varios niveles de documentos de especificaciones funcionales. El equipo de gestión puede participar en la especificación de funciones de alto nivel, mientras que un grupo de analistas senior puede definir con mayor detalle las funciones específicas y un equipo conjunto de analistas de negocios y programadores puede definir cada pantalla. Cada uno de los documentos de salida de estos niveles puede considerarse una especificación funcional.