Learning to write good requirements is an important step in many IT professional careers. If you’re working as a business analyst, it’s one of your core skills. If you’re working in other roles,
learning to recognise and improve requirements can be beneficial to your job. I’ve listed ten tips on how to write great requirements by identifying good traits.
Good requirements are unambiguous. This means they are clear and they leave no room for anyone to misinterpret them. They are stated in a way that is clearly understood. They should be understood by the writer (which is you), as well as the reader. If they’re not clear and unambiguous, then they don’t serve much purpose.
Great requirements are valuable. They are written to solve a business need, to make things easier for a user, and to align with business objectives. They are important and meet the criteria of the users. If a requirement is not valuable, then it isn’t really a requirement. If it’s not going to provide any value to a user, then we need to reconsider why it’s actually a requirement in the first place.
The purpose of a requirement is to specify what actually needs to be done by the project team (developers, system engineers, etc). To make sure that the requirement is implemented correctly, it needs to be verified. The requirement should be able to be verified – it should be described in a way that allows for someone to check if it has been completed or not. Some requirements are vague or don’t allow easy verification of them, which leads to problems in the testing phase.
A good requirement needs to be concise. It needs to be easy to read and understood, by both the author and the audience. It should not be overly descriptive – only as descriptive as it needs to be. By that, I mean you should only add in words or terms that are needed to help the reader understand the requirement.
Requirement should be prioritised. They should be assigned a value to determine how important they are to the users and to the system. This could be a simple High/Medium/Low scale, a rating of 1 to 5, or something more complex. The aim of a priority is to get agreement on the importance of a requirement, and to help decide if and when it should be implemented.
Separate From Design
A good requirement should not mention any design features or suggestions. At the requirements gathering stage, the method of implementation should not be considered. The requirement’s job is the specify what is being implemented – the design is used to specify how. Try to focus on the “what” of the system at this stage and don’t mention any specific technologies or layouts or design rules.
The requirements you write should be attainable. They can be ambitious, or tricky, but they should be able to be achieved. There’s no point writing requirements that are impossible to achieve. Having requirements that are attainable keeps the project team and stakeholders updated and confident that items can be delivered. If something is not attainable, it should not be a requirement.
Requirements should be consistent, both in your document and with any other areas of the system. You should use the same grammar and terms when writing requirements, so that the same meaning is determined from them. They also should be consistent when reading through the document to look for any gaps in the requirements written.
Good requirements have an owner specified. This is so that the author and reader knows who to speak to if they have any questions. This might seem obvious at the start of the project, but two months in you may need to clarify something, and having an owner against these requirements is helpful.
Great requirements completely describe the objective of the system or the project. Nothing is left out. If there are any requirements that are not going to be built, then they are specified in a separate section. The list of requirements should cover everything that is expected by the system. There should be no gaps or confusion about certain areas.
Unique IDs [Bonus Tip]
I thought I’d include a bonus tip, even though I said there were ten, I thought I’d throw in another tip for writing good requirements.
A good way to improve your requirements is to assign each of them a unique ID (such as REQ001, REQ002). This is helpful for identifying the requirements later in the project, as well as discussing them with other people. The ID is unique across the project and can be used to create other documents such as Traceability Matrixes and design documents.
What other tips do you have for writing good requirements? Share them in the comments below!