The 6 Most Important Software Requirements Practices
Karl Wiegers
Author of "Software Requirements Essentials" and 13 other books. PhD in organic chemistry. Principal Consultant at Process Impact. No certifications at all.
Authors sometimes make things longer and more complicated than necessary. Some readers might feel that I’ve been guilty of this myself. The third edition of my book?Software Requirements, co-authored with Joy Beatty, is about 245,000 words long, nearly 640 pages in a rather small font. Maybe that seems like overkill, but to be fair, the requirements domain is large and complex.
Books like?Software Requirements,?Mastering the Requirements Process?by Suzanne and James Robertson, and the IIBA’s?Business Analysis Body of Knowledge?describe dozens of valuable techniques for requirements elicitation, analysis, specification, validation, and management. They’re all useful when thoughtfully applied in appropriate situations. But if you don’t have time to wade through these large volumes, you might like this TL;DR version of the six most important requirements practices that every project team should perform (plus the?sequel with six more practices). This article is adapted from Software Requirements Essentials: Core Practices for Successful Business Analysis by Karl Wiegers and Candase Hokanson.
Practice #1: Define business objectives
Organizations undertake a project to solve a problem, exploit a business opportunity, or create a new market. Defining the project’s business objectives communicates to all participants and other stakeholders?why they are working on the project. The organization could hope to achieve both financial and non-financial business objectives with the new product.?Try to quantify the business objectives, and make them measurable, with statements like these:
Using business objectives aligns all of the team’s work and key decisions. Without defined business objectives, you can’t craft a clear product vision statement or establish the scope of either the entire project or any development increment. The team can’t make good decisions about scope changes or proposed functionality unless they know how those changes match up with the business objectives.
Keeping the scope in focus helps the team avoid scope creep while still adapting to changing business realities. And how can you know if the project was a success unless someone defined measurable business objectives and success criteria up front?
Practice #2: Understand what users need to do with the solution
I strongly advocate taking a usage-centric approach to requirements development and solution design, rather than a feature- or product-centric approach. Understanding the tasks that users need to perform and the goals they want to achieve lets the business analyst (BA) derive the functionality that developers must implement.
When you focus on exploring features rather than user goals, it’s easy to overlook some necessary functionality. It’s also easy to include functionality that seems cool but doesn’t help users get their jobs done.?Use cases are an effective technique for maintaining this usage-centric mindset.
Seeking to understand what users need to do with the product implies several other important BA activities, including these:
Practice #3: Prioritize the requirements
I doubt that any project has ever implemented every bit of requested functionality. Even if you could implement it all, you can’t do it all at once.??Your goal is to deliver the maximum business value to your customers at the lowest cost and in the shortest time. Achieving this goal demands that you prioritize requirements so the team can work on them in the most appropriate sequence.
Prioritization involves considering how much each proposed requirement contributes to achieving the project’s business objectives. Prioritizing requirements lets the team decide which of the work items remaining in the backlog to defer or omit because of time and resource constraints.?There are numerous requirements prioritization techniques available, including these:
Some of these methods take more effort than others, but those methods also help the project manager or product owner make finer-grained choices. Choose any technique that lets the right stakeholders make good business decisions throughout the project to avoid a frantic “rapid descoping phase” late in the game.
Practice #4: Elicit and evaluate quality attributes
People naturally focus on a product’s functionality when discussing requirements, but those are only part of the solution.??Nonfunctional requirements contribute heavily to user satisfaction and suitability for use. When speaking of nonfunctional requirements, people most commonly think of?quality attributes, sometimes called the “-ilities.”??These product characteristics include usability, maintainability, security, reliability, and many others. To help designers devise the most appropriate solution, BAs need to discuss nonfunctional requirements as part of requirements elicitation.
Developers generally don't directly implement requirements that describe safety, reliability, portability, security, or other characteristics.?Instead, these attributes serve as the origin of many functional requirements and drive design decisions. Table 1 indicates the likely categories of technical information that different types of quality attributes will generate.
Another challenge is that it's not possible to optimize all of the desired quality factors at once.?Designers must?make trade-off decisions?among the various attributes. Therefore, the team needs to determine which ones are most important to customer success and optimize those. Carefully specifying quality attributes lets you build a product that delights its users, beyond merely doing what it’s supposed to.
Practice #5: Review and test the requirements
How do you know if your requirements are accurate? How can you tell if there are clear enough so all the team members know what to do with them and other stakeholders know what to expect in the solution? No matter how you choose to represent requirements knowledge, it is sometimes ambiguous, incomplete, or simply incorrect.
One of the most powerful quality practices available is peer review of requirements. Convene some colleagues to review both textual requirements and diagrams. Different project participants — BAs, designers, developers, testers, users — will find different kinds of problems during these reviews. Requirements reviews pose some?particular challenges. Rather than simply inviting people to look over the requirements, provide some training so reviewers know how to participate effectively and can find as many issues as possible.
A related requirements validation practice is to?write conceptual tests based on requirements. Testing requirements is something you can do early in each development cycle to reveal many errors before they are cast into code. Requirements and tests are complementary views of the same knowledge.?Requirements describe how the product should behave under certain conditions; tests describe how to tell if it's exhibiting the correct behaviors.
Practice #6: Manage changes to requirements effectively
No matter how well you understand the problem and how carefully you prepare the requirements, they won’t be perfect, complete, or static. The world changes around us as we work. New users and new ideas appear. Business rules surface and evolve. Projects inevitably grow beyond their originally envisioned scope. Every team must anticipate requirements changes and establish mechanisms for dealing with them without derailing the team’s commitments.
When you know the project outcome is incompletely defined and likely to change a lot, an incremental, agile approach is a good way to cope with it. You plan to build the requirements -- and the solution -- in a series of small chunks, expecting the direction to change and accepting the uncertainty of what you'll have at the end and when you'll have it.
When the likely degree of change is less extreme, plan to accommodate some growth (along with risks, imprecise estimates, and unexpected events) by building contingency buffers into development schedules.??Establish a requirements change process so the right people can get the right information to make good business decisions about which proposed changes to incorporate to add value with minimal disruption.
Don’t use the expectation of change as a justification for skimping on requirements thinking, though. Excessive requirements churn often indicates that objectives were unclear or the elicitation approach wasn’t effective.
Neglect These Practices at Your Peril
Of course, there are many other valuable requirements activities besides these six. I recently wrote descriptions of?six more important requirements practices, another set of 4 key practices, and a final set of 4 core practices. All of these activities greatly increase your chances of building a solution that achieves the desired business outcomes efficiently and effectively. Applying them doesn’t guarantee success for any BA, product owner, or product manager. But neglecting them likely ensures failure.
==============
This article is adapted from?Software Requirements Essentials: Core Practices for Successful Business Analysis?by Karl Wiegers and Candase Hokanson. Karl is the author of numerous books on software development and other topics, including?Software Requirements?(with Joy Beatty),?Software Development Pearls,?and?The Thoughtless Design of Everyday Things. Candase is a business architect at ArgonDigital. She has written numerous articles on best practices in requirements management and agile product ownership.
Creator of AI Software Requirements Analysis Tools - automated estimation, QA and insight.
1 年Yet another superb article by Karl Wiegers. Getting the requirements right really matters.
Nice to hear about new books ?? on REQUIREMENTS.
Leadership Development I JMT Coach, Trainer, Teacher and Speaker I LSSGB I CBAP I Agile/Scrum Product Owner I Diploma in Education & Training I BPI/BPM I Organisation Development I M.Sc. I B.Sc.
1 年Thanks Karl Wiegers . These books are some my "go to" resources and worth owning by BAs
Engineering ? Leadership ? ISO26262: enabling the safe mobility of tomorrow
1 年Very interesting article. Karl Wiegers I fully support the 6 mentioned principles: Particularly the Prioritization of Requirements: ???????? ???????? ???? ???? ?????????????? ?????? ?????????????? ???????????????? ?????????? ???? ???????? ?????????????????? ???? ?????? ???????????? ???????? ?????? ???? ?????? ???????????????? ????????. In safety-relevant projects this maximum business value includes of course also the right level of safety. One of potential pitfalls I've seen often is the generation of way too many requirements. The more requirements the more effort for related steps such as analysis (e.g. FMEA, FTA), reviews, testing etc. From my experience some of the root causes are: 1?? lack of clear understanding of the scope and objectives 2?? poor requirement management practices (e.g. missing clear methods on organizing, prioritizing, and tracking requirements) 3?? fear of missing important requirements 4?? communication breakdowns e.g. generation of requirements in isolation without proper communication and collaboration with stakeholders, leading to duplicated or unnecessary requirements 5?? missing or mixing up different level of abstraction Very interested in your opinion on this.
Host of Tech Lead Journal ??? | Head of Engineering at LXA | LinkedIn Top Voice
1 年Looking forward to reading your upcoming book, Karl! I'm sure those 20 practices are Software Requirement Pearls!