A functional specification describes the basic functions of a software application. It is generally developed as part of the requirements analysis in software development. It serves as a blue print for the programmers to develop source code and test cases for the application.
Generally, there are many different players involved in the requirements analysis for developing each software application. These players include the business people expected to use the software, the data analysts, programmers and other technical staff. The business people explain to the other members of the team exactly what they expect from software to do, from a business perspective.
Business requirements are merged with the data that needs to be captured and is used to develop the way the team would like each of the screens to function. All of this requirements analysis must be completed in order to document the functional specification. Once the functional specification is roughly documented, the team works to fine tune it. The team reviews these documents and fills in any gaps in the requirements analysis. After the requirements analysis is complete, the team approves the functional specification. The approved specification document is used as a blueprint for software development.
Source code and test cases are developed using the functional specification. Team members use the functional specification to develop the test cases needed to confirm that the software functions as specified. The number of test cases used to debug the software varies based upon the complexity of the software developed. As the programmers develop the software, another part of the team develops the test cases. The testing process to approve the software begins once the programmers advise the team it is ready to be tested.
The functional specification does not specify such things as the software language to be used by the programmers. The specifications found within a functional specification are limited to the true functions of the program. The specification document explains what happens when a program user clicks on a specific button on the screen but not how the programmer is going to make the specific function occur.
Depending upon the complexity of the software to be developed, some teams use multiple levels of functional specification documents. The management team might participate in the specification of high-level functions while a group of senior analysts might define in greater detail the specific functions and a joint team of business analysts and programmers may define each screen. Each of the output documents from these levels may be considered a functional specification.