A functional specification in systems engineering and software development is a document that specifies the functions that a system or component must perform. The documentation typically describes what is needed by the system user as well as requested properties of inputs and outputs.— Wikipedia