SoftwareRequirementsEssentials KarlWiegers
SoftwareRequirementsEssentials KarlWiegers
“As research for a book, I once read the ten best-selling requirements engineering books
of the prior ten years. This one book succinctly presents more useful information than
those ten books combined. I wish I’d had it as a reference then.”
—Mike Cohn, author of User Stories Applied and co-founder
of the Scrum Alliance
“Diamonds come about when a huge amount of carbon atoms are compressed. The com-
pression crystallizes to form diamonds. Karl and Candase have done something very
similar: they have compressed their vast requirements knowledge into 20 gems they call
‘core practices.’
“These 20 practices give you the essence of requirements discovery, and for extra
convenience they are categorized to make your requirements journey more effective.
These practices are potent stuff, and I recommend that they become part of everyone’s
requirements arsenal.”
—James Robertson, author of Mastering the Requirements
Process and Business Analysis Agility
“What a valuable resource for new and experienced business analysts alike, who want an
accessible, clearly written, and well-organized introduction to key business analyst prac-
tices. Karl and Candase do a great job of breaking down a complex role into a straight-
forward set of practices that can be integrated into your business analysis process to
make it more effective.”
—Laura Brandenburg, author of How to Start a Business Analyst Career
“Candase and Karl have drawn upon their deep knowledge and experience of what it
takes to elicit, identify, represent, communicate, and validate requirements for software
products effectively. They have produced a useful, accessible, and clear book, which is full
of practical advice, great examples, and answers to the hard questions that people build-
ing software products face in the real world. If you’re involved in building software in any
role, this book will give you guidance on ways to make sure the product meets customer
needs and delivers real value.”
—Shane Hastie, Global Delivery Lead at SoftEd and Lead Editor, Culture and
Methods at InfoQ.com
“Software Requirements Essentials will be a high-value addition to your business analysis
library. I give the book high marks, as it does an excellent job of selecting and comprehen-
sively covering the most essential business analysis practices teams should be considering.
I thoroughly appreciated that the content was not overdone. Lessons were succinct while
remaining extremely usable. Care was taken to ensure the guidance was applicable
Karl Wiegers
Candase Hokanson
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where
those designations appear in this book, and the publisher was aware of a trademark claim, the designations have been printed
with initial capital letters or in all capitals.
The authors and publisher have taken care in the preparation of this book, but make no expressed or implied warranty of any
kind and assume no responsibility for errors or omissions. No liability is assumed for incidental or consequential damages in
connection with or arising out of the use of the information or programs contained herein.
For information about buying this title in bulk quantities, or for special sales opportunities (which may include electronic
versions; custom cover designs; and content particular to your business, training goals, marketing focus, or branding
interests), please contact our corporate sales department at [email protected] or (800) 382-3419.
For questions about sales outside the U.S., please contact [email protected].
All rights reserved. This publication is protected by copyright, and permission must be obtained from the publisher prior to any
prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical,
photocopying, recording, or likewise. For information regarding permissions, request forms and the appropriate contacts
within the Pearson Education Global Rights & Permissions Department, please visit www.pearson.com/permissions/.
ISBN-13: 978-0-13-819028-6
ISBN-10: 0-13-819028-3
ScoutAutomatedPrintCode
Pearson is dedicated to creating bias-free content that reflects the diversity of all
learners. We embrace the many dimensions of diversity, including but not limited to
race, ethnicity, gender, socioeconomic status, ability, age, sexual orientation, and
religious or political beliefs.
Education is a powerful force for equity and change in our world. It has the poten-
tial to deliver opportunities that improve lives and enable economic mobility. As we
work with authors to create content for every product and service, we acknowledge
our responsibility to demonstrate inclusivity and incorporate diverse scholarship so
that everyone can achieve their potential through learning. As the world’s leading
learning company, we have a duty to help drive change and live up to our purpose to
help more people create a better life for themselves and to create a better world.
Our ambition is to purposefully contribute to a world where:
While we work hard to present unbiased content, we want to hear from you about
any concerns or needs with this Pearson product so that we can investigate and
address them.
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
xi
References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Long story short: If you are going to read only one requirements book, this is it. Karl
and Candase have created the long-story-short version of how to develop good
requirements on a software project.
Let’s back up for the long story. If you made it this far, you already appreciate that
good requirements are the foundation of any successful software or systems develop-
ment project. Whether you’re a business analyst, product owner, product manager,
business stakeholder, or developer, it’s well worth investing the time to elicit, ana-
lyze, document, and manage requirements to avoid paying for it later—quite literally.
Good requirements lead to high-quality software.
Software Requirements Essentials is designed for the busy practitioner (and who
isn’t?) as a quick read about the most important requirements practices. It applies to
projects using either traditional or agile approaches. The terminology and cadence
of these practices may vary, but this book does a nice job of simplifying the differ-
ences and pointing out the similarities in those approaches. The practices described
apply to virtually any kind of team building virtually any kind of product.
I know Karl and Candase very well personally and can attest to the strength of
their collaboration. They each have areas of deep knowledge that complement one
another, both extending and balancing each other’s ideas. They also both live by
what they say, having used the techniques themselves on many projects.
When it comes to comprehensive requirements books, I’m slightly biased in that I
do love Software Requirements, Third Edition, which I coauthored with Karl. What
many don’t know is that I learned to be a business analyst from the first edition of
Software Requirements. In fact, that’s when I first met Karl. My job in the late 1990s
was to define requirements practices for an agile-like iterative development approach
at my software company. Boy, do I ever wish I had had this book back then!
Software Requirements Essentials distills the wealth of information found in Soft-
ware Requirements and many other texts down to twenty of the most important
requirements activities that apply on nearly all projects. Today’s busy BA simply
doesn’t have the time to read a lengthy instructive guide front to back. But they
should find the time to read this book.
This is the CliffsNotes version of many software requirements books, rolled into
one. By nature of it being consciously focused and condensed, you should not expect
massive details or full examples of every topic in Software Requirements Essentials.
xvii
For each of the many techniques presented, you’ll get a little what, a little why, and a
little how—enough to get you started and motivated. When you want more, follow
the numerous links provided to reference materials.
As with any book by Karl, there is lots of practicality to it, with a dash of humor.
Candase brings a long history of agile experience, keeping the text modern for
today’s common practices. Together, they’ve done a fine job of making this book
highly relatable by pulling from their collective wealth of project experiences. The
many real-life anecdotes make the recommended techniques real and justify their
validity.
You don’t have to read Software Requirements Essentials. But if you deal with
requirements in any capacity on a software project, I’d consider it … a requirement!
In preparing this book, we had valuable discussions with Jim Brosseau, Mike Cohn,
Jennifer Colburn, David Mantica, Ramsay Millar, and Meilir Page-Jones. We thank
them sincerely for their time and expert input. James Robertson eloquently reminded
us of how important it is to understand the problem rather than assuming a pro-
posed solution is correct. We appreciate Holly Lee Sefton sharing her expertise on
data elicitation and governance. Eugenia Schmidt kindly provided an insightful quo-
tation on requirements analysis, and Tim Lister allowed us to share his succinct defi-
nition of project success.
We greatly appreciate the helpful manuscript review input provided by Jeremy
Beard, Tanya Charbury, Jennifer Colburn, James Compton, Mihai Gherghelescu,
Lisa Hill, Fabrício Laguna, Reneé Lasswell, Linda Lewis, Geraldine Mongold, Meilir
Page-Jones, Laura Paton, Maud Schlich, Eugenia Schmidt, James Shields, and Tom
Tomasovic. Review comments from Joy Beatty, Runna Hammad, and Holly Lee
Sefton were especially valuable.
Many thanks to Noor Ghafoor, Joyce Grapes, and Joe Hawes at ArgonDigital,
who helped with prototype wireframes, example models, and glossary entries. Early
editorial reviews by Erin Miller were particularly helpful.
Special thanks go to Jim Brosseau of Clarrus for his generous permission to
include a version of his quality attribute prioritization spreadsheet tool in the sup-
plementary materials for the book.
We’re grateful to Haze Humbert, Menka Mehta, and the production team at
Pearson Education for their fine editorial and production work on the manuscript.
We also thank ArgonDigital and particularly Joy Beatty for their steadfast support
for, and many contributions to, this project.
Working with a coauthor brings numerous benefits. It’s tremendously helpful to
have someone to bounce ideas off, to clarify your thinking, to improve your presenta-
tion, and to contribute new content, fresh perspectives, and unique project experi-
ences. Two authors generate a synergy that lets them tell a richer story than either
could on their own. Karl thanks Candase for contributing all those benefits, sharing
her extensive experience on agile projects, and adding many illuminating true stories
to this book.
xix
As always, Karl is indebted to his wife, Chris, for patiently tolerating yet another
book project. She’s heard way more about software development and book writing
over the years than she ever expected or cared to.
Candase is extremely grateful to her family for supporting her in her first book-
writing experience. Special thanks go to her project teammates at ArgonDigital and
at her major consulting client for their encouragement even during long and arduous
product launches. Two people at ArgonDigital stand out for particular thanks: Joy
Beatty for her encouragement and guidance in becoming an author and Megan
Stowe for always inspiring Candase to continue learning. Finally, Candase would like
to thank Karl for giving her the opportunity to coauthor with him, for being a great
mentor through the publishing process, and for making the work fun and enjoyable.
Since 1997, Karl Wiegers has been Principal Consultant with Process Impact, a soft-
ware development consulting and training company in Happy Valley, Oregon. He
has delivered more than 650 presentations to thousands of students and conference
attendees worldwide. Previously, he spent eighteen years at Kodak, where he held
positions as a photographic research scientist, software developer, software manager,
and software process and quality improvement leader. Karl received a PhD in organic
chemistry from the University of Illinois.
Karl is the author of thirteen previous books, including Software Requirements,
More About Software Requirements, Software Development Pearls, The Thought-
less Design of Everyday Things, Practical Project Initiation, Peer Reviews in Soft-
ware, and a forensic mystery novel titled The Reconstruction. He has written many
articles on software development, management, design, consulting, chemistry, mili-
tary history, and self-help. Several of Karl’s books have won awards, most recently
the Society for Technical Communication’s Award of Excellence for Software
Requirements, Third Edition (coauthored with Joy Beatty). Karl has served on the
Editorial Board for IEEE Software magazine and as a contributing editor for Soft-
ware Development magazine.
xxi
When he’s not at the keyboard, Karl enjoys wine tasting, volunteering at the pub-
lic library, delivering Meals on Wheels, wine tasting, playing guitar, writing and
recording songs, wine tasting, reading military history, traveling, and wine tasting.
You can reach him through www.processimpact.com and www.karlwiegers.com.
Essentials of Software
Requirements
Many years ago, I (Karl) would sometimes dive into writing a new program based
on nothing more than an initial idea. I’d spend time coding, executing, fixing, and
making a mess in my source code editor as I fumbled around, trying to get results.
Eventually, I realized that the root of the problem was rushing to code without hav-
ing an end point in mind—coding’s fun! Those frustrating experiences taught me the
importance of thinking through some requirements—objectives, usage tasks, data
elements, and more—before doing anything else. After I adjusted my process to
understand my requirements first, I never again felt like a software project was out of
control.
All projects have requirements. Some teams begin with crisply defined business
objectives, other teams receive a rich description of the desired solution’s capabili-
ties and characteristics, and still others start with only a fuzzy new product con-
cept. Regardless of the starting point, all participants eventually must reach a shared
understanding of what the team is supposed to deliver.
Some project participants aren’t very interested in requirements. Certain man-
agers may claim they’re too busy to engage in requirements discussions. But then
their expectations surface after the product has progressed to the point where major
changes mean expensive rework. Some technical people might regard the time spent
exploring and documenting requirements as a distraction from the real work of craft-
ing code. However, a good set of requirements lets you answer some important—
and universal—questions.
This book describes the twenty most important practices that help software teams
create a set of requirements to serve as the foundation for the subsequent development
work. These practices broadly apply regardless of the type of product the team is cre-
ating or their development approach. Some software teams work not on discrete devel-
opment projects but on existing products that demand ongoing modifications and
new functionality. The people who are responsible for requirements work on product
teams like those will find the practices in this book equally applicable to their work.
The requirements terminology differs between traditional (plan-driven or predic-
tive) and agile (change-driven or adaptive) projects. Regardless of the terminology
used, developers still need the same information to build the right solution correctly
(Wiegers and Beatty, n.d.a). Some teams will perform certain practices iteratively,
delivering value in small chunks. Others may do much of the requirements work early
in the project because the problem is well understood. A startup that’s trying to assess
its product’s market fit will focus on exploring ideas and approaches rather than try-
ing to assemble a detailed specification. Whichever way you plan your development
cycles, performing these twenty practices well can make the difference between deliv-
ering a solution that satisfies your stakeholders and creating one that does not.
Requirements Defined
Now that we’ve used the word requirement several times, we should define what we
mean. A software team must deal with many types of requirements-related knowl-
edge, and people will be confused if they lack a common understanding of them.
Although it’s not fully inclusive, one useful definition of requirement comes from
Ian Sommerville and Pete Sawyer (1997):
Requirements are … a specification of what should be implemented. They are descrip-
tions of how the system should behave, or of a system property or attribute. They may
be a constraint on the development process of the system.
1. A project is an initiative that’s launched to create a solution for one or more business problems or to
exploit a business opportunity. A solution involves creating or modifying one or more products, which
could include software systems, manual operations, and business processes. This book uses the terms
product, system, and application interchangeably to refer to whatever your team is building.
This definition points out that requirements encompass multiple types of infor-
mation. However, one aspect lacking from that definition is the concept of a require-
ment as a statement of a stakeholder need, which is the real starting point for all
discussions about requirements.
Several classification schemas and models are in common use to describe vari-
ous kinds of requirements information (Robertson and Robertson 2013, Wiegers and
Beatty 2013, IIBA 2015). They generally agree but differ in some terminology details.
In this book, we’ll use the model shown in Figure 1.1.
This model shows various categories of requirements information (ovals) as well
as containers in which to store that information (rectangles). For simplicity, this
book will refer to those containers as documents. They could just as well be spread-
sheets, databases, requirements management tools, issue tracking tools, wikis, or a
wall covered with sticky notes—whatever works for your team. The container itself
is less important than the information it holds and how you choose to record, organ-
ize, and communicate that information.
Business
Requirements
Vision and
Scope
Document
Business
System User Rules
Requirements Requirements
User
Requirements
Document
System
Requirements External
Specification Interfaces
Constraints
Solution
Requirements
Software
Requirements
Specification
Figure 1.1 Connections between several types of requirements information and containers
that store them. Solid lines mean “are stored in.” Dotted lines mean “are the origin of ” or
“influence.”
Models like that in Figure 1.1 illustrate that there are many types of require-
ments information. This book uses the definitions in Table 1.1, which are broadly
accepted in the requirements engineering and business analysis domains. Note that
solution requirements encompass functional, nonfunctional, and data require-
ments (IIBA 2015). You’ll see examples of these various items in later chapters.
This book uses the collective term requirements to refer to all of these types of
information, whether your local terminology focuses on features, use cases, user
stories, or anything else.
The fact that the diagonal arrows in Figure 1.1 that lead from Business Require-
ments down to the Software Requirements Specification are all aligned is no accident.
Developers do not directly implement business requirements or user requirements.
They implement functional requirements, including those derived from other cat-
egories of requirements information. The goal is to implement the right set of func-
tionality that lets users perform their tasks and satisfies their quality expectations,
thereby (hopefully) achieving the project’s business requirements, within all imposed
constraints. That “right set” of functional requirements comes from a foundation of
well-understood business and user requirements.
Not every requirement will fit tidily into one or another of the categories in
Table 1.1. Debating exactly what to call a specific statement is not important. What’s
important is that the team recognizes the need, analyzes it, records it in an appropri-
ate form and location, and builds whatever is necessary to satisfy it.
These four sets of activities are not simply performed in a linear, one-pass
sequence. As Figure 1.2 illustrates, they are interwoven and repeated until a particu-
lar set of requirements is understood well enough that the development team can
build and verify that part of the solution with confidence. Requirements develop-
ment is an incremental and iterative process by necessity, frustrating though that can
be for the participants. Exploring requirements is an investment that reduces uncer-
tainty and improves efficiency. The process might feel slow, but requirements think-
ing saves time in the end.
close gaps
re-evaluate
revise
Figure 1.2 Requirements elicitation, analysis, specification, and validation are performed
incrementally, iteratively, and often concurrently.
We encourage you to refer to books like those for more information on the top-
ics we discuss here, as well as to learn about other practices you might find helpful.
A professional in the requirements field must accumulate a rich tool kit of practices
and techniques, along with the experience to know which tool is the best one to use
in each situation.
Some books or development frameworks recommend that you discard certain
established practices and replace them with others. That’s poor advice. You should
add new practices to your tool kit, discarding older ones only when you can replace
them with something that’s demonstrably better in all situations. If something works
for you, why throw it away?
Because the requirements domain is both critical and complex, it’s unrealistic to
expect any random team member to perform the BA role without some education
about how to do it well. A capable BA brings a particular set of knowledge, expe-
rience, personality characteristics, and skills to the process, including those listed
in Table 1.2 (Wiegers and Beatty 2013). If you’re working in this role, assess your
capabilities in each category and then work to improve those that aren’t as strong as
others.
Observation Curiosity
In recent years, several organizations have recognized the great value that busi-
ness analysts and requirements engineers can contribute. These organizations have
developed bodies of knowledge and professional certifications that people working
in these fields can pursue. Such professional organizations include
The bodies of knowledge these organizations have accumulated are rich sources of
information about the many requirements processes, techniques, and tools that con-
tribute to success.
Getting Started
This book contains a lot of information and recommends many practices and tech-
niques. Some of these you no doubt already perform; others might be new to you. We
have two pieces of advice about getting started with the practices we suggest.
1. Don’t feel bad if you don’t already perform all these activities on your projects.
2. Don’t try to do everything at once.
As you read, identify those practices that you think would add the most value to
your project. Look for opportunities to try them and situations in which they might
yield better results. Recognize the reality that the learning curve will slow you down
a bit as you try to figure out how to make new methods work for you and your col-
leagues. Follow the references we’ve provided to learn more about those practices
that look interesting to you. Over time, new ways of working will become part of
your BA tool kit—and you will get better results.
Whether you call it business analysis or requirements engineering, it’s a challeng-
ing, yet vital, function. The core practices described in this book give you solid tools
to tackle this critical activity with confidence.
In the classical pure (and hypothetical) waterfall software development model, the
team accumulates a complete set of requirements for the product, designs a solution,
builds the entire solution, tests it all, and delivers it. We all know that approach
doesn’t work well in most cases.
Projects will vary in how much requirements work can, and should, be done up
front. Sometimes it’s possible to specify a good portion of the requirements for an
information system before getting too far into implementation. Complex products
with multiple hardware and software components demand careful requirements
engineering because the cost of making late changes is high. For applications that
change rapidly or lend themselves to incrementally releasing ever more capable soft-
ware versions, developing requirements just-in-time in small chunks is an effective
approach. Innovative apps may involve a lot of concept exploration, prototyping,
feasibility studies, and market assessment.
No single approach to the development life cycle or requirements work opti-
mally fits every situation. However, there are several interconnected activities related
to requirements that every team should perform at the beginning. This chapter
describes five essential practices that collectively provide a solid foundation for both
technical and business success:
13
Imagine that you worked for more than a year on a project that had executive sup-
port and high visibility. In your business analyst role, you performed the require-
ments elicitation, analysis, and specification. The development team built what the
stakeholders asked for and deployed the product on schedule. But just three months
later, the product is considered a failure and decommissioned. Why? Because it
didn’t solve the right problem.
Far too often, teams build and release requirements, features, and even entire
products that go unused because those teams didn’t fully understand the business
situation and the problems they were trying to solve. Understanding the problems or
opportunities that your solution will address aligns all participants on the core issues
and provides confidence that the solution will indeed achieve the desired outcomes.
Business Problems
A business problem is any issue that prevents the business from achieving its goals or
exploiting an opportunity (Beatty and Chen 2012). A business problem can be small,
such as a user complaint that some task takes too long, which can perhaps be solved
by streamlining some functionality. Or it can be as large as organization-level busi-
ness challenges—spending too much money, not making enough money, or losing
money—that demand major projects or entirely new products.
Organizations launch initiatives to solve one or more business problems. Each
activity gets funded because management expects its business value to outweigh its
costs. However, those problems or opportunities often are neither explicitly stated
nor documented. Rather than presenting a clear problem statement, the executive
sponsor or lead customer might simply tell the team what to build. This can cause the
scenario described above: project success but product failure. If you don’t understand
the problem adequately, or if you begin with a specific solution in mind, there’s a
good chance that the team will solve only part of the problem—or perhaps none of it.
It’s a good idea to avoid presuming that either a presented problem or a presented
solution is necessarily correct. That initial presentation might come from a business
case, project charter, senior manager, or product visionary. But can you trust it as set-
ting the right direction for all the work that will follow?
When you’re presented with a stated problem, perform a root cause analysis
until you’re confident that the real issue and its contributing factors are well under-
stood (Tableau 2022). Then you can derive possible solutions that you know will
address those very issues. If you’re presented with a solution, explore this question:
“If <solution> is the answer, what was the question?” In other words, ask “Why do
you think that’s the right solution?” You might discover that the underlying issue
demands a different approach: possibly simpler, possibly more complex, possibly
more specific, possibly more general. You won’t know until you perform the analysis.
Stakeholder: “Because our customers complain that they must keep signing in between
webpage clicks. It’s annoying. This is because they’re accessing different backend
systems that all have separate user accounts.”
Stakeholder: “According to our market research, 25 percent of our customers have left
us for the competition because of their frustrations with usability on our site.”
Analyst: “If that’s the case, why not just implement single sign-on to improve usability?”
Stakeholder: “That would help, but we’d still have to maintain and support all four systems.”
Analyst: “If we combined them, wouldn’t you still need the same number of support
people for the new system?”
Stakeholder: “We don’t believe so. The four current systems use different programming
languages. We need at least one engineer fluent in each language to support each sys-
tem, although there’s not enough work to keep them busy. By combining the systems
into one using a single language, we could free up the additional engineers to work on
other products.”
Analyst: “Ah, so it looks like you’re trying to solve multiple problems. You want higher
customer retention, and you also want to reduce support costs and free up staff by
using fewer technologies.”
By asking “why” several times in this conversation, the analyst now understands
that the stakeholder expects their proposed solution to address two significant con-
cerns. The request to combine several systems into one might indeed be the best
long-term strategy. However, an interim solution using single sign-on could appease
the disgruntled customers quickly, while the consolidation initiative works on the
larger concern of support and maintenance.
A root cause analysis diagram, also called a fishbone or Ishikawa diagram, is a
way to show the analysis results. Suppose the BA drills down into the first problem
the stakeholder brought up: losing frustrated customers. The BA could apply the
5 Whys technique to determine exactly why the customers are frustrated and then
draw a diagram like the one in Figure 2.1. The problem goes at the head of the “fish.”
Place the highest-level causes in the boxes on diagonal lines coming off the fish’s
backbone. Add contributing causes on the short horizontal lines from each diagonal.
Continue the exploration until you reach the ultimate, actionable root causes. Then
you can devise one or more solutions to address them.
Losing
Frustrated
Customers
disjointed user experience
across UIs using different
backend systems
Difficulties
navigating the
site
Figure 2.1 A root cause analysis (fishbone or Ishikawa) diagram example shows the factors
that contribute to the stated problem.
Once you’ve identified the primary and contributing issues, consider all their
implications before committing to a solution. The requested or most apparent solu-
tion could be the wrong strategy. On one of Candase’s projects, the problem was that
the version of the commercial off-the-shelf (COTS) package the company used was
going end-of-life soon and the vendor would no longer support it. After that, any
production issue could have cost the company its entire business because it wouldn’t
have any vendor assistance. Nor could it currently make its own enhancements to
the vendor product. The obvious solution was to upgrade to the latest version of
the vendor’s product. However, the company would have had to pay the vendor high
service fees to resolve problems and add enhancements. Consequently, the company
considered both acquiring a new COTS package from a different vendor and build-
ing an in-house replacement as better solutions to both the initial end-of-life concern
and the additional issues.
Problem analysis can reveal other, unobvious challenges. You might confront con-
flicting problems from different stakeholders or be trying to solve multiple, disparate
problems with a single fix. As you explore the issues, look for situations where you
might need several solutions, rather than seeking a single silver bullet.
A concise problem statement serves as the reference point for the rest of the
work. It feeds directly into crafting the specific business objectives that manage-
ment or your customers expect the solution to achieve (see Practice #2, “Define
business objectives”). The problem statement also helps the team make decisions
throughout the project. When prioritizing requirements, favor those items that are
the most critical or timely contributors to solving the highest-value problem (see
Practice #13, “Prioritize the requirements”). In the combine-several-systems-into-
one example above, implementing single sign-on to relieve customer frustration
would be a quicker fix than combining multiple systems and would address the
immediate concern of losing customers.
Whenever someone requests a new system capability, ask how it relates to the
business problems (see Practice #20, “Manage changes to requirements effec-
tively”). If you can’t tie each new requirement to any of the defined business prob-
lems, either there are more problems yet to explore or you don’t need the new
requirement.
Stakeholders often will propose a specific deliverable as a requirement: “Build
me product X or feature Y.” The stakeholder’s solution may indeed be the correct
one—but not necessarily. Take the time to thoroughly understand the real busi-
ness problem to ensure that the team focuses on achieving the proper outcomes.
If your analysis reveals that the real problem doesn’t quite match what you found
in a business case or other originating document, revise that document to match
the newly understood reality. That insight could profoundly change the project’s
direction.
Related Practices
Next Steps
1. If you haven’t already done so, talk with project leadership and key stakehold-
ers about why they’re undertaking your initiative to make sure you understand
the problem it is intended to solve.
2. Create a root cause analysis diagram for your core business problem, using a
technique like 5 Whys to discover both major and contributing causes.
3. Write a problem statement using the template described in this section.
4. Based on the problem or problems identified, assess whether your current solu-
tion concept will address them adequately. If not, either change the solution or
point out the risk that the current solution may not be sufficient.
Business Requirements
An organization undertakes an initiative to create or exploit a business opportunity,
satisfy a business need, or solve a business problem. Clearly stated business require-
ments build on the problem statement to specify the desired business outcomes,
identify indicators that will tell us when the problem is solved, and much more.
Business requirements appear at the top of the requirements model in Figure 1.1.
They provide the guiding directives for all the work that follows. If a project or
product fails to satisfy its business requirements, someone wasted a lot of time,
money, and effort.
Business requirements could originate from an executive who understands the
problem, a primary customer who recognizes a need, or a product visionary who
sees a market opportunity. Such people might already have established a business
case for the initiative, but they still might find it valuable to work with a BA to craft a
richer set of business requirements.
If you find yourself facilitating a discussion to explore a project’s business drivers
and justification, remember that the goal at that stage is not to accumulate an exten-
sive list of desired functionality. Instead, business requirements focus on why launch-
ing this project or building that product is a good idea. The following questions
can stimulate a discussion that yields the relevant information (Business Analysis
Excellence, n.d., Wiegers 2006). The website for this book offers a download with
these questions, and others, in the form of checklists.
• What business problem are you trying to solve or what business opportunity
do you perceive?
• What’s the motivation for solving this problem or pursuing this opportunity,
or what points of pain do you hope to relieve?
• What are your business objectives? Why aren’t you already achieving those
desired outcomes?
• How would the proposed product provide value to the organization, the com-
pany, your customers, or humanity as a whole?
• What would a highly successful solution do for you? Can you quantify its
potential payoff?
• How could you judge the solution’s success?
• What could the business impact be if you don’t pursue this solution?
• Which individuals, groups, products, systems, or projects could influence or be
affected by this project?
• What are the timing goals or constraints for delivering a partial solution? A
complete solution?
• If the organization unsuccessfully tried to solve this problem previously, why
did the attempt fail and what should the team do differently this time?
• What assumptions are you making regarding the proposed initiative? What
risks do you see associated with it?
1. Business Requirements
1.1 Background
1.2 Business Problem or Opportunity
1.3 Business Objectives
1.4 Success Metrics
1.5 Vision Statement
1.6 Business Risks
1.7 Business Assumptions and Dependencies
2. Scope and Limitations
2.1 Major Features
2.2 Scope of Initial Release
2.3 Scope of Subsequent Releases
2.4 Limitations and Exclusions
3. Business Context
3.1 Stakeholder Profiles
3.2 Project Priorities
3.3 Deployment Considerations
Figure 2.2 Suggested template for a vision and scope document (adapted from Software
Requirements, 3rd Edition, by Karl Wiegers and Joy Beatty).
1. Project Description
2. Business Objectives and Success Criteria
3. Stakeholders
4. Vision
5. Project Scope
6. Assumptions and Dependencies
7. Constraints
8. Milestones
9. Business Risks
10. Resources
11. Approvals
Figure 2.3 Suggested template for a project charter (from Practical Project Initiation by
Karl E. Wiegers).
Business Objectives
Business objectives let you determine when a business problem is solved, a need is
fulfilled, or an opportunity is exploited. Business objectives can be financial or non-
financial, internal (operations) or outward facing (products), strategic or tactical.
While it’s easier to state vague goals, you should write your objectives to be specific,
realistic, and measurable. Otherwise, you can’t tell if you’ve achieved them.
Setting targets in the form of business objectives lets the decision makers define
the scope of work needed to achieve them. The objectives help ensure that the solu-
tion includes all the necessary functionality while avoiding extraneous features that
don’t contribute to the desired business outcomes.
Defining the business objectives up front drives the creation of the solution
concept. That concept then leads to activities to define the solution’s specific fea-
tures and attributes, a process called requirements elicitation. Suppose you have
a great idea for an innovative new product. You’re eager to dive into construc-
tion, maybe starting with a proof-of-concept prototype. That exploration is valu-
able, but before you begin to build the product for real, take the time to think
through why you want to build it and what you hope to accomplish: your business
objectives.
The simplest approach is to list the objectives you expect any solution to fulfill:
Grow the digital business from ~$1B to $10B in revenue with a 50 to 75 percent margin
by 2030.
Reduce the average time spent on document storage and retrieval from 10 hours to
2 hours per employee per week.
It’s better to quantify objectives by stating absolute goals, rather than percentage
changes relative to a current starting point (Beatty and Chen 2012). For example,
instead of this:
Increase market share in the Australasia region by 20 percent within 6 months.
Relative changes are hard to assess if the reference baseline value, dates, or measure-
ment method is not precisely stated and recorded.
A business objectives model permits a more thorough analysis for complex prob-
lems. This diagram is one of many in RML, the requirements modeling language
developed by Joy Beatty and Anthony Chen (2012). The business objectives model
visually links business problems to business objectives, their associated success
metrics, and the resultant solution concept (ArgonDigital 2022). A concise descrip-
tion of how to create a business objectives model is available from the website associ-
ated with this book. Figure 2.4 illustrates a partial business objectives model for a
hypothetical restaurant online ordering system designed to supplement taking phone
orders. We’ll see more about this system as we go along.
Modeling is particularly valuable when you have interwoven business problems
and objectives: One problem leads to an objective, which leads to a more detailed
problem, which leads to another objective, and so on, as in Figure 2.4. A more sophis-
ticated RML model, called the objective chain, ties proposed solution features quan-
titatively to business objectives (Beatty and Chen 2012). The objective chain helps
you analyze which features will add the most value to the business or the solution’s
users and therefore are likely the most important to implement first.
Figure 2.4 A business objectives model links business problems, business objectives, success
metrics, and solution concepts.
Success Metrics
Success metrics let you judge progress and your solution’s contributions toward your
objectives. In some cases, the objective lends itself to direct measurement. The busi-
ness objective stated earlier—“Achieve a market share of at least 45 percent in the
Australasia region by October 1, 2024”—is one of those, assuming you can track
your market share as a function of time.
However, many business objectives are both lagging indicators (you can’t be sure
until the end) and potentially influenced by factors beyond your solution. In these
situations, you must use metrics that are proxies or surrogates that indicate whether
your solution is on track toward achieving the overall business objectives.
If your objective in the year 2023 is to grow revenue to $10B by 2030, you won’t
know for sure if you’ve achieved that for seven more years. Even if you do achieve
the goal, at least some of the growth could have been due to new marketing or sales
activities rather than your product. Interim success metrics, such as the number of
new customers or average order size, are indicators that could give you confidence
that your solution is doing what you hoped it would. Make sure that trends in the
surrogate metrics you select—the tracking indicators—are proportional to what
you’re really trying to achieve.
Product Vision
A vision statement—another component of the business requirements—establishes
a high-level, strategic target to align all project participants toward the same out-
come. The vision statement succinctly summarizes the ultimate intent for the solu-
tion (Wiegers and Beatty 2013). In just a few sentences, the vision statement
articulates the essence of the problem, the nature of the proposed solution, its high-
level features, and its core benefits for certain stakeholders.
People sometimes lump together vision and scope, but they’re different things.
We think in terms of a product vision—which might never be fully attained—and
a project scope that defines what portion of the ultimate vision any specific pro-
ject or development cycle intends to realize. Along with the business objectives, the
vision statement describes how some aspect of the world will be better with the new
product: who’s the target market, what’s the product about, why is it better than the
current situation, and so on. This simple keyword template is helpful for writing a
vision statement (Moore 2014):
The template helps people think through the vision statement elements and write
them in a consistent and concise pattern. As an illustration, here’s the vision statement
we wrote for this book, with the template’s keywords highlighted in bold italics.
(As the reader—our customer—you are the ultimate judge of whether we deliv-
ered on this vision!)
Creating a vision statement is a collaborative activity, as everyone must be aligned
on the product vision. However, rather than asking several stakeholders to concoct
a joint vision statement, it’s illuminating to have them write their vision statements
independently using this template and then compare their results. This exercise can
reveal terminology differences, conflicting objectives, emphasis on different user
communities, and solution boundary issues that the participants must resolve.
As the team members make countless decisions about their work over time, they
should keep the problem statement, business objectives, success metrics, and vision
statement in mind. The implemented solution should deliver the value that lets the
organization achieve its business objectives. Clearly communicated business require-
ments set the stage for any information technology project to pay off.
Related Practices
Next Steps
1. If you don’t already have one, invite the key stakeholders who are driving the
project to agree upon a vision statement.
2. If your organization doesn’t have one yet, propose a template for a business
requirements document (or “container”) that’s tailored to suit the needs and
nature of your projects. If you do have a template already, compare it to the
content shown in Figures 2.2 and 2.3 and make any appropriate adjustments.
3. Work with the appropriate individuals to craft several quantitative, verifi-
able business objectives for your project. Confirm that the work underway or
planned aligns with achieving those objectives.
4. Define success metrics for each business objective that will reveal whether the
solution is moving in the direction of achieving those objectives.
5. If you have multiple interrelated business problems and objectives, draw a
business objectives model to show their connections.
When you start a new initiative, you have funding to solve one or more business
problems and a high-level concept of a possible solution. However, you might not
know exactly where to draw the line between what the solution should and should
not include. An important step in laying the foundation for a successful effort is to
establish that “what’s in, what’s out” boundary. You also need to know what changes
are needed in the forthcoming solution’s environment and where to make them.
Questions like these can help you figure all that out.
• Which business processes, functions, and events will be part of the solution?
Which ones will remain outside it?
• Who will use or derive benefits from the solution? Who is excluded?
• Which software systems will be part of the solution? What will the interfaces
between them look like?
• Where do each system’s responsibilities begin and end?
• What data sets, sources, and operations will be incorporated into the solution?
• How do we fit our solution into the rest of our universe?
• How do we know where to stop?
Answering such questions allows the BA to clearly visualize and articulate which
software systems, hardware components, and manual operations lie within the cho-
sen solution’s scope.
1. The simplest solution is a mainly manual process whereby the customer sub-
mits an order online, which is sent to a restaurant employee who then enters it
into the current order placement system.
2. A semiautomated solution could let customers order meals online and then
send those orders to the restaurant order placement system. However, custom-
ers would not be able to pay online or receive status updates following order
placement.
3. The ultimate, fully automated solution would let customers order all menu
items online, dynamically update the menu as items are purchased, per-
mit online payment and order placement to the restaurant, accept delivery
requests, and provide the customer with order updates. This would bring addi-
tional systems into the project’s scope beyond the core online ordering site:
payment processing, delivery services, and order tracking.
The solution boundary you select will be based on your business objectives, prod-
uct vision, constraints (such as security requirements for online payments), timeline,
and funding. Consider asking the key stakeholders to describe the smallest “thing”
to implement that would meet their objectives. Refining the initial simple solution
concept into a richer description will establish how much of the solution remains
manual and how much will be automated via new or existing systems.
Clear solution boundaries help the team evaluate new functionality requests to
determine to which system they should belong, if any. For the restaurant scenario, the
concise solution statement is: “A fully automated online ordering and payment pro-
cess with integration to third-party delivery and automated order tracking services.”
Customer
order,
payment info
menu items,
order confirmation,
payment confirmation
order
order confirmation,
order updates
Restaurant
Order
Placement
Figure 2.5 A context diagram shows the immediate environment of the restaurant’s new
online ordering site.
s
order confirmation, tem
order updates
order
n ui s
me ate
u pd
nu
me
Restaurant
Order
Placement
del
ive
order ry r
equ
est
order updates
Figure 2.6 An ecosystem map shows how the restaurant’s current and future systems are
interconnected.
To create an ecosystem map, first list the systems in your solution domain. If you
don’t have a full system list, start with your system of interest and its direct connec-
tions. From there, look at each connecting system and its additional connections,
showing each system in a box. Move outward until you’ve covered the entire solution
domain.
Next, examine the systems to determine which of them exchange data. Look for
both synchronous (API calls) and asynchronous (message-based) integrations, as
well as file-based and direct database connections. Link the interrelated systems with
arrows indicating each data flow’s direction, as in the context diagram.
Complete the ecosystem map with a high-level description of the data that’s
shared through each connection. Combining the ecosystem map with the context
diagram shows both who is using the target system and the overall multisystem
view. An ecosystem map has good reuse potential for multiple projects and products
within an organization.
take many months to complete. In iterative projects, the team will break the full
implementation into a series of releases or development increments, each of which
provides a useful portion of the overall solution. This strategy allows the business to
begin achieving its objectives before all the functionality is completed.
To quickly attract those customers who will place orders only online, the team’s
first release might include building just the online ordering site and integrating it
with the existing menu repository and order placement systems. The customer would
still have to pick up and pay for the order in person. Subsequent releases would incre-
mentally add functionality to the overall online ordering process. Table 2.1 shows
how the ultimate solution could be realized through several development increments
and product releases.
having no knowledge of current inventory levels. Suppose someone ordered the last
one of some item, making it out of stock even though the meal was not yet prepared.
If the menu repository weren’t updated immediately, another customer could then
order that same item but not receive it, thereby annoying them. (Karl has had this
experience; he was annoyed.) Using the business objectives, solution boundaries, and
ecosystem map, the BA can defend why each requirement belongs in the solution.
You can also use the solution’s boundaries to decide which product component
should own which pieces of functionality. Allocating requirements appropriately to
systems, subsystems, and people is important both for business information systems
and for complex products that include both hardware and software elements. Ana-
lyzing data inputs and outputs indicates which systems or functions produce certain
data objects and which consume them.
By refining the solution concept to a defined set of components and boundaries,
the BA can ensure that the solution scope—including new development, enhance-
ments, integrations, and manual operations—is well understood and communicated
to all stakeholders.
Related Practices
Next Steps
1. If you haven’t already done so, work with your stakeholders to make sure
everyone understands the boundaries around the solution the team is creating.
Refer to your business objectives and identify the minimal change needed to
meet those objectives.
2. Create a context diagram and an ecosystem map to get the full view of your
solution’s components and boundaries. Look for existing examples of these
artifacts that can be updated as appropriate.
3. Use the context diagram and ecosystem map to evaluate your currently
requested functionality. Confirm that it really belongs to your current project
based on the defined solution’s boundaries. If it does not, defer those requests
to a future project or redefine the solution’s boundaries.
4. Examine the ecosystem map to identify groups or systems that don’t connect
directly to your product but could require changes because of the data that
your solution exchanges with other related systems. Work with the owners of
those connected systems to make sure everyone understands and commits to
the necessary modifications.
Every project has people who care about it: its stakeholders. A stakeholder is an indi-
vidual or group that is actively involved in a project, is affected by it, or can influence
its direction. The interests of all the stakeholders intersect in the requirements activi-
ties (Wiegers 2022).
Consultant and author Tim Lister describes project success as “meeting the set
of all requirements and constraints held as expectations by key stakeholders.” Those
stakeholders provide the information a BA needs to understand the business problem
or opportunity. The right stakeholders can describe the current state and the changes
needed to migrate to an improved future state. Their input allows a BA to define the
capabilities and characteristics of an appropriate solution and to validate the pro-
posed solution.
It’s important to identify the project’s significant stakeholder groups early on
and determine how best to engage with them. Overlooking stakeholders can lead to
requirements gaps or unknown constraints that are disruptive when they’re finally
discovered. Certain stakeholders set the project’s direction and hold authority over
major decisions. Others don’t provide any input; they merely get what they get. Most
stakeholder groups lie somewhere between these extremes along a spectrum of influ-
ence and engagement. It’s important to identify those stakeholders who are most
heavily involved with making various decisions (see Practice #5, “Identify empow-
ered decision makers”).
Simply identifying and characterizing your stakeholder categories isn’t suffi-
cient. You also must select appropriate representatives of those groups to partici-
pate in requirements activities. Even then, stakeholder issues can cause requirements
problems. Missing roles, absent participants, and ineffective surrogates can lead to
requirements errors that you’ll need to fix later at greater expense.
The list of people following the opening keyword For is an initial set of stakeholders.
As you continue the hunt, cast a wide net to reduce the chance of overlooking a sig-
nificant group. To save time, you might begin with a stakeholder catalog accumulated
from previous projects. Scan through that catalog to see if any of those same groups
are relevant to your current project. Building a stakeholder catalog incrementally from
one project to the next provides a valuable reusable asset to use as a starting point the
next time. An organization chart can help you detect other potential stakeholders.
You can also refer to a comprehensive list of typical stakeholder categories to look
for possibilities, like the one in Table 2.2 (Wiegers and Beatty 2013). Some stakehold-
ers are found within the development team, others work elsewhere in the developing
organization, and still more lie somewhere outside the developing organization.
Some stakeholders may be primarily interested in the project itself, others in the
solution the project delivers. For instance, users don’t care much about how a product
is built if it lets them do their work efficiently and without much frustration. When
you’re searching for stakeholders, consider questions like these (Leffingwell 2011).
• Who has influence or control over the project’s budget and schedule?
• Who can articulate the project’s business objectives?
• Who will be using the product directly? Indirectly?
• Who is responsible for other systems or projects that yours will affect or will
affect yours?
• Who could have legal, compliance, regulatory, or process influence?
• Who manages the business relationships with customers, suppliers, and
contractors?
• Whose business processes would the system affect?
• Who is expected to supply any data needed by the solution?
• Who would know about any pertinent project, product, or process constraints?
As you accumulate a stakeholder list, ask other stakeholders to review it. They often
know of someone else who should be included.
Table 2.2 Some common potential software project stakeholders and where they’re likely to
be found
Location Category
Development team Application architect Infrastructure analyst
Installer Sales
Maintainer Training
Manufacturing
Outside the Auditor Government agency
developing
Beta tester Indirect user
organization
Business management Materials supplier
General public
• Author
• Reader
• Publication Editor
• Administrator
Each type of user has various tasks they wish to perform on the platform, cer-
tain usage privileges, and particular functional and quality expectations of the prod-
uct. If you were launching such a publishing platform, you’d want to characterize
the various user classes and then seek suitable representatives to understand each
group’s requirements and constraints. We’ll revisit Speak-Out.biz in some upcoming
practices.
Characterizing Stakeholders
Early in the project, perform an analysis to understand who your stakeholders are,
each group’s interests in the project, their influence over it, and their expectations
and concerns (Gottesdiener 2005, Lucidchart 2022b). Questions like the following
will provide a rich understanding of each stakeholder group (McManus 2005,
Wiegers 2022).
Table 2.3 illustrates a simple template with information to record for each
stakeholder profile, using one of the stakeholders from Speak-Out.biz as an exam-
ple. Your organization could accumulate these profiles from multiple projects
into a reusable, enterprise-level stakeholder catalog. Stakeholder profiles go into
section 3.1 of the vision and scope document template, which was shown in
Figure 2.2. If you already have a stakeholder catalog, you can just point to the
appropriate entries in that section of the vision and scope document rather than
duplicating the information.
With your stakeholder catalog in hand, identify individuals who can accurately
represent the interests of each stakeholder group and agree upon how they will
engage with the BA and other team members. Make sure those representatives will
have the bandwidth to contribute to the initiative in the necessary time frame. It can
be more challenging to find and interact with stakeholders outside the developing
organization than with internal people. However, their participation may be critical
because of their authority, responsibilities, control over resources, or political, legal,
or regulatory influence.
Consider whether each group is a collaborative partner in development, can make
final decisions about certain aspects of the project, should be consulted for their
expertise on specific issues, or just needs to be informed of progress and decisions
that affect them (Leffingwell 2011). Some teams create a RACI matrix to identify
stakeholder roles and their responsibilities with respect to the project. The RACI
matrix shows which stakeholders are Responsible, Accountable, Consulted, or
Informed (Morris 2022).
Make sure you know who is speaking for each stakeholder community. For the vital
role of user representative, the product champion approach works well in many situ-
ations (Wiegers and Beatty 2013). A product champion is a designated and empow-
ered key representative of a specific user class. Product champions work closely with
BAs through interviews, workshops, prototype evaluations, and other collaborative
activities to elicit and validate requirements. A product champion serves as the literal
voice of the customer for a specific category of users. If you can’t engage with actual
user representatives directly, someone must still speak for the needs of each user class
as a proxy.
The time spent on stakeholder analysis early on might seem like a distraction
from real software work. Not so—it is the real work of ensuring that you engage the
right participants in a collaborative effort that builds a solid base for success.
Related Practices
Next Steps
1. Examine Table 2.2 for any stakeholders for your initiative that might have been
overlooked.
2. Characterize each of your significant stakeholder groups so that you can iden-
tify appropriate representatives and agree on how to engage with them.
3. Set up a template format for a stakeholder catalog and begin populating it with
your stakeholder information for this project. If your organization works on
projects that have recurrent stakeholders, establish a mechanism to maintain
and reuse this catalog on future initiatives.
4. Identify your significant user classes. Note any user classes that are favored
over others. Make sure it’s clear who presents the requirements, constraints,
dependencies, and risks for each user class. Confirm that those individuals
have the knowledge and authority to perform their representation role well.
Every project faces a continual stream of decisions large and small. Individual
team members can make many decisions locally and informally; other issues have a
far broader impact. Making a considered decision about a requirements issue often
demands obtaining input from multiple sources, having appropriate stakeholders
assess the options, and communicating the outcome—and the reasons for it—to
• Resolving conflicting requirements within a user class and across user classes
• Prioritizing requirements of various types
• Resolving conflicting priorities among different stakeholders
• Adjusting priorities as new needs come along and project realities change
• Making trade-off choices between conflicting quality attributes
• Defining the number of development increments or releases and the scope of
each one
• Determining which new or changed requirements to incorporate into develop-
ment plans (product backlog management)
• Deciding when and how to modify the scope of a planned development incre-
ment, a product release, or the entire project
requirement change could have a big ripple effect if it forces revisions to multiple
interconnected elements. Representatives from all the affected components need to
know about the decision outcome, even if they don’t all participate in making it.
Identifying the decision makers for requirements issues is a part of stakeholder
analysis. Input from those stakeholders whose interests align most closely with the
project’s business objectives, such as favored user classes, should carry the most
weight. Stakeholders who impose constraints—including scope, resource, regulatory,
legal, business policy, or technical restrictions—may override functionality requests
from other groups that conflict with the constraints. Agreeing on which stakeholders
contribute most heavily to which important decisions helps the group reach conclu-
sions more quickly and perhaps with less rancor.
Each decision-making group should identify a decision leader to coordinate their
activities. The idea is not to add bureaucratic overhead, but rather to provide clear
lines of responsibility, authority, and accountability. A group of people might think
they have the authority to make decisions about a certain range of issues. But if
someone else can override their choices, then, in effect, that group is merely an advi-
sory body; the other “someone” is the ultimate decision maker. The decision leader
makes all those roles and responsibilities clear to avoid delays, uncertainty, revisited
decisions, and hard feelings.
On typical agile projects, the product owner (PO) is the decision leader for
requirements-related issues. This is consistent with the PO’s responsibilities for cre-
ating, prioritizing, and managing items in the product backlog to guide the team
toward achieving the desired outcome (Agile Alliance 2022a). The PO’s central role
is sometimes described as being the “single wringable neck” in case things go awry
(Bernstein 2016). We hope that’s meant to be tongue in cheek.
One large project, for which Karl was the lead BA, assembled a user requirements
team with representatives from four user classes: product champions, as described in
Practice #4, “Identify and characterize stakeholders.” The largest and most diverse
user class required additional representatives from several subgroups to cover the
breadth of needs. When requests from the subgroups didn’t agree, the product cham-
pion for that overall user class was fully empowered to make the choice. And he did!
The other participants respected the product champion’s experience, wisdom, and
conclusions. Having a few carefully selected and empowered user representatives
who could make requirements decisions on behalf of their respective communities
made life much easier for the three BAs.
Unanimous Vote. The participants vote on the options, and all must vote the
same way to resolve the issue. It can be time-consuming, and sometimes impos-
sible, to lead a group of people with diverse interests to all agree on a given out-
come. If achieved, unanimity provides the strongest group commitment to the
decision. An outside facilitator can help a group achieve either unanimous agree-
ment or consensus when buy-in across the board is essential.
Consensus. All participants agree that they can live with the group’s decision,
although they may vary in their commitment to it and their comfort level with it.
Consensus is not as strong an agreement as unanimous voting. Reaching a con-
sensus often requires considerable discussion and compromise. It takes longer
than a simple vote, but the consensus-building process achieves more solid buy-in
to significant decisions.
Plurality Vote. The decision makers vote on the options, and the one that receives
the most votes is selected as the decision. Plurality (sometimes called major-
ity) voting is most appropriate for low-impact decisions that have several clear
options.
Decision Leader Decides. A single individual can make decisions more quickly
than a group can. Depending on the decision leader’s knowledge and expertise
regarding the issue, the leader can either solicit input from others or reach a con-
clusion on their own. Soliciting others’ input is more collaborative and promotes
stronger commitment to the outcome by those whom the decision affects. If peo-
ple feel that their voice was not heard before the decision leader set the direction,
they’ll be less satisfied with the result.
Delegation. The leader appoints someone else who has the appropriate knowl-
edge to decide. The leader should not use delegation to avoid responsibility for
whatever course of action the delegate chooses. Delegating the decision to some-
one else demonstrates trust in the delegate’s experience and judgment. However,
if the decision leader overrides the delegate’s decision, that undermines the trust
and effectively reverts to the Decision Leader Decides rule.
Related Practices
Next Steps
Requirements Elicitation
The first step in dealing with requirements is to get some. People often speak of
“gathering requirements,” as though it were a simple collection process: The require-
ments are sitting around in people’s heads, and the business analyst merely asks for
them and writes them down. It’s never that simple. In reality, stakeholders begin with
random fragments of information: dissatisfaction with their current systems, bits of
functionality they want, tasks to perform, important pieces of data, and ideas of
what screen displays might look like.
Requirements elicitation is a better term for this foundational activity. To elicit
something means to draw it forth or bring it out, particularly something that’s hid-
den or latent. The Merriam-Webster Thesaurus (2022) says, “elicit usually implies
some effort or skill in drawing forth a response.” That skill is a significant asset that
a business analyst brings to software development. Requirements elicitation does
involve collection, but it also involves exploration, discovery, and invention. The BA
guides this imaginative journey, working with diverse stakeholders to understand the
problem and then define a satisfactory solution. The BA looks for potential require-
ments from many sources, including these:
45
This chapter describes four core practices that are particularly valuable for elicit-
ing both functional and nonfunctional requirements:
If you were holding a requirements elicitation discussion with some users about a
new information system, which of these questions do you think would yield the
greatest insights?
We favor the final question. While the first four questions can provide a good
starting point to ask why a stakeholder wants those things, they all inquire about the
solution, not the user’s problems, needs, or goals. Focusing on features can lead the
team to implement incomplete functionality that doesn’t let users do all the things
they must do. The feature-centered mindset also can lead to building functionality
that seems like a good idea but goes unused because it doesn’t directly relate to user
tasks. Regardless of your development approach, if you don’t understand what the
users need to do with the features they request, you might release a product that you
must rework later.
Karl once saw the limitations of elicitation questions that focus on the solution. A
company held a daylong workshop with about sixty participants to brainstorm ideas
for a large new commercial product. They stapled together the output from their six
subgroups and called it a requirements specification. But it wasn’t. It was a mishmash
of functionality fragments, feature descriptions, user tasks, data objects, and perfor-
mance expectations, along with extraneous information, all stirred together with no
structure or organization. Simply asking people to imagine what they wanted to see
in the new product didn’t produce actionable requirements knowledge. Much more
requirements development work was needed following the workshop.
Focusing on Usage
The question “What do you need to do with the solution?” is a more effective open-
ing for discussing requirements. By understanding what the users need to do, the BA
can deduce just what functionality is needed. A usage-centric approach makes it
more likely that the solution will satisfy user needs, incorporating the necessary
capabilities without wasting development effort on unneeded functions (Wiegers
2022).
Stories, scenarios, and use cases are variations on a common theme: asking users
to describe an interaction they might have with a software system or a business to
achieve some goal (Alexander and Maiden 2004). These descriptions of user goals
and the interactions that lead to achieving them constitute the user requirements.
User requirements appear in the middle section of the requirements information
model in Figure 1.1, as reproduced in Figure 3.1. The user requirements should align
with the business objectives from the vision and scope document and contribute to
solving an identified business problem.
Vision and
Scope
Document
User
Requirements
User
Requirements
Document
Figure 3.1 User requirements lie between business requirements and solution requirements.
discuss exceptions, possible conditions that could prevent a scenario from conclud-
ing successfully.
An effective way to organize these related scenarios is in the form of use cases
(Cockburn 2001, Kulak and Guiney 2004). A use case structures all this information
according to a template, which is described in the next section. The use case tech-
nique helps the team acquire and organize the mass of requirements information
that any sizable system involves. If an elicitation participant says “I want to <do
something>” or “I need to be able to <do something>,” the <do something> likely
is a use case.
The various user classes will have different use cases, different things they need
to accomplish with the solution. That’s why it’s a good idea to conduct group
elicitation activities with members of each user class separately. As an example,
Table 3.2 lists a few use cases for each of the user classes named earlier for the hypo-
thetical Speak-Out.biz publication platform in Practice #4, “Identify and character-
ize stakeholders.”
Table 3.2 Some use cases for several Speak-Out.biz user classes
User class Use cases
Author Draft an Article
Edit an Article
Publish an Article
Comment on an Article
Subscribe to an Author
Publication Editor Create a New Publication
Reply to an Author
Administrator Respond to a Reader Complaint
Each use case name is a concise statement that clearly indicates the user’s goal,
the outcome of value that the user wishes to achieve. Notice that all the use cases
in Table 3.2 begin with a definitive action verb. This is a standard use case naming
convention.
Agile projects often rely on user stories as a technique for discussing system
capabilities. According to agile expert Mike Cohn (2004), “A user story describes
functionality that will be valuable to either a user or purchaser of the system or soft-
ware.” A user story is intentionally brief, a starting point for further exploration of
its details so that developers can learn enough to implement the story. User stories
conform to a simple pattern, such as this one:
As a <type of user>, I want to <perform some task> so that I can <achieve some goal>.
Stories that focus on what users need to do with the solution, rather than on bits
of system functionality, can serve the goal of usage-centric requirements explora-
tion. Here’s a user story we might hear from a Speak-Out.biz author:
As an author, I want to view the page-view statistics for my published articles so that
I can see which topics my readers enjoy the most.
This story addresses a piece of the functionality for the final use case shown for the
Author user class in Table 3.2, View Article Statistics. The user story format offers
the advantages of naming the user class and describing the intent. That information
would appear in a use case specification, but it’s helpful to see it right up front like this.
There are ongoing debates about whether use cases are appropriate—or even
allowed—for agile development. This isn’t the place to rehash those debates, but the
short answer is: They are (Leffingwell 2011). Both use cases and user stories have
their advantages and limitations (Bergman 2010). Both can be used to explore what
users need to accomplish with the solution.
One of the BA’s challenges is to examine a particular scenario that describes a
single usage session and consider how to generalize it to encompass a group of logi-
cally related scenarios. That is, the BA moves up the abstraction scale from a specific
scenario to a more general use case. Similarly, the BA on an agile project might see
that a set of related user stories can be abstracted into a larger epic that needs to be
implemented over several iterations.
At other times, elicitation participants might begin with a complex usage descrip-
tion that the BA realizes should be split into multiple use cases. Those individual use
cases often can be implemented, and executed, independently, although several could
perhaps be chained together during execution to carry out a larger task. On an agile
project, a user story that’s too large to implement in a single iteration is split into
several smaller stories. Moving between levels of abstraction like this is a natural
part of exploring user requirements.
Use cases facilitate top-down thinking, describing multiple scenarios and flesh-
ing out the details of the user–system interactions. Use cases provide a context for
organizing related pieces of information. Epics perform an analogous top-down
function on agile projects. User stories describe smaller user goals or pieces of sys-
tem functionality without much context or detail. Stories generally are smaller than
use cases, describing slices of functionality that can be implemented in a single devel-
opment iteration. Related user stories can be grouped together and abstracted into
an appropriate use case or an epic. Any approach can be effective—use cases or user
stories, top-down or bottom-up—provided the focus stays on usage.
Related Practices
Next Steps
1. If your team has not explored the tasks that users want to perform with the
solution you’re building, have conversations with your user representatives to
identify their use cases. Explore alternative scenarios along with the normal
flow. Make sure to note exceptions and how they should be handled.
2. Try completing the use case template in Figure 3.2 for several of your use cases.
How could you simplify the template and still meet the needs of your develop-
ers and testers?
3. If your project is employing user stories, try documenting a group of related
scenarios both in the use case format and as a set of user stories. Which
approach seems most effective and efficient for your team?
As we saw in the previous practice, use cases are an effective way to explore the tasks
that users need to accomplish with the help of a software system and identify the
functionality needed. Use cases are particularly well suited for interactive systems.
Use cases don’t fully solve the requirements problem on all types of products,
though.
A complementary elicitation technique is to identify the various events that a busi-
ness or a software system could experience, which trigger some behavior in response.
Event analysis is especially effective with real-time or middleware systems in which
user–system interactions don’t constitute the main product operations. Such appli-
cations include software that does most of its work in the background, like an anti-
malware product.
Products that contain both hardware and software components, whether embed-
ded or host based, also are well suited for event analysis. A complex city intersection
is a good example. It involves sensors embedded in the street, cameras, crosswalk
buttons, timers, and multiple traffic signals. Inputs from these components—
events—stimulate the behaviors that drivers and pedestrians observe at the intersec-
tion. There aren’t many use cases for either drivers (go straight, turn right, turn left)
or pedestrians (cross the street), yet an intersection’s system components have a lot
going on.
Types of Events
An event is a change that takes place in the application’s environment that triggers
some type of response. As Figure 3.3 and Table 3.3 show, we need to consider three
classes of events.
busine
ss eve
nt
Our System
respon
se
temporal
event
t e
ven ons
al e resp
sign
external
system
or device
Figure 3.3 Businesses and systems must respond to several types of events.
A business event originates from the world outside the business domain and
crosses the boundary into the business domain (Alexander and Maiden 2004). Busi-
ness domain simply means whatever area your solution applies to, whether it’s an
actual corporate business, a phone app, a game, a physical device, or anything else.
The business event generates some reaction from an entity—human, computer
based, or both—inside the domain.
As an example, Karl must renew his automobile registration every two years,
which requires his car to pass an emissions test. The business event consists of Karl
bringing his car to the testing station and telling the technician that he needs the
emissions test performed. The technician responds by taking Karl’s renewal applica-
tion and then beginning the test.
When responding to a business event, someone inside the domain may initiate
one or more use cases in a software system. During the emissions test, the techni-
cian logs information into their computer system, which also receives and displays
the test results from a sensor they plug into the car. If the car passes, the technician
completes the process, prints Karl’s new registration, and hands him the paperwork
and a sticker for the license plate. Mission accomplished!
Signal events originate from a hardware device like a switch or sensor, or they
arrive as messages on an incoming communications channel. A signal event, such
as an interrupt or a specific data value, notifies the system of the input and trig-
gers some response. The sensor that the technician plugs into Karl’s car sends a data
stream to the emissions testing application running on their computer, along with a
signal when the test is complete. At that point, the host software analyzes the sensor
data and reports whether the car passed the test. A system could also generate a sig-
nal event when a process completes successfully (or doesn’t) and the system needs to
notify a user, communicate with another system, or write a data record.
Finally, temporal events stimulate a system to perform some action either at a prede-
termined time or when a specific duration has passed since a previous event took place
or a system state was reached. A temporal event triggers the Department of Motor Vehi-
cles to mail Karl a renewal notification two months before his car registration expires. A
temporal event could even be a nonevent, in a way. If you’ve applied for a bank loan and
the bank doesn’t receive some necessary documentation by a specified date, the bank’s
system might automatically change the loan application status to “suspended.”
How you classify events really isn’t that important. The main point is to think
about the various events that could take place in your solution’s environment and
make sure that you identify all the necessary functional and nonfunctional require-
ments to handle them. Contemplating these three event types might help you recog-
nize more events than initially come to mind.
Specifying Events
You can use various techniques to document the results of an event analysis. The
simplest is to list the events that could trigger some system behavior. An anti-
malware software product’s event list could contain entries like these:
• One hour has passed since the system last checked for updates to download (a
temporal event).
• The computer’s administrator initiates a manual malware scan (a business event).
An event list helps with scoping decisions. The people responsible for planning can
choose which event processing to incorporate into a specific development iteration
or product release.
An event-response table provides a more detailed description of possible events
and the expected response based on the system’s state when it detects each event.
Table 3.4 shows a partial event-response table for a home security system. Note
that the same event can trigger different responses—or perhaps even no response—
depending on the system state at that time.
• What are the durations of the various countdown timers? Can they be user set?
If so, are there minimum and maximum allowed values?
• What exactly does calling the alarm monitoring company involve? Are sound-
ing the siren and calling the only things that happen when the system goes into
Alarm Mode? Does the system ever turn off the siren without the user entering
the correct alarm code?
• Are any details needed regarding “control panel beeps?” Pattern, frequency,
volume, timing? Or will those all be design decisions?
• What all happens upon disarming the system?
• Could any exceptions arise that the system must handle? (Karl’s home secu-
rity system recently went berserk because of an improperly handled exception
condition.)
possible system state. The arrows indicate allowed transitions that can take place
between states. Labels on the arrows indicate the event and/or conditions that trigger
a change of state. This model does not explicitly show all the system behaviors
that result from an event, which do appear in the event-response table. The two
representations—table and diagram—are complementary.
Disarmed
motion detector
Intrusion triggered
correct alarm
code entered
Detected
correct alarm
Alarm Mode code entered
Figure 3.4 A partial state-transition diagram that shows the behavior of a home security
system.
all possible events and transition paths have corresponding tests that will reveal any
design or implementation errors. Getting an early start on testing with techniques
like these helps the team build quality into the product from the earliest stages.
Related Practices
Next Steps
1. List the major events to which your product must respond. Classify them as
business, signal, or temporal events.
2. Create an event-response table for the events from step #1. Confirm that your
current set of requirements fully accounts for all the expected outcomes result-
ing from each event.
3. If appropriate for your system, draw a state-transition diagram to complement
the event-response table. Look for any errors that are revealed by representing
the knowledge in those two forms.
The computing business used to be called “data processing” for a reason: All soft-
ware applications create, consume, manipulate, or delete data. We can think of data
as the glue that connects all the other requirement types; alternatively, functionality
exists to process data. Both perspectives underscore the importance of exploring
data considerations during requirements elicitation. Answers to the following ques-
tions help to define the solution’s data requirements.
• What data does each component of the solution require? What are the sources
of that data?
• What data does each component produce that should be retained?
• What stakeholders or systems consume each piece of data? How do they use it?
• What data objects are inputs from, or outputs to, entities that are external to
the solution? By what mechanisms will data be received and sent out?
• What data objects flow between systems, components, or processes in the solu-
tion? By what mechanisms will the data objects be exchanged?
• What constraints, business rules, or dependencies apply to each data object?
• Which system or process “owns” each data object and therefore is the source
of truth about it?
• What information needs to be input or displayed on a user interface screen?
• What policies must the system comply with regarding data governance,
including quality, access, security, privacy, integrity, retention, archiving, and
disposal?
• Pick out the nouns that appear in descriptions of the business problem, solu-
tion concept, processes, user requirements, state-transition diagrams, and
event-response tables.
• The labels on the lines of an ecosystem map or on context diagram flows
identify high-level data objects (see Practice #3, “Define the solution’s
boundaries”).
• When stakeholders mention items such as a customer, order, or address, those
likely refer to data objects needed in the solution.
•• Descriptions of reports, displays, and other outputs give clues regarding data
items the system must either receive as inputs or create.
•• On existing products or when integrating with existing systems, the table
names in relational databases likely belong to data objects. You may need to do
some mapping or translation of data objects and terminology from one system
to another.
After identifying likely data objects (entities), you can create a data model to show
the logical connections between them (relationships). The entity relationship dia-
gram or ERD is a popular convention for drawing data models (Wiegers and Beatty
2013). ERDs can represent conceptual, logical, or physical data views. A conceptual
data model is sometimes called a business data diagram (Beatty and Chen 2012). Con-
ceptual models identify only the business data objects and their relationships (Nali-
mov 2021). A logical model adds details about each entity’s attributes. A physical data
model describes the architecture of the implemented database, including tables, col-
umns, primary and foreign keys, and referential integrity rules (ScienceDirect 2022).
A conceptual ERD for the restaurant online ordering project from Practice #3,
“Define the solution’s boundaries,” might look like Figure 3.5. The entities appear in
boxes. The lines show logical links between data objects, and the labels on the lines
characterize each relationship.
Payment
Method
has
places
Figure 3.5 An entity relationship diagram depicts all the data objects in a problem or
solution space and their logical connections.
62 Chapter 3 Requirements Elicitation
One to one
One to many
Many to many
In Figure 3.5, a customer account places zero or more orders, an order must con-
tain one or more menu items, and a menu item can belong to zero or more orders.
The BA could use this ERD during an elicitation review session to ask questions such
as “Must an order always contain at least one item?” and “Under what conditions
could a customer account have no delivery address?” Walk systematically through
the data objects in the model to identify all their logical connections and verify the
relationship cardinalities.
Data output requirements are important as well. Explore how the system will
present data to users and send it to other systems or external devices. The system
may need to perform translation, abstraction, computations, formatting, or other
processing before presenting an output. Understand how the users will view the data
in reports, interactive dashboards, or other extracts and how they’ll want to manipu-
late the displayed data (Wiegers and Beatty 2013). These output requirements will
reveal the functionality needed to build the output displays as well as some quality
requirements, such as data latency and performance goals.
Ask your stakeholders about business rules, quality attributes, and other con-
straints that could affect your data objects but are not obvious from the data model
alone. Although the ERD in Figure 3.5 shows that each customer account can have
zero or more payment methods associated with it, through discussions you might
discover a business rule stating that a customer account must have at least one pay-
ment method stored before placing an order. This business rule is not shown explic-
itly in the data model. Similarly, a security requirement could require that stored
payment methods be encrypted, as they are personally identifiable information. Such
constraints lead to derived functionality to comply with them.
To depict the movement of data through the system, consider drawing a data flow
diagram (DFD). A DFD is a child of the context diagram, as though you took a
magnifier and peered inside the single circle that represents the entire system in the
context diagram. The DFD shows how data elements tie together the system pro-
cesses that create, use, or change that data.
To create a DFD, show in rectangles the external entities that interact with your
system. Those external entities also appeared on the context diagram. Circles iden-
tify processes that consume, transform, or produce data. Objects shown between
two parallel lines are data stores that hold some chunk of data permanently, tem-
porarily, or even only conceptually. Finally, labeled arrows, or data flows, between
objects show both internal and external data inputs and outputs.
Figure 3.6 shows a portion of a DFD that builds on the context diagram from
Figure 2.5. It’s easy to walk through this model and see how the processes access,
manipulate, display, and transform the various data objects. For instance, this
model shows that process 3 lets the user build an order, process 4 transmits the
order to the restaurant order placement system, and process 5 confirms receipt of
the order. Make sure that each data object in your data flow diagram also appears
in your ERD, as discrepancies between models reveal problems (see Practice #11,
“Create requirements models”).
payment
confirmation 6
menu items Submit
order payment
payment info
2
3 order confirmation
Display
Build payment
menu
order confirmation
1
4
Retrieve
Place
menu
order
order confirmation
Restaurant
Menu
Order
Repository
Placement
Figure 3.6 A portion of a data flow diagram for the restaurant online ordering system
shows how menu, order, and payment information is used in various processes.
DD1 Customer E-mail The user’s e-mail address. Also used as the Y Alphanumeric Any Y
Account Address user's login ID. A user must have exactly
one e-mail address.
DD3 Customer Name Customer name for the account. Typically N Alphanumeric 100 Y
Account first and last but is treated as a single field.
DD4 Customer Phone Customer phone number for order updates. N Alphanumeric Any N
Account Number
DD6 Delivery Address Additional delivery address line. Used for N Alphanumeric 50 N
Address Line 2 apartment numbers, care-of instructions,
and other optional information.
Figure 3.7 A partial data dictionary for the restaurant online ordering site shows the
attributes of the Customer Account and Delivery Address data objects.
Data dictionaries help align data requirements between systems. Carefully study
the data types and field lengths for data items that systems exchange. Decide how to
handle any type conversions and length mismatches. For example, if there is a length
mismatch, determine whether the originating or receiving system should truncate
the data or add pad characters to fit. If so, at which end should characters be cut or
added? Such details can mean the difference between interfaces that work and those
that cause data corruption or loss. Stephen Withall’s book Software Requirement
Patterns (2007) describes numerous patterns for precisely specifying a variety of data
requirements to avoid overlooked issues that can cause errors.
If you’re replacing an existing system with a new one, use your data dictionaries
to ensure that data items being migrated from the old system to the new one match.
Different stakeholders, systems, or interfaces might be using the same data field in
different ways or using different fields to hold the same business data. In any of these
scenarios, you might need additional logic for internal processes, data migrations,
and inbound and outbound integrations.
Related Practices
Next Steps
1. Create an entity relationship diagram for your solution if you don’t have
one already. Use it to assess your current set of data, functional, and quality
requirements. If there are missing requirements to enforce or enable certain
relationships, elicit the new requirements from your stakeholders and data
models.
2. Create a data dictionary for your product. Analyze the incoming and outgoing
data for data type, length, or business rule mismatches between what the sys-
tem accepts or enforces and what the external systems expect.
3. Create data flow diagrams for selected portions of your system. Ensure that all
data objects that appear in the data flow diagram are represented in the entity
relationship diagram.
When discussing their needs, users naturally emphasize the functionality they expect
to find in the solution. However, we’ve all had the experience of using some applica-
tion that contains the right functionality and yet we don’t like it. Maybe it takes too
long to perform a task, or the user interface is hard to figure out. It might crash fre-
quently or have too many bugs. Perhaps as you use the software, it consumes more
and more memory and eventually slows your computer to a crawl. Maybe those
products satisfy their functional requirements, but they fall short of the user’s (often
unstated) quality expectations.
Solution requirements encompass both functional and nonfunctional require-
ments. When people say nonfunctional requirements, most frequently they’re think-
ing of quality attributes, also known as quality of service requirements. These
characteristics describe not what the product does, but rather how well it functions.
If they don’t explore quality attributes during requirements elicitation, the team
might deliver a solution that doesn’t please its users.
Installability Extensibility
Integrity Maintainability
Interoperability Modifiability
Performance Portability
Reliability Reusability
Robustness Scalability
Safety Verifiability
Security
Usability
• Is it more essential to have certain functions available than others? If so, which
ones?
• What could be the downside if certain capabilities aren’t available for a while?
How could we best handle those situations?
• What time periods could be reserved for scheduled maintenance activities with
the least adverse impact?
• Should the system notify users if some functionality is unavailable?
• How could we determine whether the availability goals were satisfied?
Roxanne Miller (2009) has compiled more than 2,000 questions a BA can use to
elicit a deep understanding of fourteen important quality attributes. You won’t need
to ask 2,000 questions, but Miller’s book is a valuable resource to help a BA elicit the
right information about quality requirements from various stakeholders.
The first step is to identify those quality attributes that pertain to your product.
Then, study compilations of questions relating to each of those attributes and select
those that you think would probe around relevant issues (Miller 2009, Wiegers and
Beatty 2013). This preparation will lead you to a set of questions that efficiently
focus elicitation participants’ attention on the significant quality characteristics.
What functionality is needed to let users create, change, and reset passwords?
How will the system notify users when they must change a password, and let
them do so?
• For access codes, how are they provided: text message, e-mail, phone call, or
user choice? How many characters does the code contain? What are the allowed
characters? How long is the code good for? What functionality is needed to let
the user enter, maintain, and select phone numbers and e-mail addresses for
these security checks?
• What happens if the authentication attempt fails? How much information
should the system show in the error message? How many tries does the user
get? Does the system lock out access after too many unsuccessful attempts? If
so, how does the user regain access to a locked account?
And that’s just for a single security requirement! The answers to those questions
let the BA specify the detailed functional and data requirements to make it all hap-
pen. The key point is that simple statements such as “The system shall be secure”
or “User identities must be authenticated” are woefully insufficient security require-
ments. They only provide a starting point for more thorough exploration.
It takes effort to elicit, analyze, and specify good quality attribute requirements.
Some attributes, like this security example, provide excellent reuse possibilities across
multiple applications. To get the maximum benefits from a good set of quality require-
ments, your organization would need to establish a mechanism for storing reusable
requirements and nurture a culture that fosters reuse (Wiegers and Beatty 2013).
Set the benchmark too early in development, and performance would degrade over
time as more complex logic was added. Test too late, and the team would lose the
ability to address any performance shortcomings. Finding the balance was key.
As we saw, writing a fuzzy quality requirement like “The system shall be secure”
doesn’t help developers. A quality attribute specification should be
Performance: The system’s response time must be 1.5 seconds or less for at least
75 percent of user interface actions, and 4.0 seconds or less for at least 95 percent of
user interface actions.
Interoperability: The application must work correctly with the most recent Chrome,
Firefox, and Edge browser versions, as well as the previous three versions.
Scalability: The system must be able to scale capacity automatically from four to six
servers when incoming requests exceed 500 per minute.
Related Practices
Next Steps
1. If your team hasn’t already done so, explore what quality means to your users
and other stakeholders. Document that knowledge in forms that guide devel-
opers in achieving quality.
2. To better understand your product’s quality characteristics, refer to books by
Lauesen (2002), Miller (2009), Robertson and Robertson (2013), and Wiegers
and Beatty (2013). Assemble a list of questions to use during discussions with
your stakeholder representatives about quality attributes.
3. Confirm that each of your documented quality attribute requirements is verifi-
able and that someone has documented tests or other criteria that will demon-
strate whether each is satisfied.
Requirements Analysis
As the business analyst on your project, you’ve worked with key stakeholders to
understand their objectives. You’ve interviewed user representatives and others to
learn about the business domain, define the solution’s boundaries, and identify
stakeholder needs, expectations, and constraints. Now you must transform all that
information into a description of the capabilities and characteristics of a solution
that will satisfy those needs and expectations. That transformation process is the
province of requirements analysis.
But what exactly does it mean to analyze requirements? A surprising number of
books on software requirements don’t even have an index entry for requirements
analysis. Analysis sounds like something that just kind of happens through staring
at requirements long enough. In reality, you can use several techniques to search for
specific issues and produce better requirements—and hence better solutions. Con-
sultant and author Eugenia Schmidt explains analysis nicely:
Most analysts may elicit and capture the requirements through various means, but they
may miss what BAs fear the most: overlooking something that is needed to build a val-
ued solution. You can avoid that only by analyzing the requirements and the data. Clas-
sifying, sorting, prioritizing, visualizing, reviewing from different perspectives, finding
conflicts, finding gaps—that’s how we ensure that we provide the information that’s
needed to build or buy the “right fit” solution.
Requirements analysis involves ensuring that the needs of all stakeholders are
understood and that a satisfactory solution to meet those needs can be defined, agreed
upon, built, and tested. This chapter describes many tools to help the BA achieve
this objective, but tools don’t replace essential BA thought processes: questioning,
75
Analyzing requirements is where a skilled BA really adds value. Whether it’s per-
formed explicitly by a BA or transiently in developers’ heads, requirements analysis
involves numerous activities:
• Partitioning a system into parts and determining how the parts relate to one
another (Thayer and Dorfman 1997)
• Representing requirements knowledge at an appropriate level of detail and in
suitable forms to ensure a thorough understanding
• Discovering and resolving conflicts, inconsistencies, redundancies, omissions,
and dependencies
• Deriving detailed solution requirements from higher-level sources, such as sys-
tem requirements, use cases, business rules, and quality attributes
• Assessing requirements for several quality characteristics
• Negotiating requirement priorities
Analysis is an incremental and iterative process. It begins when you have your first
requirement. You acquire some information, evaluate and understand it, record it,
and confirm its correctness. The first round ends when you understand some set of
requirements well enough for the team to proceed with design and development at
a low risk of having to perform excessive rework. Then you move on to the next
chunk of requirements and repeat the process, keeping in mind that these sequential
chunks could all tie together with potential conflicts and dependencies. As we saw in
Figure 1.2, analysis is interwoven with ongoing elicitation, specification, and valida-
tion activities.
Origin and
rationale
Reuse potential Decomposition
and derivation
Hazards
and risks Exceptions
An
Individual
Requirement
Business
Quality assessment
rules
Origin and rationale. You should be able to trace each requirement or user story
back to its origin, which could be a stakeholder request, use case, policy, quality
attribute, or some other source that led to including it. If anyone asks why a particu-
lar requirement is present, the BA should have a compelling answer. Understanding
the rationale for including each requirement helps people make priority and scoping
decisions based on the requirement’s value to stakeholders.
Decomposition and derivation. A big portion of analysis is to decompose large
or high-level requirements into enough detail that they are well understood. Finding
the right level of granularity is tricky. There’s no point in overly detailing require-
ments prematurely, particularly if they’re likely to change or be dropped. However,
you need a certain amount of information to assess each requirement’s priority and
feasibility, more detail to estimate their size and implementation cost, and still more
to know exactly what to build.
Features can be decomposed into subfeatures or user stories and from there
into functional requirements. A feature tree is an effective way to depict this
Order Online
Placement Menu
Figure 4.2 A feature tree shows the major features and their subfeatures that make up a
software solution.
Agile projects may encounter user stories that are too large to implement in a
single iteration, called epics. Epic splitting and story splitting are forms of decom-
position that affect the workload planning in agile teams (Cohn 2012, Lawrence and
Green 2022). Each resultant story should deliver some user value.
If you’re employing use cases, analysis includes deriving functional requirements
from the various use case elements shown in Figure 3.2. For instance, preconditions
must be met before the system can begin executing the use case. But the precondi-
tions don’t tell the developer what to do if they aren’t satisfied. It’s better to have a
BA close those information gaps instead of expecting each developer to figure it out.
The BA might derive additional functionality from quality attribute requirements or
relevant business rules.
Exceptions. People naturally focus on describing how they expect the product to
behave when everything goes well. However, developers write a lot of code to handle
exceptions that could prevent successful execution. During analysis, identify poten-
tial error conditions—user actions, system conditions, or data values—that the sys-
tem must detect and handle to minimize their adverse impacts.
Quality assessment. Experienced BAs automatically scan for certain characteris-
tics as they review requirements. A statement that lacks any of the following proper-
ties demands further exploration and improvement (Wiegers and Beatty 2013).
User stories should satisfy a similar list of quality characteristics, easily remem-
bered with the acronym INVEST (Cohn 2004). Each story should be Independent of
others, Negotiable during conversations with stakeholders, Valuable to customers,
Estimable to assess size and implementation effort, Small, and Testable.
Acceptance criteria. Consider how someone could judge whether the require-
ment was correctly implemented and ready for use (see Practice #18, “Review and
test the requirements”). Acceptance criteria can describe system behaviors, tests,
performance measurements, or anything else that shows that the requirement is sat-
isfied. Agile teams typically document acceptance criteria to flesh out the details of
user stories, including exceptions. That is, they derive acceptance criteria or tests
rather than refining a story into detailed functional descriptions. Written in either
form, it’s the same knowledge because that’s what developers need to know to do
their jobs (Wiegers and Beatty, n.d.a).
Reuse potential. Requirements reuse involves both crafting requirements that can
be reused in other contexts and finding existing functionality that your application
could exploit. Consider both reuse aspects during requirements analysis. If a pro-
cess or a set of requirements is likely to be repeated, consider creating a generalized
template for those requirements to enhance reuse. Candase once had a project that
involved multiple file-based vendor integrations. The transport of those files to the
respective vendors was essentially identical; only the file locations and encryption
keys would differ. The team created a template for the vendor integrations that every
business area could use to insert their own vendor’s name, location, and encryption
key without having to replicate the functional requirements.
Gaps
Assumed and implied Conflicts and
requirements inconsistencies
Representation in Dependencies
different forms Quality
assessment
Gaps. When you examine a set of requirements, it’s hard to see the ones that aren’t
there—they’re invisible. Finding missing requirements involves reading between the
lines. To assess completeness, trace downward from business objectives through user
requirements and into solution requirements to ensure that they all align properly.
Common sources of omissions include stakeholders who haven’t provided input,
missing exceptions, situations involving complex logic in which some combination
was missed, and overlooked data. Requirements models provide a powerful tool for
identifying gaps, as visual representation techniques make omissions far more obvi-
ous than textual representations can.
Related Practices
Next Steps
1. Think about the requirements errors that your organization’s projects encoun-
ter late in development or following release. What kinds of errors are most
common? Consider whether more emphasis on requirements analysis could
prevent any of those types of errors. Select techniques from this section that
would help with analyzing your requirements.
2. Identify activities from Figures 4.1 and 4.3 that you have already internalized
such that you simply perform them without consciously thinking about them.
Create checklists of the practices that you don’t perform automatically as
reminders for when you analyze requirements.
Text is not the only way, and sometimes not the best way, to represent requirements
knowledge. It’s easy to get lost in a sea of details, missing the big picture and over-
looking errors. Visual requirements models—diagrams—provide a great way to look
at requirements information from different perspectives than the written solution
requirements provide. Creating a robust set of requirements models allows the BA to
iterate quickly on higher-level information, providing insights that lead to more
accurate detailed requirements. Models can be updated easily as the product changes
to reflect the current reality, which is especially valuable on iterative projects. Profi-
ciency with requirements modeling is an essential BA skill (Wiegers, n.d.). Models
aid requirements analysis in several ways.
• Models provide a context to see where each requirement fits in the overall
problem or solution space.
• Violations of modeling rules can reveal omissions and errors.
• Models help the team discover missing requirements by ensuring that each ele-
ment the solution introduces (process flows, system states, data objects, and so
forth) has corresponding functionality defined to implement it.
• When multiple models that show different views of the same informa-
tion do not agree, that conflict can reveal incorrect, missing, or unnecessary
requirements.
• Business Process Model and Notation or BPMN (Freund and Rücker 2019)
• IDEF0 (Feldmann 1998)
• Requirements Modeling Language or RML (Beatty and Chen 2012)
• Structured analysis (Wiegers and Beatty 2013)
• Systems Modeling Language or SysML (Delligatti 2014)
• Unified Modeling Language or UML (Booch et al. 1999)
Rather than being a modeling language purist, use whichever diagrams will best
convey the information you wish to communicate. Learn the symbols, syntax, and
conventions for each model you decide to create. Avoid inventing your own notations
unless you find that none of the available models will communicate what you’re try-
ing to show (which is unlikely).
Consider the characteristics of your project, what you’re trying to learn and com-
municate, and your audiences when you select the models to create. When work-
ing closely with developers and testers, use low-level requirements models to depict
the inner workings of the business or the proposed solution. If you’re a BA giving a
status update to the C-suite, choose high-level models that focus on objectives and
scope. You don’t have to model every aspect of your system. Create models that will
enhance the team’s understanding of those portions of the problem or its solution
that are especially novel, complex, or risky.
Table 4.1 describes several models that are commonly used in requirements analy-
sis. Many of these are illustrated elsewhere in this book:
• Root cause analysis diagram: Practice #1, “Understand the problem before
converging on a solution.”
• Business objectives model: Practice #2, “Define business objectives.”
• Context diagram: Practice #3, “Define the solution’s boundaries.”
• Data dictionary: Practice #8, “Assess data concepts and relationships.”
• Data flow diagram: Practice #8, “Assess data concepts and relationships.”
• Decision table: Practice #16, “Identify and document business rules.”
• Ecosystem map: Practice #3, “Define the solution’s boundaries.”
• Entity relationship diagram: Practice #8, “Assess data concepts and relationships.”
• Feature tree: Practice #10, “Analyze requirements and requirement sets.”
• State-transition diagram: Practice #7, “Identify events and responses.”
2. Sales rep
searches for 1. Customer
the customer calls in
record
4. Sales rep
Customer N creates the
exists in
customer
tool?
record
3. Customer
gives item
request to
sales rep
5. Sales rep
adds requested N Customer
item to the cart End Process accepts
quote?
8. Sales rep
converts the
quote to an
order
Figure 4.4 Process flows show the steps a user takes to complete a task and branch points
within the flow.
During model reviews, probe for alternative flows and exception cases, as well as
asking how accurately the model depicts a user’s everyday job. For instance, when
reviewing Figure 4.4, you might ask, “Can we revise the quote after sending it to
the customer? If so, how does that change the process?” It’s a lot easier to modify a
model than to rewrite software when the users discover that something’s missing or
wrong.
As another example, suppose you’re developing a billing system. You might draw
a state-transition diagram like the one in Figure 4.5 to describe the life cycle of a
single data object, in this case, an invoice for a construction job. Show the various
possible statuses the invoice can have in the boxes. The arrows show the permitted
transitions between various invoice statuses.
Initiated
Billing
revises Prepared
invoice
customer customer
Being changes Sent cancels Canceled
Revised job job
deposit received
balance received
Paid
Figure 4.5 A state-transition diagram that shows the life cycle of an invoice.
As you walk through this diagram with your stakeholder, you might ask several
questions.
Such questions help you refine the model with a better understanding of the business.
The answers could yield new requirements or identify unnecessary ones. Creating
and evaluating models like these provides all participants with a common under-
standing of important aspects of business operations and solution behavior.
Iterative Modeling
Modeling is not a one-and-done activity. You will create, validate, review, and revise
diagrams multiple times as you learn more and add new capabilities to the solution.
Use tools that make this valuable iteration easier for you. During elicitation discus-
sions, we like to use simple tools like whiteboards (both physical and virtual) and
sticky notes. It’s easier to move a sticky note around on a whiteboard than to redraw
a box in a Microsoft Visio diagram. Once the model is stable, move it to a specialized
software modeling tool to keep for updating and sharing (whiteboards and sticky
notes don’t travel well). Certain requirements management tools include some mod-
eling capability. Dedicated diagramming tools like Visio and Lucidchart include the
symbols and syntax for certain analysis models. Use whichever tool makes it easiest
for you and your stakeholders to collaborate.
People have difficulty conjuring requirements—or anything else—from nothing.
Draft, or strawman, models can be extremely useful to generate quick feedback from
your stakeholders, especially early in the project. The beauty of strawman models is
that they don’t have to be accurate or complete to be useful. Just having something
to study together helps stakeholders tell the BA what’s wrong so that they can work
together toward a more correct version of the model.
When utilizing strawman models, use a best guess estimate for numeric values
instead of an X if you don’t know the real value. On one project, a stakeholder hesi-
tated to give Candase a dollar value for a business objective. On the strawman busi-
ness objectives model, Candase supplied an outrageous goal: to increase revenue by
eleven billion dollars. During the review, the stakeholder naturally said that eleven
billion dollars was incorrect. That response opened a discussion about what the real
number might be, thus getting closer to the correct business objective.
After creating a set of requirements models, compare them against one another.
Having several representations of the same information allows the BA to look for
discrepancies among them. Check that all the top-level features in your feature tree
appear in the business objectives model and vice versa. Ensure that all functional
requirements trace back to user requirements, business rules, or another source via
a requirements mapping matrix. Trace functional requirements to individual model
elements, such as steps in a process flow. Confirm that the data stores on your data
flow diagram match up with entities in the data model. When models disagree, find
out which one (if any!) is correct and adjust the others.
Related Practices
Next Steps
1. Identify portions of your product that would benefit from enhanced explora-
tion and clarity, and then select one or more requirements models that could
yield the necessary insights.
2. Draft models for those types of diagrams that you identified as being informa-
tive. Review them with stakeholders to identify problems and then revise and
finalize them.
3. Use the finalized requirements models from the previous step to assess your
requirements set. Confirm that you’ve defined the requirements needed to
implement all your processes, data objects, and state transitions. Update the
requirements and models as needed so that they align.
In an ideal world, a business analyst could simply ask users what they need and then
record the answer in a requirements specification. In reality, a user is more likely to
respond, “I can’t tell you what I need, but I’ll know it when I see it [IKIWISI].” The
acronym IKIWISI acknowledges the challenge of exploring requirements only as a
collection of concepts, text, and diagrams. As we saw with strawman models in Prac-
tice #11, “Create requirements models,” people find it easier to critique something
placed in front of them than to create and describe something brand new.
IKIWISI is the idea behind presenting users with prototypes and early releases of
working software to give them an idea of what the solution could be and then refin-
ing it from that starting point. A prototype could be a partial, preliminary, or pos-
sible solution; a simulation of the ultimate solution as it’s currently envisioned; or a
demo or preview of an early version of a new product.
Prototypes can be used as elicitation, validation, and design aids. Prototypes
make requirements tangible. Users can interact with a prototype, either physically or
conceptually, to clarify and crystallize their true needs. Iteratively revising a possible
solution lets participants agree on the solution’s necessary capabilities and charac-
teristics. Prototypes are a way to validate requirements that otherwise are recorded
in diagrams and hard-to-visualize natural language. A prototype spans that fuzzy
boundary between requirements and design, helping the evaluators transition from
concepts to a physical reality.
The rush to deliver working code is not a substitute for exploring requirements
using various elicitation and analysis techniques. You need some information about
stakeholder expectations or marketplace opportunities to create even that first pro-
totype. Also, iterating on code in an executable prototype or early product release
is more expensive than iterating at higher levels of abstraction, such as concepts,
models, and requirements (Wiegers 2022). Nor do prototypes replace requirements
documentation. A user interface prototype only hints at the many details about
functionality and data hidden behind the screens. Despite its limitations, prototyp-
ing is an excellent way to reduce the risk of building the wrong solution or trying to
create a solution that isn’t feasible.
Reasons to Prototype
If the requirements are well understood, the user interface design is routine, and you
know the technologies are workable, don’t bother with prototyping—just build the
product. A prototype’s value comes from using it to answer questions and resolve
uncertainty. Agile teams create prototypes to “fail fast” by quickly learning what
approaches or solutions don’t work well, so they can adjust their strategy to better
satisfy customer needs. You might create a prototype early in the project to decide
whether to buy or build a solution. You could even take an existing off-the-shelf
product for a test drive with your own data as a prototyping experience before buy-
ing it. Several kinds of prototypes can help you achieve these objectives (Wiegers and
Beatty 2013).
An interaction design prototype offers users a visual representation that helps
them assess whether a solution based on the current set of requirements would let
them do their job efficiently. You can mock up some possible screens and ask users to
imagine how they would interact with them to perform certain tasks. In contrast, a
technical design prototype lets the development team explore under-the-hood issues
before committing to a technical approach. The evaluation might reveal that certain
requirements aren’t feasible or cost-effective. Table 4.2 lists some reasons to create
either of these two classes of prototypes.
An interaction design prototype can serve another useful purpose. Some new
information systems either impose or accompany changes in an organization’s busi-
ness processes. It’s hard for users who are accustomed to doing their jobs in a certain
way to envision a whole new mode of working; some of them will resist the change.
Too often, new system implementations simply repave existing cow paths, updating
the interface while retaining outdated and inefficient processes. Significant process
and application changes can push users out of their comfort zone. Those changes
sometimes require additional training and alter, or even threaten, employees’ jobs.
Influential user representatives who work with the software team to develop and
evaluate prototypes can ease that uncomfortable transition. A BA, a user experience
designer, and some users can explore ways that a system could support new business
workflows. It’s better to address potential points of user resistance during prototyp-
ing than after the new system goes live. This engagement also builds trust and buy-in
from the user participants regarding the new future state, so they can lead others in
the organization through the transition.
How to Prototype
View a prototype as an experiment. You begin with a hypothesis you wish to test or
some questions to explore. The hypothesis could be that a set of requirements is
correct and complete, that a particular user interface design approach will be well
received, or that a proposed technical strategy is sound. Then you design an experi-
ment to test that hypothesis, build one or more prototypes, collect information from
prototype evaluations to either support or reject the hypothesis, and revise your
approach accordingly.
Interaction design prototypes span a spectrum of complexity and sophistication
(Coleman and Goodwin 2017). They can range from low to high fidelity, referring to
the extent of detail and precision shown in the user interface (Robertson and Robert-
son 2013). Prototypes can be static, fully executable, or anything in between. Table
4.3 describes several interaction design prototyping approaches with varying degrees
of complexity and realism. Dozens of software prototyping tools are available to
accelerate the process (e.g., Capterra, n.d.).
Which sort of prototype to create depends on what you’re trying to learn. Low-
fidelity wireframes are adequate for requirements exploration. High-fidelity pro-
totypes are best suited for refining detailed user interface designs. Prototypes that
enable navigation between screens let evaluators simulate usage scenarios and help
them refine and validate task flows and solution requirements. Executable proto-
types are particularly valuable for usability design.
Article Statistics
The Secret to Success
Published XX/XX/XXXX
Figure 4.6 Wireframes depict what the user interface could look like in order to analyze
interactions and content.
As you work with users to build and evaluate a prototype, keep these tips in mind.
• Engage the right participants based on what you’re trying to learn. Choose
people from the appropriate user classes, whether those are experts, novices,
users of specific system functions, or other groups.
• Keep the prototype as simple as possible. It takes more effort to make a pro-
totype look like a final product. The more polished the prototype looks, the
more reluctant users and developers are to change it or discard it after it has
The team should agree on their intent with an executable prototype at the outset.
Will they use it as a learning tool and then build the real solution? Or will they use it
as an initial product release and iteratively grow it into the solution? Communicate
this intention clearly to all the prototyping participants, so the team doesn’t prema-
turely release something with serious quality shortcomings.
Planned evolutionary prototyping is a reasonable way to build systems. Agile
development, with its focus on getting useful functionality into users’ hands quickly
and using feedback to guide subsequent development, is similar to evolutionary
prototyping. The key point is to build such a prototype or initial release with
production-quality code from the outset. This minimizes the technical debt that the
team will otherwise have to pay off later at a greater cost.
Related Practices
Next Steps
1. Identify uncertain areas of your project’s requirements that would benefit from
prototyping. Craft a set of objectives like those in Table 4.2 that you’d like to
explore further.
2. Decide which prototype classes from Table 4.3 would be most helpful in elicit-
ing the information you need. Select some user representatives to provide input
to and evaluate your prototype.
3. Build the prototype and have the evaluators work with it, using scripts and well-
placed questions to elicit the requirements information you’re looking for.
A problem with requirements is that there are always more than the team can fit into
the box bounded by time, budget, and resource limits. Even if you could implement
all the requested functionality eventually, you can’t do it all at once. To deliver the
maximum business value in the shortest amount of time, you must decide which
product capabilities to build first.
Prioritization begins when you discover your second requirement, because priori-
ties are relative. It continues throughout the development cycle and even following
release. As each new requirement or change request comes along, the team must
evaluate it against the remaining work to know where to position it in the queue. As
business objectives or competitive markets evolve, a feature that initially was planned
for a later development cycle might float up in the priority backlog.
The term requirement here refers to whatever type of requirements-related objects
your team works with. They could be individual functional requirements or groups
of them; features or subfeatures; use cases or flows within a single use case; epics or
user stories. Because prioritization is relative, it only makes sense to compare items
at similar levels of granularity.
For instance, you might do a first-cut prioritization on a set of use cases, having
learned just enough about each one to do that ranking. Then, as analysis progresses,
you could assess the relative priorities of individual flows within each use case to
select a suitable implementation sequence. You might never implement certain alter-
native flows if other capabilities are more important and needed more urgently.
Another prioritization challenge is that it’s hard to quantify what value means.
It’s usually hard to put a number or dollar amount on the benefit that each use case,
user story, or feature would provide. Fortunately, prioritization is relative, not abso-
lute. It’s good enough to judge the relative value that one feature would provide ver-
sus another.
Prioritization Techniques
Project teams use many methods to prioritize requirements. Use the simplest possi-
ble scheme that works for your team. If a conversation and a handshake lead to an
agreement, so much the better. Usually, though, you’ll benefit from a more structured
method. Prioritization involves four steps.
1. Identify the people who will make priority decisions (see Practice #5, “Identify
empowered decision makers”).
2. Agree upon the prioritization method(s) to use and the criteria to consider for
candidate requirements.
3. Evaluate the candidates against those criteria.
4. Sequence the priorities within a set of requirements and allocate them to
upcoming development increments.
Table 4.4 summarizes several prioritization techniques (Wiegers and Beatty 2013,
IIBA 2015, Simplilearn 2022). Some, like rank ordering, work well with small num-
bers of items but are intractable with a large set. You need to choose a granular-
ity level that makes any of these methods manageable. It’s possible to prioritize
twenty use cases or user stories against one another, but not hundreds of detailed
requirements.
High: Both important and urgent (must be included in the next release)
Medium: Important but not urgent (must be implemented but can wait
until a later release)
Low: Neither important nor urgent (nice to have but we could live without it)
MoSCoW A four-level classification of requirements:
Won’t: Out of scope at this time but could be included in a future release
e
o lity
nc
ie ity
ss
ty
cu ty
y
bu y
ili
re rma
sc tne
il
pe ab
ve ility
in nc
se bili
m ity
us rity
ro ilit
b
ab
ifi
la
gr
s
b
rifi
ab
od
ai
lia
fic
al
rf
te
Attribute Score
av
ef
Figure 4.7 A sample quality attribute prioritization matrix for a restaurant online ordering
site shows that security and integrity are the most important attributes.
Beginning with Brosseau’s spreadsheet (available from the website that accom-
panies this book), first decide which of the many quality attributes pertain to your
product. Then, for each pair of attributes, indicate which one is more important to
success. A less-than sign (<) in a cell indicates that the attribute at the left side of
the row is more important; a caret (^) means the attribute at the top of the column
is more important. The second column in the spreadsheet displays a score for each
attribute. Alternatively, you could write the name of the “winning” attribute from
each pair in the cell and then count how many times each attribute appears in the
matrix. In Figure 4.7, security is the most important of the eleven attributes shown,
with a score of 10; efficiency is the least important. You could use this spreadsheet
tool to prioritize any small set of requirements using the pairwise comparison
method, not only quality attributes.
Criteria
Weights: 25 10 20 15 15 15 100
Business Who Usage Cost to Technical Time
Features Value Requested Frequency Implement Risk Sensitivity Score
Feature 1 10 4 7 4 2 6 4.3
Feature 2 5 4 7 2 2 5 3.2
Feature 3 7 8 4 5 5 10 3.4
Feature 4 4 5 3 3 1 5 2.3
Feature 5 4 4 2 6 3 5 1.2
Feature 6 6 8 6 4 8 8 2.9
Feature 7 5 8 10 3 7 7 3.6
Feature 8 2 3 3 3 3 7 1.6
Figure 4.8 A criteria matrix prioritization analysis calculates a score for each candidate
feature based on a set of weighted evaluation factors.
Related Practices
Next Steps
1. Assess the requirements planned for your next iteration or release, using the
criteria of importance and urgency. Does that analysis make you change the
priorities of the requirements planned for that development cycle?
2. Review the list of factors that influence requirement priorities from earlier in
this section. Identify those factors that contribute to your team’s thought pro-
cesses for making priority decisions and any other factors that aren’t on that
list. Build a customized list to use when your team performs priority analyses.
3. Select three prioritization techniques from Table 4.4 that might be suitable for
your project. Try each of them on a sample set of requirements to see which
feels the most efficient and effective for future use.
4. Use the analysis illustrated in Figure 4.7 to prioritize the quality attributes for
your product.
Requirements Specification
Human memories are imperfect and incomplete. They fade and distort over time,
and other people can’t access them. Consequently, a software team should record the
information it accumulates about requirements to serve as a persistent group
memory.
Some people don’t like to bother writing down requirements or other project
information. However, the cost of recording knowledge is small compared to the
cost of acquiring that knowledge or reacquiring it in the future (Wiegers 2022).
Thoughtfully selected and properly maintained documentation is a sensible invest-
ment to improve collaboration among project participants and to refresh memories
over time. Documented requirements also help bring new team members up to speed
when they join a project that’s already underway.
The term requirements specification refers to both the recording of requirements
knowledge and the resultant deliverables. Requirements specifications span wide
variations in content, structure, form, detail, and formality.
107
This chapter describes four core requirements specification practices for record-
ing different kinds of information. The goal of these practices is to keep all project
participants informed and aligned toward their common objectives.
Whenever you see the phrase “writing requirements,” please mentally convert that to
“representing requirements knowledge.” Natural-language text likely will always be the
most popular way to record software requirements—it’s how people normally commu-
nicate. However, there are many alternatives, including visual models (diagrams), tests,
screen designs, prototypes, decision tables, and mathematical expressions. Even text
can take numerous forms: narrative paragraphs, bullet lists, hierarchically numbered
statements, tables, and structured lists that avoid repetitive text (Wiegers 2006).
Each technique has its advantages and limitations. The key is to choose a repre-
sentation that will communicate a particular piece of information clearly, efficiently,
and accurately. Ambiguity is such a common problem with requirements that every
BA should master techniques for writing unambiguous requirement statements
(Wiegers 2006). The overarching objective is always clear and effective communica-
tion. It’s not purity of style or conformance to some standard or convention.
Consistently following some patterns and guidelines makes writing textual require-
ments easier. The author doesn’t have to decide how to structure each one, perhaps
resulting in a mishmash of styles. Readers know what information to expect in each
requirement of a particular type. Following a pattern can help ensure that all the neces-
sary information is there and makes it easier for readers to find what they need.
The first pattern focuses on what a user can do and the second and third on what the
system does. Use whichever pattern—user action or system action—communicates
each requirement most clearly. Here’s a sample requirement, showing two alternative
phrasings, either of which is fine:
Security.Admin.1. The homeowner shall be able to change the security system’s passcode.
Security.Admin.1. The security system shall allow the homeowner to change the passcode.
There are several good practices to follow when writing requirements (Alexander
and Stevens 2002, Wiegers 2006).
Some people object to the keyword shall. They protest that reading a long list
of “The system shall…” statements is monotonous, it is not how people normally
speak, the implication of what shall means is ambiguous, and so forth. However, it’s
best to stick to a single term, like shall, and use it consistently, particularly with func-
tional requirements. Some requirements writers randomly use a mix of shall and
near-synonyms: must, will, may, should, can, could, and others. That blend leads
the reader to wonder if there are distinctions among them, such as the level of neces-
sity or priority the words convey. Certain government standards do precisely specify
when to use each such term. However, unless you’re constrained to follow such a
standard, sticking with shall to describe functional requirements is less confusing
than using an assortment of similar verbs.
Agile project teams employ user stories to document desired system capabilities.
A user story identifies who wants the capability, what capability they want, and why:
As a <type of user>, I want to <perform some task> so that I can <achieve some goal>.
Returning to the security system example, we could write this user story:
As a homeowner, I want to change my security system’s passcode so that I can prevent
the previous owner from entering my house.
Consistently following this pattern lets those who contribute user stories state
the need and the rationale for it clearly. Ensure that the <type of user> in the story
is a human user or user class that can have wants (unlike software systems or inani-
mate objects). Consider who really cares about the functionality being requested,
especially if your product doesn’t have direct users or a user interface. Keeping the
users in focus, even when they are not obvious, allows the team to understand why
they are building certain pieces of functionality and for whom.
When an agile team fleshes out a user story’s details to prepare it for implementa-
tion, they typically write a set of acceptance criteria rather than a set of functional
requirements. Some acceptance criteria are written as tests that follow a pattern
called Given–When–Then, which is described in Practice #18, “Review and test the
requirements.”
Levels of Abstraction
The specification for a large, specialized authoring system included this requirement:
The system shall respond to editing directives entered by voice.
This requirement was mixed in with hundreds of others, none apparently larger or
smaller than the rest. However, this short statement conceals a great deal of complex-
ity. In fact, it implies an entire speech-recognition subsystem. (This was before speech
recognition was routinely built into computers and mobile devices.) We could restate
that request as a user story, but it still doesn’t reveal the underlying complexity:
As an author, I want to enter editing directives by voice so that I can write more quickly.
Figure 5.1 shows the relative levels of abstraction for several types of requirements
objects. Functional requirements and acceptance criteria are at the lowest abstrac-
tion level or, alternatively, the finest granularity. Each one describes an individual bit
of system behavior, from the perspective of either what to build (requirement) or
how to tell if what you built is working as intended (acceptance criterion). User sto-
ries lie at a higher abstraction level; each story could have multiple acceptance crite-
ria. Use cases are at a still higher level. It takes multiple functional requirements or
user stories to specify the full richness of a use case.
Epics
Features
Use Cases
User Stories
Functional Requirements,
Acceptance Criteria
Figure 5.1 Relative abstraction levels for several types of requirements objects.
Product features are the next rung on the abstraction ladder. A feature typically
encompasses multiple use cases or stories, each describing something a user could do
with elements of that feature. Finally, agile projects describe an epic as a complete
user workflow or large body of work that comprises multiple user stories and can
encompass several product features (Adams, n.d.). An epic might begin as a particu-
larly large user story that must be split into a set of smaller stories to plan its incre-
mental implementation.
During requirements discussions, the BA should remain aware of these abstrac-
tion levels. Sometimes a user will describe some functionality that the BA recognizes
as being just a portion of a use case, feature, or epic that calls for further explora-
tion. In other cases, as with the “editing directives entered by voice” example, the BA
realizes that a presented requirement is a much bigger request that must be broken
down further for understanding and planning.
To manage the complexity, avoid mixing high-level and detailed requirements
items as if they’re all the same type of thing. Requirements development involves the
progressive refinement of details. Start with just enough information about epics,
features, or use cases to allow relative prioritization and further analysis. Then, flesh
out the specifics before implementation so that the project participants have a clear
understanding of what to build and how it should function. Decompose high-level
objects into similar levels of granularity—individual pieces of functionality—to
understand their impacts, more accurately estimate the effort needed to build them,
and plan an implementation sequence. Alternatively, you can aggregate detailed
requirements into higher-level groups for easier digestibility. Hierarchically structur-
ing requirements specifications lets readers get the level of understanding they need
at any given time.
Requirement Attributes
A requirement statement describes some desired stakeholder need or solution func-
tionality, but that’s just a starting point. To fully understand the requirement, you
should specify several additional attributes. Attributes that will meet most projects’
needs include these (Alexander and Stevens 2002, Robertson and Robertson 2013,
Wiegers and Beatty 2013):
• ID (How is this requirement identified with a unique and persistent label and/
or name?)
• Author (Who wrote the requirement?)
• Origin or source (Who requested the requirement, or did it arise from a busi-
ness rule, use case, or some other piece of information?)
• Rationale (Why is it included? What’s the stakeholder’s goal or the business
justification?)
• Priority (How important is the capability, how urgently is it needed compared
to others, and why?)
• Status (How is the requirement proceeding through its life cycle from being
drafted to approved—or rejected—and then implemented, verified, deferred,
or deleted?)
• Validation method (How will we ensure that it’s a correct and necessary
requirement that will satisfy a stakeholder’s need?)
• Acceptance criteria (How can we determine whether the requirement was cor-
rectly implemented?)
• Version history (How has the requirement evolved over time?)
• Estimate (How much work will it take to implement the requirement?)
• Dependencies (What other functionality or preconditions must be in place for
this requirement to work correctly?)
Don’t get carried away when choosing which requirement attributes to record.
Start with a minimal set, not with a long list that people simply won’t populate or
use. Add more when the team will benefit from them.
It’s relatively easy to manage a suite of requirement attributes when they’re stored
in a spreadsheet, database, or requirements management tool. It’s clumsier—and
bulkier—when requirements reside in a document, on index cards, or on sticky notes.
Choose a storage structure that will accommodate the attributes you decide are impor-
tant, as described in Practice #15, “Organize requirements in a structured fashion.”
Nonfunctional Requirements
Quality attributes and other nonfunctional requirements also can be specified using
structured patterns. Certain patterns let you specify desired quality characteristics
more precisely than is possible using fuzzy natural language. One such technique is
called Planguage, which is derived from “plan” and “language.” Developed by Tom
Gilb, Planguage provides an extensive set of keywords that invite careful thinking of
just what’s desired and ways to express those desires exactly (Simmons 2001, Gilb
2005, Wiegers and Beatty, n.d.b). Table 5.1 lists the core Planguage keywords needed
for specifying quality attributes, using an availability goal to illustrate.
Table 5.1 Core Planguage keywords for defining quality attribute requirements
Keyword Meaning
Tag A unique label for the requirement, expressed hierarchically:
“Availability.MaintenanceDowntime.”
Ambition A textual description of the intent for the requirement: “Perform scheduled system
maintenance and install upgrades in a way that minimizes the impact on users affected
by the downtime.”
Scale The measurement method that quantifies the requirement: “Minutes between when the
system goes offline and when full functionality is restored.”
Meter How the measurement is performed: “Readings from the host computer’s system clock
upon going offline and access being restored.”
Goal A committed target value that will satisfy the requirement: “Average of no more than 1
hour per week.”
Stretch A more aggressive target value that achieves greater stakeholder satisfaction: “Average
of no more than 1.5 hours per month.”
Wish A target value that reflects the stakeholder’s desire in an ideal, yet realistic, world:
“Maximum of 4 hours per year.”
It takes more thought and more space to write quality attribute requirements
using Planguage than to write a simple—if unrealistic—statement like “The system
shall be available 24/7.” For products that demand especially thorough and rigorous
specification, Stephen Withall (2007) describes many patterns for precisely specify-
ing functional, data, and quality requirements.
Recording requirements in consistent styles makes it easier both for the writer to
structure the information and for the reader to access and apply it. As always, any-
thing that facilitates effective requirements communication is good; anything that
inhibits it is evil.
Related Practices
Next Steps
Requirements Templates
If you’re recording requirements in documents, adopt standard templates that your
organization finds effective. If you work on different classes of projects—large and
small, developed in-house and outsourced, low risk and high risk—create a family of
templates so that each team can select the most suitable one for its project.
Figure 1.1 identified three documents—or more accurately, containers—to hold
various groups of requirements information:
• Vision and scope document, for business requirements (see Figure 2.2 for a
template)
• User requirements document
• Software requirements specification, for solution requirements
These containers hold different information, although a smaller project can certainly
combine them into a single deliverable. As mentioned in this chapter’s introduction,
these containers can take on various physical forms. We’ll call those containers docu-
ments here for convenience. Regardless of how you choose to store it, every project
needs to collect and manage the kinds of information that appear in templates for
those documents.
Thoughtfully selected templates provide several benefits. The template sections
provide slots to hold various pieces of information. Organize those sections to ben-
efit the people who must access the information rather than for the convenience of
whoever writes it. Templates also let members of the development team know where
to find the information they need.
One challenge of any requirements process is identifying the holes where infor-
mation is missing. A well-structured template serves as a checklist, a reminder to
avoid overlooking some topic. The BA populates sections of the template as they
encounter information during requirements development, not from top to bottom.
As time goes on, the BA might notice that some section—perhaps “Limitations and
Exclusions” in the vision and scope document—is empty. This raises some questions.
Are there any limitations or exclusions? Has the BA not yet had the conversations
they should have with some people to explore that issue? Did they put information
about limitations and exclusions somewhere else? If there’s nothing to say about a
topic, leave the section in place but insert a comment like “No limitations or exclu-
sions have been identified” so that the reader knows it wasn’t simply overlooked.
A good template is comprehensive, suitable for use on many projects. Use a
“shrink-to-fit” philosophy when adapting templates to meet each project’s needs
(Wiegers 2022). Tailor your templates as needed with modifications such as these:
• Rearrange the template sections so that the deliverable makes the most sense
for its readers
• Combine some documents or split the template into multiple documents if
that helps to manage size, complexity, communication, or document storage,
access, and revision
1. Introduction
1.1 Document Purpose
1.2 Document Conventions
1.3 Project Scope
1.4 References
2. Overall Description
2.1 Product Perspective
2.2 User Classes and Characteristics
2.3 Operating Environment
2.4 Design and Implementation Constraints
2.5 Assumptions and Dependencies
3. System Features
3.x System Feature X
3.x.1 Description
3.x.2 Functional Requirements
4. Data Requirements
4.1 Logical Data Model
4.2 Data Dictionary
4.3 Reports
4.4 Data Integrity, Retention, and Disposal
5. External Interface Requirements
5.1 User Interfaces
5.2 Software Interfaces
5.3 Hardware Interfaces
5.4 Communications Interfaces
6. Quality Attributes
6.1 Usability
6.2 Performance
6.3 Security
6.4 Safety
6.x [others]
7. Internationalization and Localization Requirements
8. Other Requirements
9. Glossary
10. Analysis Models
Figure 5.2 A rich software requirements specification template (adapted from Software
Requirements, 3rd Edition by Karl Wiegers and Joy Beatty).
document, which serves as a user (or stakeholder) requirements specification. But the
common deliverable that pertains to all software projects is the SRS. Remember, this
need not be a traditional document; it’s a container for the information that specifies
the solution’s details.
The various structures in which you can store requirements—documents, spread-
sheets, requirements management tools, wikis, notecards, or something else—all
have their advantages and their limitations. Whichever method you select should
have several properties.
• Readers should understand how the requirements are organized, where to find
what they’re looking for, and how to use the collection. Include a brief descrip-
tion to this effect, as in section 1.2, Document Conventions, in the template in
Figure 5.2. A table of contents also is helpful.
• The storage format should be easy to modify as requirements come, go, and
evolve.
• Users should be able to search for the information they seek.
• Individual requirements need unique, persistent identifiers so that people can
refer to them and link them to other project elements like tests. A hierarchi-
cal numbering scheme is fragile because a requirement’s identifier can change
when other requirements are inserted or deleted above it. Identifiers based on
a hierarchical labeling scheme—such as Password.Temporary.Request—can be
unique, persistent, and meaningful.
• The structure should let you define various requirement attributes that pro-
vide a richer understanding of each item, as described in Practice #14, “Write
requirements in consistent ways.”
• Define a requirements classification schema so that you can store distinct kinds
of requirements separately with their own user-defined attributes. This schema
echoes the headings found in a document template.
Don’t expect that simply buying an RM tool will solve all your requirements prob-
lems. Converting from your previous requirements structure to using a tool involves
both a technical and a cultural transition (Wiegers and Beatty 2013). The team will
need to learn how to make the tool work for them: when to enter information into
the tool; who can create, modify, and access the contents; get into the habit of using
the tool as the authoritative requirements repository; keep the contents current; and
so forth.
Remember that these are requirements management tools, not requirements
development tools. They won’t help you identify your stakeholders, ask the right
elicitation questions, write error-free requirements, or find missing requirements.
Invest in an RM tool only after the team has confidence in those fundamental busi-
ness analysis skills.
When you’re initiating a new project, take some time to think about the most
effective and efficient way to organize, store, and communicate your requirements
information. Decide what details to record about each type of requirement. All pro-
ject participants should be able to readily find the information they need and update
it when necessary. This will help keep everyone working from the same solution
description toward a successful outcome.
Related Practices
Next Steps
1. Compare your project’s requirements set with the SRS template in Figure 5.2.
Identify any categories of information that you’re not currently collecting and
storing. If your project team would find the information in those categories valu-
able, modify your storage—and perhaps elicitation—processes to include them.
2. Assess the benefits and limitations of your current requirements storage mecha-
nism. Can everyone quickly locate the information they need? Is the repository
updated when things change so that everyone always knows what the current
requirements are? If you discover any issues with your current approach, mod-
ify it to reduce inefficiencies and avoid potential errors in the future.
Karl’s friend Jeremy visited his local blood bank’s website and made an appointment
to donate blood later that day. However, when Jeremy arrived at the blood bank, the
staff told him that they didn’t take same-day appointments, even though the website
let him make such an appointment. He was annoyed.
Jeremy’s experience illustrates the problems that can arise when software fails to
properly enforce or comply with established rules. The blood bank had a policy—
no same-day appointments—but the appointment website’s designer didn’t make
the software comply with the policy. Therefore, it had to be enforced manually (and
inconveniently) by the blood bank staff.
This policy is an excellent example of a business rule. It’s not a software require-
ment, as it applies to manual operations too. If Jeremy had called the blood bank to
make an appointment for later in the day, some staff member would have told him,
“Sorry, we can’t make same-day appointments.” The policy should have served as
the origin of functional requirements for the blood bank’s appointment system. Eve-
ryone needs to know about the relevant business rules and must interpret and apply
them in the same way. In this case, someone dropped the ball.
The idea of a business rule goes far beyond the obvious domain of corporate
business operations and their associated information systems. All enterprises oper-
ate under business rules, although perhaps by other names. Even games have rules
regarding what actions the players and characters may and may not perform.
Business rules can be classified in several ways (von Halle 2002). Table 5.2 defines
several common rule categories. Many rules impose constraints on how the business
operates, including on data values and relationships, which can influence database
design.
You can write business rules according to various patterns, depending on what
type of rule it is. Constraints often follow this pattern (Morgan 2002):
<subject> must [or may not or may only] <constraint>.
A retail store might have these refund policies for customer returns:
RET-1. A customer must present a receipt to obtain a refund on a returned product.
RET-2. Only store credit may be issued for products purchased more than 30 days prior
to being returned.
RET-3. Refunds may not be issued for products purchased more than 90 days prior to
being returned.
Every rule should have a unique identifier so that people can refer to it unam-
biguously rather than duplicating the rule wherever it applies. Pointing to the
master instance of the rule instead of copying it eliminates the possibility of gener-
ating inconsistencies. The pointer approach also automatically updates all affected
requirements if a rule is updated.
Record and maintain business rules separately from project-specific documen-
tation. When rules apply to the organization as a whole, consider them to be an
enterprise-level asset. This also facilitates reusing the rules in a consistent way across
multiple software systems that they affect.
In either phrasing, the rule constrains who can attend the trade show, imposing
specific conditions that suppliers must satisfy before they can get in the door. It’s a
good general practice to avoid negatives (“may not”), and particularly double and
triple negatives, in both rules and requirements whenever possible. Try to recast neg-
ative statements as positives, which often brings in the constraining word “only.”
Keep in mind that asking stakeholders “What are your business rules?” during
an elicitation discussion won’t be too helpful. Stakeholders aren’t thinking, “Is this
piece of information a business rule, a user story, or what?” They don’t care; it’s just
important information they need to convey. It’s up to the BA to sort through the
diverse input received during elicitation, specify each item in an appropriate style,
and store each in the right container.
You could write out all those rules in natural language, but displaying them in the
form of a decision table like the one in Figure 5.3 is easier to understand (Gottesdi-
ener 2005, Wiegers 2020a). For example, rule DISC-5 states that if the order total is
in the $50–$100 range, inclusive, and the customer is a club member, then they get
a 10 percent discount and free shipping. Representing business logic with decision
tables helps avoid boundary value problems and missing logical combinations. The
compact table format is easier to create, read, and modify than a repetitive set of
textual rules. A decision table—or its visual counterpart, a decision tree—also facili-
tates test design to ensure that no condition combinations are missed.
Figure 5.3 A decision table shows how various combinations of conditions lead to different
actions or outcomes.
If developers know which rules or what types of computations will change fre-
quently, they can make design choices that lead to easier modifications. Consider
airline flight fares, for example. Each airline has countless policies and algorithms
regarding how to calculate ticket fares and related fees, and they change all the time.
Maybe the passenger must pay fifty dollars to check their first piece of luggage,
unless the passenger has a business-class or first-class ticket, has premium frequent-
flier status, purchased a promotional upgrade package, or who knows what else.
Designing a program to handle such volatility by simply updating database entries
makes it a lot easier to evolve than if those rules are embedded in the code.
You can manage a small set of business rules and their connections to a software
system manually, but more complex situations require automated support. If you use
a requirements management tool, you can use a rationale or origin attribute to trace
derived requirements to their source business rule wherever it’s stored. Business rules
engines let you store and manage large rule sets (Malak 2022). You can tie the rules
to business workflows, specific data objects, or decision logic. The engines assist the
software with making decisions by pulling together all the rules that apply to a spe-
cific scenario, such as deciding whether to approve a bank customer’s loan appli-
cation. Employing a business rules engine helps to keep business logic from being
entwined with application code.
Business rules start as policies for how the business operates, not as software
requirements. Many of them lead to functional and data requirements, though.
Rules are therefore a critical piece of the requirements puzzle on every project.
Related Practices
Next Steps
1. Identify all the pertinent business rules for your current application so that you
know how they affect the requirements and design approaches. Record which
functional and data requirements trace back to specific rules as their rationale
or origin.
2. If other systems supply data to yours, or vice versa, look for any business rules
from that application that may affect your solution.
3. If any of your business rules use combinations of multiple conditions to deter-
mine an outcome, create a decision table to ensure that you have captured all
possible combinations and their actions or outcomes.
4. Establish a storage mechanism and format for recording your organization’s
business rules. Think of a scheme for uniquely identifying business rules so
that team members can refer to them in various documents and locate the cor-
rect rules to guide their construction and testing activities.
Synchronizing Communication
In face-to-face conversations, we rely on context, shared experience, and body lan-
guage to ensure that people reach a mutual understanding. If you’re talking to some-
one who furrows their brow when you mention a certain word, you can tell they’re
puzzled and promptly clear up the confusion. That doesn’t work with written
communication or when speakers can’t see one another; we must use more precise
language.
While reviewing a requirements specification for a machine to perform chemi-
cal analyses, Karl noticed that it referred to chemical samples in some places and to
runs in others. When he inquired about the difference, the author acknowledged,
“They’re the same thing.” A requirements specification is not a good place to crea-
tively vary your language to try to hold the reader’s interest. Karl recommended that
they pick a single term, define it in the glossary, and use it consistently. Otherwise,
every reader will confront that same question: Are these two things the same or dif-
ferent? The glossary should include synonyms that different stakeholders might use
in their workplace, but the requirements documentation should use terminology
consistently.
Two terms in another specification looked like they might mean the same thing.
When Karl asked, though, he learned that they had subtle, yet significant, distinc-
tions. People needed to use the right term to convey information accurately. Precise
glossary definitions would have helped there, as well.
Depending on the business domain, there could be a lot of synonyms and near-
synonyms. If your business is a physical or online store, is there a difference between
a customer, visitor, buyer, purchaser, and member? Do all the departments in your
organization think of a customer in the same way? Does your restaurant differentiate
between guests, customers, patrons, and diners? If you’re an employer, how do you
refer to the people who work for your company: employee, associate, team mem-
ber, staff member, cast member? Are an order, request, cart, and ticket the same
thing? It’s important to carefully distinguish such terms where they appear in your
business and software documents. A glossary serves as the definitive resource for all
that information, aids database design, and can even help developers make their code
more understandable.
Glossaries can ensure that the same term or phrase means the same thing to every-
one. On one of Candase’s projects, the BA team had tagged certain requirements as
being “no regrets” work. This term meant that, even though the team didn’t know all
the requirements yet, they knew they’d need that set and would not regret building
them now. However, release after release, the vendor who was developing the soft-
ware kept deferring these no-regrets items. Eventually, Candase’s team discovered
that the vendor interpreted “no regrets” to mean there would be no regrets if they
didn’t deliver those requirements and so left them at the bottom of their priority list.
An entry in the glossary—or perhaps even having a conversation rather than making
assumptions—could have avoided all that confusion.
Data models are good places to look for potential glossary entries. The boxes in a
data model represent important nouns, objects of interest to the project. The specific
attributes of each such object appear in the data dictionary, but the corresponding
glossary entries will tell you what they mean. On one project to build a learning
management system, people were using the terms training, curriculum, course, and
class. Discussing these closely related items with the help of a data model clarified
the differences between them and revealed that some were synonyms but others were
not. Storing such knowledge in a glossary prevents future confusion.
Other important terms have domain-specific meanings that differ from how the
words are used in another context or in daily conversation. Some terms could even
have multiple meanings within the application’s context: a printer is both an elec-
tronic device and a person who prints something. A single abbreviation or acronym
can stand for many things, yet all the project participants need to understand which
one pertains to your project context. Figure 5.4 illustrates some entries from a pro-
ject glossary.
Term Definition
Active Directory A group of users that can be tied to application permissions
(AD) Group
Depreciation A reduction in the value of an asset with the passage of time, due in
particular to wear and tear
NPV Net Present Value: the value of a sum of money today, in contrast
to some future value it will have when it has been invested at
compound interest, net of the initial investment amount
Figure 5.4 A portion of a project glossary that defines important terms, abbreviations, and
acronyms.
The effort you put into building, maintaining, and referring to a glossary helps all
those who write, discuss, or do work based on the requirements stay in sync. As new
people join your team, the glossary can save the time otherwise spent explaining the
same things over and over. A glossary is an investment in clear and effective commu-
nication, which you’ll recall is an overarching goal of all requirements work.
Related Practices
Next Steps
1. Define the specialized terms that pertain to your application domain. Ask
knowledgeable project participants, business collaborators, and others to
review the definitions for accuracy. Invite some prospective users of the infor-
mation who aren’t already expert in the vocabulary to review the terms and
point out any they don’t fully understand.
2. Incorporate the terms from step #1 into a project glossary and make it avail-
able to all those who need to know the definitions.
3. Use your project glossary as the starting point for an enterprise-level glossary
that could apply to multiple projects. Solicit contributions from other projects.
4. Create a supplemental glossary with definitions of various requirements engi-
neering and business analysis terms. Those in Table 1.1 provide a good starting
point, but your local terminology might be different. Share these definitions
with user representatives, new team members, and other participants who
don’t already know the terminology.
Requirements Validation
By this point in the requirements development process, you understand the project’s
business objectives. You’ve elicited requirements for some portion of the solution
from various stakeholders, analyzed them, and recorded those requirements in
appropriate forms. The team is now ready to begin development on that portion,
right? Maybe.
Yes, you have some requirements—but how do you know they’re the right require-
ments? Are you confident they’ll meet the users’ goals and address the business situ-
ation that led to launching the initiative in the first place? You could have a set of
beautifully written and modeled requirements that appear to be crystal clear, com-
plete, and unambiguous—and yet they could still be wrong. Requirements validation
activities assess whether a solution that’s based on an approved set of requirements
would indeed satisfy stakeholder needs and achieve the intended business objectives.
A software team can confirm that the code passes its unit, integration, and system
tests, that the code correctly implements the design, and that the design addresses all
the requirements. Those are all software verification activities. However, the team can’t
confirm on their own that they have the correct solution requirements. That is, they
cannot validate the requirements. Colloquially put, verification checks to see whether
you did something right; validation checks to see whether you did the right thing.
One validation technique, of course, is to build the product and then collect
customer feedback to see how you did. That’s expensive and time-consuming. Alter-
natively, you can build just a portion of a solution, such as the first iteration or two
of an agile team’s work, and use it to learn more from your users and make course
corrections. Cheaper yet is to develop prototypes to explore requirements uncertain-
ties. But there are ways to validate requirements without writing code or waiting
until the end of a development cycle.
131
Validation is a continuous process that begins when you have some requirements
in hand. Requirements validation is interwoven with the ongoing elicitation, analy-
sis, and specification activities. The goal is to correct problems with requirements
early to reduce the risk of performing unnecessary development rework. The fuzzier
the business problem and the more uncertain the solution requirements, the more
important it is to validate those requirements before the team invests too much
effort in implementing them. This chapter describes two powerful ways to validate
requirements:
Requirements Reviews
Peer review of documented requirements is a powerful quality practice. In a peer
review, colleagues of the person who created a requirements artifact examine it care-
fully for potential defects and other issues. A business analyst might invite another
analyst to review their requirements because the other BA knows what kinds of
problems to look for. However, that other BA can’t tell if the requirements properly
address the business need. To validate the requirements, you also need reviewers who
supplied the information that led to those requirements, such as
People who must base their work on the requirements also make good review-
ers even if they can’t validate the requirements’ correctness for meeting stakeholder
needs. Architects, software and user experience designers, data analysts, developers,
and testers will all find distinct kinds of issues. Testers are particularly skilled at
detecting unverifiable requirements, ambiguities, and missing information. These
quality reviews are important. You can’t validate requirements that are unclear,
inconsistent, or ambiguous because you don’t know exactly what they mean.
Teams can review requirements specified in any form, in several ways
(Wiegers 2002).
Any requirements review is tedious. However, they can save considerable time
later by preventing unnecessary rework and avoiding customer disappointment.
To make your reviews more effective, learn about the challenges of requirements
reviews (Wiegers 2020b) and factors that can help make them successful (Wiegers
2019). Combine quick, incremental informal reviews during requirements develop-
ment with inspections that closely examine the higher-risk requirements.
The tests you write against requirements are black-box tests. You don’t need
to know anything about the internal structure of a potential solution—indeed,
you don’t have a solution yet. Your tests are at a conceptual level, independent of
implementation and user interface specifics. You can use these conceptual tests
to validate any form of requirements representation, including text, models, and
prototypes.
During requirements validation, work with your user representatives to under-
stand how they would conclude whether a solution was acceptable for their purposes,
and then write acceptance criteria, including tests, to document that information.
Trace each test back to its corresponding requirement—a user story, use case, func-
tional requirement, or quality attribute requirement. Tracing requirements to tests
helps if a requirement changes, as the trace data points to those tests that might have
to be updated.
Acceptance Criteria
Agile teams often write user acceptance criteria in the form of acceptance tests to
define a user story’s details, rather than documenting the functional requirements
that would realize the story. This technique is an element of Test-Driven Development
or TDD (Beck 2003), Acceptance Test-Driven Development or ATDD (Hendrickson
2008), Behavior-Driven Development or BDD (North 2006), and Specification by
Example or SBE (Adzic 2011). Users who contribute to this activity might find tests to
be a helpful way to envision whether a story will meet their needs, which is the essence
of requirements validation. Acceptance criteria could also include other conditions
the solution must satisfy beyond passing its tests.
A popular pattern for writing acceptance tests uses the Given–When–Then pat-
tern (Fowler 2013):
Any or all of the three clauses in this pattern could be compound, with multiple
preconditions, actions, and/or consequences separated by AND. However, use cau-
tion if AND appears in the When clause of a Given–When–Then acceptance test.
A compound action often means that some information in the When clause really
describes preconditions that should more properly appear in the Given clause. Can-
dase has found this situation to be especially common for acceptance tests that don’t
involve users but involve data preconditions and system event actions.
Table 6.1 shows several acceptance tests for this story, written in the Given–When–
Then format and laid out in a tabular format. These tests flesh out the expected
behaviors associated with that user story just as functional requirements do. Require-
ments and tests are two complementary ways to describe the same solution knowl-
edge: what the team is supposed to build and how it is supposed to behave.
Table 6.1 Several acceptance tests for a user story in the Given–When–Then format
ID Given When Then
AT-1 I am logged in to the I request to view A graph of my total article view statistics
platform AND I have statistics from the past 30 days is displayed
articles published
AND a list of statistics (views, reads, and
likes) for individual articles is displayed
in reverse chronological order by
publication date
AT-2 I am logged in to I request to view A message appears: You haven’t
the platform AND I statistics published any articles yet
do not have articles
published
AT-3 Statistics are I request to change The statistics display toggles between
displayed the sort order for any ascending and descending order based on
statistics column the values in the selected column
Another way to document tests is in the form of a decision table (Wiegers 2020a).
As we saw in Practice #16, “Identify and document business rules,” a decision table
is an efficient way to depict all the combinations of conditions that can lead to vari-
ous outcomes. Decision tables help ensure thorough test coverage without writing a
lot of bulky and repetitive text.
5. Sales rep
adds requested N Customer
item to the cart End Process accepts
quote?
8. Sales rep
converts the
quote to an
order
Figure 6.1 A portion of the process flow for a sales representative adding items to the cart
for a customer who’s on the phone.
If you attempt to trace the path this test describes on the process flow in Figure
6.1, as shown with the gray highlight, you can’t do it. The diagram says that if the
requested items are not in stock and the customer doesn’t want to order more items,
thereby leaving the cart empty, the sales rep still sends the final, empty quote to the
customer. Clearly, that’s an error in the model and in any textual requirements that
align with the model.
The BA redraws that portion of the model to look like Figure 6.2, to check whether
the cart contains items following the end of the customer–sales rep dialogue. Now
you can trace that test’s path correctly on the process flow diagram, ending the sales
process instead of sending the customer a meaningless quote. Finding errors before
the team writes the code and the customer encounters a problem is a good thing.
Customers are never in a good mood when they report a problem.
Y N
N Customer
End Process
Pro accepts
quote?
8. Sales rep
converts the
quote to an
order
Figure 6.2 A revised portion of the process flow that corrects an error found by
“executing” a test on the model.
yield the same information as any other. If your requirement describes how to pro-
cess inputs of integers from 1 to 100, inclusive, then all integers in that range make
up a single equivalence class. You can choose any one of them for a test of the whole
class. Other equivalence classes would be integers outside this range and nonintegers.
Boundary value analysis examines system behavior at the partitions between
equivalence classes that are based on numeric ranges. If you’re testing the range of
integers from 1 to 100, inclusive, boundary value analysis would include tests with
values 0, 1, 2, 99, 100, and 101. Four of those values—1, 2, 99, and 100—are in the
same equivalence class, but boundary value errors are so common, both in require-
ments and in code, that it doesn’t hurt to check those areas more carefully.
Initiation Delivery
Initiation Delivery
Development Cycle Timeline
Figure 6.3 Reallocating some testing effort to requirements validation reduces late-stage
testing and rework for a net time savings.
Related Practices
Next Steps
1. Identify portions of your requirements that are more likely to have problems
than others. Perhaps those sections didn’t have adequate stakeholder input or
are especially complex or risky. Select some people who could provide insight
into how to assess those areas. Invite them to review the requirements so that
the team has confidence that they’ll meet the stakeholders’ needs.
2. When you write some new requirements, ask a tester to create acceptance tests
from them. Walk through those tests and map them to your written require-
ments and analysis models to look for discrepancies.
3. Identify the equivalence classes for testing a particular feature in your applica-
tion. See if certain test conditions could be satisfied efficiently using just one
test.
Requirements Management
The previous chapters described eighteen practices that lay the foundation for a suc-
cessful project and help you develop a set of high-quality solution requirements.
Once you have those fine requirements in hand, now what happens to them? Require-
ments management is the subdomain of requirements engineering that deals with
how requirements are used on the project and how the project responds to evolving
needs.
In an ideal world, the development team would take the set of requirements devel-
oped for some portion of the product, implement them into a solution, and then
move directly on to the requirements for the next portion. In the real world, require-
ments are dynamic. Understanding deepens and changes, markets and businesses
evolve, and new requirements come along. Some planned requirements are deferred,
others turn out to be incorrect or unnecessary, and stakeholders adjust priorities.
The BA and development team must respond to this ongoing stream of modifica-
tions, keeping everything straight along the way. Major requirements management
activities include these (Wiegers and Beatty 2013):
141
While all these activities are valuable, many teams will perform them selectively. For
instance, it’s easy to trace tests back to individual functional requirements, use cases,
or user stories. However, building a complete requirements traceability matrix takes
effort and discipline (Wiegers and Beatty 2013). It requires tool support, established
processes, and time. Most projects probably won’t do full traceability, although it is
required for safety-critical products that must be certified prior to release and other
solutions that are subject to regulatory requirements. Certifiers and other stakehold-
ers need to know that each bit of functionality was designed, coded, and tested as
intended. Full requirements tracing for your average business information system or
phone app is desirable—and we recommend it for most projects—but less essential.
This final chapter addresses two requirements management practices that do
affect every project:
As the business analyst, you’ve developed a set of requirements and confirmed that
they describe a solution that will address your business objectives. The next step is
for the development team to identify a subset of those requirements that they can
commit to implementing in a specific time frame or development cycle: a require-
ments baseline.
complete, and will contribute to achieving the desired business outcomes. Baselin-
ing low-quality requirements doesn’t do anybody any good, so consider the factors
that let you judge whether a set of requirements is ready to go before you baseline
them (Wheatcraft 2015). Any changes to requirements that are requested after they
are baselined must go through the team’s change control process. Approving those
changes establishes a new baseline (see Practice #20, “Manage changes to require-
ments effectively”). Defining a requirements baseline enables
Establishing a requirements baseline does not mean change won’t happen; it will.
However, a baseline assures everyone involved that the team can move forward with
development at a low risk of major changes (Inflectra 2020).
A baseline can be as small as a two-week iteration or as large as a release or even
an entire solution scope. The act of baselining can be informal or formal. The size or
formality is less important than having the stakeholders explicitly agree on the scope
of the baseline and that the team is ready to proceed with implementation. The base-
line for a portion of a solution could include a mix of software functionality, manual
operations, and business processes. All the interrelated elements must be delivered
for that part of the solution to be useful.
You can also identify a scope baseline using a feature tree or in a feature roadmap
(Wiegers 2006). Figure 7.1 is a revised version of the feature tree from Figure 4.2
for the restaurant online ordering site. The circled numbers next to certain level 2
and level 3 subfeatures indicate their planned release number; subfeatures that are
not numbered inherit their parent feature’s release number. The baseline for the first
release, then, consists of all the features and subfeatures tagged with the number 1.
As illustrated in Figure 7.1, even though the team will build the site and integrate
it with the existing restaurant order placement system and menu repository in the
first release, certain subfeatures under Order Placement and Online Menu will be
deferred to later releases. Other ways to depict the scope of the various releases
with the feature tree include using layers or colors in a tool like Microsoft Visio or
Lucidchart.
Order Online
Placement Menu
Order Custom Standard
View stored building menu Manage menu display
orders
Order management specials
storage Delete
menu Dynamic menu
Edit quantity updates
Retrieve Order
stored order editing
Edit
Order Remove items menu items
Create
cancellation menu Restaurant
Add items
Online
Ordering
Change Site
password Enter and store
Payment payment
history method
User account User
reporting
creation account
Delete Edit user management
account account
Payment
Statistics submission Manage stored Payment
Handle payment
reporting methods
payment methods
error
Block
account Account
User administration Online
Accounts Order
Payment
Figure 7.1 You can overlay planned iterations, releases, or requirements baseline versions
on the elements in a feature tree.
Define Define
Baseline 3; Baseline 4;
Define Define Deploy Deploy
Baseline 1 Baseline 2 Baseline 1 Baseline 2 Etc.
Develop Test
Baseline 1 Baseline 1
Develop Test
Baseline 2 Baseline 2
Develop Test
Baseline 3 Baseline 3
Develop
Baseline 4
Time
Figure 7.2 A BA could be managing multiple baselines concurrently to support both
development and testing efforts.
Some teams build their solution in defined development iterations but do not
deliver the product from each iteration to users for any of several possible reasons.
Instead, they integrate the outputs from several iterations and deploy the resultant
solution as a product release. In that situation, you might define an overall require-
ments baseline for the release, as well as defining a baseline of allocated and approved
requirements for each iteration.
Figure 7.3 shows how this approach might work for a release that incorporates
three iterations. The product owner or BA may modify stories or move them between
iterations as long as they’re still part of the overall release baseline. Keeping the
release and iteration baselines updated would indicate the stories currently planned
for each iteration. There’s a chance that what the team delivers won’t exactly match
what was planned for a particular baseline; in reality, that’s just how software devel-
opment works. Therefore, it’s a good idea to update the initial requirements baseline
documentation (the plan) to reflect what the team actually built (the reality) when-
ever they differ (Hokanson and Szymanski 2022).
Define Deploy
Release Release
Baseline Baseline
Iteration 1
Test Release
Iteration 2 Baseline
Iteration 3
Time
Figure 7.3 Multiple iteration baselines can be bundled into a release baseline.
Related Practices
Next Steps
1. Work with your development team and key stakeholders to understand your
current requirements baseline. If it is not documented, record the contents
in some fashion. If the team has begun development of a baseline that was
not approved, work with the relevant stakeholders to gain approval, even
retroactively.
2. If your team hasn’t already done so, define a process for baselining a set of
requirements.
3. As new changes come into scope, be sure to update the appropriate baselines
so that they remain accurate descriptions of what the team is implementing.
As we all know, change happens. Even the smartest BA with the most information at
their disposal, following all the practices in this book, cannot specify perfect require-
ments. Even if they could, those requirements are only perfect at a particular point in
time. Therefore, managing changes is one of the most important things a BA does
once they have crafted a set of requirements.
Effective requirements change management ensures that the team delivers the
right solution at the right time even though they didn’t know everything up front.
Resistance to change, especially the attitude that there will (or can) be no further
changes once some requirements are baselined, can result in unusable features, dis-
appointing releases, and unhappy stakeholders. Baselined doesn’t mean frozen.
Suppose your agile team baselined the requirements for its current iteration at
its planning meeting. Four days into the iteration, someone discovers that the logic
for one story is incorrect. Perhaps someone made an assumption that turned out to
be false or new information arrived. What do you do, how do you decide, and who
decides? You have several options.
You could ask the developer to accept a change to the story if they haven’t yet
started or finished it, assuming the effort doesn’t cause the story’s implementation
to extend past the iteration. Alternatively, you could complete the iteration with this
story included, even though it’s wrong, and fix it in a future iteration. Or you could
stop development on that story, omitting it from the iteration’s codebase. If work
has not yet begun, you could remove the story from the current iteration, correct the
logic error, and implement it in a future iteration. Your choice of action depends on
the states of the story and the iteration, how critical the story is, dependencies other
stories have on this one, the impact of delivering a flawed story, and the policies in
your change control process.
Your goal is to manage requirements changes as they arise with as little negative
impact as possible on the team’s development progress. Achieving this goal requires
multiple activities:
than twenty additional countries, each with its own currency. Consequently, she gen-
eralized the requirement such that the currency to use when generating the invoice
was defined via a configuration. Adding new countries then required only data and
configuration changes, which are faster and simpler to make than requirement or
code updates.
Plans for iterations, releases, or entire projects should always incorporate contin-
gency buffers to let the team accommodate a certain amount of change and growth
without disrupting schedules and commitments (Wiegers 2022). Feeding buffers are
placed at the end of a series of dependent tasks or an iteration to provide some slack
time. A project buffer goes at the end of the schedule for a release or an entire project.
An agile project can reserve some capacity in each iteration, as well as adding a con-
tingency buffer iteration to the end of the iteration sequence (Cohn 2006, Thomas
2008). Without buffers, the first change that comes along (or the first estimate that
turns out to be low, or the first person who departs the team, or the first risk that
materializes into a problem, or...) could hamper delivery commitments. Change
always has a cost. Even taking the time to discuss a proposed change and then decid-
ing not to implement it carries a price tag.
• Are changes requested against a specific baseline, or will the appropriate base-
line be determined as part of the assessment?
• Who assesses the size and impact of a change request?
• What criteria are used to approve or reject a requested change?
• Who can approve the change and allocate it to a baseline?
• How is information about the change stored once it’s either approved or
rejected?
• How is the decision communicated to those affected?
The change control process should be as lightweight and quick as possible, pro-
viding the right people with the necessary information to let them make good busi-
ness and technical decisions (Wiegers and Beatty 2013). A small change or changes
on a project with a small, colocated team can be handled simply. Perhaps the product
owner and a developer just agree to modify a story in the current development itera-
tion. In that case, the PO “submits” the change through a conversation, the PO and
developer are the approvers, and the change is incorporated as a revised story or new
acceptance criteria.
Changes on complex, multiteam, or distributed projects can have a broad impact
and therefore demand a more formal, multistep process. Start with a simple but effec-
tive process; add complexity and layers of approval only when you find the project
needs it. The decision makers constitute a change (or configuration) control board or
CCB, which could range from just one person to a group including representatives from
customers, development, testing, marketing, management, and possibly even finance.
Figure 7.4 shows a semiformal change control process that Candase has used.
Most commonly, a business partner sent a change request through the team’s messag-
ing channel to initiate the process. The development team, PO, and relevant business
partner served as the CCB. They considered each request based on its size, whether
the team could implement it without trade-offs to defer other stories, and whether
any identified trade-offs were acceptable. This evaluation and decision process typi-
cally took from one to five days to complete, depending on the change’s complexity.
Change requests go through a life cycle of possible statuses (Wiegers and Beatty
2013). Each request begins with the status of submitted, after which it might be evalu-
ated for impact. The decision makers either approve or reject it. An approved change
eventually is incorporated into the solution, at which point it is verified and finally
closed. The submitter could cancel a request at any point in the process. Tracking
requirement change statuses makes sure that none get lost in the shuffle and that peo-
ple don’t work on unapproved changes because of miscommunications. Status data
also lets you assess how efficiently your process resolves proposed changes.
1. Business partner
2. PO assesses the
proposes new or
proposed change
changed
and writes or
requirement in the
updates stories
messaging channel
3. Development
team sizes the
change
4. Development
In Development In Test sizes additional
For which
effort to make
baseline?
change in testing
baseline
7. PO moves the
6. PO and business Y trade-off stories out
Trade-off
partner identify of the baseline,
acceptable?
trade-off options back to the product
backlog
N
9. PO and business
N Candidate Y partner add change
8. CCB rejects the
for a future to product backlog
change iteration? and consider it for a
future iteration
Figure 7.4 A process flow for a semiformal change control process shows all the steps
involved.
The change control process and its sometimes-dreaded counterpart, the change
control board, are not meant to make change difficult. They exist so that the decision
makers have the necessary information about cost, impact, and trade-offs to make
good, timely decisions. All teams must deal with changes in requirements. Those
that lack a process that’s defined and followed can expect more chaos, some ill-
considered decisions, and unpleasant surprises.
Related Practices
Next Steps
Summary of Practices
Requirements Elicitation
Practice #6. Understand what users need to do with the solution.
Practice #7. Identify events and responses.
Practice #8. Assess data concepts and relationships.
Practice #9. Elicit and evaluate quality attributes.
157
Requirements Analysis
Practice #10. Analyze requirements and requirement sets.
Practice #11. Create requirements models.
Practice #12. Create and evaluate prototypes.
Practice #13. Prioritize the requirements.
Requirements Specification
Practice #14. Write requirements in consistent ways.
Practice #15. Organize requirements in a structured fashion.
Practice #16. Identify and document business rules.
Practice #17. Create a glossary.
Requirements Validation
Practice #18. Review and test the requirements.
Requirements Management
Practice #19. Establish and manage requirements baselines.
Practice #20. Manage changes to requirements effectively.
159
Booch, Grady, James Rumbaugh, and Ivar Jacobson. 1999. The Unified Modeling
Language User Guide. Reading, MA: Addison-Wesley.
Brosseau, Jim. 2010. “Software Quality Attributes: Following All the Steps.” https://
clarrus.com/resources/articles-case-studies.
Business Analysis Excellence. n.d. “Your First Business Requirements Meeting:
8 Steps and example questions.” https://business-analysis-excellence.com/
business-requirements-meeting.
Capterra. n.d. “Prototyping Software.” https://www.capterra.com/prototyping-
software.
Cockburn, Alistair. 2001. Writing Effective Use Cases. Boston: Addison-Wesley.
Cohn, Mike. 2004. User Stories Applied: For Agile Software Development. Boston:
Addison-Wesley.
______. 2006. Agile Estimating and Planning. Boston: Addison-Wesley.
______. 2012. “Two Examples of Splitting Epics.” https://www.mountaingoatsoft-
ware.com/blog/two-examples-of-splitting-epics.
Coleman, Ben, and Dan Goodwin. 2017. Designing UX: Prototyping. Collingwood,
VIC, Australia: SitePoint Pty. Ltd.
Compton, James. 2022. “How A Problem Statement Kept Me In Control Of
My Analysis.” https://www.modernanalyst.com/Resources/Articles/tabid/115/ID/
6094/How-A-Problem-Statement-Kept-Me-In-Control-Of-My-Analysis.aspx.
Constantine, Larry L., and Lucy A.D. Lockwood. 1999. Software for Use: A Practi-
cal Guide to the Models and Methods of Usage-Centered Design. Reading, MA:
Addison-Wesley.
Davis, Alan M. 2005. Just Enough Requirements Management: Where Software
Development Meets Marketing. New York: Dorset House Publishing.
Delligatti, Lenny. 2014. SysML Distilled: A Brief Guide to the Systems Modeling
Language. Boston: Addison-Wesley.
Dutta, Nayantara. 2022. “What It’s Like to Be ‘Mind Blind’.” https://time.
com/6155443/aphantasia-mind-blind.
Feldmann, Clarence G. 1998. The Practical Guide to Business Process Reengineering
Using IDEF0. New York: Dorset House Publishing.
Fowler, Martin. 2013. “GivenWhenThen.” https://martinfowler.com/bliki/Given-
WhenThen.html.
Freund, Jakob, and Bernd Rücker. 2019. Real-Life BPMN, 4th Ed. Independently
published.
Gause, Donald C., and Brian Lawrence. 1999. “User-Driven Design.” Software Test-
ing & Quality Engineering 1(1):22–28.
Gilb, Tom. 2005. Competitive Engineering: A Handbook for Systems Engineering,
Requirements Engineering, and Software Engineering Using Planguage. Oxford,
England: Elsevier Butterworth-Heinemann.
Gilb, Tom, and Dorothy Graham. 1993. Software Inspection. Reading, MA:
Addison-Wesley.
Gottesdiener, Ellen. 2002. Requirements by Collaboration: Workshops for Defining
Needs. Boston: Addison-Wesley.
______. 2005. The Software Requirements Memory Jogger: A Pocket Guide to Help
Software and Business Teams Develop and Manage Requirements. Salem, NH:
GOAL/QPC.
Hannah, Jaye. 2022. “What Exactly Is Wireframing? A Comprehensive Guide.”
https://careerfoundry.com/en/blog/ux-design/what-is-a-wireframe-guide.
Hendrickson, Elisabeth. 2008. “Driving Development with Tests: ATDD and
TDD.” https://www.stickyminds.com/sites/default/files/presentation/file/2013/
08STRWR_T13.pdf.
Hokanson, Candase, and Carlon Halmenschlager Szymanski. 2022. “Got Credit?
Using Agile and Visual Models to Roll Out a Global Credit Transformation
at Dell.” https://www.agilealliance.org/resources/experience-reports/got-credit-
using-agile-and-visual-models-to-roll-out-a-global-credit-transformation-at-dell.
IIBA. 2015. A Guide to the Business Analysis Body of Knowledge (BABOK Guide),
3rd Ed. Toronto, ON, Canada: International Institute of Business Analysis.
Inflectra. 2020. “Change and Configuration Management of Requirements.” https://
www.inflectra.com/Ideas/Whitepaper/Change-and-Configuration-Manage-
ment-of-Requirements.aspx.
ISO/IEC. 2019. ISO/IEC 25030:2019(en) Systems and software engineering—Systems
and software quality requirements and evaluation (SQuaRE)—Quality require-
ments framework. https://www.iso.org/obp/ui/#iso:std:iso-iec:25030:ed-2:v1:en.
ISO/IEC/IEEE. 2018. ISO/IEC/IEEE 29148:2018 Systems and software engineer-
ing—Life cycle processes—Requirements engineering. https://www.iso.org/stan-
dard/72089.html.
Kulak, Daryl, and Eamonn Guiney. 2004. Use Cases: Requirements in Context, 2nd
Ed. Boston: Addison-Wesley.
Kyne, Daniel. 2022. “7 Principles For Writing Great Problem Statements.” https://
fullstackresearcher.substack.com/p/7-principles-for-writing-great-problem.
Lauesen, Soren. 2002. Software Requirements: Styles and Techniques. Boston:
Addison-Wesley.
Lawrence, Richard, and Peter Green. 2022. “The Humanizing Work Guide to
Splitting User Stories.” https://www.humanizingwork.com/the-humanizing-
work-guide-to-splitting-user-stories.
Leffingwell, Dean. 2011. Agile Software Requirements: Lean Requirements Practices
for Teams, Programs, and the Enterprise. Boston: Addison-Wesley.
Li, Shaojun, and Suo Duo. 2014. “Safety analysis of software requirements: model
and process.” Procedia Engineering 80:153–164. https://www.researchgate.net/
publication/275540201_Safety_Analysis_of_Software_Requirements_Model_
and_Process/fulltext/5552a9ff08ae6fd2d81d5b77/Safety-Analysis-of-Soft-
ware-Requirements-Model-and-Process.pdf.
Lucidchart. 2022a. “How to draw 5 types of architectural diagrams.” https://www.
lucidchart.com/blog/how-to-draw-architectural-diagrams.
______. 2022b. “How to perform a stakeholder analysis.” https://www.lucidchart.
com/blog/how-to-do-a-stakeholder-analysis.
Malak, Haissam Abdul. 2022. “What is Business Rules Engine: The Complete
Guide.” https://theecmconsultant.com/business-rules-engine.
McLeod, Saul. 2009. “Short Term Memory.” https://www.simplypsychology.org/
short-term-memory.html.
McManus, John. 2005. Managing Stakeholders in Software Development Projects.
Oxford, England: Elsevier Butterworth-Heinemann.
Merriam-Webster Thesaurus. 2022. https://www.merriam-webster.com/thesaurus/
elicit.
Miller, Roxanne E. 2009. The Quest for Software Requirements. Milwaukee, WI:
MavenMark Books, LLC.
Moore, Geoffrey A. 2014. Crossing the Chasm: Marketing and Selling Disruptive
Products to Mainstream Customers, 3rd Ed. New York: HarperBusiness.
Morgan, Tony. 2002. Business Rules and Information Systems: Aligning IT with
Business Goals. Boston: Addison-Wesley.
Morris, Latoya. 2022. “Understanding Responsibility Assignment Matrix
(RACI Matrix).” https://project-management.com/understanding-responsibility-
assignment-matrix-raci-matrix.
Munagavalasa, Chandra. 2014. “Excite and Delight Your Customers by Using the
Kano Model.” https://www.agileconnection.com/article/excite-and-delight-your-
customers-using-kano-model.
Nalimov, Constantine. 2021. “What is a conceptual data model? With examples!”
https://www.gleek.io/blog/conceptual-data-model.html.
North, Dan. 2006. “Introducing BDD.” https://dannorth.net/introducing-bdd.
Pichler, Roman. 2016. “Use Decision Rules to Make Better Product Decisions.” https://
www.romanpichler.com/blog/decision-rules-to-make-better-product-decisions.
ProductPlan. 2022. “Minimum Viable Product (MVP).” https://www.productplan.
com/glossary/minimum-viable-product.
Robertson, Suzanne, and James Robertson. 2013. Mastering the Requirements Pro-
cess: Getting Requirements Right, 3rd Ed. Boston: Addison-Wesley.
Scaled Agile. 2021a. “Nonfunctional Requirements.” https://www.scaledagileframe-
work.com/nonfunctional-requirements.
______. 2007. Practical Project Initiation: A Handbook with Tools. Redmond, WA:
Microsoft Press.
Wiegers, Karl. n.d. “Why Modeling Is an Essential Business Analysis Technique.”
https://www.modernanalyst.com/Resources/Articles/tabid/115/ID/5438/
Why-Modeling-Is-an-Essential-Business-Analysis-Technique.aspx.
______. 2019. “Making Peer Reviews Work for You.” https://medium.com/
analysts-corner/making-peer-reviews-work-for-you-4a63533e0ab6.
______. 2020a. “It’s Only Logical: Decision Tables and Decision Trees.” https://
medium.com/analysts-corner/its-only-logical-decision-tables-and-decision-
trees-12a8b52243ea.
______. 2020b. “Requirements Review Challenges.” https://medium.com/
analysts-corner/requirements-review-challenges-e3ffe3ad60ef.
______. 2022. Software Development Pearls: Lessons from Fifty Years of Software
Experience. Boston: Addison-Wesley.
Wiegers, Karl, and Joy Beatty. n.d.a. “Agile Requirements: What’s the Big Deal?”
https://www.modernanalyst.com/Resources/Articles/tabid/115/ID/3573/Agile-
Requirements-Whats-the-Big-Deal.aspx.
______. n.d.b. “Specifying Quality Requirements With Planguage.” https://www.
modernanalyst.com/Resources/Articles/tabid/115/articleType/ArticleView/arti-
cleId/2926/Specifying-Quality-Requirements-With-Planguage.aspx.
______. 2013. Software Requirements, 3rd Ed. Redmond, WA: Microsoft Press.
Wikipedia. 2022. “List of system quality attributes.” https://en.wikipedia.org/wiki/
List_of_system_quality_attributes.
Withall, Stephen. 2007. Software Requirement Patterns. Redmond, WA: Microsoft
Press.
165
exceptions, 79, 81 G
use case, 48–49, 52
executable prototype, 94, 96–97 gaps in requirements, 6, 81
external interface requirements, 4 gathering requirements. See elicitation,
data dictionary and, 64–66 requirements
data for, 64–66 Gilb, Tom, 114
defined, 4 Given-When-Then pattern, 135–136
eliciting, 31 glossary
contents of, 127–129
data model as source for,
F 128–129
as enterprise-level asset, 127
fact, as business rule type, 122 project, 127
feature tree, 77–78, 86, 145
feature-centric elicitation, 47
features, 77–78, 90, 103, 117–118, 145 H
abstraction level of, 112
happy path, use case, 48
business objectives and, 22–23
hazard analysis, 80
prioritization of, 101, 103–104
product, 77–78, 112, 117
vision statement and, 24 I
feeding buffers, 151
fidelity of prototype, 93–96 IDEF0, 85
fishbone diagram, 16 IIBA (International Institute of Business
fit criteria, 71–72, 134 Analysis), 5, 9
Five Whys, 15–16 IKIWISI acronym, 91–92
flowchart, 87 impact assessment for requirements
flows in a use case changes, 154–155
alternative, 48 implied requirements, 83
normal, 48 inconsistencies between
front, pushing quality to the, requirements, 82
10, 139 inference, as business rule type, 122
functional requirements inspection, as requirement review
business rules as source, technique, 133
125–126 interaction design prototype, 92–94
data models as source, 66 INVEST acronym, 79
defined, 4 IREB (International Requirements
deriving from use cases, 48–51, Engineering Board), 9
52, 77–79 Ishikawa diagram, 16
patterns for writing, 109–111 iterative modeling, 90–91
practices for eliciting, 46
quality attributes as source,
K
69–70
testing of, 134 Kano model for prioritization, 101
M O
main flow, use case, 48 objective chain model, 23
main success scenario, use case, 48 objectives, business. See business
management, requirements
objectives
activities, 141–142
objectives for incremental releases, 31
baselining, 142–149
opportunities, business, 14, 17, 19,
change management, 149–155
20, 24
defined, 5, 141
practices for, 142
requirements traceability, 142 P
tools, 119–120
managing requirements complexity, pairwise comparison for prioritization,
111–112 101, 102–103
Miller, Roxanne, 69 passaround review, 133
Miller’s Magic Number, 84 patterns, writing requirements,
minimum viable product (MVP), 104 109–111
missing requirements, 81, 84, 86, 87, 116, peer deskcheck review, 133
125, 134 peer reviews. See reviews, requirements
model simulation prototype, 94 physical data model, 60, 61
modeling, requirements, 84–91 Planguage, 114
benefits of, 84–85 PMI (Project Management Institute), 9
comparing models, 85–87 postconditions, 51
iteration in, 90–91 practices for requirements
languages of, 85 engineering, 5–8
refining understanding, 87–90 preconditions, 51, 57, 78, 135
selecting, 85–87 prioritization, requirements
strawman models, 90 on agile projects, 104
testing models, 136–138 analytical methods, 103–104
types of models, 3, 85–87 challenges, 98
models. See analysis models; modeling, combining methods, 104
requirements factors that influence, 99
MoSCoW prioritization, 100 granularity, 100
MVP (minimum viable product), 104 need for, 83
negotiating, 83
quality attributes, 70–71, 102–103
N questions to ask, 98
navigable wireframe prototype, 94 techniques for, 100–101
negotiating requirement priorities, 83 priority, as requirement attribute, 113
nonfunctional requirements. See also problem, business. See business problem
quality attributes problem analysis, 13–18
Addison-Wesley • Adobe Press • Cisco Press • Microsoft Press • Oracle Press • Peachpit Press • Pearson IT Certification • Que