Un requisito funcional es una característica del sistema que debe cumplir para que el sistema sea aceptado. Es decir, un requisito funcional describe una funcionalidad del sistema. Los requisitos funcionales se pueden agrupar en casos de uso. Un caso de uso es una secuencia de pasos que el sistema realiza para dar respuesta a una solicitud del usuario. En otras palabras, un caso de uso representa una forma en que el usuario interactúa con el sistema para lograr un objetivo. Cada caso de uso está compuesto por un número de escenarios. Un escenario es una secuencia de pasos que describe una interacción particular entre el usuario y el sistema. Cada escenario se puede visualizar como un flujo de eventos. Un flujo de eventos describe una serie de pasos que se llevan a cabo para completar un caso de uso. Cada paso del flujo de eventos está compuesto por un evento y una respuesta. Un evento es una acción que realiza el usuario o el sistema. Una respuesta es la acción que el sistema lleva a cabo como resultado del evento. Los requisitos funcionales se pueden expresar en términos de casos de uso, escenarios y flujos de eventos. También se pueden expresar en términos de funciones y módulos. Una función es una característica del sistema que se puede activar o desactivar. Un módulo es una unidad de código que implementa una o más funciones. Los requisitos funcionales se pueden expresar en términos de casos de uso, escenarios, flujos de eventos, funciones y módulos. De esta forma, se pueden describir de forma detallada las características del sistema y la forma en que el usuario interactúa con el mismo.