Software Specification

From the IEEE standard:
The basic issues that the SRS writer(s) shall address are the following:
- Functionality. What is the software supposed to do?
- External interfaces. How does the software interact with people, the system’s hardware, other hardware, and other software?
- Performance. What is the speed, availability, response time, recovery time of various software functions, etc.?
- Attributes. What are the portability, correctness, maintainability, security, etc. considerations?
- Design constraints imposed on an implementation. Are there any required standards in effect, implementation language, policies for database integrity, resource limits, operating environment(s) etc.?
What are the characteristics of a great SRS?
Again from the IEEE standard:
An SRS should be
- Correct
- Unambiguous
- Complete
- Consistent
- Ranked for importance and/or stability
- Verifiable
- Modifiable