Â
What is SRS, and how to approach it?
SRS definition and concept clarification
Functional vs. non-functional requirements of a software product
Non-functional requirements specify how the system will perform the aspects covered in the functional requirements section. They define the general characteristics impacting user experience. Non-functional requirements relate to:
- Performance
- Security
- User interface/experience
- The cultural context of the product
Who should write the software requirements document?
- Project managers
- Solution architects
- Business consultants
Main elements of a software requirements document
Software requirements specification document in waterfall methodology Waterfall allocates more time for SRS document creation, and it is perfect for projects where requirements are unlikely to change soon. However, if the change is inevitable, updating the SRS document will be rather expensive.
Software requirements document in agile methodology This approach implies that business analysts gather feedback from the client iteratively and are likely to update the SRS several times during the course of the project. Even though the requirements remain flexible, and changes can occur relatively often, composing SRS is crucial in agile methodology. It defines the scope, explains the business logic, and makes expectations transparent to all the participating teams. Generally, a requirements specification document should contain the following information:
- Product value: specifies which value the potential product will deliver. Will it solve a particular problem? Or will it provide an innovative way to increase market value?
- Business model: explains the customer’s business model that the prospective solution will need to support. This section includes organizational context, process flow diagrams, business functions, etc.
- Motivation: presents a rationale for why the client wants to build this solution in the first place. This information will be crucial to keep the project on track if the client organization undergoes shifts in key personnel. Business analysts and developers will refer to this section when making decisions about the project.
- Functional and non-functional requirements: provides hierarchical documentation of different requirements.
- System qualities: includes items that are typically known as -ilities , such as, scalability, reliability, security, and availability, among others.
- Users (personas): describes up to three target user segments, specifying their characteristics, such as age, gender, profession, education, etc.
- Business use cases: one of the most popular forms is Unified Modeling Language (UML) use case diagrams, which showcase different users interacting with the system to accomplish various tasks. This section formalizes the steps that need to be carried out for each use case, together with any rules or conditions.
- Assumptions and constraints: highlights design constraints that will influence developers’ choices removing specific options from their consideration.
- Acceptance criteria: presents the criteria to be satisfied for the customer to accept the resulting product. In the case of waterfall methodology, these are evaluated at the end of the project. With agile, this is done after every iteration.
Why write software requirements specifications?
- Serves as a reference in case of disputes between designers, developers, project managers, and any other team members
- Allows to precisely estimate time and finances needed for a project
- Guarantees consistency. After some time into the project, the participating parties might lose track of what the final system needs to accomplish. They can get back to the software requirements specification to gain clarity and focus
- Facilitates solution scaling in the future if needed
- Defines and outlines complex business logic
- Helps investors with decision making as they can have a clear overview of all system’s features and interactions with users.
How to write an SRS document?
- Always clarify. What is obvious to you is not necessarily apparent to others, so write everything in detail and don’t make assumptions that others will know something just because you do. This document needs to be comprehensive and understandable to everyone involved.
- Descriptions must be brief and divided into sections. Even though understandability is an important factor, software requirements specification documents must be as concise as possible. Five sections with one paragraph each are more favorable than one section with five paragraphs.
- Draw and include diagrams to clarify and support your text. If you can’t draw it, you don’t understand it. There are different types of diagrams that you can use to enhance your SRS, such as Business Process Modeling Notation (BPMN), Unified Modeling Language (UML), use cases, Entity Relationship models (ER), user journey, and user flow diagrams among others. Make sure your diagrams always have legends.
- Hyperlink different sections, terms, and clarifications to facilitate navigation. The resulting software requirements specification document will be large, even if it describes a relatively small project. Hyperlinking will help you find what you need fast.
- Don’t repeat the same thing twice. Whether it’s a definition, functionality description, or anything else. If you described a button’s functionality once, it is best to link back to the original description when mentioning the same information again.
- If it’s not an established truth ” it’s a lie. Business analysts shouldn’t make assumptions about the product. They only include what they know to be true. If a business analyst is not sure about something, they need to clarify instead of assuming.
- Base everything you include on solid facts and sources. Every functionality needs to have a source (i.e., stakeholders’ statements, technical and business needs) and a goal.
- Invent solutions, not requirements. Only include client’s requirements, be careful not to write anything from your own imagination.
- Eat an elephant bit by bit. Complex functionality needs to be adequately explained and broken down into smaller pieces.
- Capitalize important terms,such as objects and process names. This will make it stand out among the rest of the text. This approach will improve readability and make it easier for the reader to find what they are searching for.
- Make sure the resulting SRS is verified and approved by all stakeholders involved.
Main challenges of SRS in software engineering
- It requires extensive manual labor. It’s an exhausting task to write and maintain such a large document. So, do not expect it to be done in two days.
- Overcomplicated requirements can make the writing process even more tedious. This is especially true for large projects with many stakeholders.
- The involved parties might have different opinions on the system. Building on the previous point, having multiple stakeholders from different departments can result in conflicting requirements as every shareholder has their view on the system/product.
- Many functional areas are to be tracked. A software requirements specification document describes several functional areas, such as user management, product management, etc., and they all need to be consistent. Any changes in one area must be reflected across all the affected areas. Such changes include coming up with new requirements or testing a different tech approach.
- Constant updates and maintenance. All in all “ a software requirements specification is a large document, which needs to be maintained and kept up to date. Any changes in the system’s behavior need to be reflected. Otherwise, the SRS loses its validity.
Downloadable software requirements specification template
Things to consider if you are still not convinced in software requirements documentation
- Incorrect price and effort estimations. One of the main benefits of a software requirements specification document is that it allows you to foresee the time and effort required to build the product. If you don’t have such a detailed description, your vendor can’t make a precise estimation.
- Unpredictable development results. If you don’t specify what you want exactly, designers and developers might start making assumptions, delivering a product that is far from what you originally wanted.
- Unreliable delivery schedule. No one can confidently set dates for intermediate and final deliverables
Which projects can benefit from software requirements specification the most?
- Large and complex
- Depends on investors’ funding
- The development team is distributed over different vendors
On a final note ¦
Do you see SRS as an indispensable part of software engineering? Get in touch! Vladimir and other experts will craft a high-quality SRS document that will ensure a seamless development of the final product.