A requirement with higher importance, larger number of dependencies with other requirements, and higher implementation cost should be reviewed with the highest priority. However, requirements are inherently uncertain in terms of their impact on the requirements implementation cost. Such cost is typically estimated by stakeholders as an interval, though an exact value is often used in the literature for requirements optimization (e.g., prioritization). Such a practice, therefore, ignores uncertainty inherent in the estimation of requirements implementation cost. We, therefore, explicitly take into account such uncertainty for requirement prioritization and formulate four objectives for uncertainty-wise requirements prioritization with the aim of maximizing 1) the importance of requirements, 2) requirements dependencies, 3) the implementation cost of requirements, and 4) cost overrun probability.
Six Pareto-based search algorithms (NSGA-II, NSGA-III, MOCell, SPEA2, IBEA, and PAES) together with Random Search (RS) are used in the proposed URP approach, which are implemented by using the open-source framework jMetal: Metaheuristic Algorithms in Java.
The input data of the search algorithms can be downloaded from the following table.
|#||Case Study||Number of Requirements||Download|
|2||Synthetic Problems 1 - 6||100 - 350||download|
|3||Synthetic Problems 7 - 12||400 - 650||download|
|4||Synthetic Problems 13 - 16||700 - 850||download|
|5||Synthetic Problems 17 - 18||900 - 950||download|
|6||Synthetic Problem 19||1000||download|
To conduct statistical tests, we collect the returned data for each search algorithm. More specifically, the optimization objective value of the nondominated solutions and the corresponding permutation sequences are returned. Note that the objective values of 100 runs are collected in "*_FUN.tsv" file and the corresponding permutation sequences are collected in "*_VAR.tsv" file.
|2||Synthetic Problem (100)||download|
|3||Synthetic Problem (150)||download|
|4||Synthetic Problem (200)||download|
|5||Synthetic Problem (250)||download|
|6||Synthetic Problem (300)||download|
|7||Synthetic Problem (350)||download|
|8||Synthetic Problem (400)||download|
|9||Synthetic Problem (450)||download|
|10||Synthetic Problem (500)||download|
|11||Synthetic Problem (550)||download|
|12||Synthetic Problem (600)||download|
|13||Synthetic Problem (650)||download|
|14||Synthetic Problem (700)||download|
|15||Synthetic Problem (750)||download|
|16||Synthetic Problem (800)||download|
|17||Synthetic Problem (850)||download|
|18||Synthetic Problem (900)||download|
|19||Synthetic Problem (950)||download|
|20||Synthetic Problem (1000)||download|