- Functional specification
A functional specification (also, "functional spec", "specs", "functional specifications document (FSD)", or "Program specification") in
software development, is the set of documentation that describes the requested behavior of an engineering system. The documentation typically describes what is needed by the system user as well as requested properties of inputs and outputs (e.g. of the softwaresystem).
A functional specification does not define the inner workings of the proposed system; it does not include the specification how the system function will be implemented. Instead, it focuses on what various outside agents (people using the program, computer peripherals, or other computers, for example) might "observe" when interacting with the system.
A typical functional specification might state the following:
When the user clicks the OK button, the dialog is closed and the focus is returned to the main window in the state it was in before this dialog was displayed.
Such a requirement describes an interaction between an external agent (the user) and the software system. When the user provides input to the system by clicking the OK button, the program responds (or should respond) by closing the dialog window containing the OK button.
It can be "informal", in which case it can be considered as a
blueprintor user manual from a developer point of view, or "formal", in which case it has a definite meaning defined in mathematical or programmatic terms. In practice, most successful specifications are written to understand and fine-tune applications that were already well-developed, although safety-critical software systemsare often carefully specified prior to application development. Specifications are most important for external interfaces that must remain stable.
Functional specification topics
There are many purposes for functional specifications. One of the primary purposes on team projects is to achieve some form of team consensus on what the program is to achieve before making the more time-consuming effort of writing
source codeand test cases, followed by a period of debugging. Typically, such consensus is reached after one or more reviews by the stakeholders on the project at hand after having negotiated a cost-effective way to achieve the requirements the software needs to fulfill.
In the ordered industrial software engineering life-cycle (
waterfall model), functional specification describes what has to be implemented. The next system specification document describes how the functions will be realized using a chosen software environment. In not industrial, prototypical systems development, functional specifications are typically written after or as part of requirements analysis.
When the team agrees that functional specification consensus is reached, the functional spec is typically declared "complete" or "signed off". After this, typically the software development and testing team write source code and test cases using the functional specification as the reference. While testing is performed the behavior of the program is compared against the expected behavior as defined in the functional specification
Types of specifications
Diagnostic design specification
Product design specification
Real-time specification for Java
Software Requirements Specification
XML Paper Specification
Extensible Firmware Interface
Software development process
Specification (technical standard)
Single UNIX Specification
Verification and Validation (software)
* [http://www.mojofat.com/tutorial/ Writing functional specifications Tutorial]
* [http://www.joelonsoftware.com/articles/fog0000000036.html Painless Functional Specifications, 4-part series by Joel Spolsky]
Wikimedia Foundation. 2010.
Look at other dictionaries:
Specification (technical standard) — Specification redirects here. For other uses, see Specification (disambiguation). A specification (often abbreviated as spec) is an explicit set of requirements to be satisfied by a material, product, or service. Should a material, product or… … Wikipedia
Functional verification — Functional verification, in electronic design automation, is the task of verifying that the logic design conforms to specification. In everyday terms, functional verification attempts to answer the question Does this proposed design do what is… … Wikipedia
Specification (regression) — In regression analysis and related fields such as econometrics, specification is the process of converting a theory into a regression model. This process consists of selecting an appropriate functional form for the model and choosing which… … Wikipedia
Healthcare Services Specification Project — The [http://hssp.healthinterop.org Healthcare Services Specification Project (HSSP)] is a standards development effort to create health industry service oriented architecture (SOA) standards supportive of the health care market sector. HSSP is a… … Wikipedia
Microsoft Open Specification Promise — The Microsoft Open Specification Promise (or OSP), is a promise by Microsoft, published in September 2006, to not assert legal rights over certain Microsoft patents on implementations of an included list of technologies. The OSP is an example… … Wikipedia
Software Requirements Specification — A Software Requirements Specification (SRS) is a complete description of the behavior of the system to be developed. It includes a set of use cases that describe all the interactions the users will have with the software. Use cases are also known … Wikipedia
Open XML Paper Specification — (OpenXPS) Filename extension .oxps, .xps Internet media type application/oxps, application/vnd.ms xpsdocument Developed by Micro … Wikipedia
XML Paper Specification — Infobox file format name = XML Paper Specification (XPS) icon = caption = The XPS Viewer application displaying a printout of the Wikipedia front page extension = .xps mime = application/vnd.ms xpsdocument type code = uniform type = magic = owner … Wikipedia
Single UNIX Specification — The Single UNIX Specification (SUS) is the collective name of a family of standards for computer operating systems to qualify for the name Unix . The SUS is developed and maintained by the Austin Group, based on earlier work by the IEEE and The… … Wikipedia
AMBA specification — The Advanced Microcontroller Bus Architecture was introduced in 1996 and is widely used as the on chip bus for ARM processors. The first AMBA buses were Advanced System Bus (ASB) and Advanced Peripheral Bus (APB). In its 2nd version, ARM… … Wikipedia