Next Article in Journal
The Irregularity and Modular Irregularity Strength of Fan Graphs
Previous Article in Journal
Symmetry, Antisymmetry, and Chirality: Use and Misuse of Terminology
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Fuzzy Logic Testing Approach for Measuring Software Completeness

School of Big Data & Software Engineering, Chongqing University, Chongqing 401331, China
*
Author to whom correspondence should be addressed.
Symmetry 2021, 13(4), 604; https://doi.org/10.3390/sym13040604
Submission received: 16 February 2021 / Revised: 21 March 2021 / Accepted: 27 March 2021 / Published: 5 April 2021
(This article belongs to the Section Computer)

Abstract

:
Due to advancements in science and technology, software is constantly evolving. To adapt to newly demanded requirements in a piece of software, software components are modified or developed. Measuring software completeness has been a challenging task for software companies. The uncertain and imprecise intrinsic relationships within software components have been unaddressed by researchers during the validation process. In this study, we introduced a new fuzzy logic testing approach for measuring the completeness of software. We measured the fuzzy membership value for each software component by a fuzzy logic testing approach called the fuzzy test. For each software component, the system response was tested by identifying which software components in the system required changes. Based on the measured fuzzy membership values for each software component, software completeness was calculated. The introduced approach scales the software completeness between zero and one. A software component with a complete membership value indicates that the software component does not require any modification. A non-membership value specifies that the existing software component is no longer required in the system or that a new software component is required to replace it. The partial membership value specifies that the software component requires few new functionalities according to the new software requirements. Software with a partial membership value requires partial restructuring and design recovery of its components. Symmetric design of software components reduces the complexity in the restructuring of software during modification. In the study, we showed that by using the introduced approach, high-quality software that is faultless, reliable, easily maintained, efficient, and cost-effective can be developed.

1. Introduction

Soft computing techniques such as fuzzy logic have been extensively used in software engineering to address uncertainty and imprecision [1,2,3,4]. In this study, we measured software completeness by introducing the fuzzy logic testing approach. In this study, we classified the software requirements into different types. The fuzzy membership value scaled the software completeness between zero and one. The software completeness value exactly extracted the software components that required changes according to the latest requirements. By this approach, complete membership, partial membership, and non-membership values for the software components were determined by validating the software components against its requirements.
A software component, as defined by Pang [5], is “a software unit of functionality that manages a single abstraction.” In the literature, completeness has been considered as an essential quality attribute. Davis et al., in [6], measured the quality of software requirements by quality attribute (e.g., completeness) and, in [7], forward engineering completeness for software was measured, whereas incompleteness can cause unsuccessful effects [8,9]. Software completeness is defined as the state of software having all the required software components with appropriate functionality and features and it certifies that no functionality or feature is left out.
The evolution of software occurs due to technology drivers and business needs. During the software evolution process, its functionalities and features continuously change, and as software size increases, ultimately, its complexity also increases. Software products are changed based on global changes in business. The change process comprises modifications, additions, and deletions of software components or modules in the software system. Software generally grows in terms of features, so it must be designed to accommodate the demanded changes and satisfy a set of new requirements [7,10,11,12].
A feature is defined as [13] “an optional or incremental unit of functionality.” SF = {f1, f2, f3fr−1, fr}, where SF represents a set of features within the system. In this study, each feature is designed based on a requirement or set of requirements R and is verified with the expected system response S R k C i to a specific status, f q = (R, S R k C i ), where (1 ≤ kn) and (1 ≤ qm). S R k C i denotes the system response tested for the ith software component C i , that contains n number of system responses. System response is defined as the set of all possible expected output results for each input data, to determine whether a feature is correctly working or not [14,15,16,17,18].
Consider an example where a client asks the software engineer about an object F: what is F made of → component, what can F do → feature. Examples of components include fee checkers, registered students, and publications. Examples of features include the following: can detect the total amount of fees paid by the students, can determine the total number of students registered in a specific course during a given semester at a university, can generate reports about faculty publications.
According to GenVoca theory, now called feature-oriented software development, features are implemented as applied functions, whereas the compositions of features are implemented as composite functions, which are signified by •. In most cases, the order of composition does not affect the process, but in other cases, the composition order matters [19].
Books On-hold     Books Purchase     Books On-hold , Purchase     Books
Software requirements depict functionalities and features of the system to be developed in descriptive form, as well as constraints on the services of the system. The software requirement known as completeness is defined as a set of requirements or a single requirement that satisfies the demanded quality, such that no information regarding the software to be developed is left out [9,20]. Fuzzy logic is based on membership values, where non-membership is represented by zero, partial membership values vary between zero and one, and complete membership is represented by one [21,22,23].
The novel fuzzy logic testing approach identified the missing functionalities, features, and new software requirements. The software was developed by component-based development. Therefore, by applying the fuzzy test, errors were extracted from the exact functionality. The developed software components were reliable, upgradable, cost effective, reusable, and time effective and were developed with improved quality. In this study, the authors classified the software requirements into functional, non-functional, inverse, non-inverse, content, and non-content requirements. The classification of software requirements helped to represent the software requirements in the precise form and in identification of imprecise software requirements.
The rest of the sections in this paper are organized as follows: Section 2 defines the preliminary concepts, Section 3 describes related work, Section 4 describes fuzzy membership value of the software components, Section 5 explains the measurement approach for software completeness, Section 6 describes materials and methods, Section 7 shows results, and finally, Section 8 concludes the paper.

2. Preliminaries

In this section, we define the necessary concepts related to software requirements, fuzzy functionality similarity between software modules, completeness of software components, linguistic variables, proof of software security level, and programming language faults.

2.1. Software Requirements

Extracting rules or requirements from natural language has been a challenging task. In this study, we used the modality concept to define the requirement types. Modality, as defined by Sleimi et al., is [24] “a verb indicating the modality of the action, e.g., must, shall.”
(i). Functional Requirements and Non-Functional Requirements: Functional requirements (FR) describe how the system should act according to statements of services defined in the software specification. One example of a FR is the following: the system shall allow users to search all sets of books related to course work or select subsets from it. In this modality, shall → functional requirement.
Non-Functional Requirements (NFR) are limitations on system functions or services such as timing, security, usability, availability, performance, etc. NFR are applied to the entire system, not to specific features or services of the system. One example of an NFR is the following: the system shall be available 24/7. Modality: the requirement in which “shall” is used to represent the limitations on system functions → non-functional requirement. Data privacy is a non-functional requirement that assures the personal data are secure from unauthorized access. In data privacy, the following types of information are considered sensitive, by legal mandates and also by the general public [25]: personally identifiable information (PII), personal health information (PHI), personally identifiable financial information (PIFI), and student records. Consider an example of an NFR related to data privacy: the system shall protect personal data from unauthorized users. Timing issues: This is an outset with the inclusion of timing definition in the software requirements. In testing timing issues, the task of the software tester is to find the temporal error in the input situations, if the execution takes the shortest or longest time to complete the tasks [26].
(ii). Inverse Requirements and Non-Inverse requirements: As defined in [27,28], these can be functional requirements or non-functional requirements in which customers specify “what the system shall not do” or the system shall display a text box in red if the user does not enter the data according to the specified condition of the system. Inverse requirements that describe the functional aspects of the system are represented by IR, whereas those that describes non-functional aspects of the system are known as non-inverse requirements, represented by NIR. An example of an IR is the following: the system shall not allow users to enroll in more than 12 credit hours in a semester. An example of an NIR is the following: the system shall not be available from 12:00 a.m. to 3:00 a.m. The modality “shall” in negative form (shall not) → inverse requirements, whereas the requirement in which it is used to represent the limitations on system functions → non-inverse requirements.
(iii). Content Requirements and Non-Content Requirements: As defined by the authors, these can be functional requirements or non-functional requirements in which customers specify “what the system must do.” Content requirements are used for customized software. Content requirements are represented by CR, whereas non-content requirements are represented by NCR. The purpose of content requirements is to elaborate on the differences between the software requirements demanded by different organizations. A CR would be as follows: the system must ask the student to complete the teacher evaluation form before redirecting him/her to the main screen. An NCR would be as follows: the system must respond to user requests within 3 s. The statements of requirement with the modal verb “must” are specified as content requirements, whereas the requirement in which the modality “must” is used to represent the limitation on the system, e.g., performance (within 3 s) → non-content requirement.
In this study, each software component was validated against its software requirements. The software components were developed by using the process of component-based development. To determine whether the software components were required in the software, we used a requirements validation framework [7]. As symmetry creates balance in design, therefore, each software component was developed to be symmetric in design, whereas a few software components were developed to be asymmetric in order to grab attention. Software completeness denotes the membership value that covers the requirements in new software. For this, we used a fuzzy test. Software requirements were gathered from the users of the software in natural language. The requirements were classified using the concept of modality. The inverse and content requirements were classified based on different demanded features and functionalities or constraints within the same software component or overall software.

2.2. Fuzzy Functionality Similarity between Software Modules

Consider software S, which consists of n software components C i . R j i represents the ith software component, whereas j represents the software requirement that corresponds to a particular functionality and feature of a software component. F C k i represents the functionality of the component, i represents the software component and k represents the functionality of the ith software component. In this study, we tested two software modules, M f and M p . We used the fuzzy if–then rule to determine the functionality similarity between software modules.
  If   R j i   ( M f )   is   C m   then   R j i   ( M p )   is   C m
Figure 1 represents fuzzy functionality similarity, and an increase in color shade denotes an increase in the functionalities within software components, whereas white represents software components with single functionality.

2.3. Completeness of Software Components

( R 1 i   ,   R 2 i ,   R 3 i ,     R n i ) S   R j i     F C k i
As in the experimental requirements, R 1 i , R 2 i ,   R 3 i , R 4 i , R 5 i , R 6 i , R 7 i , R 8 i , R 9 i ,     R n i represent F R 1 & N F R 1 , F R 2 & N F R 2 , C R 3 & N C R 3 , I R 4 & N I R 4 , I R 5 & N I R 5 , F R 6 & N F R 6 , F R 7 & N F R 7 , F R 8 & N F R 8 , C R 9 & N C R 9 , F R 10 & N F R 10 , respectively.
F R 1   &   N F R 1     F C 1 i F R 2   &   N F R 2     F C 2 i   C R 3   &   N C R 3     F C 3 i   I R 4   &   N I R 4     F C 4 i : : : : F R n   &   N F R n     F C n i  
Each software component consists of one or more features and functionalities within a single component.
i = 1 n F C k i =   F C 1 i   +   F C 2 i   +   F C 3 i   +     + F C n i

2.3.1. Complete Membership

Considering the software component C v with three functionalities F C 1 v , F C 2 v and F C 3 v , the expected system responses are represented by S R 1 C v , S R 2 C v and S R 3 C v , respectively. All functionalities of the software component are represented in blue if the software component possesses a complete membership value. Figure 2 represents a software component that possesses complete membership.

2.3.2. Partial Membership

Considering the software component C y with three functionalities F C 1 y , F C 2 y and F C 3 y , the expected system responses are represented by S R 1 C y , S R 2 C y and S R 3 C y , respectively. This software component possesses a partial membership value; the functionalities with complete membership values are represented in blue, whereas the functionality with a partial membership value is represented in brown. Figure 3 represents a software component that possesses partial membership.

2.3.3. Non-Membership

Considering the software component C z with three functionalities F C 1 z , F C 2 z and F C 3 z , the expected system responses are represented by S R 1 C z , S R 2 C z and S R 3 C z , respectively. This software component possesses a non-membership value, and functionalities with non-membership values are represented in green. Figure 4 represents a software component that possesses non-membership.

2.4. Linguistic Variable

Linguistic variable [29] values are in sentences or words of natural language. For example, “change” is linguistic variable, whereas “minor changes”, “major changes” and “complex changes” are its values. It represents the semantic concepts in mathematical representation [30], which consist of more than one term, called a fuzzy set. Linguistic variable uses the values of fuzzy variable. Consider the linguistic variable: (c, T(c), U, M), the variable name is represented by c, whereas its term set is denoted by T(c), and each value defined in U is a fuzzy variable. M: each variable consists of associated semantic rules (membership), c: “change” is a linguistic variable.

2.5. Proof of Software Security Level

Software security levels are tested in different perspectives during software development in order to build secure software that is invulnerable before it deployment. As described by Murray [31], a software program is insecure and imperfect if it “deviates from its intended behavior (e.g., arbitrary code execution), or reveal sensitive data (data leakage), or modify data that should remain protected (integrity violation).” Researchers have conducted research on proving secure software, such as identifying security flaws [32] in protocols and programs and also on transport layer security (TLS) implementations [33], operating system kernels [34], cryptographic algorithms [35], etc.
In order to make the software secure, we tested the software components with the fuzzy test for all possible system responses ( S R k C i ) by entering different input data, e.g., actions ( A 1 A n ). The input data are entered implicitly or explicitly in order to check all the possible positive and negative system responses.

2.6. Programming Language Faults

Software program P S consists of n number of software components C i , (1 ≤ i ≤ n), in which software component C 34 in P S is faulty, if P S cannot be correctly verified with respect to existing implementation of C i , but it can be verified by the implementation specification for C i . Figure 5 represents types of programming language faults.
Types of programming language faults are as follows [17].

2.6.1. Algorithm Fault

This fault occurs in the program when the logic of the algorithm does not deliver the correct output (result) for a certain input due to incorrect processing, e.g., the system should display a list of journals recognized by Web of Science if the user selects the Web of Science indexing option but the system displays a list of journals recognized by EI (Engineering Index) due to a fault.

2.6.2. Computational Fault

This occurs when the implementation of program is wrong or the program is not capable of computing the desired output. The system displays unexpected output due to combining the floating point and integer variables.

2.6.3. Syntax Fault

This fault occurs in the program due to incorrect syntax,
e.g., >> y = y ∗ ((3 + 5 ∗ y); fault: % extra parenthesis
>> x = ‘Chongqing fault: % missing quote

2.6.4. Documentation Fault

The program documentation describes the software in the form of illustrations and written text. It also describes how to operate it or use it. A documentation fault occurs when this does not match with the program.

2.6.5. Overload Fault

During the program implementation, a stack, array or queue is used for memory purposes. If more elements are added than its limited size, then an overload fault occurs in the program.

2.6.6. Timing Fault

If the system does not respond to a user due to the occurrence of a failure in the program, then the system reports a timing fault.

2.6.7. Hardware Fault

Software companies are trendsetters for the hardware industry. Hardware is updated in order to support new features and functionalities of the software. This fault occurs if the hardware does not work properly with the software. This problem can be avoided if hardware specifications are completely specified in the technical feasibility.

2.6.8. Software Fault

Software faults occur if the software does not function properly, or is not supported by the operating system, such Microsoft Windows, Linux, Apple macOS, Apple iOS or Android.

2.6.9. Omission Fault

This fault occurs “when we fail to enter correct information” [17], e.g., in a program in which a variable is not initialized (fault: int y =; correct: int y = 10;).

2.6.10. Commission Fault

This fault occurs “when we enter something into a representation that is incorrect” [17], e.g., a program in which char is initialized to int variable incorrectly (int n = a;).

3. Related Work

In [36], MacDonell and Gray applied a fuzzy logic modeling tool set to estimate the size of a product and to determine the risks of the project. Kacprzvk and Yager [30] used fuzzy logic on data sets for the extraction of linguistic summaries, and the researchers also focused on which methods could be applied to assess the goodness of the linguistic summary. According to Barry Boehm [37], software contains fixed features such as the database size, product complexity and required reliability that are not controllable by management.
Most size estimations are calculated based on imperfect, incomplete knowledge and assumptions about software features [38]. In software engineering practices, it has been observed that more user engagement in the software development process increases the software success rate [39]. Researchers [40,41,42] concluded that user feedback plays a vital role in software quality and in detecting new design concepts for software evolution.
In the literature, researchers concluded that fuzzy logic can be used in different phases of the system development life cycle (SDLC), such as for system design [43], software testing [44,45], estimation of product size, estimation of product risk related to which diverse input parameters are used [46], etc. In [47], researchers applied fuzzy logic for the prioritization of test cases which minimizes the cost of regression testing. Figure 6 represents the extraction of different solutions/activities when fuzzy logic is applied in different phases of the system development life cycle (SDLC) [48,49,50,51,52,53,54,55,56].
In the literature, different techniques for gathering requirements have been introduced by researchers [57,58,59,60], such as one-on-one interviews, group interviews, facilitated sessions, joint application design (JAD), a group support system (GSS), prototyping, questionnaires, use cases, following people around, requests for proposals (RFPs) and brainstorming. In a survey conducted with software engineers, these techniques were also found to possess limitations. Therefore, in this study, we used a requirements validation framework [7] for the validation of software components. In [61], researchers introduced tsDetect which is an open source tool used to detect test smells. tsDetect can detect following types of test smells: assertion roulette, conditional test logic, constructor initialization, default test, duplicate assert, eager test, empty test, exception handling, general fixture, ignored test, lazy test, magic number test, mystery guest, redundant print, redundant assertion, resource optimism, sensitive equality, sleepy test and unknown test. In this study, we did not find any similar approaches in which the completeness of software was measured by our introduced approach.

4. Fuzzy Membership Value of the Software Components

To measure the fuzzy membership value for each software component, we used the introduced fuzzy logic testing approach called the fuzzy test.
Definition 1.
Let m k , i represent the membership value of the system response for software component C i , which is the ratio of successful system responseskin C i to the total number of expected system responses during the occurrence of C i . The fuzzy membership value m i is the sum of m k , i for the software component C i that containsksystem responses.
m i   =   k = 1 n m k , i =   k = 1 n   S R k C i   S R C i
Rules for Fuzzy Membership Value
  if ( m k , i   = S R C i ) then
     m i   = 1
  else if ( m k , i S R C i ) then
     0 < m i < 1
  else
     m i   = 0
  end if

5. Software Completeness

In this study, we measured the software completeness with our introduced quantitative approach. Each software component was validated against its corresponding requirements. By this approach, missing functionalities or features and new software requirements were identified. S c , S I , S E , C C , C P , C N and C T represent the software completeness, software components completeness index, engineering of software (reverse or forward engineering), complete membership of the software components, partial membership of the software components, non-membership of the software components and the total number of software components, respectively.
S I   =   [ 1     [ ( C C / C T )   +   ( C P / C T )   +   ( C N / C T ) ] ]
S c   =   S E   +   S I
By substituting Equation (2) into Equation (3),
S c   =   S E   +   [ 1     [ ( C C / C T )   +   ( C P / C T )   +   ( C N / C T ) ] ]

5.1. Proof

In this section, the authors prove the software completeness equation. According to Lotif Zadeh [23], fuzzy logic is defined as:
membership value → [0, 0.01, 0.02, …, 0.98, 0.99, 1]
In this, zero represents non-membership, one represents complete membership and the value between zero and one represents partial membership. Fuzzy logic evolved in the context of the theory of fuzzy sets. Fuzzy sets are extension of Boolean and crisp sets.
Fuzzy membership values for each software component are calculated by a fuzzy logic testing approach (fuzzy test). If the fuzzy membership value is equal to one, then it is assigned to C C , else if the fuzzy membership value is equal to partial (varies between zero and one), then it is assigned to C P , else it is assigned to C N .
Therefore,
0 ≤ m ≤ 1
Therefore, as software membership value is determined by the S c equation, by substituting the values of C C , C P , C N and S E .
0     S E   +   [ 1     [ ( C C / C T )   +   ( C P / C T )   +   ( C N / C T ) ] ]     1 .

5.1.1. Complete Membership Value

If the software does not require any changes due to evolution of the business or the operating environment, then the complete membership value of the software components C C is equal to the membership value of the total software components C T . The partial membership value of a software component C P becomes equal to the non-membership value of the software components because the software does not require any minor or major modifications during the validation process. If the software possesses complete membership, then C C = C T , C P = 0 and C N = 0, whereas C P = C N = 0. C C = C T because the software is not missing any features nor does it require any newly demanded features. In this section, we substitute the values of C C , C P and C N in Equation (2), to prove that the software membership value is equal to the non-membership value.
S I   =   [ 1     [ ( C C / C T )   +   ( C P / C T )   +   ( C N / C T ) ] ]   =   [ 1     [ ( C T / C T )   +   ( 0 / C T )   +   ( 0 / C T ) ] ] = [ 1 [ 1 + 0 + 0 ] ] = 1 1 = 0
Hence, this proves that the membership value is zero when the software exhibits completeness equal to one. In this case, S E = 0 because the software does not require restructuring.

5.1.2. Non-Membership Value

If all the software components do not support the functionalities or features demanded in the new requirements due to low business values and low component quality, then C N = 0 for all software components. If the software possesses a non-membership value, then C N = 0, CP = 0 and CC = 0. The new software is completely developed by using a forward engineering approach. In this case, the components with non-membership value C N are completely satisfied/validated by the user of the software. By substituting the values of C C , C P and C N in Equation (2),
S I   =   [ 1     [ ( C C / C T )   +   ( C P / C T )   +   ( C N / C T ) ] ]   =   [ 1     [ ( 0 / C T )   +   ( 0 / C T )   +   ( 0 / C T ) ] ] = [ 1 [ 0 + 0 + 0 ] ] = 1 0 = 1
Hence, this proves that the membership value is one when the software exhibits a membership value equal to zero. S E = 1, when the existing software does not support the new user requirements, the software is outdated or the software does not support changes, and the system is a candidate for scrapping because keeping it in operation would be expensive [6,27,53].

5.1.3. Partial Membership Value

If the software requires minor or major changes in its components according to new user requirements, then the membership value of the software is equal to partial membership. The partial membership value is determined by validating each software component against its corresponding software requirements. Therefore, software membership is a combination of complete membership, partial membership and non-membership values, whereas S c determines the partial membership value of software. In this case, the software is updated by a reverse engineering approach. Figure 7 represents the software components in the conceptual model.
According to this figure, the C C , C P , C N and C T values are calculated as
C i   =   C 1   +   C 2   +   C 3   +     +   C 24
C 1 = F C 1 1 = 1 → complete membership; C 2 = ( F C 1 2 + F C 2 2 )   = ((0.3 + 1)/2) = 0.65 → partial membership; C 3 = F C 1 3 = 0.9 → partial membership; C 4 = ( F C 1 4 + F C 2 4 )   = ((1 + 1)/2) = 1 → complete membership; C 5 = ( F C 1 5 + F C 2 5 + F C 3 5 ) = ((1 + 1 + 0.8)/3) = 0.93 → partial membership; C 6 = ( F C 1 6 + F C 2 6 )   = ((0.1 + 0.6)/2) = 0.35 → partial membership; C 7 = ( F C 1 7 + F C 2 7 + F C 3 7 ) = ((0 + 0 + 0)/3) = 0 → no membership; C 8 = F C 1 8 = 0 → no membership; C 9 = ( F C 1 9 + F C 2 9 + F C 3 9 + F C 4 9 ) = ((1 + 1 + 0.4 + 1)/4) = 0.85 → partial membership; C 10 = ( F C 1 10 + F C 2 10 )   = ((1 + 1)/2) = 1 → complete membership; C 11 = ( F C 1 11 + F C 2 11 )   = ((0.7 + 0.6)/2) = 0.65 → partial membership; C 12 = ( F C 1 12 + F C 2 12 + F C 3 12 + F C 4 12 ) = ((0 + 0 + 0 + 0)/4) = 0 → no membership; C 13 = ( F C 1 13 + F C 2 13 )   = ((1 + 1)/2) = 1 → complete membership; C 14 = ( F C 1 14 + F C 2 14 )   = ((0.9 + 0.9)/2) = 0.9 → partial membership; C 15 = ( F C 1 15 + F C 2 15 )   = ((0.5 + 0.7)/2) = 0.6 → partial membership; C 16 = ( F C 1 16 + F C 2 16 )   = ((0.7 + 0.9)/2) = 0.8 → partial membership; C 17 = F C 1 17 = 1 → complete membership; C 18 = ( F C 1 18 + F C 2 18 )   = ((1 + 0)/2) = 0.5 → partial membership; C 19 = ( F C 1 19 + F C 2 19 )   = ((0.6 + 0.3)/2) = 0.45 → partial membership; C 20 = ( F C 1 20 + F C 2 20 )   = ((0.1 + 0.6)/2) = 0.35 → partial membership, C 21 = ( F C 1 21 + F C 2 21 )   = ((1 + 0.7)/2) = 0.85 → partial membership; C 22 = ( F C 1 22 + F C 2 22 )   = ((1 + 1)/2) = 1 → complete membership; C 23 = ( F C 1 23 + F C 2 23 )   = ((0.8 + 0.8)/2) = 0.8 → partial membership; C 24 = ( F C 1 24 + F C 2 24 + F C 3 24 ) = ((1 + 1 + 0)/3) = 0.33 → partial membership;
C C   =   C 1   +   C 4   +   C 10   +   C 13   +   C 17   +   C 22   =   1   +   1   +   1   +   1   +   1   +   1   =   6   C P   =   C 2   +   C 3   +   C 5   +   C 6   +   C 9   +   C 11   +   C 14   +   C 15   +   C 16   +   C 18   +   C 19   +   C 20   +   C 21   +   C 23   +   C 24   =   0.65   +   0.9   +   0.93   +   0.35   +   0.85   +   0.65   +   0.9   +   0.6   +   0.8   +   0.5   +   0.45   +   0.35   +   0.85   +   0.8   +   0.33   =   9.91 C N   =   C 7   +   C 8   +   C 12   =   0   +   0   +   0   =   0
By substituting the values in Equation (2),
S I   =   [ 1     [ ( C C / C T )   +   ( C P / C T )   +   ( C N / C T ) ] ]   S I   =   [ 1     [ ( 6 / 24 )   +   ( 9.91 / 24 )   +   ( 0 / 24 ) ] ] S I   =   [ 1     [ 0.25   +   0.41   +   0 ) ] ]   =   [ 1     [ 0.25   +   0.41   +   0 ) ] ]   S I   =   1     0.66   =   0.34   S c   =   S E   +   S I   S c   =   0   +   0.34   =   0.34  
In this case, S E = 0 because software is updated by the reverse engineering approach. As the partial membership value varies between complete membership and non-membership, 0 < partial membership value < 1. Therefore, 0 < 0.34 < 1, and we obtain partial membership.
Section 6 describes in detail how to calculate the membership value for each software component.

6. Materials and Methods

Measuring software completeness has been a challenging task for software companies. Due to changes in the operating environment, software is changing day by day. In this study, we introduced a fuzzy logic testing approach for measuring software completeness. Software requirements were gathered in natural language and were classified into different types. To measure the fuzzy membership value for each software component, each functionality was tested with the newly demanded system responses.
The dataset in this study consisted of 560 requirements, as shown in Table 1. There were 365 functional requirements, 166 non-functional requirements, 9 inverse requirements, 4 non-inverse requirements, 11 content requirements and 5 non-content requirements. There were thirteen requirement classes of non-functional requirements, named security, usability, portability, availability, capacity, efficiency, reliability, performance, maintainability, accuracy, error-handling, operational and scalability.
Based on the difference between the previously expected system responses and newly expected system responses, the partial membership value was determined. Other software components were tested based on the system responses. If any new functionality was required within the software component or it was omitted during the development due to any reason, it was considered zero membership C N = 0 during the validation process. In this study, we tested the software components, and Figure 8 represents a fuzzy test for measuring the fuzzy membership value of the C 5 software component.
The tested login software component consisted of six expected system responses that were successfully tested with system responses S R 1 C 5 , S R 2 C 5 , S R 3 C 5 , S R 4 C 5 , S R 5 C 5 and S R 6 C 5 . The fuzzy membership value of this software component was m 5 = 1.
Figure 9 represents a fuzzy test for measuring the fuzzy membership value of the C 19 software component.
This tested passport software component consisted of four expected system responses and two new expected system responses were recommended during the requirements validation process that were successfully tested with system responses S R 1 C 19 , S R 2 C 19 , S R 3 C 19 , S R 4 C 19 , S R 5 C 19 and S R 6 C 19 . The ✓ symbol indicates that system response was successfully tested, whereas the ✗ symbol indicates that it is new recommendation. If S R k C i was successfully performed, then S R k C i was assigned one membership value, else a zero membership value was assigned. The fuzzy membership value of this software component was m 19 = 0.68. The fuzzy membership value was calculated by equation 1 given below.
m i   =   k = 1 n m k , i =   k = 1 n   S R k C i   S R C i
During the validation process, the following changes were required in the software, and we classified them into content requirements and inverse requirements, as shown in Table 2 and Table 3. In this study, we measured the completeness of software by using our introduced approach. The software components were designed with single functionality or with sub-functionalities which are cohesive. However, in order to integrate different software components together, software components were loosely coupled.
The following are the complexity factors affecting developed methodology: size, goals and objectives, changes, ambiguity and data.
Size: The size of the software component is considered as an indication of complexity, and for this software components were designed to be symmetric with a minimum size. Goals and objectives: If goals and objectives are not defined properly, then the tested software component neglects to test the important features. Changes: Changes in the functionality of software components are affected by internal and external influences. They imply adaption to changing requirements. Ambiguity: In order to avoid ambiguity, each software component was validated by a requirements validation framework. Data: Incomplete data fail to test the expected system response. This fuzzy test was designed by considering software requirements and the dataset.
The software consisted of 360 software components, 323 existing software components and 37 new software components. In this study, 21 software components required partial changes, as shown in Table 2 and Table 3, and Figure 9 also represents a software component that required partial changes. All software components were tested by a fuzzy test, to find the C C , C P and C N values.
The details regarding the functionalities are as follows: 342 software components consisted of a single functionality, 11 consisted of 2 functionalities and 7 consisted of 3 functionalities. Table 1 illustrates the detail of the dataset. Figure 8 and Figure 9 represent a fuzzy test of the software components C 5 and C 19 , respectively.
Rules for Assigning the Fuzzy Membership Value
  if the fuzzy membership value of m i is equal to one, then
     C C = m i
  else if the fuzzy membership value of m i varies between zero and one, then
     C P = m i
  else
     C N = m i
  end if
C C = 302 and C P = 0.81 + 0.88 + 0.87 + 0.64 + 0.91 + 0.88 + 0.83 + 0.94 + 0.92 + 0.88 + 0.95 + 0.91 + 0.83 + 0.80 + 0.89 + 0.91 + 0.88 + 0.73 + 0.60 + 0.70 + 0.68 = 17.44. In this study, 37 new software components required development. Therefore, C N = 0 for the 37 software components. The total software components became C T = 323 + 37 = 360. By substituting the values in Equation (2),
S I   =   [ 1     [ ( C C / C T )   +   ( C P / C T )   +   ( C N / C T ) ] ]     S I   =   [ 1     [ ( 302 / 360 )   +   ( 17.44 / 360 )   +   ( 0 / 360 ) ] ]   S I   =   [ 1     [ 0.84   +   0.04   +   0 ] ]   S I   =   1     0.88   =   0.12     S c   =   S E   +   S I   =   0   +   0.12   =   0.12
The software obtained a completeness of 0.88, and to obtain the complete membership value, software required a reverse engineering membership value of 0.12. S E   = 0 because the existing software was maintained.

7. Results

In the experiment, we observed that if software completeness had a membership value less than a 0.30, then it would be developed by forward engineering. For reverse engineering, existing software components required minor changes, whereas few new software components were developed. As the software size increased, its complexity also increased and resembled an Egyptian pyramid. Figure 10 represents software completeness. Membership is represented on the Y-axis and changes on the X-axis.
In the experiment, the software consisted of three hundred twenty-three existing software components, out of which twenty-one software components were partially changed. To update the software to a new version or change it according to the latest software requirements, twenty-one software components were restructured for new functionalities and features, and thirty-seven software components were newly developed. Therefore, the total number of software components after the reverse engineering process was three hundred sixty. In the figure, 0.88 represents the fuzzy membership value of software completeness. To achieve the complete membership value (one) for the software, new software components were developed, and a few were partially changed. The change in the membership value was 0.12.
To determine whether the software required minor, major or complex changes, we used the linguistic variable: (c, T(c), U, M), as c: “change” is a linguistic variable. T(c) = {minor changes, major changes, complex changes}, U: U = {0, 360}, M (minor changes) = fuzzy set for change in less than 90 software components with membership of μminor changes. In the experiment, there were 37 new software components and 21 software components required partial changes. In this study, the software was developed by component-based development. The details regarding the line of code (LOC) for the software components are as follows: 342 software components were developed with a single functionality which consisted of approximately 32 LOCs per software component, 11 software components were developed with two functionalities which consisted of approximately 60 LOCs per software component and seven software components were developed with three functionalities which consisted of approximately 105 LOCs per software component. The total LOC of the complete software was 12,439.
We validated the software components by the requirements validation framework described in Section 2.1. To validate the introduced approach, we applied a machine learning confusion matrix, which is used by a prediction model to store incorrect and correct decisions [62]. Software modification means changes required in the software components according to new software requirements or due to errors or defects in the software components. If a software component is classified as correct when it is truly correct, then the classification is a true positive (TP). If the software component is classified as correct when it is actually modified, then the classification is a false positive (FP). If the software component is classified as a modification when it is actually correct, then the classification is a false negative (FN). If the software component is classified as a modification when it is actually modified, then the classification is a true negative (TN).
In this study, the total number of predictions regarding the software component changes (partial membership) was 360 and there were 352 correct predictions; true positive (TP) = 322, false positive (FP) = 6, false negative (FN) = 2, true negative (TN) = 30.
  • Accuracy = ( T P + T N ) / T o t a l = ( 322 + 30 ) / 360 = 0.97
  • Sensitivity = Recall = T P / ( F N + T P ) = 322 / ( 2 + 322 ) = 0.99
  • Specificity = T N / ( T N + F P ) = 30 / ( 30 + 6 ) = 0.83
  • Precision = T P / ( T P + F P ) = 322 / ( 322 + 6 ) = 0.98
In this research, we used a machine learning technique for measuring the accuracy of the introduced approach, which is 0.97.

8. Conclusions

In this study, software completeness was measured with a quantitative approach. Software completeness scaled the membership value between zero and one. Values closer to one indicated that minor modifications or design recoveries were required by reverse engineering. If the value was closer to zero, then the software was developed by forward engineering. Each software component was tested by a fuzzy test. The fuzzy test extracted the errors and missing features within software components. The software components with a partial membership value were easily maintained due to the identification of an error from the exact line of code. The mathematical formula of S c was proved with three conditions: complete membership, partial membership and non-membership. The classification of software requirements helped to developed software components with improved quality, and these software components were also reliable, upgradable and reusable. The introduced approach developed high-quality software, which reduces the development cost and as well as the testing cost. It has been observed that after two to three years, in only a few circumstances, software fulfills the demanded requirements and possesses a software completeness value equal to one. However, in most circumstances, software exhibits partial membership.
In future work, we are interested to measure fuzzy maintenance cost and fuzzy maintenance line of code based on the number of errors or defects identified by the fuzzy test.

Author Contributions

Conceptualization, N.I. and J.S.; Data curation, N.I.; Methodology, N.I. and J.S.; Supervision, J.S.; Writing—original draft, N.I.; Writing—review and editing, J.S. All authors have read and agreed to the published version of the manuscript.

Funding

This research was funded by the Chongqing Graduate Tutor Team Construction Project, grant number ydstd1821.

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

The fuzzy tests generated during the study for testing the software components are openly available, at: https://github.com/Nayyar-Iqbal/Fuzzy-Software-Completeness.

Conflicts of Interest

The authors declare no conflict of interest.

Abbreviations

S F Set of features
R Requirements
S R k C i System response tested for the ith software component C i , that contains k number of system responses
S R C i Total system response tested for the ith software component C i
F R Functional requirements
N F R Non-functional requirements
I R Inverse requirements
N I R Non-inverse requirements
C R Content requirements
N C R Non-content requirements
S Software
C i Software component, where i represents software component number, i = {1, 2, 3, …, n} or i = {a, b, c, …, z}
R j i Represents the ith software component, where j represents the software requirement number
F C k i Represents the functionality of the component, i represents the software component and k represents the functionality number of the ith software component
M f Module, f represents module number
M p Module, p represents module number
Belongs to
Corresponds to
S E Engineering of software
C C Complete membership of the software components
C P Partial membership of the software components
C N Non-membership of the software components
C T Total number of software components
S I Software components completeness index
S c Software completeness
m k , i Membership value of the software response for software component C i , k response number
m i Fuzzy membership value (0 ≤ m i ≤ 1)
P S Software program
T P True positive
F P False positive
F N False negative
T N True negative

References

  1. Cabrera, I.P.; Cordero, P.; Ojeda-Aciego, M. Fuzzy logic, soft computing, and applications. In Proceedings of the 10th International Work-Conference on Artificial Neural Networks, Salamanca, Spain, 10–12 June 2009; pp. 236–244. [Google Scholar]
  2. So, S.; Cha, S.; Kwon, Y. Empirical evaluation of a fuzzy logic-based software quality prediction model. Fuzz Sets Syst. 2002, 127, 199–208. [Google Scholar] [CrossRef]
  3. Bosc, P.; Damiani, E.; Fugini, M. Fuzzy service selection in a distributed object-oriented environment. IEEE Trans. Fuzz Syst. 2001, 9, 682–698. [Google Scholar] [CrossRef]
  4. Idri, A.; Abran, A. A fuzzy logic based measures for software project similarity: Validation and possible improvements. In Proceedings of the 7th International Software Metrics Symposium, London, UK, 4–6 April 2001; pp. 85–96. [Google Scholar]
  5. Pang, C. Software Engineering for Agile Application Development; IGI Global Publisher of Timely Knowledge: Uster, Switzerland; Seveco AG: Mönchaltorf, Switzerland, 2020. [Google Scholar]
  6. Davis, A.; Overmyer, S.; Jordan, K.; Caruso, J.; Dandashi, F.; Dinh, A.; Kincaid, G.; Ledeboer, G.; Reynolds, P.; Sitaram, P.; et al. Identifying and measuring quality in a software requirements specification. In Proceedings of the First International Software Metrics Symposium, Baltimore, MD, USA, 21–22 May 1993; pp. 141–152. [Google Scholar]
  7. Iqbal, N.; Sang, J.; Gao, M.; Hu, H.; Xiang, H. Forward engineering completeness for software by using requirements validation framework. In Proceedings of the 31st International Conference on Software Engineering and Knowledge Engineering, Lisbon, Portugal, 10–12 July 2019; KSI Research Inc.: Pittsburg, PA, USA, 2019; pp. 523–528. [Google Scholar]
  8. Laptante, P.A. Requirements Engineering for Software and System, 3rd ed.; CRC Press/Taylor & Francis: Boca Raton, FL, USA, 2017; pp. 15–45. [Google Scholar]
  9. Menzel, I.; Mueller, M.; Gross, A.; Doerr, J. An experimental comparison regarding the completeness of functional requirements specifications. In Proceedings of the 18th IEEE International Requirements Engineering Conference, Sydney, NSW, Australia, 27 September–1 October 2010; IEEE: New York, NY, USA,, 2010; pp. 15–24. [Google Scholar]
  10. Xie, G.; Chen, J.; Neamtiu, I. Towards a better understanding of software evolution: An empirical study on open source software. In Proceedings of the IEEE International Conference on Software Maintenance, Edmonton, AB, Canada, 20–26 September 2009; pp. 51–60. [Google Scholar]
  11. Robbes, R.; Lanza, M. A changed-based approach to software evolution. Electron. Notes Theor. Comput. Sci. 2007, 166, 93–109. [Google Scholar] [CrossRef] [Green Version]
  12. Robbes, R.; Lanza, M.; Lungu, M. An approach to software evolution based on semantic change. In Proceedings of the 10th International Conference on Fundamental Approaches to Software Engineering, Held as Part of the Joint European Conference on Theory and Practice of Software, Braga, Portugal, 24 March–1 April 2007; pp. 27–41. [Google Scholar]
  13. Zave, P. An experiment in feature engineering. In Programming Methodology; Springer: Berlin/Heidelberg, Germany, 2003; pp. 353–377. [Google Scholar]
  14. Graham, D.; Black, R.; Veenendaal, E.V. Foundations of Software Testing, 4th ed.; Cengage Learning EMEA: Somerset West, UK, 2019. [Google Scholar]
  15. Patton, R. Software Testing, 2nd ed.; Sams Publishing: Carmel, IN, USA, 2005. [Google Scholar]
  16. Homès, B. Fundamentals of Software Testing; John Wiley & Sons, Inc.: Hoboken, NJ, USA, 2013. [Google Scholar]
  17. Jorgensen, P.C. Software Testing: A Craftsman’s Approach, 4th ed.; Auerbach Publications: Boca Raton, FL, USA, 2013. [Google Scholar]
  18. Naik, K.; Tripathy, P. Software Testing and Quality Assurance: Theory and Practice; John Wiley & Sons, Inc.: Hoboken, NJ, USA, 2008. [Google Scholar]
  19. Apel, S.; Kastner, C.; Batory, D. Program refactoring using functional aspects. In Proceedings of the 7th International Conference on Generative Programming and Component Engineering, Nashville, TN, USA, 19–23 October 2008; pp. 161–170. [Google Scholar]
  20. Liu, W.; He, C.; Zhang, K. Service-based domain requirements completeness analysis. In Proceedings of the Asia-Pacific Conference on Computational Intelligence and Industrial Applications, Wuhan, China, 28–29 November 2009; pp. 110–115. [Google Scholar]
  21. Bezdek, J.C. Fuzzy models-what are they, and why? IEEE Trans. Fuzz Syst. 1993, 1, 1–6. [Google Scholar] [CrossRef]
  22. Bandler, W.; Kohout, L.J. Fuzzy power sets and fuzzy implication operators. Fuzz Sets Syst. 1980, 4, 13–30. [Google Scholar] [CrossRef]
  23. Zadeh, L. Fuzzy sets. Inf. Control. 1965, 8, 338–353. [Google Scholar] [CrossRef] [Green Version]
  24. Sleimi, A.; Sannier, N.; Sabetzadeh, M.; Briand, L.C.; Dann, J. Automated extraction of semantic legal metadata using natural language processing. In Proceedings of the 26th IEEE International Requirements Engineering Conference, Banff, AB, Canada, 20–24 August 2018; pp. 124–135. [Google Scholar]
  25. Brooks, R. Data Privacy: What You Need to Know and How to Get Started. Available online: https://blog.netwrix.com/2019/08/08/data-privacy/ (accessed on 10 February 2021).
  26. Wegener, J.; Grochtmann, M. Verifying Timing Constraints of Real-Time Systems by Means of Evolutionary Testing. Real Time Syst. 1998, 15, 275–298. [Google Scholar] [CrossRef]
  27. Iqbal, N.; Sang, J.; Chen, J.; Xia, X. Measuring Software Maintainability with Naïve Bayes Classifier. Entropy 2021, 23, 136. [Google Scholar] [CrossRef] [PubMed]
  28. Ansari, M.Z.A. Softrology: Learn Software Technologies. Available online: https://softrology.blogspot.com/search?q=inverse (accessed on 25 November 2020).
  29. Zadeh, L.A. The concept of a linguistic variable and its application to approximate reasoning-I. Inf. Sci. 1975, 8, 199–249. [Google Scholar] [CrossRef]
  30. Kacprzyk, J.; Yager, R. Linguistic summaries of data using fuzzy logic. Int. J. Gen. Syst. 2001, 30, 133–154. [Google Scholar] [CrossRef]
  31. Murray, T. Proofs and Side Effects. Available online: https://verse.systems/blog/post/2018-10-02-Proofs-And-Side-Effects/ (accessed on 11 February 2021).
  32. Cadar, C.; Dunbar, D.; Engler, D. KLEE: Unassisted and automatic generation of high-coverage tests for complex systems programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation, San Diego, CA, USA, 8–10 December 2008; pp. 209–224. [Google Scholar]
  33. Beurdouche, B.; Lavaud, A.D.; Kobeissi, N.; Pironti, A.; Bhargavan, K. FLEXTLS: A tool for testing TLS implementations. In Proceedings of the 9th USENIX Workshop on Offensive Technologies, Washington, DC, USA, 10–11 August 2015; pp. 1–10. [Google Scholar]
  34. Teplyuk, P.A.; Yakunin, A.G.; Sharlaev, E.V. Study of security flaws in the Linux kernel by fuzzing. In Proceedings of the 2020 International Multi-Conference on Industrial Engineering and Modern Technologies, Vladivostok, Russia, 6–9 October 2020; pp. 1–5. [Google Scholar]
  35. Bhargavan, K.; Fournet, C.; Kohlweiss, M.; Pironti, A.; Strub, P. Implementing TLS with verified cryptographic security. In Proceedings of the 2013 IEEE Symposium on Security and Privacy, Berkeley, CA, USA, 19–22 May 2013; pp. 445–459. [Google Scholar]
  36. MacDonell, S.G.; Gray, A.R. Applying fuzzy logic modeling to software project management. Softw. Eng. Comput. 2003, 731, 17–43. [Google Scholar]
  37. Boehm, B.W. Software Engineering Economics. IEEE Trans. Softw. Eng. 1984, SE-10, 4–21. [Google Scholar] [CrossRef]
  38. Gustafson, D. Schaum’s Outlines Software Engineering, 1st ed.; McGraw-Hill Education: New York, NY, USA, 2002. [Google Scholar]
  39. Bano, M.; Zowghi, D. A systematic review on the relationship between user involvement and system success. Inf. Softw. Technol. 2015, 58, 148–169. [Google Scholar] [CrossRef]
  40. Pagano, D.; Maalej, W. User feedback in the appstore: An empirical study. In Proceedings of the IEEE 21st International Requirements Engineering Conference, Rio de Janeiro, RJ, Brazil, 15–19 July 2013; pp. 125–134. [Google Scholar]
  41. Carreno, L.V.G.; Winbladh, K. Analysis of user comments: An approach for software requirements evolution. In Proceedings of the 35th International Conference on Software Engineering, San Francisco, CA, USA, 18–26 May 2013; pp. 582–591. [Google Scholar]
  42. Pagano, D.; Bruegge, B. User involvement in software evolution practice: A case study. In Proceedings of the 35th International Conference on Software Engineering, San Francisco, CA, USA, 18–26 May 2013; pp. 953–962. [Google Scholar]
  43. Sram, N. Practical application of fuzzy logic: Experiences and current state in software engineering. In Proceedings of the 12th IEEE International Symposium on Computational Intelligence and Informatics, Budapest, Hungary, 21–22 November 2011; pp. 579–581. [Google Scholar]
  44. Yadav, H.B.; Yadav, D.K. A fuzzy logic based approach for phase-wise software defects prediction using software metrics. Infor. Softw. Tech. 2015, 63, 44–57. [Google Scholar] [CrossRef]
  45. Al-Refai, M.; Cazzola, W.; Ghosh, S. A fuzzy logic based approach for model-based regression test selection. In Proceedings of the 2017 ACM/IEEE 20th International Conference on Model Driven Engineering Languages and systems, Austin, TX, USA, 17–22 September 2017; pp. 55–62. [Google Scholar]
  46. Mittal, A.; Parkash, K.; Mittal, H. Software cost estimation using fuzzy logic. ACM SIGSOFT Softw. Eng. Notes 2017, 35, 1–7. [Google Scholar] [CrossRef]
  47. Yadav, D.K.; Dutta, S. Test case prioritization technique based on early fault detection using fuzzy logic. In Proceedings of the 3rd International Conference on Computing for Sustainable Global Development, New Delhi, India, 16–18 March 2016; pp. 1033–1036. [Google Scholar]
  48. Idri, A.; Abran, A.; Khoshgoftaar, T.M. Fuzzy case-based reasoning models for software cost estimation. Soft Comput. Softw. Eng. 2004, 159, 64–96. [Google Scholar]
  49. Nisar, M.W.; Wang, Y.J.; Elahi, M. Software development effort estimation using fuzzy logic—A survey. In Proceedings of the 2008 Fifth International Conference on Fuzzy Systems and Knowledge Discovery, Shandong, China, 18–20 October 2008; pp. 421–427. [Google Scholar]
  50. Kataev, M.; Bulysheva, L.; Xu, L.; Ekhlakov, Y.; Permyakova, N.; Jovanovic, V. Fuzzy model estimation of the risk factors impact on the target of promotion of the software product. J. Enterp. Inf. Syst. 2020, 14, 797–811. [Google Scholar] [CrossRef]
  51. Lima, D.C.; Freitas, F.; Campos, G.; Souza, J. A fuzzy approach to requirements prioritization. In Proceedings of the 3rd International Symposium on Search Based Software Engineering, Szeged, Hungary, 10–12 September 2011; pp. 64–69. [Google Scholar]
  52. Konar, A. Fuzzy pattern recognition. In Computational Intelligence; Springer: Berlin/Heidelberg, Germany, 2005; pp. 125–138. [Google Scholar]
  53. Chang, C.L. Fuzzy-Logic-Based Programming; World Scientific Publishing: Singapore, 1997. [Google Scholar]
  54. Jurado, F.; Redondo, M.A.; Ortega, M. Using fuzzy logic applied to software metrics and test cases to assess programming assignments and give advice. J. Netw. Comput. Appl. 2012, 35, 695–712. [Google Scholar] [CrossRef]
  55. Taratuknin, V.; Yadgarova, Y. A fuzzy logic approach for product configuration and requirements management. In Proceedings of the 2015 Annual Conference of the North American Fuzzy Information Processing Society held jointly with 2015 5th World Conference on Soft Computing, Redmond, WA, USA, 17–19 August 2015; pp. 1–5. [Google Scholar]
  56. Pressman, R.S. Software Engineering: A Practitioner’s Approach, 8th ed.; McGraw-Hill Education: New York, NY, USA, 2014. [Google Scholar]
  57. Young, R.R. Recommended requirements gathering practices. J. Def. Softw. Eng. 2002, 15, 9–12. [Google Scholar]
  58. Zowghi, D.; Coulin, C. Requirements elicitation: A survey of techniques, approaches, and tools. In Engineering and Managing Software Requirements, 1st ed.; Aurum, A., Wohlin, C., Eds.; Springer: Berlin/Heidelberg, Germany, 2005; pp. 19–46. [Google Scholar]
  59. Duggan, E.W.; Thachenkary, C.S. Integrating nominal group technique and joint application development for improved systems requirements determination. Inf. Manag. 2004, 41, 399–411. [Google Scholar] [CrossRef]
  60. Coughlan, J.; Lycett, M.; Macredie, R.D. Communication issues in requirements elicitation: A content analysis of stakeholder experiences. Inf. Softw. Technol. 2003, 45, 54–61. [Google Scholar] [CrossRef] [Green Version]
  61. Peruma, A.; Almalki, K.; Newman, C.D.; Mkaouer, M.W.; Ouni, A.; Palomba, F. Tsdetect: An open source test smells detection tool. In Proceedings of the 28th ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering, Virtual Event, New York, NY, USA, 8–13 November 2020; pp. 1650–1654. [Google Scholar]
  62. Brownlee, J. What Is a Confusion Matrix in Machine Learning. Available online: https://machinelearningmastery.com/confusion-matrix-machine-learning/ (accessed on 15 December 2020).
Figure 1. Fuzzy functionality similarity.
Figure 1. Fuzzy functionality similarity.
Symmetry 13 00604 g001
Figure 2. Complete membership.
Figure 2. Complete membership.
Symmetry 13 00604 g002
Figure 3. Partial membership.
Figure 3. Partial membership.
Symmetry 13 00604 g003
Figure 4. Non-membership.
Figure 4. Non-membership.
Symmetry 13 00604 g004
Figure 5. Types of programming language faults.
Figure 5. Types of programming language faults.
Symmetry 13 00604 g005
Figure 6. Software engineering and fuzzy logic.
Figure 6. Software engineering and fuzzy logic.
Symmetry 13 00604 g006
Figure 7. Conceptual model of software components.
Figure 7. Conceptual model of software components.
Symmetry 13 00604 g007
Figure 8. Fuzzy test for login software component.
Figure 8. Fuzzy test for login software component.
Symmetry 13 00604 g008
Figure 9. Fuzzy test for passport software component.
Figure 9. Fuzzy test for passport software component.
Symmetry 13 00604 g009
Figure 10. Software completeness.
Figure 10. Software completeness.
Symmetry 13 00604 g010
Table 1. Dataset for software requirements.
Table 1. Dataset for software requirements.
Requirement TypeRequirement ClassNumber of RequirementsPercentage
FR Functional 36565.18%
NFR Security142.50%
Usability213.75%
Portability101.79%
Availability71.25%
Capacity111.96%
Efficiency122.14%
Reliability152.68%
Performance132.32%
Maintainability152.68%
Accuracy81.43%
Error-handling101.79%
Operational193.39%
Scalability111.96%
IR Inverse91.61%
NIR Security20.36%
Availability10.18%
Performance10.18%
CR Content111.96%
NCR Security10.18%
Usability10.18%
Performance10.18%
Operational20.36%
Total 560100%
Table 2. Content requirements.
Table 2. Content requirements.
DescriptionSoftware Components
R 1 7 : The system must display a drop-down list for the selection of the course category (professional compulsory course, professional elective course, public basic course, public compulsory course).
C P = 0.81
Symmetry 13 00604 i001
R 2 8 : The system must display the selected course category and ask the user to select a course code offered by the university during the current semester.
C P = 0.88
Symmetry 13 00604 i002
R 3 12 : The system must calculate the CGPA according to the university format and ask the user to enter obtain marks and total marks for each subject.
C P = 0.87
Symmetry 13 00604 i003
R 4 52 : The system must display the recommended books for the entered course code.
C P = 0.64
Symmetry 13 00604 i004
R 5 189 : The system must display a text box to enter a student ID. (The system generates a student card)
C P = 0.91
Symmetry 13 00604 i005
R 6 190 : The system must display a text box to enter a faculty ID. (The system generates a faculty card)
C P = 0.88
Symmetry 13 00604 i006
R 7 193 : The system must display a text box to enter a faculty ID and research interest. (The system generates a profile)
C P = 0.83
Symmetry 13 00604 i007
R 8 280 : The system must display a text box to enter the ID of a degree course. (The system generates a list of courses offered during the current semester)
C P = 0.94
Symmetry 13 00604 i008
R 9 311 : The system must display a text box to enter a student class ID. (The system generates a timetable for the student)
C P = 0.92
Symmetry 13 00604 i009
R 10 312 : The system must display a text box to enter a faculty class ID. (The system generates a timetable for the faculty member)
C P = 0.88
Symmetry 13 00604 i010
R 11 317 : The system must display a text box to enter a student ID and a degree ID. (The system generates a transcript)
C P = 0.95
Symmetry 13 00604 i011
Table 3. Inverse requirements.
Table 3. Inverse requirements.
DescriptionSoftware Components
R 1 13 : The system shall not print a semester invoice after the due date. (This option is for offline payment and bank name will be printed on the semester invoice)
C P = 0.91
Symmetry 13 00604 i012
R 2 16 : The system shall display the text box in red if a user enters more than or less than eight digits for their national identity card number.
C P = 0.83
Symmetry 13 00604 i013
R 3 25 : The system shall display the text box for age in red if the age of a candidate is less than 18 years or more than 35 years. A text box in lighter blue indicates that the age will be automatically calculated. (Red text box indicates the ineligibility of a candidate)
C P = 0.80
Symmetry 13 00604 i014
R 4 32 : The system shall not accept a native language other than Chinese/English.
C P = 0.89
Symmetry 13 00604 i015
R 5 33 : The system shall not accept a nationality of a candidate other than that of their country of residence.
C P = 0.91
Symmetry 13 00604 i016
R 6 240 : The system shall display a red text box if a user enters a percentage of completeness of a master degree that is less than 70%.
C P = 0.88
Symmetry 13 00604 i017
R 7 296 : The system shall not upload a photograph for a user profile if its size is less than (300 × 400) pixels.
C P = 0.73
Symmetry 13 00604 i018
R 8 301 : The system shall not accept journal publications other than those from the SCI/SCIE.
C P = 0.60
Symmetry 13 00604 i019
R 9 302 : The system shall not accept conference publications that are not recognized by the CCF/EC.
C P = 0.70
Symmetry 13 00604 i020
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Iqbal, N.; Sang, J. Fuzzy Logic Testing Approach for Measuring Software Completeness. Symmetry 2021, 13, 604. https://doi.org/10.3390/sym13040604

AMA Style

Iqbal N, Sang J. Fuzzy Logic Testing Approach for Measuring Software Completeness. Symmetry. 2021; 13(4):604. https://doi.org/10.3390/sym13040604

Chicago/Turabian Style

Iqbal, Nayyar, and Jun Sang. 2021. "Fuzzy Logic Testing Approach for Measuring Software Completeness" Symmetry 13, no. 4: 604. https://doi.org/10.3390/sym13040604

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop