1. Introduction
The Internet of Things (IoT) is intended to improve quality of life, and it has significantly changed today’s life through different standards [
1,
2]. The IoT allows different sensors, embedded systems, and intermediate devices to connect to the Internet and form a fully connected world by collecting and sharing data. An IoT network generally consists of different entities, including sensors and Radio Frequency Identification(RFIDs) forming a distributed network for real-time applications such as healthcare, sustainable cities, manufacturing, and supply chain [
2]. A smart city is a term used for technologies in which information and communication technology (ICT)-driven technology improves the quality of services in a city, such as healthcare, transportation, business, and communications [
3,
4]. Currently, many countries are planning to adapt their cities to modern smart city concepts [
5,
6].
In the software development lifecycle, requirement gathering and managing are very important. Requirements can be defined as stakeholders’ expectations from the system end product, functional abilities, or non-functionalities [
7]. Requirement engineering is considered at an early stage in the software product development life cycle. The process of dealing with requirements started in 1960. Requirement gathering and analysis is meant to decrease the communication gap between developers and end-users. Researchers have been focusing and exploring requirement engineering (RE) for the past few years, but there is still a gap between research and practical implementation of RE processes.
The software industry has focused on the requirement management system for the effective handling of project requirements. There are two major categories of requirement gathering and management techniques: direct and indirect techniques. The client requirements define the underlying software system’s purpose, objectives, working, and limitations [
8]. Software engineers have the choice to either use the interview, brainstorming, and prototyping, arrange workshops, or use a passive storyboard for the requirement gathering from the user or client. This improves the software quality by selecting the best available tool for requirement gathering and management, and directly enhances the project success rate. Requirements engineering is recognized as a critical task for the success of any project [
8,
9].
The selection of appropriate requirement gathering tools depends on many factors, including the system type, client expectation from the system, present working conditions, and features currently available in the system. These systems work with the help of various requirement gathering and management tools.
In the past, the requirement gathering and management process was completed using the manual approach, and all the requirement analysis, testing, and documentation was done using the manual systems [
10]. To date, the software development market has designed some tools for data gathering and management purposes [
11]. These requirement management tools are the better option for the development teams. These tools help the development team and the overall organization of various phases of the project and align the project with the time, cost, and human efforts.
However, these tools are also used for risk assessment, testing of the requirement, and tracking the completion of the requirement over the time. Report generation and management are also one of the important features of these requirement management tools. The identification of system bugs is easily handled by using these tools. Many tools have the options of visual system designing and requirement quality analysis [
12]. Thus, the aim of the study is a qualitative comparison of requirements collection and required requirements.
The rest of the paper is organized as follows. The literature review is presented in
Section 2, the proposed methodology and discussion is given in
Section 3. The conclusion and future work of this study are given in
Section 4.
2. Literature Review
The software product is continuously improving and assisting human life. Many software engineering companies are presenting new software for the betterment of humans. On the other hand, this improvement also creates a problem for software engineers because the clients assume many nonfunctional aspects of the system [
13]. Problems become more critical when the clients are not exactly sure what they need. Many times, the clients do not understand the technical details of the systems. From the perspective of the system designers, there are many problems faced by the engineers for the elicitation activities.
The study presented in [
14] focused on this issue. They performed a grounded theory-based study involving the 17 software startups engineers. They interviewed them all. They proved that the software startup engineers initially do not follow a single requirement engineering tool or techniques; rather, they continuously change the tools depending on the client’s expectations and requirements. They showed that the software engineers changed the selected tool over time based on the influence of developers, software project managers, market, business model, and clients. They showed that 57% of software engineering must incorporate agile project development in any of their project development phases, but other activities vary and depend on the accessibility of the owner of the project [
14].
Wellsandt et al. [
15] selected eight tools for the requirement elicitation and checked the performance on the selected parameters. They performed a qualitative analysis focusing on the information quality and client satisfaction rate. Their results were presented in the form of net-graphs. Their analysis was based on client satisfaction parameters. Ikram, Siddiqui, and Khan [
16] worked on issue-based information systems (IBIS) and misuse cases (MUC). They compared the system performance by checking the security parameters of the two selected techniques. Their controlled experimental setup was based on a 2×2 factorial design set. They showed that if we use the issue-based information systems and our clients is trained enough to use this mechanism, only then can the acceptance rate of the project be improved to ahigh level.
In the past years, it has been noticed that the field of software engineering is diverted towards the goal-oriented requirement engineering approach [
17]. In this approach, the client and the software project developer initially agree on some goals for the modeling and analysis of the requirement. This approach helps the system developer in that now, he has to work on the pre-defined goals. It also minimizes the forthcoming confluent and discourages the clients from having any alternative expectations from the final project. Today, the goal-oriented approach is considered as important as the approaches of the aspect-oriented model, business intelligence model, agent orientation, and model-oriented development.
In [
18], the authors evaluated different software engineering models; they classified the work based on framework type, adaptability, implementation platform, and goal-oriented models. In the field of software engineering, there is a concept that we have to select the best available requirement gathering technique for getting quality-based requirements from the clients.
Software engineers have a variety of requirement gathering and management tools. The study presented in [
19] showed that software engineers hardly use these elicitation techniques. Rather, they work for the requirement completion of the clients by selecting a combination of multiple approaches. They showed that the individual, collaborative, and contextual aspects of the project influence the software project manager in the choice of tools and techniques [
19].
The authors in [
20] worked for product-service systems to integrate products and services together and achieve maximum offering value with high functional results. They proposed an approach to deal with incomplete requirements gathered from the clients. Many software engineers face this issue in that the clients are often unaware of answering the questions asked by the software project management team. They introduced a novel approach to handle the uncertainties in the client requirement and presented an easy-to-use model for both the clients and the software project management team [
21].
Requirement gathering is always a difficult task for the software project team. This phase is more complex in the case of upcoming software startups. In [
21], the authors worked on various collaborative practices that assist new entrepreneurs in the process of software startups and guide them with the available tools and techniques for the software project requirement gathering and management process [
21]. In the age of emerging techniques used for the software engineering process, we have a dynamic environment full of many options in software startups; the important thing to handle in this domain is the choice of an appropriate software development approach. In [
22], a detailed discussion is given of the importance of the client’s requirements and its impact on the quality of the developed software product [
22].
The application of AI techniques to SE challenges has recently sparked a surge of interest. The authors in [
23] improved the quality and relieved the burden of the crowdsourcing software development (CSD) platform by using traditional AI planning approaches. They found that automatic planning significantly impacts a given task and is more efficient than manual planning. Researchers have dedicated their efforts to developing DeepCoders, an AI-based auto-coding software [
24]. DeepCoders can create a functioning program by consulting an extensive database of codes. Although the current version of this software only allows you to write a five-line mini-program, the developers have stated that this will be expanded in the following years.
Furthermore, the researchers can use publicly accessible software repositories using ML with a large amount of available data to learn and improve software reusability [
25] continuously. For the reusability of components in software development, mining SE data has proven successful. SE tasks benefit from AI in a wide range of applications. For intelligent computing of SE tasks, intelligent knowledge discovery combines AI and data mining. Software intelligence is the result of combining AI and data mining for supporting software engineering applications. It promotes automated software reliability for software construction and overall software development. By analyzing several AI technologies, the potential research prospects of AI and software reuse in software engineering have been prospected.
To address the SE problem, many researchers have used AI-based techniques. The authors in [
25] examined how AI approaches have been used for SE. Three types of techniques have received significant use: optimization and search, fuzzy reasoning, and learning [
26]. The authors in [
27] presented ongoing work from multiple groups, providing an overview of machine learning (ML) and SE in health informatics. It shows that the scale of clinical practice necessitates novel engineering techniques from both disciplines. This is only one example of how novel engineering approaches are needed in AI and SE for specific applications. Therefore, there is a need to tackle the challenges at a higher level of abstraction, as Harman [
27] pointed out, because the abstraction would help establish “strategies for finding solutions rather than the solutions themselves.”
The requirements phase serves as a core for the success of any software development project. Over the past years, researchers have suggested many techniques/tools for the various activities of the requirements phase of the Software Development Life Cycle (SDLC). SDLC is a process that includes different phases such as requirements analysis, design, coding, testing, implementation, and maintenance of a software system, as well as how these phases are carried out [
28]. Still, there are undoubtedly new research problems and issues as well. Because the requirements phase is a conceptual phase of the SDLC, one of the most notable difficulties is the high level of human intervention. Integrating AI tools in the requirements stage is a vast and successful research area. Practitioners are conducting solid research in relevant domains, but there is still a lot of need for more study to create a lot of imperatives [
29].
The design phase of the SDLC has great scope for incorporating AI approaches to enhance process efficiency. Furthermore, AI-based approaches may solve the issues by providing a variety of tools/techniques for automating specific operations to some level. However, the authors in [
30] point out the challenges at each stage of the design phase and the potential for AI tools to address these concerns. Moreover, using a Venn diagram, proper mapping of the challenges associated with each of the design stages was achieved using suitable AI techniques.
According to [
19], the process of RE is the initial step in software development and thus the essential stage of the SDLC. In [
31], the authors emphasize the importance of requirements management as the most acutely knowledge-intensive activity for managing complex systems. Requirement elicitation enables users to pinpoint their expectations and prospects for the new system. Unfortunately, due to various difficulties, such as confusing and inconsistent requirements, requirements engineers believe that requirement elicitation is an intriguing and challenging work to obtain adequate requirements. However, addressing these issues to some extent is essential for effective software development. Therefore, the authors categorize the main problems of each requirement elicitation step and explore how AI technology is a viable technology to overcome these problems. This work also describes the connection between the identified issues and their potential AI explanations in many requirements elicitation techniques.
At first glance, the use of AI in SE appears to be a contradiction in terms since AI relies on “intelligent machines”, while SE is a creative and knowledge-intensive activity that often requires the participation of human experts [
32]. However, from another perspective, the creative process in SE can be effectively supported by machines, which are supported by self-optimizing algorithms that take over the optimization tasks. It is frequently noted that the elicitation methodologies used to acquire software requirements significantly impact the quality of elicited requirements. Therefore, a lot of elicitation strategies have been given in requirement engineering (RE). Still, they are rarely used in practice due to a lack of empirical and comparative evaluations to help the software industry decide which technique is best.
Another study also examines the application of AI approaches to SE processes to significantly reduce time to market and improve the overall quality of software systems. The pattern recognition and the acoustic-phonetic approach are combined in AI because of combining the ideas of pattern recognition methods with an acoustic-phonetic approach. AI plays an indispensable role in various speech recognition activities, including recognizing algorithms and the representation of appropriate inputs [
33]. It is worth noting that AI is the most reliable and effective among all the speech recognition methods.
3. Proposed Methodology
In any project development life cycle, requirement gathering and management are the important phases. Requirement gathering requires a lot of mental attention. Many clients are unaware of how to properly describe their requirements. Sometimes, the project team makes irrelevant assumptions about the requirements, and they start focusing on how to “implement”, instead of “what to implement”. Sometimes, the given document template for the client’s requirement gathering is not sufficient for the clear elicitation of the requirements. Initially, the customer requirement elicitation document that is the product of the first three meetings is not exactly implementable.
The software teams mainly gather the requirements by brainstorming, one-to-one meetings, and visiting the client workspace. The team uses a variety of tools and predefined templates for the requirement elicitations. The project management team must understand that all the techniques, tools, and software requirement gathering models are not totally fitted in all the situations. Many project management professionals have experienced better results after implementing the common tools and adopting various techniques for different projects. Some software engineering experts recommended the use of the toolbox technique for a better customer satisfaction rate. Roulette Wheel Selection is used for requirement gathering along with AI models. It has been observed that the learning models provide the best results. An AI-based selection model for requirement gathering is shown in
Figure 1.
3.1. Toolbox Technique
For the proper requirement gathering and management, currently, the project management team uses a combination of various tools and RE models. In many software developments companies, the use of multiple software development methodologies is encouraged. We have a choice between the waterfall, agile, spiral, or scrum project development methodology. It is obvious that if the client’s project is something different, maybe in the context of working, implementation environment, and future use, different development model is adopted to handle that client and his requirements.
In the next section, we list the most useful tools for requirement gathering. We never use all the tools in every project. However, the choice of right tool for the relevant task can make our project more feasible, easier to manage, and increase the customer satisfaction rate. These tools are good for better software project requirement elicitation and give the team a much clearer insight for implementing client requirements into the software format.
3.1.1. Context Diagram
All the relevant entities, the surrounding environment of the used actors, and the system boundaries are cleared by the context diagram. This diagram acts as the first supporting tool for the requirement elicitation process. This diagram’s output highlights the internal and external system’s boundaries, the end-users of the system, and all the supporting team members either in-house or outsourced. It identifies which of the services the project team may have to get from a third-party service provider [
34].
Figure 2 shows the context diagram model.
This visual model of the system gives a visual understanding of the actors, their interaction, working modules, and communication among all. The major advantage of this context model is the clear understanding of the software development team and the customer. All the stakeholders know about the project’s scope, what the included things are, and which things are out of the scope. This diagram also helps to validate the operational activities of the system. It is like the company chart that tells the clients about the major to minor processes, tasks, and activities.
3.1.2. Functional Decomposition
This diagram is the hierarchical representation of the working modules. All the major functions and the major use cases are listed in a top-down manner. The previous tool listed the major entities, functions, and interactions among all the components [
35]. Now, the use of this tool gives us the functional decomposition and divides the major use cases into sub-tasks and activities in a hierarchy as shown in
Figure 3.
This diagram also helps to validate the operational activities of the system. It is like the company chart that tells the clients about the major to minor processes, tasks, and activities.
3.1.3. AS-IS Model
This is used to elaborate the present workflow of the end-user environment graphically. It is very important for the team to design this diagram first for a more comprehensive system description. It gives all the complex parts of the project. After using this requirement elicitation tool, the project development team is now more satisfied about the clearance of the requirements [
36]. They know the easy and complex parts of the project under development, as represented in
Figure 4.
3.1.4. TO-BE Activity Model
The TO-BE activity model gives the organization state after the final process. It is the after-development business expectation, showing how the new project can benefit the client’s company and what difference the under-development project could create for the owner’s company. As we discuss the requirement elicitation or gathering tool, this is a very supportive tool for the initial requirement gathering phases. Now the project team member, the owner, and all the stakeholders clearly understand the project phases and activities involved [
37].
3.1.5. User Stories
The use of user stories helps the software engineers in the identification of the requirements [
38]. The physical or virtual cards are more significant and assist in the initial requirement gathering phase with the user stories. The role of user stories is vital in case of a complex system or working on the major iterations of the system. User stories make the system more understandable and reduce its complexity level.
3.1.6. Mind Maps
The choice of tools for data gathering and management depends on many factors, such as the mind maps used by the software engineer to get the idea of the customers [
39]. Often, the clients cannot make explicit the system requirements; at that time, the software engineer gets help from the mind map tool to elicit the idea from the client.
In some cases, the client does not know the technical details or is unable to express their expectations. In these conditions, the use of mind map is the better choice. There are many requirement gathering techniques other than this that are being practiced in the market. The reason for selecting these techniques in the underlying qualitative comparison is the fact that no previous work in the literature had been done on these techniques. We believe that this qualitative comparison encourages researchers to focus their attention on these techniques and the software engineers also find this study helpful in choosing the better requirement gathering technique in their run time situations, as shown in
Figure 5.
We use the following parameters for the qualitative comparison of the above-mentioned requirement gathering techniques. Details for these parameters are mentioned in the below section.
3.2. Evaluation Parameters for the Qualitative Comparison Using AI
3.2.1. User Involvement
User involvement is an important parameter in the selection of appropriate requirement gathering techniques. There are some techniques in which the client is also directly involved in the system development phase or even in the requirement elicitation activity. Software engineers argue that user involvement has crucial importance in getting a maximum satisfaction rate from the software. User involvement enhances software project success and reduces many aspects that cause conflicts among the client, software developer, and designer. Along with this, user involvement guarantees the fulfillment of maximum client expectations, as the client is directly involved in the designing and requirement elicitation phases. In light of the above-mentioned details, we find the choice of user involvement a significant parameter to consider for the evaluation parameter selection.
3.2.2. Ease in Requirement Elicitation
It is important to consider the difficulty level being experienced by the client and the requirement elicitation team. Many times, the client feels uncomfortable in the requirement elicitation phase. Therefore, we have to consider a technique that provides maximum ease in the requirement elicitation phase.
3.2.3. Technical Background of Client
Technical background matters a lot in the requirement gathering phase. A client having good technical knowledge of the project is a perfect source of giving the project requirements to the software project development team. They know the technical details of the system. The requirement elicitation phase runs smoothly with the person who knows the technical details of the system that is under development in the requirement elicitation phase.
3.2.4. Number of Client Meetings
The number of client meetings has its own impact. There are some techniques for requirement gathering in which we have a lower number of meetings with the clients. For example, in the case of surveys, questionnaires, and requirement workshops, there is less chance to arrange these more frequently than map maps and interviews.
3.2.5. Operational Difficulty for Software Engineers
There are some techniques used for requirement gathering that are difficult to manage for the software development team. Many times, it creates problems to manage in the case of larger projects. In the case of brainstorming, if we have multiple stakeholders, it is difficult for the software project team member to have separate discussions. They may have different and slightly confusing requirements, and those requirements are difficult to build in a single software piece, such as if two or three requirements are contradictory to each other. Therefore, these are the parameters that we have selected for the qualitative comparison of the select requirement gathering techniques.
Figure 6,
Figure 7 and
Figure 8 shows the qualitative comparison in the form of spider chart. For the design of these spider charts, we assigned numerical values to the high, medium, and low terms used in
Table 1 and
Table 2. We assigned number three for high, two for medium, and one for low value.
Table 1 represents the results of the qualitative evaluation of requirement gathering techniques. In this table, we check the selected requirement gathering techniques for the selected parameters and list the results in the form of high, medium, and low. At the end of the table, we collectively write the total number of high, medium, and low rates.
3.3. Requirement Management Tools
In this section, we highlight the major features of 10 selected tools used in the requirement management phase.
3.3.1. ReQtest
ReQtest is a requirement management tool [
40]. Some of its distinct features are bugs tracing and linking between modules of the software development phase. There is the option for direct link generation between the client’s requirements with the corresponding test cases. This module assists the system tester in tracing the possible bugs in the system. Along with this, it helps the user in the visual designing of the system and creates ahierarchical tree for the client requirement that finally turned into the context diagram.
3.3.2. ReqSuite
ReqSuite is the well-known requirement management software in the market [
41]. Its configuration is simple and can be extended from a single client system to an enterprise-level software. Many software project management companies use ReqSuite for the management of their requirements. The hierarchical requirement management is best maintained using this tool. It is highly used for comprehensive report writing and requirement testing.
3.3.3. Jama Software
Jama tools are designed for requirement management, risk assessment among the client’s requirements, and rapid software development [
42]. These tools are commonly used for the software requirement of autonomous vehicles, healthcare, and defense industries.
3.3.4. Spira Team
Spira Team is the popular software requirement management tool developed by Inflectra (Washington, DC USA) [
43]. This tool works best with the software requirement gathering tool that is “user stories”. It gives the options for easy requirement management for all the software team members. The team members can work in collaboration using this tool. When you add the gathered requirements in Spira Team, it automatically determines the number of required test cases used to validate all the gathered requirements. It supports the hierarchical management of the gathered requirements. It also helps the software team in the assignment of the priority at the client’s requirement.
3.3.5. Process Street
This is a user-friendly requirement management tool [
44]. It is used to manage processes, activities, and tasks involved in each iteration. If the software designer interacts with the client by using this tool, it will assign the software designing in many dimensions. It is also an easy and time saving option for the software development team.
3.3.6. Visure
The requirements management toolkit provided by the Visure has many features, including bug tracking, requirement testing, requirement version maintenance, risk management, and comprehensive report generation tools integrated together in the single tool kit [
45]. It provides the services for the requirement quality verification and interlinks the requirement with a suitable development module.
3.3.7. Aligned Elements
This tool helps the software development team develop, maintain, and track for requirement completion [
46]. It is a flexible tool that saves much of the designer’s time and helps in the management of various requirements.
3.3.8. IBM Rational DOORS
This tool helps for requirement gathering, requirement completion tracking, and analyzes the requirements [
47].It gives a visual representation of the requirement and data for assistance to the software development team.
3.3.9. Xebrio
Xebrio is another tool used for requirement management in many software houses [
48]. It links the user’s requirement to the relevant task. It creates the milestones and tracks the completion of the project over the settled milestones. It is not just a requirement management tool; it provides complete project management services. Some of its features include the management of enterprise tasks, communication interface management, test management, and bug management.
3.3.10. Borland Caliber
This is a complete project management tool. It manages the client’s requirements; testing, analyzing, and risk management can be easily performed in this tool [
49]. The changing client’s requirements can also be easily maintained in this tool.
Table 2 presents a qualitative comparison for the 10 selected requirement management tools. We checked these tools on the basis of the 10 selected parameters. The details of these parameters are presented below.
Figure 9,
Figure 10 and
Figure 11 represent the results in the form of spider charts.
3.4. Selected Parameters
3.4.1. Bug Tracking
When we are working on different iterations, there is a chance that a few modules are not working well. They create errors or bugs in the operational phase. It is important to identify the bugs in the system development. Some requirement management tools help the software engineers in the detection of these software bugs in the system.
3.4.2. Hierarchical Requirement Management
When the client is giving the system details, the software engineers often follow ahierarchical approach for the requirement gathering phase; with this hierarchical approach, they better understand the system or product being developed.
3.4.3. Visual Designing
Many times, the software designer wants to depict the system model. For this, they are looking for some tools that can manage the client’s requirements, and at the same time, those tools assist them in the visual designing phase of the system.
3.4.4. Risk Management
Risk management is an important task in the project management phase. Many softwares help software engineers in the risk management phases.
3.4.5. Test Management
When the software developer is working on various interconnected iterations, he has to manage the testing of these iterations. They look for test management tools that are embedded into the software management toolkit.
3.4.6. Requirement Testing
Requirement testing parameters are also important to check before selecting the appropriate management tool.
3.4.7. Requirements Quality Analysis
The quality analysis of the requirement is very important. Some tools help the software engineers in this regard. That is why we selected this parameter for the qualitative assessment of the requirement management tools.
3.4.8. Requirement Versioning
Some clients give the requirements in different phases. In this situation, the software management team has to maintain the requirement version aligned with each client–designer meeting. Some requirement management tools have this option for the requirement version management.
3.4.9. Release Management
Sometimes, the software development team is working on the upgraded version of the software that was previously developed by the same team. In this situation, they have to work for the release management of the product.
3.4.10. Comprehensive Report Writing
The final working software needs comprehensive documentation. Other than this, some clients demand a report for the major modules of the system. Some requirement management tools help in this regard. Hence, we added this parameter for the qualitative comparison of the management tools. The software designing occurs in many dimensions, and it is an easy and time-saving option for the software development team.
3.5. Discussion
Requirement engineering is a subject area that is influenced by a variety of factors, from customer involvement to analyst experience. There are several tools used for requirements gathering and management in requirements engineering. However, choosing the right tool for the task at hand can increase project feasibility, ease management, and improve customer satisfaction. Therefore, in this study, several tools are comprehensively investigated, taking into account several (10) parameters to examine the feasibility of these tools. Parameters include bug tracking, hierarchical requirement management, visual designing, risk management, test management, requirement testing, requirements quality analysis, requirement versioning, release management, and comprehensive report writing. We also present the advantages and disadvantages of all the tools studied. New researchers or people from the industry can analyze any tool from this study before using it. Using appropriate tools helps a software developer to effectively manage user requirements, especially when these tools are used in improving the performance of the sustainable city paradigm.