Writing Functional Specification
Software Practice and Experience Laboratory (CS701)
This document provides some guidelines for devising functional specifications. First section
suggests some questions to direct your thinking while the second section provides a structure
which should be used to write the specifications.
To begin writing functional specs, try answering the following question.
These questions are only suggestive. Their answers do not directly constitute your
- What are the objectives of project?
- What are the limitations? Are these limitations generic or specific to this implementation? What is the cost to overcome these?
- What is the input to the program?
- What is the output of the program?
- Are there any restrictions to the input? What happens if an invalid input is given to the program?
- How is the whole software going to run (command line or gui description)?
What are the different command line or gui options?
- What are the additional requirements to run the software (libraries, environment variables, paths,
executables, other packages/softwares etc.) ?
- How do you plan to decouple first phase from the final phase ?
- What are the expected deliverables at the end of each phase?
- How do you plan to test the data? How are you going to verify that the generated output is correct?
- How do you plan to package the tool? What auxiliary information will be provided to build and run the tool (Release management)?
- What are the books/refrences you are using (for algorithms, data-structures used) ?
Most of the questions above are general in nature, they should apply to all the projects. Add questions to above list depending upon your project (you might even want to delete some).
Answering these questions will help you gather the data to visualize high level management of your project. Now organize your functional specification into different section, describing it. A sample outline of functional spec is given in the next section.
The Title of Project
- 1. High Level View
Describe the overall goal, usage and scope of your project. Describe the things applicable to your project but not getting implemented (and why).
- 2. Input/Output
How will you take input, format of output. Any boundary conditions?
- 3. Dependencies
What are the requirements to run the product (software, hardware, other)?
- 4. Project Management
Division of work among group members. Division of work in Phases.
- 5. Testing
- 6. Build and Release Management
- 7. Refrences