0% found this document useful (0 votes)
159 views3 pages

Characteristics of a Good SRS Document

The software requirements specification (SRS) is a document that captures a complete description of how a system is expected to perform. It defines the needs and expectations of users. The SRS serves as a contract between the customer and developer. A good SRS is correct, complete, consistent, unambiguous, traceable, modifiable, verifiable, design independent, testable, understandable by customers, and at the right level of abstraction.

Uploaded by

trupti
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
159 views3 pages

Characteristics of a Good SRS Document

The software requirements specification (SRS) is a document that captures a complete description of how a system is expected to perform. It defines the needs and expectations of users. The SRS serves as a contract between the customer and developer. A good SRS is correct, complete, consistent, unambiguous, traceable, modifiable, verifiable, design independent, testable, understandable by customers, and at the right level of abstraction.

Uploaded by

trupti
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

2 SRS Docmentation

What is Software Requirement Specification - [SRS]?

A software requirements specification (SRS) is a document that captures complete


description about how the system is expected to perform. It is usually signed off at the end
of requirements engineering phase.

The SRS is a specification for a specific software product, program, or set of applications that
perform particular functions in a specific environment. It serves several goals depending on
who is writing it. First, the SRS could be written by the client of a system. Second, the SRS
could be written by a developer of the system. The two methods create entirely various
situations and establish different purposes for the document altogether. The first case, SRS,
is used to define the needs and expectation of the users. The second case, SRS, is written for
various purposes and serves as a contract document between customer and developer.

Characteristics of good SRS

Following are the features of a good SRS document:


1. Correctness: User review is used to provide the accuracy of requirements stated in the
SRS. SRS is said to be perfect if it covers all the needs that are truly expected from the
system.

2. Completeness: The SRS is complete if, and only if, it includes the following elements:

(1). All essential requirements, whether relating to functionality, performance, design,


constraints, attributes, or external interfaces.

(2). Definition of their responses of the software to all realizable classes of input data in all
available categories of situations.

(3). Full labels and references to all figures, tables, and diagrams in the SRS and definitions
of all terms and units of measure.

3. Consistency: The SRS is consistent if, and only if, no subset of individual requirements
described in its conflict. There are three types of possible conflict in the SRS:

(1). The specified characteristics of real-world objects may conflicts. For example,

(a) The format of an output report may be described in one requirement as tabular but in
another as textual.

(b) One condition may state that all lights shall be green while another states that all lights
shall be blue.

(2). There may be a reasonable or temporal conflict between the two specified actions. For
example,

(a) One requirement may determine that the program will add two inputs, and another may
determine that the program will multiply them.

(b) One condition may state that "A" must always follow "B," while other requires that "A
and B" co-occurs.

(3). Two or more requirements may define the same real-world object but use different
terms for that object. For example, a program's request for user input may be called a
"prompt" in one requirement's and a "cue" in another. The use of standard terminology and
descriptions promotes consistency.

4. Unambiguousness: SRS is unambiguous when every fixed requirement has only one


interpretation. This suggests that each element is uniquely interpreted. In case there is a
method used with multiple definitions, the requirements report should determine the
implications in the SRS so that it is clear and simple to understand.

5. Ranking for importance and stability: The SRS is ranked for importance and stability if
each requirement in it has an identifier to indicate either the significance or stability of that
particular requirement.
Typically, all requirements are not equally important. Some prerequisites may be essential,
especially for life-critical applications, while others may be desirable. Each element should
be identified to make these differences clear and explicit. Another way to rank requirements
is to distinguish classes of items as essential, conditional, and optional.

6. Modifiability: SRS should be made as modifiable as likely and should be capable of quickly


obtain changes to the system to some extent. Modifications should be perfectly indexed and
cross-referenced.

7. Verifiability: SRS is correct when the specified requirements can be verified with a cost-
effective system to check whether the final software meets those requirements. The
requirements are verified with the help of reviews.

8. Traceability: The SRS is traceable if the origin of each of the requirements is clear and if it
facilitates the referencing of each condition in future development or enhancement
documentation.

There are two types of Traceability:

1. Backward Traceability: This depends upon each requirement explicitly referencing its


source in earlier documents.

2. Forward Traceability: This depends upon each element in the SRS having a unique name
or reference number.

The forward traceability of the SRS is especially crucial when the software product enters
the operation and maintenance phase. As code and design document is modified, it is
necessary to be able to ascertain the complete set of requirements that may be concerned
by those modifications.

9. Design Independence: There should be an option to select from multiple design


alternatives for the final system. More specifically, the SRS should not contain any
implementation details.

10. Testability: An SRS should be written in such a method that it is simple to generate test
cases and test plans from the report.

11. Understandable by the customer: An end user may be an expert in his/her explicit
domain but might not be trained in computer science. Hence, the purpose of formal
notations and symbols should be avoided too as much extent as possible. The language
should be kept simple and clear.

12. The right level of abstraction: If the SRS is written for the requirements stage, the
details should be explained explicitly. Whereas,for a feasibility study, fewer analysis can be
used. Hence, the level of abstraction modifies according to the objective of the SRS.

Common questions

Powered by AI

Consistency issues in an SRS arise when there are conflicting requirements, temporal or logical conflicts, or inconsistencies in terminology. To resolve these, a standard terminology should be employed, detailed cross-referencing should be maintained, and a thorough review process should be put in place to identify conflicts before they lead to development errors. Additionally, involving all stakeholders in reviewing the document can help ensure that all perspectives are aligned and any discrepancies are addressed promptly .

Traceability enhances SRS effectiveness by ensuring that each requirement's origin is clear (backward traceability) and that each requirement can be uniquely identified for future use (forward traceability). This clarity and systematic referencing are crucial when modifications occur in code or design documents, allowing developers to identify and assess all impacted requirements effectively. It facilitates maintaining and updating the software over its lifecycle, which is vital during operation and maintenance phases .

Design independence is critical in an SRS as it allows for flexibility in choosing design alternatives that best fit the software's needs without being constrained to specific implementation details. This separation ensures the requirements focus on 'what' the system should do rather than 'how' it should be done, allowing developers the freedom to explore multiple solutions and innovate while still adhering to the requirements .

Modifiability directly influences the long-term utility of an SRS by allowing for easy updates and changes to the requirements as the project evolves or as new information becomes available. This adaptability means that the SRS can remain relevant and aligned with project needs throughout the software's lifecycle. By being well-indexed and cross-referenced, modifications can be tracked, ensuring that changes do not inadvertently introduce inconsistencies or errors into the requirements .

It is crucial for an SRS to be understandable by the customer to ensure stakeholders have a clear grasp of what the software will achieve, thereby reducing misunderstandings and aligning expectations between clients and developers. This can be achieved by avoiding complex notations and technical jargon as much as possible, using simple language, and ensuring that the document is structured and presented clearly .

Maintaining the right level of abstraction in an SRS impacts a project's feasibility and implementation by ensuring the document provides sufficient detail for the stage of development it aims to support. During early stages, a higher-level abstraction might be suitable to gauge feasibility without overwhelming detail. As development progresses, more detailed requirements are necessary to guide implementation. This balance prevents unnecessary complications early on and ensures actionable details are available when needed .

Ranking requirements by importance and stability affects the development process by providing developers with insights into which requirements are critical and must be prioritized, versus those which are desirable or optional. This prioritization helps in allocating resources effectively, managing project timelines, and ensuring that the most crucial functionalities are developed first, particularly essential in life-critical applications where certain requirements can significantly affect safety and performance .

Correctness ensures all user requirements are accurately captured. Completeness means the SRS includes all essential requirements, input data responses, and all necessary references and definitions. Consistency ensures no contradictory requirements exist within the document. Together, these characteristics ensure that the SRS is reliable and provides an unambiguous blueprint for the software, minimizing misunderstandings and errors in development .

The primary purpose of an SRS is to capture a complete description of how the software system is expected to perform. It may serve as a definition of the needs and expectations of users if written by the client, or as a contract document when written by the developer. The client writes the SRS to outline their expectations and requirements, while the developer uses it to understand what needs to be built and as a baseline for the development process. Each party's involvement establishes the document's purpose and direction .

Testability in an SRS ensures that it is clear and precise enough to allow for the easy generation of test cases and test plans. This feature guides and facilitates the verification process by providing a clear set of criteria against which the software's performance can be measured. It helps ensure that the final product meets the specified requirements, improving the reliability and quality of the developed software .

You might also like