Completeness of specifications is difficult to achieve and even more difficult to verify. Having guidelines about what different things an SRS should specify will help in completely specifying the requirements. Here we describe some of the system properties than an SRS should specify.
The basic issues an SRS must address
1. Functionality
2. Performance
3. Design constraints imposed on an implementation
4. External interfaces
Functional Requirements
1. Which outputs should be produced from the given inputs?
2. Relationship between the input and output.
3. A detailed description of all the data inputs and their source, the units of measure.
4. The range of valid inputs.
Design Constraints
1. Standards that must be followed.
2. Resource limits & operating environment.
3. Reliability
4. Security requirement
5. Policies that may have an impact on the design of the system.
Standards Compliance:
This specifies the requirements for the standards that the system must follow.
Hardware Limitations:
The software may have to operate on some existing or predetermined hardware thus imposing restrictions on the design.
Reliability and Fault Tolerance:
Fault tolerance requirements can place a major constraint on how the system is to be designed. Fault tolerance requirements often make the system more complex and expensive.
Security:
Security requirements are particularly significant in defense systems and many database systems. Security requirements place restrictions on the use of certain commands, control access to data, provide different kinds of access requirements for different people require the use of passwords and cryptography techniques and maintain a log of activities in the system.
External Interface Requirements:
All the possible interactions of the software with people, hardware and other software should be clearly specified. For the user interface, the characteristics of each user interface of the software product should be specified. User interface is becoming increasingly important and must be given proper attention. A preliminary user manual should be created with all use commands, screen formats and explanation of how the system will appear to the user, and feedback and error message.
Like other specifications these requirements should be precise and verifiable. So a statement likes “the system should be no longer than six characters” or command names should reflect the function they perform used. If the software is to execute on existing hardware or on predetermined hardware, all the characteristics of the hardware, including memory restrictions, should be specified. In addition, the current use and load characteristics of the hardware should be given.