How to Initiate a Software Requirements Specification

Written by sanjay-kidecha | Published 2020/08/26
Tech Story Tags: software-development | software | srs | software-requirements | documentation | team-management | team-productivity | product-management

TLDR A System Requirements Specification is a detailed document that mentions how software should function and what should be its behavior upon specific actions. This document becomes handy during the project development cycle. It allows the software development company to manage the scope of work within time and available resources. It is a set of functional, non-functional, and user requirements descriptions that helps teams in defining the project milestones. An SRS document is equivalent to a contract or evidence that both parties have come upon an agreement to the project specification.via the TL;DR App

How many times have you felt that it would have been better to contemplate the project requirements? How many times did you feel like including that “one” particular feature/function could have saved it from failure? Hold on to the thought right there! Do you think a System Requirements Specification could have played a pivotal role in success?
System Requirement Specification is a project management jargon frequently conventionally shared between the project manager and a client. It is a comprehensive set of documents that mentions all the project requirements and behaviors of a system. In this blog, we have shared our best knowledge & practices for composing a well-defined and outlined System Requirements Specification document. We hope you can use this as your guide for a better understanding of the concept. 
The following questions related to the topic, frequently encounter us, and hence we would like to address each of these individually.   

What is a System Requirements Specification?

A System Requirements Specification (often referred as Software Requirements Specifications) is a detailed document that mentions how software should function and what should be its behavior upon specific actions. This document becomes handy during the project development cycle. 
It allows the software development company to manage the scope of work within time and available resources. It is a set of functional, non-functional, and user requirements descriptions that helps teams in defining the project milestones. 
Before initiation of the document, the following are the three stages that are usually scrutinized. First, we understand what our customer needs from the system and thereby define the system’s scope. Second, the development team discusses the software requirements to design the software system. And third, the development team ensures that the system document is designed to perform for customer needs.
The functioning of every single element is defined after considering the points mentioned above. From the smallest detail like the function of a button to the most significant operations, this document covers everything in it. 
The main purpose of having this document in the first place is to know how a system will behave in a specific environment and how the key performance parameter will need to be met. 
Thus, a System Requirements Specification document is equivalent to a contract or evidence that both the parties have come upon an agreement to the project specification. 
Well, at a glance, the SRS document should include the following,
  • A project purpose;
  • Description of the system;
  • Functional and non-functional requirements. 
Now the next question,

Why is an SRS document an integral part of the software development cycle?

Every project is developed for a specific purpose. And an SRS document lays the foundation for it. An SRS document helps define the role of each team member involved in the process. It aids the team to work collaboratively towards a specific goal. 
It covers all the critical aspects of the project in a detailed manner so that the document can be used to validate the product. An SRS is a reference document for the project and ensures that no ambiguity exists during the complete project cycle. 
It is first discussed between the development team and the product owner and then documented. Since project goals are well defined, the overall cost and time of development can be considerably minimized. SRS documentation keeps everyone in a loop, giving them a head start for the project. 
Another important reason for having an SRS document in place is that it assists you in the process of product updates. It streamlines the whole process and explains how a given part of the system is updated. However, you need to document the changes you make to the system in the SRS document. 
Continuing our series of questions,

How to write an SRS document?

Initiating an SRS document is more about asking questions to the team and the product owner primarily. Hence, you need to have answers to the following questions. 
  1. What is the primary purpose of the product?
  2. Which environment will it be working in?
  3. How should it behave in a defined environment?
  4. What do you expect in terms of product performance?
  5. Will the product need any license registration for functioning? 
  6. Do you wish to put any limits on functionalities?
  7. Do you identify any constraints that can disturb the performance/design/ development? 
  8. What do you expect from the product in terms of behavior? 
  9. The answers to these questions will help you in writing the SRS step by step. So, let’s begin!

Draft an outline of the document:

If you are using an SRS template already, you would have these below mentioned things defined in the template. You just have to put the details into it. The outline of the document will look like,
Introduction;
  • Purpose;
  • Target Audience;
  • Intended Use;
  • Project Scope;
  • References;
  • Definitions and Acronyms;
Overall Description:
  • Product perspective;
  • User needs;
  • Product features;
  • Operating environment;
  • User Classes and Characteristics;
  • Assumptions and Dependencies;
  • Design and Implementation constraints;
System Features & Requirements:
  •  Functional Requirements;
  • User Interface requirements;
  • Software interfaces;
  • Hardware interfaces;
  • Communication interfaces;
  • Non-functional requirements;
  • Performance Parameters;
  • Safety requirements;
  • Security requirements;
  • Quality attributes;
  • Business rules;
Other requirements if any;
However, if you are initiating it on your own, you need to prepare the above sections accordingly. 
We will explain SRS’s outline in detail here and acknowledge you with all the things you need to describe in various sections. 

Introduction: 

As you can observe, the first part of the SRS document, Introduction, needs to have the following things in detail. 
  • A purpose: Introduce your product and define your expectation from the final product.
  • Target audience: Define which of the teams and members will have access to the SRS document.
  • Intended use: Also, mention how this target audience should use the SRS to flow and work. 
  • Project Scope: This section of the SRS covers everything that is expected from the product. Its benefits, objectives, and goals.
  • References: Define the web address and listings that SRS refers to. This can include style guides, use case, vision, and scope. 
  • Definitions and Acronyms: Include a risk definition for the cases where the product might fail. Also include the list of acronyms that you have planned to use in the SRS document. 

Overall Description:

It is essential to describe what you plan to build and how this product will serve the purpose. Define if it is a new product or an existing one.
  • Product perspective: Be open about the intended use of the product. 
  • User needs: The SRS document should mention the product users and how they will use the product. You have to define primary and secondary users and their needs from the product.
  • Product features: Here, you will define all the features you will include in the product.
  • Operating environment: Describe under which technical environment is the product intended to run on. 
  • User Classes and Characteristics: Define the user characteristics and how they will use the product and benefit from it. 
  • Assumptions and Dependencies: List out the factors that can affect the requirements defined in the SRS document. Also, mention how these requirements will be affected if the assumptions are not shared or changed. The assumptions made by the engineering team while collecting & analyzing the requirements will also fall under this section. 
  • Design and Implementation constraints: Describe in detail or show how you are planning to design the product. Also, mention what constraints may arise during its implementation. 

System Features & Requirements:

This section is the most crucial part of your SRS document. This lays down the base of the product. 
Functional Requirements: 
While initiating the project, it is important to describe the product’s specific requirements. This section covers how a product will function when a user interacts with the product. 
Functional requirements will be listed in hierarchical order with the top’s main functional requirements, followed by child requirements. Defining these requirements in detail helps in accurate designing of the product. 
Non-functional requirements:
Depending on the industry your product will serve in, you need to define the non-functional requirements. This section is about your expectations from the product in terms of performance, safety, security, scalability, and quality attributes. 
If the product needs any critical certification for functioning, it should be mentioned beforehand. 

What are the Qualities of a good SRS? 

The team and the stakeholders would always vouch for a good SRS documentation. There are a few qualities that reaffirm a good SRS, here they are:
Correctness:
Without any ambiguity, the SRS document should be described with as much clarity as possible. 
Certain in nature:
As mentioned above, an SRS document needs to have the exact scope, requirements, and end results defined. 
Reliable:
While preparing an SRS document, you need to be as transparent as possible. Transparency will help you in crafting a reliable document that can be shared with the stakeholders and clients. 
Verifiability:
In continuation of the above point, the SRS document should be verifiable. This means, at any point, if the team is stuck, they should be able to trace back the document and cross-check the development of the product. 

What are the bad practices for documenting SRS?

Along with the good qualities, you should be aware of the bad practices that can ruin the efforts put behind documenting SRS. 
Incomplete dictionary:
An SRS document is for everyone involved in the project. If you use jargon or terminology known to only a few of them, then your SRS doesn’t solve the purpose. It is important to define the terms in the first place for everyone to understand and refer to. 
Putting ideas randomly:
As you would have already observed, SRS documents have a contextual flow. Putting pieces of concepts together is a poor SRS document. 
Defining passive actions:
You may define the functions requirements and non-functional requirements, but, unless you know who will interact and how the document is of no use. You need to know who is going to interact and what the expectation is. 
Incompleteness:
An SRS document is detailed and lengthy, and a point of paramount importance may be missed or overlooked. This mistake often leads to severe issues during development. Hence, the persons involved in drafting the SRS document should work in the consensus of the team, product owner, and stakeholders.

Summing Up

Product development is a pivotal, detailed, and time-consuming process. The development team may falter, or miscommunication may happen if the requirements are undocumented in the Software requirements specification document. 
The rationale described in the document will help business analysts, product engineers, and stakeholders in decision making. Hence, include both the problems and the document’s opportunities, which will help you comprehend what you have planned for the product. 

Written by sanjay-kidecha | Sanjay Kidecha is the CMO of Kody Technolab. He loves to explore and write on latest Tech Trends.
Published by HackerNoon on 2020/08/26