The art of adequately managing software specifications is perhaps the most fundamental aspect of software projects – yet it’s notoriously difficult to get right. Thousands of derailed, failed, or delayed projects suggest that requirements management should be a top concern of software engineering teams.
According to research carried out by the Project Management Institute (as well as just plain common sense based on tons of experiential evidence), the top issues plaguing most software projects affect schedule, budget, and scope. In other words, software projects tend to take longer than expected, cost more than forecast, and get more complex than originally planned for. All of these have lots to do with requirements – meaning that these issues could be avoided or reduced if certain requirements management best practices are adhered to.
The gathering of requirements should be a highly collaborative effort. Therefore, even before you start thinking about the product itself, you’ll have to map all the relevant stakeholders who have interest in and influence over the project.
Involve all of them in this process from lower-level users all the way up to higher management, and really learn about them! It’s a good idea to look at this process like an investigation: put on your Sherlock hat, gather all the information you can, and continuously sift through it for relevant bits of data. The importance of the informal narrative is often overlooked in requirements elicitation, but it helps you really understand both the use case and the purpose of the product.
That said, informal input shouldn’t translate to informal requirements. Avoid vague or ambiguous language at all times, and make sure your requirements are crystal clear! All implications or inconsistencies should be removed.
When defining requirements, focus on delivering value, and make sure that everyone involved shares an understanding of ‘value’ in your project. This, in turn, helps avoid scope creep: you’ll want to make sure that the scope of the project is clearly defined and documented so that it doesn’t spiral out of control.
Requirements definition should be an iterative process, which greatly helps the next step. Set up a priority list of your requirements based on their value, and make sure all stakeholders agree with the final list. Having this prioritized list of requirements provides clarity, making it easier for your team to set realistic expectations with the customer/end user on what is to be delivered.
Create a baseline, and get customer approval to validate this list of requirements! Closing the loop here can be regarded as a last sign-off step before the actual development starts. Because requirements show a tendency to change all the time, it’s a good idea to set a baseline upon starting the project.
Make sure that all your requirements documents are version controlled, with everyone having access to the most up-to-date version of all docs. (In a safety-critical environment, you’ll also want to make sure you control access to documents to maintain their integrity.)
Have a process in place for changes in your requirements that includes adequate review & approval steps, and make sure you analyze the impact of changes so that you have a clear view on all their effects. Take into account any possible effects these changes may have on the project’s triple constraints (scope, schedule, and cost), manage those effects, and clearly communicate them to all stakeholders!
Follow the progress of requirements along the development lifecycle. Tie requirements in with tasks, source code, risks, and test cases so that you have airtight traceability from end to end. Not only is this a direct requirement of many safety-critical development guidelines and industry standards, it also helps analyze test coverage and establish a solid practice of requirements-based testing. All that contributes to higher product quality.
Most dev teams have realized that their old ways (in most cases, using Word docs to gather requirements & managing them via spreadsheets or issue tracking tools) will no longer cut it. Because of all the manual effort and risk of errors involved, the Total Cost of Ownership of this traditional way of managing specifications is way higher than that offered by a dedicated platform.
No high-performing engineering team relies on inadequate tooling, and more and more companies consider updating their toolchains a strategic step that will increase their profitability. There are a number of requirements management tools available for this purpose – carefully map out your needs and pick the one that best suits your needs.
Hanna Taller is a content creator for PTC’s ALM Marketing team. She is responsible for increasing brand awareness and driving thought leadership for Codebeamer. Hanna is passionate about creating insightful content centered around ALM, life sciences, automotive technology, and avionics.