## 2 Literature Review  
Requirements prioritization is a significant step in requirements collection, particularly in the applications of IoT and smart cities. Several approaches can be found in the literature for prioritization of requirements. In IoT, the requirements are frequently distributed over different stakeholders and various organizations [12]. The list of significant problems with the current techniques comprises less accuracy, low quantitative measurement, requirements for prioritization time, and low maturity scalability [13; 14; 15]. To design suitable IoT-enabled applications, it is essential to choose correct REQs [16; 17]. In IoT-enabled applications, there might be a considerable number of distributed stakeholders, which causes difficulties in requirements management. Requirements in IoT are prioritized using tools, e.g., forums or wikis, for the use of which teamwork among the developers and customers is essential [18]. The user can also prioritize the REQs using various methods. Many prioritization methods are used based on the application. There are four scales for prioritization: ordinal scale, nominal scale, ratio scale, and interval scale [18]. Some broadly used methods are discussed in this section. The Analytical Hierarchical Process (AHP) is a systematic and prominent method used for allocating priorities and making accurate judgments within large sets of requirements. It involves a pairwise comparison between two REQs to determine which has the higher priority, using a ratio scale [5]. The number of necessary comparisons is represented by n(n - 1)/2 at each hierarchical level, escalating as the number of requirements increases to O(n^2), which is recognized as a significant limitation of AHP, although it remains a dependable method for handling a moderate number of requirements [19; 20]. Another method, known as Cumulative Voting, or the 100-dollar trial [19], involves distributing 100 fictitious votes among the members, who then allocate these votes to the REQs based on their perceived importance. The votes for each REQ are then totaled to determine the priorities [21]. However, this approach has drawbacks, such as potential bias when a member allocates all of their votes to a single REQ personally deemed important but not determined as such for others, and it is less effective when the number of REQs is very large (e.g., REQs \(\geq\) 100), possibly leading to inaccuracies in prioritization. The Grouping method is also called numerical assignment. It is a very well-known and straightforward prioritization method. It is based on an ordinal scale [22]. Generally, three groups are formed (e.g., optional, standard, and critical). A central tactic in this method is dividing REQs into only three classes, as every stakeholder considers the degree to which their requirements are necessary. The management of class requirements of exact priority is another issue. In the ranking method, the requirements are prioritized; the most significant REQ is ranked as number 1, the second most significant is ranked as number 2, the second most significant is ranked as number 3, and so forth. Accordingly, the number n is of the slightest significance. This mechanism utilizes an ordinal scale. There is not an obvious way to check relative variation among 2 REQs, in the manner of AHP [19; 21; 20]. It is suitable when only one stakeholder prioritizes all of the requirements, and it is used for small projects. Top-ten requirements handling is the most straightforward technique in terms of sophistication and roughness of granularity [23]. Here, the top 10 requirements are selected from the vast set, without any number assignment, and it is not based on any scale. It is helpful when multiple users have the same assessment. The disadvantage is that there is no ordered assignment for the top 10 requirements, which makes decision-making during implementation very challenging. The Binary Search Tree (BST) is another specific method for prioritization. Every object is a particular requirement in BST.