La especificación de requerimientos funcionales es un proceso mediante el cual se identifican y documentan los requerimientos de un producto o sistema. En general, se trata de una lista de funciones que el producto o sistema debe cumplir. Los requerimientos funcionales especifican lo que el producto debe hacer, mientras que los requerimientos no funcionales especifican cómo debe hacerse.
La especificación de requerimientos funcionales es una parte importante del proceso de desarrollo de software, ya que ayuda a los desarrolladores a comprender qué debe hacer el software. Sin embargo, especificar requerimientos funcionales puede ser un desafío. Los desarrolladores deben asegurarse de que los requerimientos sean completos, correctos, consistentes, unambiguos y verificables. También deben ser lo suficientemente detallados para que los desarrolladores puedan implementarlos, pero no tan detallados que resulten demasiado restrictivos o difíciles de cambiar.
Hay varios enfoques para la especificación de requerimientos funcionales. Algunos autores proponen métodos formales para especificar requerimientos, mientras que otros enfocan en el proceso de colaboración entre el cliente y el desarrollador. A continuación se presentan algunos de los principales autores y enfoques en la especificación de requerimientos funcionales.
IEEE es una organización internacional para la estandarización de la tecnología. La IEEE 830 es un estándar para la especificación de requerimientos. El enfoque propuesto por la IEEE 830 se centra en la colaboración entre el cliente y el desarrollador. Se propone un proceso iterativo y incremental para especificar requerimientos, en el cual se van documentando y refinando los requerimientos a medida que se van obteniendo más información.
La IEEE 1471 es otro estándar de la IEEE que se centra en la modelación de requerimientos. Proporciona un marco general para modelar requerimientos de software usando diagramas de casos de uso, diagramas de actividades y diagramas de secuencia.
Booch, Rumbaugh y Jacobson son tres expertos en el campo del desarrollo de software que han propuesto métodos formales para especificar requerimientos. El método de Booch se centra en la modelación de objetos. El método de Rumbaugh se centra en la modelación de datos. El método de Jacobson se centra en el análisis de procesos. Todos estos métodos proponen diagramas específicos para la modelación de requerimientos.
El enfoque propuesto por Use Cases se centra en la colaboración entre el cliente y el desarrollador. Un caso de uso es un escenario en el que un actor (un usuario o un sistema) interactúa con un sistema para lograr un objetivo. Los casos de uso proporcionan una forma de especificar requerimientos de una manera concreta y visual. Los diagramas de casos de uso se pueden usar para modelar la interacción entre los actores y el sistema.
En general, se recomienda usar un enfoque iterativo y incremental para especificar requerimientos. Se debe empezar por especificar los requerimientos más importantes y luego ir añadiendo más requerimientos a medida que se obtenga más información. Los requerimientos deben documentarse de manera clara y concisa. También deben ser lo suficientemente detallados para que los desarrolladores puedan implementarlos, pero no tan detallados que resulten demasiado restrictivos o difíciles de cambiar.