A formal description of a
software system that is used as a blueprint for implementing the
program. At minimum, a functional specification should precisely state the purpose (e.g., the
function) of the software. Depending on the
software engineering methodology used, the functional specification might also provide implementation details, such as how the project is divided into
modules and how the different modules interact. In addition, a functional specification often describes the software from the
user's perspective -- how the
user interface appears and how a user would use the program to perform specific functions.
A functional specification is often called a functional spec, or just spec.