In this section the background of the areas related to this chapter is presented, focusing on the techniques required for the proposed approach.
Requirements Engineering
Requirements engineering has been identified as one of the most crucial processes in software design and development as it addresses the critical problem of designing the right software for the customer (Aurum & Wohlin, 2005). Poorly organized and expressed requirements, weak relation of requirements to stakeholder needs and unnecessary or unrealistic expectations are among the main reasons why software projects fail (Dick et al., 2017).
Requirements engineering deals with the identification of the objectives and the required functions of a software project, their conversion into services and constraints and their implementation through the assignment of tasks to persons. It is a systematic and disciplined approach to the specification and management of requirements that requires understanding the needs of the stakeholders, prioritization, reaching consensus, identifying and documenting the requirements according to standards and systematically managing them to minimize the risk that a system does not meet the goals (Aurum & Wohlin, 2005).
In large software projects with many requirements, it is not feasible to implement all of the requirements because of resources limitations, such as budget, time and staff. Therefore, the development process delivers requirements in successive releases, where each release contains an incremental number of requirements from all the candidate requirements. The selection of the most important requirements to be developed and delivered first in the early releases is important to meet stakeholders’ demands. The requirements that are less important are left for latter releases (Hujainah et al., 2018).
Requirements engineering encompasses certain core activities such as elicitation, prioritization, analysis, negotiation, documentation (or specification), validation and management of requirements. In literature, various approaches exist, where the activities are presented separately, while others group or merge some activities (Bourque et al., 2014; Pohl & Rupp, 2015; Pressman, 2015; Sommerville, 2011).
The RP is one of the key software engineering activities as it helps determine the most important requirements among a pool of requirements and define the order of implementation (Achimugu et al., 2014). The RP process assists stakeholders in selecting the most important requirements of a system and facilitates release planning, and balancing of available resources, budget and time. Additionally, it supports balancing business benefit against the implementation cost, selecting a subset of the requirements that still satisfy the customer and resolving disagreements between stakeholders (Berander & Andrews, 2005).
The RP is an iterative activity which aims to rank the candidate requirements under various criteria. The most frequently used criteria for prioritizing requirements are (Hujainah et al., 2018):
- •
Importance: This is a multi-sided criterion as it varies according to the stakeholders’ perspective, knowledge and role.
- •
Cost: The implementation cost is one of the most important criteria from the organization’s perspective, since the budget restricts the available resources.
- •
Business value: Alignment with business goals and business value in the long run is of high importance for the RP.
- •
Other criteria include value, dependency, risk, effort, penalty, software goals etc.
For the purpose of the RP numerous techniques have been developed aiming to increase the accuracy, the efficiency and the reliability and raise the limitations, since each technique comes with specific restrictions and drawbacks based on the project context (Bukhsh et al., 2020). The most popular techniques could be categorized based on the following approaches:
- •
AHP: The RP techniques based on the AHP (Analytic Hierarchy Process) approach follow a pairwise comparison of the criteria and the candidate features. It is considered the most accurate technique but it suffers from bad scalability and large computational complexity (Achimugu et al., 2014).
- •
Fuzzy logic: The RP techniques based on fuzzy logic aim to include stakeholders’ uncertainty (Achimugu et al., 2014).
- •
Advanced data processing: Many recent techniques include data mining and machine learning practices to improve effectiveness and automation (Bukhsh et al., 2020).
- •
Numerical assignment: These techniques aim to group requirements into different categories.
- •
Cost – Value: These RP techniques focus to identify the requirements value against their implementation cost.