Defines functions of the system under development and describes what a system should do.
- What inputs should the system accept
- What outputs should the system produce
- What data should the system store other systems might use
- What computations should the system perform
- The timing and synchronization of the above
- Depend on the type of software, expected users, and the type of system where the software is used