In the software development process, decision-making among several alternatives is a common issue. Product managers and decision-makers face various constraints such as the availability of financial and human resources, deadlines, and the system’s current software architecture, amongst other possible limitations. As a result, it is impossible to implement all desired software requirements in just one product release. Proper requirements prioritization during the initial product development stage is recognized as being among the core activities that bring value to a company. It helps cut costs on development and mitigate resource waste through proper project management.

This article’s basis comes from my master thesis, “Recommendations for Requirements Prioritization for new IT Products.” During my studies, I became curious about how decision-making occurs and wanted to identify how product requirements are identified, collected, and prioritized. Prioritization is one of the most essential parts, so I want to share my research findings, which have only had confirmation in practice during my product management work experience.

 

The Benefits of Requirements Prioritization

When customer expectations are high and deadlines are tight, it is essential to implement the most valuable product features in the first place. Priorities are a way of resolving the struggle between competing demands and limited resources. Determining each opportunity’s relative importance allows managers to plan development in such a way as to provide the highest value at the lowest cost. Prioritization is most critical for working in rigid time frames or using an incremental model with fixed release dates for each product version. 

The product manager must balance the project’s desired scope and the constraints determined by the time, budget, human resources, and quality expectations. One way to achieve this is to remove (or postpone to a later version) requirements with low priority when new, more critical needs are accepted or other project conditions change. If stakeholders do not categorize their needs by importance and urgency, the vendor’s project managers will do it independently (Razali & Anwar, 2011). Unsurprisingly, customers do not always like the result; therefore, they must indicate which requirements are necessary from the beginning and which ones can wait. The organizations that apply high-quality requirement development processes gain several advantages: one of them is reducing the volume of alterations during the last stage of development and throughout the product’s extended service period. However, the effectiveness of having high-quality requirements may not be evident, and many people mistakenly believe that the time spent on discussing needs simply delays the release of the product. At the end of the project, the value of quality improvement techniques in the early stages becomes particularly clear (Wiegers & Beatty, 2013).

Successful requirements engineering is a result of the continuous joint work of many stakeholders throughout the project. The collection of requirements allows the development team to understand better the users or realities of the market, which is critical for any project. It is much cheaper to thoroughly understand all of the requirements before building software than after transferring it to the users’ hands. The cost of redesign and redevelopment of the system could be high.

An efficient way of using the software team’s human resources is to collect, document, view, and manage requirements. It is impossible to quantify all the benefits that might be received from employing high-quality requirements, but here are some of the most important ones:

  • Less rework. The necessity of redoing software in case of not satisfying the outcome might be highly time-consuming and costly. “Once a piece of software makes it into the field, the cost of fixing an error can be 100 times as high as it would have been during the development stage” (Charette, 2005). The established requirements engineering process aims to increase the project’s visibility, and deep communication with stakeholders leads to a cleaner scope and effective use of resources.
  • Fewer defects in requirements and in the delivered product. Usage of high-quality requirements assures that the developed product is meeting the expectations of the end-users.
  • Fewer unnecessary functions. Employing requirements engineers helps to elicit the correct set of requirements, which will satisfy users’ needs.
  • Faster development. Once all requirements have been collected and structured, developers can concentrate on building the project.
  • Higher customer and developer satisfaction. Ultimately, usage of requirement engineering helps to keep customers and developers satisfied.
  • Reducing the expectation gap. Customers’ involvement in the requirements engineering process minimizes the system’s expectation gap, usually between customers and developers. Such an expectation gap is a gulf between what customers need from the developed system and what developers deliver based on the information they collected at the beginning of the project (Wiegers & Beatty, 2013) –  displayed as the dashed lines in the figure below. Such gaps negatively influence the development process as both parties – customers and developers – are not satisfied at the end.

Requirements expire due to changes in the business environment, so interactions with users are critical. The best way to minimize the expectation gap is to set up frequent contact points with customers to collect feedback. Each contact point offers the opportunity to reduce the expectation gap, as developers will build the product based on the customers’ needs and expectations.

 

expectation gap

Frequent customer engagement reduces the expectation gap (Wiegers & Beatty, 2013)

 

The process of requirement prioritization associates with many benefits. A business that carries out the prioritization process can identify the customer’s needs and find the best possible way to satisfy customer demand. It helps in working out against rigorous expectations that will fulfill customer expectations. 

Furthermore, prioritization helps create the balance between developing a product through the limited resources available, human skills, and the constraints of time but still come up with a product that would meet the consumers’ expectations. Effective prioritization creates positive rapport among stakeholders, making the mobilization process easier – within the context of collecting and putting the prioritization to use. 

 

References 

  • Charette, R. (2005). Why software fails [software failure]. IEEE spectrum, 42-49.
  • Razali, R., & Anwar, F. (2011). Selecting the Right Stakeholders for Requirements Elicitation: A Systematic Approach. Journal of Theoretical and Applied Information Technology, 250-257. 
  • Wiegers, K., & Beatty, J. (2013). Software Requirements, Third Edition. Redmond, Washington: Microsoft Press.

 

Author

 

Daniil

 

This article was written by Daniil Murin, a Product Owner at Bonial.