Back to List

Agile User Story Splitting by Non-functional Requirements

Rachael Wilterdink Rachael Wilterdink  |  
Sep 22, 2020
 
In this blog series, Rachael Wilterdink (CBAP, PMI-PBA, PSM I, CSM) dives into 25 different techniques for approaching story splitting that she has used throughout her career. Make sure to stop by each week to catch all 25!

In case you’re unfamiliar with Non-functional Requirements, let me provide you with the definition from the BABOK®:
 
“A type of requirement that describes the performance or quality attributes a solution must meet. Non-functional requirements are usually measurable and act as constraints on the design of a solution as a whole.”
 
Whew. That’s a mouthful. My rule of thumb is that if I hear any words that end with “ility”, it’s probably a non-functional requirement (although there are some that don’t end this way). Here are some examples:
 
  • Availability
  • Usability
  • Reliability
  • Scalability
  • Compatibility
  • Security
  • Performance efficiency
 
I think you get the point. The list of possible non-functional requirements to consider on any project could be endless. But, as I have learned from personal experience (ouch!), these are things you don’t want to ignore or leave until the end of a project; they will come back to haunt you.
 
So, how can we use these to split User Stories?
 
There are a few ways to consider including non-functional qualities in your solution. This is one area where I think agile has made it more difficult – but if you are aware of these considerations, hopefully you’ll find a way to include them. Here are a few ways I have seen it done:
 
  1. Include them as a part of a definition of done that applies broadly across the whole effort
  2. Include them as acceptance criteria on individual stories
  3. Include them as a separate bucket of requirements
  4. Include as “Spikes” that are handled separately to prove out architectural strategies
 
Let's take performance efficiency as an example. Maybe at the beginning stages of a project, you don’t care that much about performance. You’re probably working in a dev environment, might not have the fastest servers, and it doesn’t matter until you get to production, anyway.
 
The big story would be:
 
performance efficiency

We are going with the option of including non-functional requirements as separate user stories:
 
non-functional requirements

Given that performance concerns are generally not of great concern early on in projects, I would include these in my product backlog to make sure they are not forgotten or ignored (and possibly educate the Product Owner about their importance).
 
I would also tack on some usability stories related to performance efficiency (also non-functional):
 
performance efficiency
performance efficiency
performance efficiency

One other key thing I should point out about non-functional requirements is that they are the hardest ones to elicit and to define. That’s because they largely need to be measurable and testable. If you can’t nail down the numbers for non-functional requirements, then you won’t be able to test them.
 

Questions to ask:

 
  • Can the quality attribute wait until later?
  • Is it something that must eventually done to have a quality product?
  • How can you make it measurable so it can be tested?
  • Are there some areas where you could reduce the quality, because it’s not as important?
  • Non-functional requirements can dramatically increase the cost of a project – are you focusing on only the most important ones for your project?
 
As you can see, these are probably some of the trickiest types of requirements to deal with – in any type of project, but especially in agile. Just make sure you don’t ignore or forget them! (Read my eBook on 20 Agile Transformation Pain Points)
 
Next: Bronze-Plated Flow versus Gold-Plated.
 
Resources:
https://www.mountaingoatsoftware.com/blog/non-functional-requirements-as-user-stories
 
Agile

 

Love our Blogs?

Sign up to get notified of new Skyline posts.

 


Related Content


Blog Article
Agile User Story Splitting by Dummy-Real and Static-Dynamic Data
Rachael WilterdinkRachael Wilterdink  |  
Oct 20, 2020
In this blog series, Rachael Wilterdink (CBAP, PMI-PBA, PSM I, CSM) dives into 25 different techniques for approaching story splitting that she has used throughout her career. Make sure to stop by each week to catch all 25!   Dummy Data then Real Data If getting real data is slowing you...
Blog Article
Agile User Story Splitting by Bronze-Plated vs Gold-Plated
Rachael WilterdinkRachael Wilterdink  |  
Oct 06, 2020
In this blog series, Rachael Wilterdink (CBAP, PMI-PBA, PSM I, CSM) dives into 25 different techniques for approaching story splitting that she has used throughout her career. Make sure to stop by each week to catch all 25!   Simplest Possible Solution vs Complicated (but better...
Blog Article
Agile User Story Splitting by Spikes and Simple to Complex
Rachael WilterdinkRachael Wilterdink  |  
Sep 08, 2020
In this blog series, Rachael Wilterdink (CBAP, PMI-PBA, PSM I, CSM) dives into 25 different techniques for approaching story splitting that she has used throughout her career. Make sure to stop by each week to catch all 25!   User Story Splitting - Spikes What is a Spike, you ask? Well...
Blog Article
Agile User Story Splitting by Data Variations and Boundaries
Rachael WilterdinkRachael Wilterdink  |  
Jul 07, 2020
In this blog series, Rachael Wilterdink (CBAP, PMI-PBA, PSM I, CSM) dives into 25 different techniques for approaching story splitting that she has used throughout her career. Make sure to stop by each week to catch all 25! This is a two-for-one special. Joking aside, data is another great way...
Blog Article
Agile User Story Splitting by Device, Platform, and Channel
Rachael WilterdinkRachael Wilterdink  |  
Jun 30, 2020
In this blog series, Rachael Wilterdink (CBAP, PMI-PBA, PSM I, CSM) dives into 25 different techniques for approaching story splitting that she has used throughout her career. Make sure to stop by each week to catch all 25! As I think we all know by now, there are countless possible combinations...