# Requirement prioritization

Requirement prioritization is used in the Software product management for determining which candidate requirements of a software product should be included in a certain release. Requirements are also prioritized to minimize risk during development so that the most important or high risk requirements are implemented first. Several methods for assessing a prioritization of software requirements exist.

## Introduction

In Software product management there exist several sub processes. First of all there is portfolio management where a product development strategy is defined based on information from the market and partner companies. In product roadmapping (or technology roadmapping), themes and core assets of products in the portfolio are identified and roadmap constructions are created. In requirements management candidate software requirements for a product are gathered and organized. Finally, in the release planning activity, these requirements are prioritized and selected for a release, after which the launch of the software product can be prepared. Thus, one of the key steps in release planning is requirements prioritization.

## Cost-value approach

A good and relatively easy to use method for prioritizing software product requirements is the cost-value approach. This approach was created by Joachim Karlsson and Kevin Ryan. The approach was then further developed and commercialized in the company Focal Point (that was acquired by Telelogic in 2005). Their basic idea was to determine for each individual candidate requirement what the cost of implementing the requirement would be and how much value the requirement has.
The assessment of values and costs for the requirements was performed using the Analytic Hierarchy Process (AHP). This method was created by Thomas Saaty. Its basic idea is that for all pairs of (candidate) requirements a person assesses a value or a cost comparing the one requirement of a pair with the other. For example, a value of 3 for (Req1, Req2) indicates that requirement 1 is valued three times as high as requirement 2. Trivially, this indicates that (Req2, Req1) has value ⅓. In the approach of Karlsson and Ryan, five steps for reviewing candidate requirements and determining a priority among them are identified. These are summed up below.
* Requirement engineers carefully review candidate requirements for completeness and to ensure that they are stated in an unambiguous way.
* Customers and users (or suitable substitutes) apply AHP’s pairwise comparison method to assess the relative value of the candidate requirements.
* Experienced software engineers use AHP’s pairwise comparison to estimate the relative cost of implementing each candidate requirement.
* A software engineer uses AHP to calculate each candidate requirement’s relative value and implementation cost, and plots these on a cost-value diagram. Value is depicted on the y axis of this diagram and estimated cost on the x-axis.
* The stakeholders use the cost-value diagram as a conceptual map for analyzing and discussing the candidate requirements. Now software managers prioritize the requirements and decide which will be implemented.
Now, the cost-value approach and the prioritizing of requirements in general can be placed in its context of Software product management. As mentioned earlier, release planning is part of this process. Prioritization of software requirements is a sub process of the release planning process.
The release planning process consists of the sub processes:
* Prioritize requirements
* Select requirements
* Define release requirements
* Validate release requirements
* Prepare launch

## Other prioritization techniques

* Quality Function Deployment (QFD)
* Binary Search Tree (BST)
* Ordinal priority approach (OPA)
* Planning game (PG)
* PROMETHEE
* 100-point method (100P) also known as Cumulative voting
* Planning Game combined with AHP (PGcAHP)
* MoSCoW Method
* ICE Scoring Model for quick prioritization (ICE score = Impact * Confidence * Ease)
* RICE Scoring Model for quick prioritization (RICE score = (Reach * Impact * Confidence) / Effort)
* Software Engineering Risk: Understanding and Management (SERUM)
* EVOLVE
* Value Oriented Prioritization Method (VOP)
* Minimal Spanning Tree (MST),
* Bubble Sort (BS),
* Numeral Assignment