Una especificación funcional (también, especificación funcional , especificaciones , documento de especificaciones funcionales (FSD) , especificación de requisitos funcionales ) en ingeniería de sistemas y desarrollo de software es un documento que especifica las funciones que un sistema o componente debe realizar (a menudo parte de una especificación de requisitos) (ISO/IEC/IEEE 24765-2010). [1]
La documentación describe típicamente lo que necesita el usuario del sistema, así como las propiedades solicitadas de las entradas y salidas (por ejemplo, del sistema de software ). Una especificación funcional es la respuesta más técnica a un documento de requisitos correspondiente, por ejemplo, el Documento de Requisitos del Producto "PRD" [ cita requerida ] . Por lo tanto, recoge los resultados de la etapa de análisis de requisitos . En sistemas más complejos, varios niveles de especificaciones funcionales normalmente se anidarán entre sí, por ejemplo, en el nivel del sistema, en el nivel del módulo y en el nivel de detalles técnicos.
Una especificación funcional no define el funcionamiento interno del sistema propuesto; no incluye la especificación de cómo se implementará la función del sistema.
Un requisito funcional en una especificación funcional podría establecer lo siguiente:
Este tipo de requisito describe una interacción entre un agente externo (el usuario ) y el sistema de software. Cuando el usuario proporciona información al sistema haciendo clic en el botón Aceptar, el programa responde (o debería responder) cerrando la ventana de diálogo que contiene el botón Aceptar.
Las especificaciones funcionales tienen muchos propósitos. Uno de los principales en los proyectos en equipo es lograr algún tipo de consenso en el equipo sobre lo que el programa debe lograr antes de realizar el esfuerzo que requiere más tiempo de escribir el código fuente y los casos de prueba , seguido de un período de depuración . Por lo general, dicho consenso se alcanza después de una o más revisiones por parte de las partes interesadas en el proyecto en cuestión después de haber negociado una forma rentable de lograr los requisitos que el software necesita cumplir.
En el ciclo de vida ordenado de la ingeniería de software industrial ( modelo en cascada ), la especificación funcional describe lo que se debe implementar. El siguiente documento , el de arquitectura de sistemas , describe cómo se realizarán las funciones utilizando un entorno de software elegido. En el desarrollo de sistemas prototípicos no industriales, las especificaciones funcionales suelen redactarse después del análisis de requisitos o como parte de él.
Cuando el equipo acuerda que se ha alcanzado un consenso sobre la especificación funcional, normalmente se declara que la especificación funcional está "completa" o "aprobada". Después de esto, normalmente el equipo de desarrollo y pruebas de software escribe el código fuente y los casos de prueba utilizando la especificación funcional como referencia. Mientras se realizan las pruebas, se compara el comportamiento del programa con el comportamiento esperado, tal como se define en la especificación funcional.
Un método popular para escribir un documento de especificaciones funcionales consiste en dibujar o renderizar simples wireframes o capturas de pantalla de la interfaz de usuario precisas y diseñadas gráficamente. Una vez que se ha completado esto y todos los interesados aprueban los ejemplos de pantalla, se pueden numerar los elementos gráficos y se pueden agregar instrucciones escritas para cada número en el ejemplo de pantalla. Por ejemplo, una pantalla de inicio de sesión puede tener el campo de nombre de usuario etiquetado como "1" y el campo de contraseña etiquetado como "2", y luego cada número se puede declarar por escrito para que lo utilicen los ingenieros de software y, más tarde, para fines de prueba beta para garantizar que la funcionalidad sea la prevista. El beneficio de este método es que se pueden adjuntar innumerables detalles adicionales a los ejemplos de pantalla.