Los requisitos funcionales son una lista de las funciones que el software debe realizar. Se pueden considerar como el "qué" del software. Los requisitos funcionales deben ser lo suficientemente detallados como para permitir que un tercero pueda comprenderlos y deben dejar claro cómo debe actuar el software. Los requisitos funcionales deben ser testeables, es decir, debe ser posible verificar si el software cumple con ellos. Para ello, deben ser específicos, mensurables y no ambiguos.
Los requisitos funcionales se pueden agrupar en categorías:
Los requisitos funcionales se deben especificar utilizando un lenguaje formal, ya que de esta forma se pueden medir y testear. Se recomienda utilizar una notación de modelado, como UML, para especificar los requisitos funcionales. Los requisitos funcionales también deben incluir una descripción del comportamiento del software en caso de error, ya que esto es importante para el usuario.