What is Software Requirements Specification?

by Adam Sandman on

Software Requirements Specification (SRS): Definition, Example, How to Write, & More

What is SRS? Software Requirements Specification

Software Requirements Specification, also known as System Requirements Specification, is a document that details the features and functionality of a software application. It includes a variety of sections and components that define the intended system utility and performance required to satisfy the users.

In addition to specifying how the system should behave, the specification also defines (at a high level) the main business processes that will be supported, what simplifying assumptions have been made, and what key performance parameters will need to be met by the system. This document is a critical piece of keeping all stakeholders in the development process on the same page.

Why use an SRS?

The importance of SRS lies in its impact on the planning stages of software development. The primary reasons for its use are:

  • Clearly and accurately defining the requirements for a system or application: Software requirement specifications should provide a detailed description of what the system or application needs to do, how it needs to behave, and the constraints and other factors that it needs to satisfy. This helps to ensure that the system or application is developed to meet the needs of the user or client.
  • Serving as a reference point throughout the development process: SRS documentation should also be used as a reference point throughout the development process to verify that the system or application is being built according to the planned requirements.
  • Facilitating communication and collaboration among team members: It should provide a common language and set of terms that all team members can use to discuss and agree on the requirements for a system or application. This can help to improve communication and collaboration and to avoid misunderstandings or disagreements.
  • Ensuring that the system or application is developed in a cost-effective manner: Requirement documents should help identify potential challenges or problems early in the development process. This improves initial planning, particularly around making sure that the system or application is developed in a cost-effective manner, which will reduce the risk of costly reworks or changes later on.

Software Requirements Specification Example

Let’s explore a basic SRS example for a hospital electronic medical record (EMR) system:

1. Introduction

This document outlines the requirements for a new EMR system for ABC Hospital. This system will be designed to improve patient care delivery by providing a centralized platform for managing medical history, medications, allergies, and treatment plans.

The EMR platform is a secure, HIPAA-compliant software application for managing all aspects of patient care within the hospital network. It will be used by administrative staff, healthcare professionals, lab technicians, and billing staff.

2. System Features

  • Clinician Features:
  • Create and maintain comprehensive patient medical records (including demographics, medications, allergies, and immunizations)
  • Document appointments, exam results, diagnoses, and treatment plans
  • Electronically order diagnostic tests, medications, and procedures
  • View and analyze patient medical history to inform treatment decisions
  • Securely share patient information with authorized healthcare providers
  • Patient Features:
  • View portions of their electronic health record
  • Request medication refills and schedule appointments online
  • Securely communicate with healthcare providers through a patient portal

3. Functional Requirements

  • Patient Management:
  • Register new patients and create EMR
  • Update patient demographic and insurance information
  • Access and update patient medical history, allergies, conditions
  • Appointment Scheduling:
  • Schedule appointments for patients
  • Check-in patients for appointments
  • View the calendar of upcoming appointments for each HCP
  • Clinical Ordering:
  • Order lab tests and view results in EMR
  • Electronically prescribe medications
  • Track medication administration
  • Billing and Payments:
  • Generate bills and invoices for patient visits
  • Calculate costs based on insurance coverage
  • Process payments (including credit cards and insurance claims)
  • Reporting and Analytics:
  • Generate reports on patient census, revenue, and clinical quality metrics
  • Identify high-risk patients based on conditions and history
  • Analyze operational and financial performance

4. Non-Functional Requirements

  • Security and Privacy:
  • Secure authentication and role-based access controls
  • Full encryption of EMR data at rest and in transit
  • Audit trails for tracking accessed to EMR
  • HIPAA-compliant for safeguarding patient data
  • Usability:
  • Intuitive user interface tailored for different user roles
  • Responsive design for use on mobile devices
  • Support for multiple languages
  • Performance and Availability:
  • Fast response times for EMR access (<2 seconds)
  • Able to support 500 concurrent users
  • 99.9% uptime for critical care functions
  • Integration:
  • Integrate with hospital information systems, labs, and pharmacies
  • Standards-based integration with other EMR systems
  • Capability to import and export medical data in standard formats

5. Other Requirements

  • Intuitive UI for clinicians and patients with varying levels of technical expertise
  • Clear and concise language for labels, menus, and error messages
  • The patient portal interface should be easy to navigate and understand
  • Comprehensive audit logging and reporting capabilities
  • Automated backup and disaster recovery processes
  • Regular software updates to address security patches

NOTE: This example provides a basic framework for an EMR SRS — a real-world SRS (especially in the healthcare industry) would likely be much more detailed.

How to Write System Requirements

While the specifics will vary from project to project, the general steps in writing SRS should follow:

  • Create a list of functional requirements for the system: These are the specific actions or capabilities that the system must be able to perform. For example, if the system is a website, the functional requirements might include the ability to create an account, log in, and search for products.
  • Create a list of non-functional requirements for the system: These are the requirements that define the quality or performance of the system, rather than its specific capabilities. For example, the non-functional requirements for a website might include response time, uptime, and security features.
  • Organize the requirements into categories or sections: Provide a detailed description of each requirement. This will keep the SRSorganized and easy to read for anyone involved in the project.
  • Review the SRS with the stakeholders: Confirm that it accurately reflects their needs and that all of the requirements are clearly defined.
  • Update the SRS as needed throughout the development process: Reflect any changes or additions to the requirements.

Characteristics of a Strong SRS

  • Measurable: A well-written SRS defines success with clear and measurable criteria, meaning that they can be objectively verified and tested. Each requirement should have clear acceptance criteria that define when it has been successfully met — this might involve specifying how fast the software needs to perform a certain task or how much data it should be able to handle.
  • Consistent: The information throughout the SRS should be consistent and free of contradictions or conflicting requirements. This ensures everyone involved has a clear understanding of the project's goals and avoids confusion during development.
  • Attainable: The SRS should outline realistic expectations for the software's capabilities. It's important to consider factors like budget, development time, and available resources to ensure the specified requirements are achievable.
  • Complete: While avoiding unnecessary complexity, a good SRS should be comprehensive. It should cover all the functionalities the software needs to deliver, including user interface details, performance benchmarks, and security considerations. A complete SRS ensures the final product is not just functional but also meets user expectations in terms of ease of use, speed, and security.
  • Traceable: An ideal SRS allows for traceability, meaning each requirement can be linked back to its origin (user needs, business goals, etc.) and forward to its implementation in the code. This facilitates easier maintenance and future modifications.
  • Flexible: Software development is an iterative process, and new requirements or adjustments might arise. As new insights or business needs come up, the SRS should be able to adapt and incorporate necessary modifications. This can be achieved by prioritizing requirements and clearly indicating which features are essential vs. ones that could be added later.

Main Elements

Depending on the methodology employed (agile vs. traditional waterfall), the level of formality and detail in the SRS will vary. However, an SRS should typically include a description of the functional requirements, system requirements, technical requirements, constraints, assumptions, and acceptance criteria. Each of these is described in more detail below:

These drivers may include both problems (reasons why the current systems/processes are not sufficient) and opportunities (new business models that the system will make available). Usually, a combination of problems and opportunities is needed to provide motivation for a new system.

Business Model

The next section describes the underlying business model of the customer that the system will need to support. This includes information like the organizational context, current-state and future-state diagrams, business context, key business functions, and process flow diagrams. This section is usually created during the functional analysis phase.

Functional and System Requirements

Moving on, the functional and system requirements part of the SRS usually consists of a hierarchical organization of requirements. This is organized with the business/functional requirements at the highest level and the detailed system requirements listed as their child items.

Generally, the requirements are written as statements such as "System needs the ability to do x" with supporting detail and information included as necessary.

The business use cases are usually derived from the functional requirements and the system use cases are usually derived from the system requirements. The use cases can also be represented as a flowchart diagram:

Technical Requirements

This portion of the SRS is used to list any of the non-functional requirements that embody the technical environment that the product needs to operate in. This also includes the technical constraints that it needs to operate under. These technical requirements are critical in determining how the higher-level functional requirements will get decomposed into the more specific software requirements.

System Qualities

This section is used to describe the non-functional requirements that define the quality of the system. These items are often known as the "-ilities" because most of them end in "ility." They included such items as reliability, availability, serviceability, security, scalability, and maintainability.

Unlike the functional requirements (which are usually narrative in form), the system qualities usually consist of tables of specific metrics that the system must meet to be accepted.

Constraints and Assumptions

Relatively self-explanatory, here you will outline any design constraints that have been imposed on the design of the system by the customer, thereby removing certain options from being considered by the developers. This section will also contain any assumptions that have been made by the requirements engineering team when gathering and analyzing the requirements. If any of the assumptions are found to be false, the software requirements specification would need to be re-evaluated to make sure that the documented requirements are still valid.

Acceptance Criteria

One of the final sections of the document, here is where the criteria by which the customer will "sign off" on the final system are described. Depending on the methodology, this may happen at the end of the testing and quality assurance phase, or in an agile methodology, at the end of each iteration. The criteria will usually refer to the need to complete all user acceptance tests and the rectification of all defects/bugs that meet a pre-determined priority or severity threshold.

Alternatives

In agile methodologies like extreme programming or scrum, static documentation such as these software requirements specifications are usually eschewed in favor of more lightweight documentation of the requirements, namely by means of user stories and acceptance tests.

This approach requires that the customer is easily accessible to provide clarification on the requirements during development. In addition, it assumes that the team members responsible for writing the user stories with the customer will also be the developers building the system. A more formal approach may be needed if the customer is inaccessible and/or a separate team of business analysts will be developing the requirements.

In Rapid Application Development (RAD) methodologies such as DSDM or Unified Process (RUP, AUP), the requirements specification is often kept at a higher level with much of the detailed requirements embodied in prototypes and mockups of the planned system. These prototypes are a more visual way to represent the requirements and help the customer more easily comprehend what is planned (and therefore provide more timely feedback).

Writing an SRS in Text Apps vs. Requirements Software

Crafting an SRS in a traditional text document might seem manageable, but dedicated requirements management tools offer a significant edge — especially for larger or more complex projects. They excel at organization, keeping your SRS structured and searchable for effortless navigation, and often include features to automate tedious tasks like version control and reporting, freeing up more of your time. But perhaps most importantly, requirements management software excels at traceability — automatically linking requirements to other project elements and ensuring everything stays aligned.

This translates to a smoother development process, improved communication, and ultimately, a stronger foundation for your software project. All of this makes your life (and the lives of everyone involved in the project) much easier.

Upgrade Your Software Requirement Specification Tool Today

Inflectra’s platforms are industry-leading tools that streamline your entire development process, including the requirement specifications stage. Not only does it help you identify requirements and organize them, but powerful requirements traceability features allow you to stay on top of any that may have fallen through the cracks. For a comprehensive, out-of-the-box solution for all of your software development, testing, and lifecycle management needs, try a free 30-day trial of SpiraTeam below!

Spira Helps You Deliver Quality Software, Faster and with Lower Risk.

Get Started with Spira for Free

And if you have any questions, please email or call us at +1 (202) 558-6885

Free Trial