A functional specification is a formal document used to describe in detail for software developers a product's intended capabilities, appearance, and interactions with users. The functional specification is a kind of guideline and continuing reference point as the developers write the programming code. (At least one major product development group used a "Write the manual first" approach. Before the product existed, they wrote the user's guide for a word processing system, then declared that the user's guide was the functional specification. The developers were challenged to create a product that matched what the user's guide described.) Typically, the functional specification for an application program with a series of interactive windows and dialogs with a user would show the visual appearance of the user interface and describe each of the possible user input actions and the program response actions. A functional specification may also contain formal descriptions of user tasks, dependencies on other products, and usability criteria. Many companies have a guide for developers that describes what topics any product's functional specification should contain.

 For a sense of where the functional specification fits into the development process, here are a typical series of steps in developing a software product:

Ideally, the final product is a complete implementation of the functional specification and design change requests, some of which may result from formal testing and beta testing.

This document uses use the MoSCoW Method and indicate level of interest in a feature by use LOW, MED, HIGH.