“Priority is a function of context” – Stephen R. Covey
This is the second part of our review of different requirements prioritization techniques that are widely used in software development, especially in Agile projects.
In our last post we discussed fast and easy ways to prioritize requirements during software development. In this post we’ll take a look at more complicated and scientific approaches to prioritization.
While these techniques might seem more knowledge- and time-intensive, they can be very useful, especially in complex projects where main stakeholders could have different opinions about the priorities of some features. These methods rely on mathematics to do the heavy-lifting; your task will be to analyze the results of the calculations and set priorities accordingly.
Prioritization of complex product backlog items according to user preferences
In the software development process we deal with the prioritization problem on two levels: product level and tasks level. According to our previous post, to solve the product level prioritization task we need to determine what features of the product could better contribute to achieving the main goals of the project. And to conduct the tasks level prioritization we should define what pieces of work (user stories or tasks) must be realized, and in what order, during the product development process.
In case of a product designed for end-users solving the product level prioritizing task means determining the product features your users are going to use and what features they are willing to pay for. A very powerful method to analyze and prioritize product features is Kano analysis.
Kano analysis
Kano analysis can help you divide all features of the product (and then the pieces of documents that describe the features: requirements, user stories, tasks) into 5 groups: Threshold (T), Performance (P), Excitement (E), Indifferent (I), Reverse (R). For detailed description of using the method and definitions of these groups check out our previous article.
The main idea is to be sure that all Threshold and selected Excitement and Performance features will have higher priority than Indifferent ones. Also Reverse features will have low priority and will be excluded from backlog. After such “high-level” prioritizing on the product level any other method could be used to order the user stories or tasks.
Product backlog prioritization using Kano Analysis could be run in two ways:
- Most preferable: Invite a group of end users and conduct prioritization research among this group.
- Alternative: Include stakeholders representing different areas of product development in your prioritization session, for example developers, business or product owners, managers, or end users.
After analyzing the results of your research you would be able to order the product backlog according to user expectations.
Prioritization of product backlog according to several custom criteria
During prioritization we could fall into a problem of how to compare alternatives according to completely different criteria – on both the “product” and “tasks” level. For example, consider this conflicting situation:
- 9 out of 10 end users want Feature 1, and 7 out of 10 want Feature 2. Both are “Performance” features in terms of Kano Analysis – or features that are not completely necessary but have been explicitly demanded by users. Because more users chose Feature 1 it ranks higher on “Value”. So, according to Criteria 1 named “Value”, Feature 1 is better than Feature 2.
- To build Feature 1 we need 50 hours and for Feature 2 – 20 hours. So according to Criteria 2 named “Time”, Feature 2 is much better than Feature 1.
Time and value are not directly comparable, but we are forced to make a choice as to what feature has higher priority. How can we compare the two incomparable criteria? How can we rank the unrankable? Good news – there are good methods to compare features, taking into consideration two criteria at the same time that can help us rank them according to priority. Here is a brief description of two of them.
Relative Weighting
The relative weighting method allows us to consider two main criteria in the prioritization process (exactly as in our example above): Value and Cost (or time).
Here’s how it works:
First, you should evaluate each requirement (or feature) on the effect of its presence (benefit) and absence (penalty) in the product, against the effect it has on each of the criteria. A benefit means that it has a positive effect, while penalty means that the feature has a negative effect. The scale of benefits and penalties is usually assigned based on a 0-9 scale, where 0 represents a low effect and 9 a high effect. The total value is worked out by adding the benefit and the penalty per each product backlog item. The relative value is calculated by dividing the total value of one item by the sum of the total values of all items.
Second, cost estimations must be done for all requirements (or features). It could be story points, hours or days. The relative cost is calculated by dividing the cost of some item by the sum of the costs of all items.
Finally, the priority of each item is calculated by dividing its Relative value by its Relative cost.
As a result, based on the previous example, you should end up with a table like the one below:
Feature | Benefit | Penalty | Total value | Relative value, % | Cost (hours) | Relative cost, % | Priority |
---|---|---|---|---|---|---|---|
Feature 1 | 8 | 4 | 12 | 52 | 50 | 71 | 0.73 |
Feature 2 | 6 | 5 | 11 | 48 | 20 | 29 | 1.65 |
Total | 23 | 100 | 70 | 100 |
As we can see, Feature 1 is more preferable for the users than Feature 2, but Feature 1 needs more work hours for development. Yet, according to all criteria Feature 2 has higher priority than Feature 1. If we have to make choice between these two features we should prioritize Feature 2.
So we’ve just seen how two main criteria – value and cost – could be compared efficiently. In most cases comparing two criteria is enough to calculate priority. But, what if your prioritization involves more criteria? Don’t worry… that’s when you use analytical hierarchy process.
Analytical hierarchy process (AHP)
Analytical hierarchy process, or AHP, is a scientific approach for decision-making that takes into consideration multiple criteria and alternatives. The AHP was developed by Thomas Saaty. According to the AHP, prioritization must consist of the following steps:
- 1) Structure the hierarchy model: define the criteria and the alternatives.
- A simple example of hierarchy could look like the one in the picture below.
(Click here for full size image.)
- 2) Construct a pairwise comparison matrix to assess the relative value of the criteria.
- 3) Construct a separate pairwise comparison matrixes to assess the relative value of the alternatives according to each criteria from the all set of criteria.
- 4) Calculate the weighted average rating for each alternative.
To compare the criteria we should construct a matrix like the one visualized below. An arbitrary entry in row i and column j of the matrix, labeled aij, indicates how much higher (or lower) the value of criterion i is than that for criterion j. The value is measured on an integer scale from 1 to 9, where 1 means that i and j are of equal value and 9 means that i has an absolutely higher value than j. And the entry labeled aij must be calculated like this aij = 1/aij.
Criterion 1 | Criterion 2 | Criterion 3 | |
---|---|---|---|
Criterion 1 | 1 | 5 | 3 |
Criterion 2 | 1/5 | 1 | 1/7 |
Criterion 3 | 1/3 | 7 | 1 |
To compare the alternatives we should construct N matrixes (where N is the number of criteria). The principle of comparing the alternatives is the same as in the criteria case.
After constructing all the matrixes and making the calculation of the weighted average rating for each alternative you could rank your product backlog using these evaluations. This method could be very useful in case of many criteria and many alternatives. It needs a lot of calculations but it’s really “magic” when in the end of the pairwise comparison of criteria and alternatives you receive an average priority rate for each alternative based on all the criteria.
Remember: Nothing is unrankable
Choose your favorite prioritization technique. Carefully define the criteria and the alternatives (requirements, features). Do not forget that “priority is a function of context”, so in different circumstances the same alternative could have different priorities. Calculate the priorities that fit your circumstances and develop your product in the most efficient way.
Let us know if you have questions, we’ll be happy to help.
Images via Pixabay and Freeimages.