Requirements are the basis of all software applications as they focus on what the application must do. Requirements are elicited from the customer outlining what they wish the system to do, and recorded in a language the customer understands. A requirements document then becomes the contract between the customer and the software developers on the product that will be delivered.

Requirements can be described many ways. For formal requirements documents the most common division is into functional and non-functional requirements. Functional requirements describe how a system interfaces with its environment, i.e. the services the system provides, how to react to inputs (both correct and incorrect), etc. Non-functional requirements describe restrictions on the system. These include time constraints for certain activities (especially important in real-time systems), security, and privacy. Other constraints on the system such as operating system, programming language, or other incorporated software applications are also included in a requirements document. Priorities can be assigned to each requirement by the customer to help define system development.

Use cases and user stories are also used to document system requirements. Use cases show the interaction between users (both human and non-human) and the different tasks of the system. User stories are short task descriptions written by the customer, and they are especially useful for defining development priorities.

Author: Laurie Williams and Sarah Heckman
Maintained By: Sarah Heckman
Last Updated: 2008-08-14