User:Gekko416/Requirement prioritization

Requirement prioritization is used to rank or grade requirements according to importance and upcoming implementation releases. It is an essential step done in making key decisions to improve a system's economic worth. To reduce risk during development, requirements are prioritized so that the most crucial or high-risk requirements are implemented first. There are various methods to for assessing the prioritization of software requirements.

Existing prioritizing techniques have a variety of drawbacks, including challenges with scalability, managing rank updates as requirements change, stakeholder collaboration, and needs reliance. Requirement prioritization is performed during requirements engineering.

Introduction to requirement prioritization
The conceptualization of requirements engineering is made up by five sub-processes: requirements elicitation, requirements modeling, requirements analysis, requirements verification & validation, and requirements management. An crucial component of requirements elicitation is requirements prioritization.

Requirements prioritization is the process of determining which requirements should be implemented first and establishing the right order of implementation. It is one of the design ideas that makes it possible for software that is being considered for development to work as planned. Establishing this order is important since most projects have to compromise on the set of requirements that can be implemented, due to limited time and resource constraints.

Prioritizing requirements is thought to be a difficult multi-criteria decision-making procedure. Long-standing research has shown that requirements must be thoroughly gathered, examined, and prioritized for software systems to be acceptable to users or stakeholders. Requirement prioritization is concerned with identifying critical needs as seen by important stakeholders. Its main goal is to implement stakeholders' fundamental needs in terms of cost, quality, resource availability, and delivery time. The development team and the stakeholders are both involved in the process of requirement prioritizing. The business analyst, as part of the development team, facilitates the process of prioritizing demands.

Prioritizing requirements is a procedure that is closely related to release planning. The development team establishes a timeline during release planning for when particular features or functionalities will be made available to end users. The importance of the needs is often determined by the priority of the requirements.

Requirement prioritization process
Requirement prioritization is the process of ordering requirements in an ascending order of relative importance and urgency. The necessity for requirements prioritizing is determined by several project restrictions like time and money. The project and product development team must prioritize some requirements to be immediately implemented and some to be saved for a later release. Requirements need prioritizing due to the fact that projects do not have unlimited resources, and setting requirements into priority order is a means to make the most of the limited resources.

Prioritizing requirements is a challenging endeavor that calls for analytical, technical, and interpersonal abilities. To take into account the opinions and demands of both parties, the product development team and stakeholders must cooperate and reach a compromise. The project team must have a thorough understanding of the project scope and the business case, notably the business analyst who serves as the process facilitator for requirements prioritization.

The process of prioritizing requirements offers support for the following activities


 * for stakeholders to choose the fundamental specifications for the system
 * to organize and choose the best possible set of software requirements to be used in subsequent versions
 * to compromise between the planned project scope and sometimes-conflicting restrictions including budget, time to market, resources, and quality
 * to evaluate each requirement's business benefits against its expense
 * to weigh the effects of requirements on the software architecture, future product development, and associated costs
 * to choose just a portion of the specifications while still creating a solution that will please the customer(s)
 * to predict anticipated client satisfaction
 * to obtain a competitive advantage and maximize market potential
 * to reduce rework and scheduling delays (plan stability)
 * to manage competing demands, concentrate the negotiation process, and settle disputes between parties
 * to determine the proportional relevance of each need in order to deliver the best value at the most affordable price

Criteria of requirement prioritization
The Business Analysis Body of Knowledge 3.0 states that there are seven mentioned criteria that influence the priority of requirements. Regardless of the prioritization technique. A Guide to the Business Analysis Body of Knowledge is a guide about business analysis, issued by the International Institute of Business Analysis.


 * Benefit: This is the benefit that the company will get if a certain condition is met right away. The advantages of implementing a particular need may include achieving corporate objectives or improving functionality, quality, cost, time, and resource use.
 * Penalty: The penalty or result of failing to comply with a requirement is the penalty. The project and the end product may suffer if certain requirements are not given top priority. As a result, a key deciding factor in needs prioritization is the penalty that the project teams and stakeholders will have to pay. Poor client satisfaction, wastage, excessive use of project resources, or poor product usability can all result in a penalty.
 * Risk: The risk is whether or not the need will provide the anticipated value. Several factors, including trouble understanding the requirement, difficulty carrying out the requirement's activities, and problems implementing the need, might prevent requirements from being completed.
 * Dependency: A relationship between two needs called a dependence exists when one cannot be completed or implemented without the other. A requirements dependency map is required before starting requirements prioritization.
 * Time Sensitivity: The time limit is frequently the most important consideration when prioritizing requirements. Certain criteria must be implemented before others because they are so urgent. This mainly applies to initiatives and goods that must address seasonal requirements. Implementing certain requirements prior to a specific date or time is crucial in these circumstances.
 * Stability: In order to avoid repetition, rework, and resource waste, requirements that are not stable or whose definition is constantly changing are given a lower priority. Stability is determined by the likelihood that a demand will remain fixed and static.
 * Regulatory/Policy Compliance: For the company or the stakeholders to comply with regulations or policies, there are several conditions that must be mandatory. An organization's adherence to business policy requirements for its standard business procedures is referred to as policy compliance.

Challenges
The process of requirement prioritization involves complex, context-specific decision-making, which presents a number of challenges that must be taken into consideration. The process of requirement prioritization can involve multiple stakeholders, which all communicate with each other. Communication has been proven to be a challenge when it comes to accurately identifying and describing priorities, which often results in errors and uncertainty. Stakeholders can experience difficulties when communicating with others due to different reasons such as speech, language or communication needs. There are different ways in which communication difficulties can arise, for example, stakeholders may struggle to communicate verbally or visually, to convey their own ideas and opinions, and to comprehend the words and actions of others.

Developers who are working on the prioritization process are mostly working separately from the stakeholders and usually have no common practices to communicate information throughout the process. Developers often do not have a clear understanding of the actual priorities of the stakeholders and why certain requirements are important, resulting in insufficient prioritization.

Another challenge is that due to the ranking of requirements, stakeholders frequently worry that only the most crucial ones will be executed and the lower-ranked requirements will be ignored. This results in the fact that stakeholders may indicate that they prefer not to prioritize their requirements, which can cause a major bottleneck in the software requirement prioritization process. Determining the priority of a single requirement deals with a lot of factors, which includes different point of views that need to be considerated. For example, the stakeholders view is that of the importance of the requirement. However the developers view regarding the implementation itself also needs to be taken into account as which needs should be implemented first depends on the company's resources, the manufacturing environment, and the logical sequence of implementation.

Requirement prioritization techniques are proven to often be complex to implement and prone to errors, which results in some techniques being unreliable due to faulty results. Although the majority of prioritization techniques are efficient, scaling up to more requirements turns out to be detrimental. As the project grows in scope, the requirement prioritization becomes more complex and ambiguous. And for larger projects with a wide range of requirements, the majority of techniques are not suitable.

Prioritization techniques
In the literature, a variety of strategies have been proposed to make the requirement prioritizing task precise, effective, dependable, and conflict-free. However, each method has its drawbacks and has implicit and explicit assumptions regarding the project context in which requirement prioritization is carried out. There are three primary scales that can be used to portray the outcomes of the prioritization techniques, these are nominal scale, ordinal scale, and ratio scale.

Nominal scale: Mechanisms for nominal scale prioritizing produce an array of classes into which objects can be subdivided. In other words, requirements are categorized based on their significance. As a result, the priority of all criteria that fall under the same category is the same. Only the MoSCoW technique and the Numeral assignment technique are included in this category.

Ordinal scale: Techniques for ordinal scale prioritization produce lists of criteria that are ranked. The ordinal scale can only indicate if one criterion is more essential than another, not by how much. Techniques used in this area include bubble sort, priority groups, and minimal spanning trees.

Ratio scale: Techniques for ratio scale prioritization produce ranked lists of requirements. The relative difference between can be found in the results of ratio scale procedures. This section makes use of the Analytic Hierarchy Process (AHP), Hierarchy AHP, Minimal Spanning Tree (MST), Cumulative Voting (CV), and Hierarchical Cumulative Voting (HCV).