1. Introduction
Software development is known to be a complex task comprising various development phases, each of which requires some level of specific expertise [
1,
2]. Thus, far, various methodologies, techniques and tools have been developed to further the engineering of software systems; to reduce the cost and time of production, especially for complex systems; and/or to improve the quality of the final software product. This brings forth the two fundamental and complementary building blocks of software engineering: the functional requirements (FRs) and non-functional requirements (NFRs).
Functional requirements describe the services to be rendered by the software (in construction), while NFRs define the quality of the service, as well as the user interface and constraints on how the services are to be produced and rendered [
3,
4]. So, in service-level agreement contract documents, quality of service (QoS) parameters, also known as non-functional parameters, are used to specify the minimum quality of service level that must be guaranteed by a system. To date, the major progress in software engineering is (said to be) largely related to FRs. For instance, the unified modeling language (UML), one of the popular semi-formal (graphical) modeling approaches of the object-oriented software development methodology, does not inherently integrate the mechanisms for NFRs. The same is true with other methods such as agile [
5], model-driven software development (MDSD) [
6], and the established formal methods (FMs) such as the Z notation [
7]. Nevertheless, for the past few decades, efforts have been made to further the development of NFRs. For example, the goal-oriented requirements engineering (GORE) methods [
8,
9,
10], starting with the genesis of the NFR framework [
11], have revolutionized the engineering of NFRs by bringing together the analysis of FRs and NFRs within the same (goal) model. Approaches extending the existing methods for FRs or combining them to model and analyze NFRs have also been derived. It is noted in the first place, the enrichment of UML with new concepts using UML profiles to develop new techniques such as SysML and MARTE [
12]. As a UML, the systems modeling language (SysML) is an OMG standard that has been used to support systems engineers in various fields including production, aerospace, mechatronics, automotive, energy, defense, safety and robotics [
13]. On the other side, MARTE, which is another OMG-standardized modeling language, is more dedicated to the modeling and analysis of real-time and embedded systems.
Nonetheless, in many publications on NFRs, statements indicating that NFRs have been neglected, overlooked or poorly developed because of their complexity, are still frequently encountered.
Thus, the intention of this article is to establish the current state-of-the-art in the analysis/development of NFRs with the goal of pinpointing the progress made so far and developing a better idea of what is still to be achieved. The main research question this work seeks to answer is therefore the following:
What is the current state of non-functional requirements development throughout the software development life cycle? (RQ)
From the main question, the following two sub-questions are derived:
The main contributions of this article are as follows:
- 1.
The establishment of the current level of analysis and development of non-functional requirements throughout the SDLC. By so doing, this article sheds light on the research gap in the field of NFRs analysis and hence provides means to derive future work, including the possibility of master’s and doctoral research topics.
- 2.
This article has equally endeavored to unpack the methods and techniques that have been used to develop various means for NFRs analysis as well as the roles played by such techniques and methods in the development of NFRs.
- 3.
This work has also examined the different phases of the software development life cycle for which approaches have been proposed for the analysis and development of NFRs. For each SDLC phase, the activities of such approaches have been identified and discussed.
- 4.
This work has enabled us to elicit a number of future works to further research in the area of NFRs analysis and development.
Following the above introduction with the research questions, the research methods used in this article are presented in
Section 2, including the research process in
Section 2.1, the search string with the selected online databases in
Section 2.2, the inclusion/exclusion criteria in
Section 2.3 and the search results presented in
Section 2.4.
Section 3 uncovers and examines the role of the existing methods and techniques used in the approaches proposed for the analysis of non-functional requirements. Meanwhile, the current state of NFR development within the software development life cycle (SDLC) is discussed in
Section 4, with the focus on the requirements engineering activities in
Section 4.1, as well as the software design in
Section 4.2 and the implementation in
Section 4.3. Thereafter,
Section 5 presents the research results, followed by the discussion, the options for future work, and the threats to validity in
Section 6. Finally,
Section 7 concludes the article and is followed by a list of references.
2. The Research Method
In line with the research onion proposed by Saunders et al. [
14], which is illustrated in
Figure 1 and unpacked from the outer layer to the inner one and from left to right, this work is more in line with interpretations of research philosophy, owing to the qualitative analysis of the carefully selected research publications. The research approach is inductive with the mono method, with qualitative analysis as the main research methodology, as in this article, a systematized literature review is conducted to identify the publications from which appropriate data are extracted and qualitatively analyzed to seek answers to the research questions.
The data manipulated in this work were extracted from carefully selected journal articles and conference papers on non-functional requirements and software development activities. The literature review is therefore an important part of the research process. The documents considered are those published or available in the specified time period as this piece of work is intended to be a cross-sectional study.
2.1. The Research Process
To answer the research questions, a systematized literature search of publications in five selected online databases was conducted (as listed in
Table 1). These databases are amongst the most frequently solicited by researchers in the field of computer science and information technology. The search string used to query the databases was formed by combining the keywords generated from the research questions. Due to the particularities and the way each database interprets a query, the string was modified slightly to suit the requirements of the respective databases. Depending on the results of the trials, the final selection was performed on the article’s title and/or the abstract and/or its keywords. The selected articles were filtered using the inclusion/exclusion criteria. The remaining publications, those that explicitly addressed the development of non-functional requirements, were synthesized to answer the research questions.
In addition, the query used in each online database was also used to query both the Google Scholar and Springer Link databases to ensure the comprehensiveness of the search. The main purpose is to investigate the extent to which the development of NFRs has been integrated into the traditional software development life cycle (SDLC).
2.2. The Search String and the Online Databases
After a number of trials, the two keywords that were retained for non-requirements are “Non-functional requirements” and NFRs. Initially, other keywords such as “quality attributes”, “quality requirements”, and “non-functional properties” were added to the list, but they did not yield any positive contributions during the trial phase. The second set of keywords are specification, analysis, and modeling. The two sets of keywords were combined to form the following generic search string:
(“non-functional requirement*” OR NFR*) AND (specification OR analysis OR model*).
As indicated earlier, depending on the database, this string was adapted to suit the requirements of the database. The databases were chosen amongst those mainly encountered in the literature reviews within the discipline of computer science and information systems. The list of databases chosen are presented in
Table 1.
The databases were accessed via the online library of the University of South Africa and the links used are those given in the second column of
Table 1.
2.3. The Inclusion and Exclusion Criteria
Due to time constraints for this study, only articles published between January 2013 and April 2023 were included. Although this time range could affect the number of relevant works, the final list of 34 relevant works was considered acceptable for the purposes of this study. More importantly, only publications that propose guidelines, a framework, a model and/or any other approach to develop or evaluate NFRs in software development or to integrate the analysis of NFRs into existing methods or techniques, were retained for the study. Non-English-language posters and publications were excluded, as well as those tangential to the analysis of NFRs. The search results and the selection process for the publications included are summarized in the next section.
2.4. The Search Results
Firstly, an automated search of the selected computer science and software engineering databases was undertaken. Secondly, the Google Scholar and Springer Link databases were used as a means to ensure the comprehensiveness of the first search. The number of publications obtained from each database, as well as the date and time of the search, are presented in
Table 2. A total of 270 publications were extracted during the first search.
The inclusion and exclusion criteria were progressively applied to filter the initial list of publications. For each search, a bibtex document with the search result was generated and exported to a specific folder in Mendeley Desktop Version 1.19.8. As illustrated in
Figure 2, the filtration process was undertaken in Mendeley starting with the selection based on the articles’ titles and abstracts which resulted in a reduction from the initial list of publications to 67. This was followed by the screening of the content of each article, with a focus on the methodology, discussion, and conclusions that led to the exclusion of 33 publications. A total of 34 publications were therefore retained for the study. This comprises 21 (representing 61.8%) studies, which were published in conference proceedings, 13 (38.2% of 34) of which were journal articles.
The number of publications per year and per type of publication are shown in
Figure 3. The blue line represents the number of papers published in conference proceedings, and the red line represents journal articles.
The majority of the conference papers, (8 in total representing 38.1% of all the conference papers), were published in 2013. The remaining 13 were published from 2014 to 2020 at a rate of about 1 or 2 papers per year, with no publications from 2021 to 2023. From 2013 to 2022 (excluding 2016 and 2017), the number of journal articles published per year is approximately 0 or 1. The highest number, 5, representing about 38% of the total number of the articles, occurred in 2023, followed by 2 articles published per year in 2016 and 2017.
Importantly the study of the selected publications revealed that techniques and methods currently employed in software engineering are frequently used or adopted to analyze NFRs. Amongst others, these include, UML, XML, machine learning/deep learning algorithms and mathematically based approaches to software engineering, etc. Thus, the next section elaborates further on how these techniques are used and what aspects of NFR development they address.
3. Methods and Techniques Used in the Analysis of Non-Functional Requirements (NFRs)
The selected software engineering approaches used or adopted for the development of NFRs include the GORE methods, unified modeling language (UML), mathematically based approaches [
15], extensible markup language (XML) [
16], and machine learning. Algorithms and available datasets are also included. The chart in
Figure 4 depicts the number of publications per technique.
3.1. GORE Methods
Goal-oriented requirements engineering (GORE) methods are the revolutionary requirements engineering frameworks that combine the analysis of goals describing functional requirements and soft goals describing non-functional requirements [
17]. These include, among others, the non-functional requirement (NFR) framework [
11], knowledge acquisition in automated space (KAOS) framework [
18], istar (or i*) framework [
19], Tropos/Secure-Tropos [
20,
21], goal-oriented requirement language (GRL) [
22], etc. The central concept is that of the soft goal interdependency graph (SIG). A SIG encapsulates both the goals and soft goals refinement and their operation. A refinement decomposes intentional elements (goal, soft goal, etc.) into more detailed ones, using the And/Or decomposition concept. Whereas operation provides the means for satisfying goals and soft goals, it also uses the concept of links to establish the relationships between the different elements in the graph, helping to model and propagate the impact of a given solution on other intentional elements (goal, soft goal, actor, etc.). Another important aspect is the possibility of applying an evaluation (or propagation) algorithm to the SIG to determine the level of (soft) goal satisfaction for a given strategy.
As shown in the chart in
Figure 4, 9 of the 34 selected publications for this study (26.5%) used a GORE method in their treatment of NFRs, most of which either consider the SIG model as a direct input to their proposed method or first transform or extend it with new concepts before using it.
In that regard, it is noted that the extension of the NFR framework into a directed graph optimizes the operation of soft goals to select the best implementation strategy [
23]. DeVries et al. [
24] proposed a three-step NFR analysis tool, namely SOTTER, that introduces new concepts for soft goal mitigation to the existing goal model (KAOS) to facilitate the detection of soft goal violation and their mitigation. Goncalves and Krishna in [
25] proposed an extension of the NFR framework model with the weighting of soft goals and their operations to facilitate the generation of software agents in a model-driven agent development executed in a dynamic environment. Arif et al. in [
26] suggested a method for the development of FRs modeled with UML, NFRs and the NFR framework where they applied fuzzy logic to the SIG model to accommodate the inherently vague and imprecise nature of SIG links. Conversely, Mehta et al. in [
27] further the dependency link analysis in the SIG model to improve the effective strategy selection to satisfy soft goals. Based on the 14 privacy modeling capabilities as proposed by Peixoto et al. [
28], these authors demonstrated that by comparing i*, the NFR framework, and Secure-Tropos, these languages do not fully support the modeling of privacy requirements. Lastly, Dermeval et al. in [
29] borrowed NFR framework concepts to propose a framework for documenting architectural decisions.
By comparing the 4 selected GORE methods using the proposed features required for the specification of safety-critical systems (SCSs), Vilela et al. [
30] demonstrated that GORE methods are not all equally rich in concepts necessary for the specification of certain specific systems (such as safety-critical systems). Although in [
28] it is recommended to use a GORE method for the specification of privacy requirements, the conceptualization of the 14 features (for the meta-model) required for the specification of such requirements is performed with a UML class model. Similarly, in [
29], the authors use the UML class diagram to conceptualize a meta-model for documenting the architectural design decisions based on i* model of NFRs.
3.2. Using UML Modeling for NFRs
Unified modeling language (UML) [
31,
32] is a standardized software modeling language that has gained considerable popularity during the past few decades. Although very rich in concepts pertaining to the modeling and design of the systems’ functionalities, it does not inherently address NFRs. However, UML profiles [
33] allow for the extension of existing models with stereotypes that have largely been used, amongst others, to support NFRs.
As depicted in
Figure 4, 7 of the 34 selected publications (20.6%) utilized UML in their proposed NFRs analysis approach. These include publications in which EMF Ecore models or meta-models are used. Such models can be considered sub-models or refined models of UML.
In [
34], the authors favored the use of a UML profile to model NFRs, models to which they applied fuzzy logic for NFRs trade-off analysis pertaining to the optimal satisfaction of NFRs. On the other hand, in [
26], an alternative approach is suggested to associate NFRs from an NFR framework with UML use case diagrams modeling FRs. In the same vein, Kaur and Sharma in [
35] believe in associating NFRs to use cases describing the functionalities of the system and in so doing, extending UML use case diagrams to integrate NFRs. Martinez et al. [
36] suggested an approach to detect conflicts and dependencies in NFRs using UML scenarios and use cases describing the functionalities of the system. In [
37], Khalique et al. proposed EMF Ecore meta-models to generate domain NFRs from product line NFRs using the MDSD transformation approach. Although not utilized to represent or analyze NFRs, in [
28], a UML class diagram was used to model a privacy conceptual foundation to enable a comparison between i*, NFR framework and Secure-Tropos to determine which of the three was more appropriate to model privacy requirements. Similarly, a UML meta-model is proposed in [
29] to enable the documentation of the architectural design decisions relating to the i* model of NFRs.
3.3. The Use of Machine Learning (ML) Techniques for the Analysis of NFRs
In regard to machine learning, this study has considered all articles that utilize ML algorithms [
38], deep learning (DL) algorithms [
39], and/or any natural language processing (NLP) tools. These algorithms have the merit of enabling computers to learn from data, without being explicitly programmed in order to make better predictions or decisions. Rooted in conventional neural networks, deep learning (DL) (a subset of ML) has outperformed traditional ML relying on statistical models [
40] in various applications including NLP tasks: extraction of information from large documents, text classification, etc.
One of the challenges with NFR analysis is to extract such requirements from an often-large requirement specification document, written in natural language, and classify them into different categories. To overcome the manually intensive efforts and its inherent high probability of errors, the use of ML/DL algorithms has been solicited. Rashwan et al. [
41] proposed an ontology annotation of NFR types and the ML algorithms known as a support vector machine (SVM) classifier to automatically categorize NFR sentences into their ontology classes. In [
42], an improved DL approach, namely BERT-CNN, is proposed for the extraction and classification of NFRs. Similarly, in [
43], it is the recurrent neural network (RNN) that is solicited for the classification of NFRs. On the other hand, Yahya et al. [
44] preferred a hybrid deep learning model that combines an RNN model and 2 LSML to identify and classify NFRs solicited from user comments for mobile apps. Alashqa, in [
45], opted to study the commonalities, mappings and relationships between non-functional requirements, by analyzing the results of 5 ML algorithms applied to an existing requirements dataset. The 5 ML models are k-nearest neighbor (KNN), logistic regression (LR), support vector machine (SVM), multinomial naive Bayes (MNB) and random forest (RF). Lastly, Singh et al. [
46] proposed a rule-based system for automated classification of non-functional requirements from requirement specifications, using various NLP tools.
Thus, 6 out of the 34 publications (17.6%) selected for this study have suggested the use of ML algorithms and NLP tools to extract and classify NFRs from requirements documents.
3.4. Using Mathematically Based Methods to Analyze NFRs
Although ML algorithms are essentially based on mathematical models, they have been treated separately since they constitute well-established techniques in software engineering. Under the mathematically based methods, all the articles that include mathematical concepts, other than those of ML/DL, to analyze NFRs, have been included. Amongst others, these models or formulas are based on ontology, fuzzy logic, set theory, formal logic, and so forth. These approaches are mainly utilized for trade-off analysis of conflicting NFRs, their prioritization, and the selection of the strategies being those that best realize or satisfy the soft goals describing NFRs.
As shown in the graph in
Figure 4, 10 of the 34 (29.4%) selected publications utilized some mathematics in their methods. To manage conflicts between NFRs, in [
47], a framework based on the ontology model, namely sureCM, is proposed to specify the system’s requirements and the parameters necessary to characterize the conflicts and facilitate decision making. In [
23], Affleck et al. suggested an extension of the NFR framework’s SIG into a directed graph to allow the application of set theory operations and arithmetic formulas for calculations to select operations that optimize NFRs satisfaction. Rashwan et al. [
41] constructed an ontological model of NFRs to which they applied ML classifier algorithms to classify the NFRs. Saadatmand and Tahvili [
34] applied fuzzy logic to an NFR model constructed with a UML profile for a trade-off analysis to help identify different design alternatives that lead to higher overall satisfaction of NFRs in the system. Conversely, Arif et al. [
26] proposed an extension of the NFR framework model with fuzzy concepts to address the vagueness and imprecision of the contribution links, hence facilitating the analysis of the impact of an operation on other NFRs. Similarly, Zhang and Wang [
48] uses fuzzy set theory to perform a trade-off analysis of conflicting NFRs. Paucar and Bencomo [
49] proposed a mathematical probabilistic framework, based on the partially observable Markov decision processes (POMDPs) models, for decision-making during runtime to satisfy NFRs. To facilitate the identification of conflicting NFRs and their prioritization, Shah et al. [
50] also utilized an ontology model for NFRs. In the same vein, Liu [
51] proposed a conflict detection tool based on ontology for NFRs evolution. Last but not least, Luangwiriya and Kongkachandra [
52] applied existential logic and the rules of inferential logic to conceptual graphs, representing NFR frames, to automate the detection of conflicting NFRs.
3.5. The Role of the Extensible Markup Language (XML) in the Development of NFRs
A total of 3 (about 9%) of the 34 selected publications used XML in their NFRs analysis. Almeida et al. [
53] proposed an XML specification of the features model of a software product line to suggest a proposed decision algorithm to identify the best available application configuration (BSolution), based on the given NFRs specification, that best satisfies the NFRs, while Shah and Patel [
54] used an XML specification of requirements description schemas which aimed to facilitate the requirements’ transferability, automation, storage and traceability. Lastly, in [
52], an XML model of NFRs extracted from a requirement specification document, and representing construction of conceptual graphs for NFRs, is used to detect conflicts in NFRs.
3.6. Algorithms, Prototypes and Simulations in the Development of NFRs
In this category, the publications in which algorithms, prototypes, simulations or existing software tools were included in their proposed NFRs analysis approach were considered. A total of 17 (50%) of the 34 publications selected for this study were identified. These publications are mainly those in which machine learning approaches or mathematically based solutions are used for the treatment of NFRs. In general, the algorithms are proposed as a means to process the suggested NFR models or to implement a given method. Prototypes and tools are used either for illustration or for testing.
3.7. The Role of Existing Datasets: Promise and Concordia RE Corpus in the Development of NFRs
Two datasets were encountered in this study: the PROMISE and Concordia datasets. The PROMISE corpus [
55] is a research dataset repository that contains a total of 326 NFRs and 358 FRs. The Concordia RE corpus was created by [
41] for their work. It contains 3064 requirement sentences manually sorted into four main classes: FR, external and internal quality, constraints and other NFRs. These datasets are mainly used to test ML/DL algorithms used for NFRs analysis, especially the extraction and classification of NFRs from large SRS. The tests are performed to determine the performance of the ML model in terms of the precision, recall and F1-score measures that provide quantitative assessments of the model’s predictive capabilities [
56].
Although most of the NFR approaches proposed in the selected publications do not target a specific known software development methodology, some do, which are discussed in the next section.
3.8. NFRs Analysis for Specific Software Development Methodologies
In 12 of the 34 publications (35.1%) selected for this work, the approaches proposed for NFR analysis are specific to a software paradigm or methodology. These were identified as agile [
57,
58,
59,
60], model-driven development (MDD) [
25,
34,
37,
61], aspect-oriented software development (AOSD) [
35], software product line (SPL) [
37], self-adoptive systems (SASs) [
49] and service-oriented architecture (SOA) [
62].
Figure 5 shows the percentages of the 12 publications that opted for each respective methodology.
As shown in
Figure 5, agile and MDD methods were adopted in 4 publications, respectively, representing 34% of 12. These two methodologies do not inherently integrate mechanisms for NFRs development into their processes and, despite their popularity, more research efforts are still required for them to fully embrace NFRs. Each of the four other approaches was considered by only 1 publication out of 12 (8%).
4. The Analysis of NFRs in SDLC
In general, authors point out four fundamental phases for the SDLC, although they use different terminologies to describe them [
1,
63,
64]. Since this work aims to investigate the progress made towards the development of NFRs throughout the SDLC, only the SDLC phases for which the activities have been addressed in the selected publications are here considered. For each phase, only the activities covered in the selected publications are considered. Thus, only five activities for the requirements engineering (RE) phase are identified, and only two for the software design (SD) phase. The activities for the RE phase are NFR elicitation, NFR primary analysis, NFR specification and modeling, NFR conflicts and trade-off analysis and NFR strategies selection. The two SD activities are design decisions/transformation and documentation/traceability. No activity could be linked to the software implementation phase.
Figure 6 shows the statistics of the number of publications per NFRs activity. It can be seen that, in general, each publication covers more than one activity that does not necessarily belong to the same NFRs’ respective development phase, although it appears that most of the researchers’ efforts have been concentrated on the requirements engineering phase. As many as 32 of the publications (94% of 34), focused on the requirements engineering phase, while only 4 (less than 12%) addressed the software design phase [
29,
35,
37,
53]. Two of these publications discussed the activities in both the RE and SD phases [
37,
53].
4.1. NFRs Requirements Engineering
In
Figure 6, it can be seen that the NFR specification and modeling is the most popular activity addressed in 16 publications, followed, respectively, by the requirements categorization and prioritization (14), the NFR conflict(s) detection and trade-off analysis (11), selection of the best strategy for satisfying NFRs (7) and the requirements elicitation and evaluation (6).
4.1.1. NFRs Elicitation and Evaluation
The requirement elicitation consists, for the software engineer in collaboration with other stakeholders, of uncovering and gathering the users’ true needs by identifying, searching or interrogating all the possible requirements’ sources. It is the first and only of the more complex RE activities whose purpose is to produce a robust software requirement specification (SRS) [
65]. At this stage of requirement gathering, it is, in general, not always possible to distinguish between the functional and non-functional requirements and, hence, the activity is common to both types of requirements. This may be one of the reasons why the present research could not find many publications on the NFRs requirements elicitation since the focus was merely on NFRs. However, in industry, the lack of NFRs elicitation was also observed by Werner et al. [
66] who stated:
While our study did not directly observe the elicitation of NFRs at the three organizations, the practices we identified were concrete actions these organizations took to support NFR realization and verification [
66].
Of the six articles that addressed the requirements elicitation, two of them did not focus on requirement elicitation [
26,
30], but were counted among the six because they used the requirements elicitation as an intermediate step in their approach. The remaining four focused on agile: Brataas et al. [
60] proposed a method for eliciting the scalability requirements in agile. While Meridji et al. [
62] developed a framework for eliciting security requirements, Amorndettawin and Senivongse [
59] suggested patterns/templates for eliciting and representing NFRs, and Aljallabi and Mansour [
57] proposed a six-step process for eliciting and analyzing NFRs in agile based on two existing approaches [
67,
68]. The relative concentration of the researchers’ efforts on agile may be justified by the fact that the methodology is popular, but does not naturally have mechanisms for NFR elicitation and analysis.
4.1.2. NFRs Primary Analysis: Categorization and Prioritization
Depending on the approach and techniques used to assist with the requirements gathering, some preliminary analysis and evaluation of individual requirements can be performed at that early stage. However, amongst other reasons, for the sake of automation, the bulk of the analysis is only possible when an initial list of requirements, generally expressed in natural language (e.g., English), is produced. These include, amongst others, ensuring the correctness, completeness, internal and external consistency of the requirements, classifying and prioritizing them, detecting and resolving conflicts among them, selecting the best strategies for satisfying NFRs, etc.
In this work, the analysis phase is divided into two parts to separate the activities common to both FRs and NFRs and those exclusive to NFRs. As shown in
Figure 6, 14 of the selected 34 publications (41%) addressed primary analysis activities [
37,
41,
42,
43,
44,
45,
46,
47,
50,
52,
57,
58,
69,
70] with the bulk of the efforts made toward automating the process of extracting requirements from the requirements document (produced during the requirements gathering phase) and classifying and/or prioritizing them. As discussed in more detail in
Section 3, the authors propose approaches that combine various techniques such as fuzzy logic, ontology, machine learning/deep learning, XML, and so forth, to automate the extraction of NFRs from requirements documents, as well as their classification and prioritization.
4.1.3. NFRs Specification and Software Modeling
Although software requirements specification can start as early as the elicitation phase, in general, and in practice, the initial requirements document, compiled at the elicitation phase, is in natural language and contains a mixture of FRs and NFRs, as well as other useful information [
4,
65]. Thereafter, depending on the approach adopted, the requirements are extracted from the document and specified for further analysis and development. This study observed that beyond the requirements elicitation and evaluation step, any important NFR development, proposed in a publication, precedes a requirement specification using a known or suggested method with its associated modeling language such as use cases for UML or NFR framework for the GORE method. Compared with other activities, this could explain the high number of articles that include requirements specification in their suggested NFRs analysis approaches: 16 of the selected 34 publications (47%).
It was noticed that some of the publications studied in this work utilize more than one requirement specification technique in their proposed NFRs analysis approach; the main approaches encountered and discussed in
Section 3 are GORE methods (NFR framework, KAOS, iStar, GRL and TROPOS) [
23,
24,
25,
26,
27,
28,
30,
62], UML [
26,
28,
34,
35,
36,
37], Ontology [
23,
26,
34,
47,
50,
51] and XML [
52,
54].
4.1.4. The Second NFRs Analysis: Conflicts Detection, Trade-Off Analysis and Strategy Selection
Although separated in
Figure 6, the detection and resolution of conflictual relationships between NFRs, and the selection of the best solution to satisfy NFRs are closely related activities that cannot easily be separated in practice. They count among the important NFRs analysis problems for which different approaches have been proposed, such as ontology-based methods, whereby an ontology model of the requirements is constructed and used as input to the proposed method [
47,
50,
51]. With the goal-based approach, the goal model of the requirements is sometimes transformed or extended with new concepts, and subsequently, a method or framework is proposed to analyze the model [
23,
24,
25,
27]. In the same vein, approaches based on fuzzy logic have also been proposed [
34,
48], as well as those based on conceptual graphs [
52], the partially observable Markov decision process (POMDPs) [
49] and the matrix [
57].
4.2. NFRs in Software Design
The influence of NFRs on software design decisions to produce software of appropriate quality has long been acknowledged by researchers [
71]. Hence, the expectation is for researchers to propose software design processes that fully integrate NFRs and include the documentation and traceability of design decisions. In this regard, 3 of the 34 selected publications (less than 9%) contributed toward at least one of these expectations. In [
29], a meta-model to document design decisions (hence relating design to NFRs) and facilitate traceability is proposed. Khatter et al. [
61] suggested an approach for the integration of non-functional requirements in a model-driven architecture. Last but not least, Almeida et al. [
53] developed an NFR-based decision-making approach to select the execution configuration that best satisfies NFRs in a dynamic environment.
4.3. NFRs in Software Implementation
The development and propagation phase of NFRs includes any methods and tools used to dispatch the influence of NFRs on the different models and the final software product. The key point here is to investigate the extent to which this phase has been of interest to researchers (and/or practitioners). The assumption here is that this phase has generally not received enough attention. No single article was found that addresses NFRs during the SDLC implementation phase. This calls for further investigation both in industry and academia.
5. Research Result
The main research objective of this work was to investigate the current state of non-functional requirements development throughout the software development life cycle. This was addressed by conducting a systematized literature review of 34 publications published between January 2013 and April 2023, all carefully selected from five well-established online databases. The main research question was divided into two complementary sub-research questions.
5.1. What Approaches or Mechanisms Are There for the Processing of NFRs? (RQ1)
Various methods, techniques and tools are used in the development of NFRs: GORE methods, UML, machine learning, deep learning and/or NLP tools, other mathematically based techniques such as fuzzy logic, ontology, graph theory and inferential logic, XML-based notation, algorithms, prototypes and existing datasets. With notation techniques such as GORE methods, UML and XML, authors sometimes find it necessary to extend the original technique with new concepts to make it more applicable to their proposed method. For instance, the transformation of an NFR framework into a directed graph to facilitate the selection of the operation that best satisfies NFRs [
23] is noted. Another example is the use of a UML profile to enable the incorporation of fuzzy concepts into a UML model and capture different alternative features [
34]. Some authors also combine different techniques to construct a mechanism to address NFR development activities (as depicted in
Figure 6 and discussed in
Section 4). For instance, Luangwiriya and Kongkachandra [
52] proposed a method for detecting conflicts within NFRs that uses an extended version of XML, namely, NFR XML frames to represent NFRs extracted from software requirements documents, as well as a conceptual graph (mathematically based technique) to structure the NFRs and hence facilitate the analysis and detection of potential conflicts.
For the past ten years, researchers’ efforts towards the analysis of NFRs have focused on the activities of requirements engineering and software design, with less effort devoted to software development or implementation. In RE, the activities covered include NFR elicitation and evaluation, their classification and prioritization, NFR specification/modeling, conflict detection and trade-off analysis, as well as the selection of the best operation or strategy to satisfy NFRs. Conversely, NFR elicitation has not received as much attention from the selected publications compared with other RE activities, such as NFR classification, prioritization, specification/modeling, conflict detection and trade-off analysis. In general, the methods proposed for the development of NFRs utilize GORE methods, UML, XML and ontology for the specification and modeling of activities, as well as the operation of NFRs. ML/DL techniques, together with some other natural language processing tools, fuzzy logic, graph theory and inferential logic are employed in the analysis of NFR models pertaining to their classification, prioritization and conflict detection, etc. Some of the NFR methods are proposed for a specific software development methodology or environment and may not be applicable elsewhere or need to be adopted for other environments. There are approaches for agile, model-driving development, aspect-oriented software development, software product line, self-adoptive systems and service-oriented architecture.
5.2. Can a Process Be Derived from Existing NFR Approaches That Covers the Entire, or a Part of the SDLC? (RQ2)
Software engineering is a continuous process with multiple steps that starts with the elicitation of the user’s requirements and ends with the tested software product. In that regard, a task within a process should accept as an input the output from a previous activity and produce an output that can be used by other activities. Thus, there is a need to investigate the possibility of structuring existing NFR development approaches into groups for which the output from one group can be used as the input of another group. This may call for a deeper qualitative analysis of each of the existing approaches (which is not within the scope of this work and would constitute a research topic of its own). However, to illustrate the idea, we consider the RE activities in
Figure 6 and the methods proposed for each activity.
The following groups can be considered: a group of approaches for NFRs elicitation and evaluation, a group for NFRs categorization and prioritization, another group of methods or techniques for the specification and modeling of NFRs, as well as a group of suggested approaches for detecting conflicts in NFRs, performing trade-off analysis and selecting, among the alternative solutions, the strategy that best satisfies NFRs. Only the elicitation activity accepts inputs from various sources: stakeholders, business documents and processes, the business environment, policies, standards, etc., to produce an initial requirements document(s). These requirements are extracted from the document and classified and prioritized, resulting in more structured and elaborated requirements documents that are to be specified, refined and operated. They can also be used to produce other models of the software. With GORE methods, FRs and NFRs from the requirements document(s) are specified, refined and operated, resulting in a SIG (soft goal inter-dependency graph) model. With UML, more models may be produced including, scenarios diagrams, use cases diagrams, class diagrams, activity diagrams, and so forth. The same input can also be specified using XML, or to produce an ontology model. This shows that various outputs with different formats can be constructed from the same input. This does not necessarily imply an impediment to the next activities. First, because the various output formats can be converted into a common format, e.g., XML. Secondly, each output may be an appropriate input for one or more methods that may be needed for the next activity.
This illustration shows that NFR development activities (from the requirements elicitation to the documentation of the architectural design decisions) can be linked (iteratively) to one another through the intermediate models of the system in construction. They are iterative, in the sense that at any stage of development, if an error is detected (e.g., from the verification and/or validation of the intermediate model), or if a new requirement is elicited, some of the previous activities will need to be repeated to correct the error or to incorporate the new requirement. Consequently, a process or a comprehensive framework can be derived to cover the first two phases of the SDLC. To have a complete NFR development process for the entire SDLC will require more work to construct new methods, techniques and tools that can be used to extend the analysis/development of NFRs from the software design phase through to the implementation and testing of the final software product. Such research could equally consist of further study to identify additional research that this article could not locate in order to combine the pieces to construct a complete process that covers all the SDLC phases.
6. Discussion, Future Work and Threats to Validity
6.1. Discussion
It appears from the discussion in
Section 4.1.1 that, despite its importance and criticality, the NFR elicitation has not been the focus of attention for much of the last decade. This observation may be justified by the fact that the early activities of software requirement engineering are common to all types of requirements. At this stage, the author agrees with Eckhardt et al. [
72], who argued that many NFRs actually describe behavioral properties and should be handled in a similar way to functional requirements. In practice, it is not always possible to determine the type of requirements before they have been analyzed and refined. So, it is assumed that narrowing the selection of publications to focus solely on NFRs would have excluded some of the works that treat the requirements elicitation in general. Further research may need to be carried out in that regard in order to reach a more substantive conclusion.
From the discussion in
Section 4.2, less than 9% of the 34 selected publications have attempted to develop NFRs beyond the RE phase. It is also observed that the main purpose of NFRs development in the RE phase is to produce the best strategy to satisfy NFRs. A strategy is a software solution known in GORE methods as tasks or functionalities and resources needed for satisfying NFRs [
22]. This perception implies the idea that the development of NFRs ends when such a strategy is obtained. Although this work seems to conform to such an idea, with only about 9% of research on the analysis of NFRs beyond the RE phase, it contrasts the pressing need for a parallel development of NFRs alongside the FRs that has long been high on the agenda [
73,
74].
This study has revealed, in
Section 3, the use of various techniques in the development of NFRs including amongst others, machine learning/deep learning, fuzzy logic, ontology and so forth. Conversely, established formal methods (FMs) such as the Z notation [
7], Object-Z, VDM, event B, etc., have not been mentioned. FMs use mathematical concepts to specify and reason about the properties of a software or a system at an early development stage [
15]. They are appropriate for safety-critical and security-critical systems [
7,
75]. Although, in general, they do not integrate mechanisms for NFRs, considering their primary objective for quality and correctness by construction, they would be expected to find their way into the analysis of NFRs or to integrate NFRs into their own processes. This also calls for further study of the relationship and integration of FMs and NFRs.
6.2. Future Work
It is observed from this study, especially from the results presented in
Section 5 and the discussion in
Section 6, that the following future research is necessary to address some important aspects of NFR development which is not covered in this work.
The first future work is the construction of a comprehensive process for the analysis and development of NFRs throughout the entire software development life cycle. A process that federates the strengths of the existing methods and tools.
Having a complete process and/or methodology for NFRs throughout the SDLC may enable the development of new techniques for reverse-engineering or re-engineering NFRs. For the past few decades, traditional software reverse-engineering has developed various means to recover and document the functionalities of the software with no serious consideration of NFRs. This could very likely be due to the absence of well-established processes for NFRs in forward engineering.
An interesting and surely beneficial research area in the field of NFR analysis for producing quality software products would be to combine NFRs and established FMs such as Z/Object-Z. Two complementary alternative views could be considered: first, the integration of FMs into the development of NFRs, which could lead, for instance, to the use of theorem provers to validate NFRs at an early stage of development. Another view is to integrate NFRs into the FMs processes, for example, to ensure that the quality requirements expected from a final software system, are introduced into the process at an early stage and used to guide the development throughout the process.
This research work has noted the absence of NFR testing and validation from the selected publications. This calls for further investigations that could involve empirical research in industry and/or more refined theoretical research that focuses on the testing and validation of NFRs.
It would be interesting to extend this work by creating, for instance, a taxonomy of NFR approaches based on the subject of the software system, or the type of the system to be produced, such as information systems, intelligent systems, recommended systems, and/or to investigate the systems produced so far in the industry, in order to substantiate the applicability/efficacy of the existing approaches.
6.3. Threats to Validity
As a single-authored systematized literature review, the present author is aware of the risk of bias, especially with the selection of the publications, the extraction of data from the selected publications, as well as the analysis of the extracted data. To mitigate such risks, the paper has endeavored to follow the SLR protocols as much as possible and used Microsoft Excel (Microsoft® Excel® for Microsoft 365 MSO (Version 2409 Build 16.0.18025.20030) 32-bit) spreadsheets to guide the analysis and facilitate record keeping. For the repeatability of this work, the query string, the date and time each selected online database was queried, as well as the number of records generated per database are included in
Table 2.
7. Conclusions
This article has conducted a systematized literature review to investigate the current-state-of-the-art in NFRs development. A total of 34 publications including 13 journal articles and 21 conference papers published during the past ten years were carefully selected from five reputable online databases: ACM Digital Library, ScienceDirect, Scopus, IEEE Xplore and Web of Science. Google Scholar and Springer Link databases were used to ensure the comprehensiveness of the first search.
The study of the selected publications identified the various software engineering techniques/methods and their roles in the proposed approaches to NFRs analysis and development, including GORE methods, UML, XML and Ontology mainly for the specification and modeling of NFRs, as well as their refinement and operation for some of these techniques. Machine learning, deep learning algorithms and some other natural language processing tools, fuzzy logic, graph theory, inferential logic and so forth for the extraction of NFRs from requirements document(s), NFRs classification, prioritization, conflicts and trade-off analysis and the selection of the best strategies for satisfying NFRs. It is noted that 50% of the existing approaches include algorithms to implement their methods and/or prototypes to illustrate their working or for testing. Approaches based on ML and/or DL mainly use, for their testing, the following available datasets: the PROMISE corpus [
55] and the Concordia RE corpus [
41].
This work has also investigated the development of NFRs throughout the software development life cycle. As illustrated in
Figure 6 and discussed in
Section 4, it appears that most of the existing NFR approaches focus on the activities of the requirements engineering phase, with very little efforts devoted to software design and implementation. This article suggests that the elicitation of NFRs has not received much attention in the literature. This could be explained by the fact that at an early stage of software development, the same activities are performed for both FRs and NFRs and thus the selection of publications focussing solely on NFRs might, in fact, not be entirely appropriate.