Software Engineering | Quality Characteristics of a good SRS
Related Article: Writing a good SRS for your project
Quality characteristics of a good Software Requirements Specification (SRS) document include:
- Complete: The SRS should include all the requirements for the software system, including both functional and non-functional requirements.
- Consistent: The SRS should be consistent in its use of terminology and formatting, and should be free of contradictions.
- Unambiguous: The SRS should be clear and specific, and should avoid using vague or imprecise language.
- Traceable: The SRS should be traceable to other documents and artifacts, such as use cases and user stories, to ensure that all requirements are being met.
- Verifiable: The SRS should be verifiable, which means that the requirements can be tested and validated to ensure that they are being met.
- Modifiable: The SRS should be modifiable, so that it can be updated and changed as the software development process progresses.
- Prioritized: The SRS should prioritize requirements, so that the most important requirements are addressed first.
- Testable: The SRS should be written in a way that allows the requirements to be tested and validated.
- High-level and low-level: The SRS should provide both high-level requirements (such as overall system objectives) and low-level requirements (such as detailed functional requirements).
- Relevant: The SRS should be relevant to the software system that is being developed, and should not include unnecessary or irrelevant information.
- Human-readable: The SRS should be written in a way that is easy for non-technical stakeholders to understand and review.
- Aligned with business goals: The SRS should be aligned with the overall business goals and objectives of the organization, so that the software system meets the needs of the business.
- Agile methodologies: Agile methodologies, such as Scrum and Kanban, provide an iterative approach to requirements capturing and validation, where requirements are captured and validated in small chunks of functionality and feedback is gathered from the customer.
By keeping these quality characteristics in mind, developers and stakeholders can ensure that the SRS document is clear, complete, and accurate, which in turn can help to ensure that the final software system meets the needs of the business and its users.
Following are the characteristics of a good SRS document:
User review is used to ensure the correctness of requirements stated in the SRS. SRS is said to be correct if it covers all the requirements that are actually expected from the system.
Completeness of SRS indicates every sense of completion including the numbering of all the pages, resolving the to be determined parts to as much extent as possible as well as covering all the functional and non-functional requirements properly.
Requirements in SRS are said to be consistent if there are no conflicts between any set of requirements. Examples of conflict include differences in terminologies used at separate places, logical conflicts like time period of report generation, etc.
A SRS is said to be unambiguous if all the requirements stated have only 1 interpretation. Some of the ways to prevent unambiguousness include the use of modelling techniques like ER diagrams, proper reviews and buddy checks, etc.
- Ranking for importance and stability:
There should a criterion to classify the requirements as less or more important or more specifically as desirable or essential. An identifier mark can be used with every requirement to indicate its rank or stability.
SRS should be made as modifiable as possible and should be capable of easily accepting changes to the system to some extent. Modifications should be properly indexed and cross-referenced.
A SRS is verifiable if there exists a specific technique to quantifiably measure the extent to which every requirement is met by the system. For example, a requirement starting that the system must be user-friendly is not verifiable and listing such requirements should be avoided.
One should be able to trace a requirement to design component and then to code segment in the program. Similarly, one should be able to trace a requirement to the corresponding test cases.
- Design Independence:
There should be an option to choose from multiple design alternatives for the final system. More specifically, the SRS should not include any implementation details.
A SRS should be written in such a way that it is easy to generate test cases and test plans from the document.
- Understandable by the customer:
An end user maybe an expert in his/her specific domain but might not be an expert in computer science. Hence, the use of formal notations and symbols should be avoided to as much extent as possible. The language should be kept easy and clear.
- Right level of abstraction:
If the SRS is written for the requirements phase, the details should be explained explicitly. Whereas, for a feasibility study, fewer details can be used. Hence, the level of abstraction varies according to the purpose of the SRS.
Advantages of having a good Software Requirements Specification (SRS) document include:
- Improved communication and understanding between stakeholders and developers, as the SRS clearly defines the requirements for the software system
- Increased efficiency in the software development process, as a well-written SRS can help to reduce the need for rework and change requests
- Improved quality of the final software system, as a well-written SRS helps to ensure that all requirements are met
- Increased stakeholder satisfaction, as a well-written SRS helps to ensure that the software system meets the needs of the business and its users
- Improved traceability and verifiability, as a well-written SRS can be traced to other documents and artifacts and its requirements can be tested and validated.
Disadvantages of having a poorly written SRS include:
- Confusion and misunderstandings between stakeholders and developers, as the requirements are not clearly defined or are vague
Increased rework and change requests, as the SRS does not accurately capture the requirements of the software system
- Reduced quality of the final software system, as a poorly written SRS can result in requirements being missed or not fully met
- Reduced stakeholder satisfaction, as a poorly written SRS does not accurately capture the needs of the business and its users
- Reduced traceability and verifiability, as a poorly written SRS can’t be traced to other documents and artifacts and its requirements can’t be tested and validated.
- It is important to note that, regardless of the quality of the SRS, gathering and validating requirements is an iterative process, that should be continuously reviewed and updated throughout the software development process.