According to http://www.whatis.com/, a functional specification is "...aformal document used to describe in detail for software developers aproduct's intended capabilities, appearance, and interactions withusers...". Webopedia at http://www.webopedia.com/has a similar definition- it calls a functional specification "...a formal description of a softwaresystem that is used as a blueprint for implementing the program...".
A functional specification is written primarily for the development team,with the objective of providing the members of that team with all theinformation they need to begin designing an application. It aims atoutlining the entire experience of the application, without really gettinginto the details of implementation, thereby providing the developers with acomprehensive knowledge base and reference for any and all questionsconcerning the project. The idea here is for the kinks in the design to beworked out at a conceptual level, and (more importantly) for the customer toget a clear idea of what the deliverable is and how it will work.
Once finalized and approved by the customer, the functional specificationcan be used by a software developer to create a detailed software designdocument, which contains high-level architectural diagrams of the system,together with descriptions of the components used and their relationshipsvia a modeling language. Application development then becomes a matter ofimplementing what has been frozen in the specification.
The level of detail in this document varies from project to project andcompany to company, and depends on the level of complexity inherent in theproject, and the amount of time and staff available to compile the dataobtained into a structured report. If you're an independent developer or aproject manager with a small team, you might prefer a smaller, simplerdocument; if, on the other hand, you have a full-fledged team behind you,work in a large, process-driven organization and/or have a complex projectto tackle, you might prefer a document that drills down to the very lastlevel of detail.