Page 1 of 16
European Journal of Applied Sciences – Vol. 9, No. 5
Publication Date: October 25, 2021
DOI:10.14738/aivp.95.10772. Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria.
European Journal of Applied Sciences, 9(5). 194-209.
Services for Science and Education – United Kingdom
A Review of Software Components Identification Methods and
Quality Assessment Criteria
Bassey Asuquo Ekanem
Computer Science Department
Delta State Polytechnic, Ozoro, Nigeria
Kehinde K. Agbele
Mathematics and Computer Science Department
Elizade University, Ondo, Nigeria
ABSTRACT
Identification of suitable reusable software components from repositories and
other sources is a key process in software reuse. Many methods for components
identifying exist. However, considering the increased adoption of reuse in software
projects and the need to identify appropriate components from the numerous
sources based on multiple quality criteria, it becomes imperative to undertake a
review of existing methods to determine their strengths and weaknesses as well as
gaps in components identification. In view of the above, this research was designed
to undertake a systematic review of components identification methods in software
reuse. Research findings indicate that existing methods and automated tools were
inadequate in handling components identification from multiple sources especially
where multiple quality criteria are considered. Also, findings indicate that multi- objective optimization algorithms like non-dominated sorting genetic algorithm III
(NSGA-III) are capable of addressing such multidimensional problems; therefore,
greater efforts in designing and developing automated tools that are based on this
technique are highly recommended. The need for adequate methods for cataloguing
and categorizing components that are stored in repositories and other sources is
also identified as capable of enhancing the process of components identification in
software reuse.
Keywords: Software Reusability, Components Identification, Automated Tools, Quality
Assessment Control
INTRODUCTION
The rapid changes in technologies used in the ecosystem to enhance the quality of life in a fast
changing world has correspondingly affected the way software systems are developed and
maintained. As new technologies emerge, the need to build suitable software systems to drive
them as quickly as possible also unfolds. Being that modern software systems are more large- scale, complex and difficult to build from scratch, there is increased adoption of software reuse
in modern software projects as a strategy to cope with the challenge [1], [2], [3], [4]. Software
reuse offers great benefits in modern software projects because it leads to reduced
development time and cost, quick time to market, enhanced quality of the developed software,
leveraging on development knowledge and expertise of other professionals amongst others [2],
[5], [6], [7].
Page 2 of 16
195
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
In software reuse, quality and suitable reusable components must be identified and selected
from available sources before they are integrated into the project to build software systems.
Components identification is the process of recognizing that the required components exist by
matching the characteristics of the required component with the classified characteristics of
components stored in repositories. However, the tasks of identifying quality and suitable
components for reuse is complex and difficult due to increased number of components and
sources ranging from components repositories in the internet to legacy sources [2], [8], [9].
Most times, integrators are confused on what components to use considering the uncountable
number of components from various sources in the Internet repositories [10], [11]. Also, the
choice of identification method could impact negatively on the process if a wrong method is
chosen [12].
Therefore, this research is a systematic review of software reuse with reference to components
identification methods and quality criteria used in the process. The research is aimed at
revealing the current state-of-the-art in this area of software engineering to guide practitioners
on choice of suitable methods and to initiate thought provoking researches that could further
enhance software reuse and reuse products.
RESEARCH METHODOLOGY
The methodology adopted for this research work is the Systematic Literature Review (SLR)
methodology introduced by Kitchenham and Charters. The choice of this methodology was
based on its ability to present a fair evaluation of a research topic using trustworthy, rigorous,
and auditable process [13]. The methodology has three phases as outlined below:
Plan Phase
In this phase the following were undertaken: identification of the need for the review,
commissioning the review, specifying the research questions, developing and evaluating the
review protocol.
Conduct Phase
This stage has five activities explained below:
a) Search Strategy: This has to do with generating the search strategy and performing trial
searches using different combinations of search terms derived from the research
questions.
b) Inclusion and Exclusion Criteria: This has to do with specifying inclusion and
exclusion criteria to be used in identifying relevant resources based on the research
questions.
c) Data collection: At this stage, relevant data were collected based on specified inclusion
and exclusion criteria. This was done with a search conducted on the Internet using
Google search engine. The retrieved data were documented in a data collection form
showing title, authors, publication years and other information.
d) Information synthesis: the extracted data were grouped into quantitative and
qualitative results. The quantitative results were presented in tables and charts while
qualitative data were summarized using sentential formats.
Page 3 of 16
196
European Journal of Applied Sciences (EJAS) Vol. 9, Issue 5, October-2021
Services for Science and Education – United Kingdom
Report Phase
Finally, findings from the review were documented in a report that presents the current state- of-the-art of software reuse with respect to components identification and quality criteria for
components identification.
The Need for the Review
Difficulty in identifying reusable software components for reuse remains the crucial problem
of software reuse since there are multiple sources of components especially in the internet
which contents are also increasing geometrically on daily basis [9]. Also, existence of various
methods for components identification further complicates the matter since wrong choice of
methods could impact the process negatively [2], [7], [14], [15]. Furthermore, inadequate
information on the current state-of-the-art in components identification methods and quality
criteria to be considered when identifying appropriate components for reuse in a key challenge
for the process. Most times, software reuse professionals spent much time and resources trying
to identify appropriate components due to inadequate information on the most suitable method
hence wrong choice of method [1], [4], [16]. These prompted the need for this research to
enhance the body of knowledge needed to effectively support the process.
A systematic review of the process is capable of revealing the state-of-the-art of the process and
gaps that need to be addressed.
The Research Questions
A set of seven research questions were designed for the review as shown in table 1.
Table 1: Research Question for the Review
Question
Number
Research Question
Q1 What are the benefits of reusable software components in software reuse?
Q2 What are the different sources of reusable software components?
Q3 What are the methods for classifying reusable components that are stored
repositories?
Q4 What are the challenges in identifying suitable reusable components from
available components sources?
Q5 What are the methods for identifying relevant reusable components from
available components sources?
Q6 What are the quality criteria that influence components identification from
sources?
Q7 What are the gaps in components identifying from available sources?
Inclusion and Exclusion Criteria
Inclusion and exclusion criteria were used in this research to determine what materials are
relevant to the study? It serves to guide the reviewer on what materials should be included or
excluded from the study. Inclusion and exclusion criteria for this review were specified as given
below:
Page 4 of 16
197
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
a) Inclusion Criteria
I1: The study investigates software reuse and methods for identifying reusable software
component. A study that only investigates software reuse without methods for identifying
reusable software component is not included in the review.
I2: The study mentions the sources of reusable software components.
I3: The study mentions the challenges in identifying relevant reusable components from
available components sources
I4: The study mentions the criteria that influence components identification from sources.
It is not necessary for a study to satisfy all inclusion criteria to be included in the review. The
rule for the inclusion criteria is expressed with Boolean operators thus: I1 AND (I2 OR I3 OR
I4). This means that the criterion I1 is mandatory for any article to be included in addition to
only one of I2 or I3 or I4 being satisfied.
b) Exclusion Criteria
At least one of the exclusion criteria is enough for a study to be excluded from the review. The
rule for the exclusion criteria is expressed with Boolean operators thus: E1 OR E2 OR E3 OR E4:
E1: A study that does not meet any of the above mentioned inclusion criteria is to be excluded.
For example, a study that investigates software reuse without considering methods for
identifying reusable software components is to be excluded.
E2: A publication that is an editorial or a short paper without the basic sections of reporting
scholarly research are excluded.
E3: Duplicate studies. A particular materials may appear at two or more locations as duplicate
copies. Where this happens, duplicate copies of the article are excluded.
E4: Research papers published earlier than 2005. This is necessary to exclude resources that
are too old as well as reduce the volume of resources to a reasonable and relevant materials for
effective reviewed.
The Review Protocol
In this section, review protocols were specified. Data for the review were obtained from the
internet using google search engine with the following search string:
“Software Reuse, benefits of software reuse, methods for identifying reusable software
components, sources of reusable components, challenges of identifying appropriate software
components, quality criteria of reusable components, after: 2004-12-31”
The retrieved data were validated by checking the displayed search results one after the other
to ensure their contents conform to expected results. Search results not in conformity were
excluded from the list. Also, the selection criteria used are articles from popular sources namely
ACM Digital library, IEEE Xplore, Springer, Science Direct, Wiley Online Library, Web of Science,
Scopus and Google Scholar.
Research Data Extraction
The google search engine was used to search and retrieve the data from the Internet by typing
the search string given earlier. A total of 13,400 resources were retrieved but reduced to 105
by the search engine when similar and already displayed materials were omitted from the
Page 5 of 16
198
European Journal of Applied Sciences (EJAS) Vol. 9, Issue 5, October-2021
Services for Science and Education – United Kingdom
search results. Furthermore, the extracted results were reduced to 66 following the application
of inclusion and exclusion criteria which excluded articles that did not meet inclusion criteria.
RESULTS AND DISCUSSION
A careful review of the extracted data undertaken by reading through the contents revealed the
following relevant facts presented in line with the research questions.
Benefits of Reusable Software Components in Software Reuse
This section provides answers to Q1: What are the benefits of Reusable Software
Components in Software Reuse? All of the 66 reviewed articles maintain that reusable
software components are of great benefits in software reuse, hence its increased adoption in
software reuse. In [17], [18], [19] it is emphasized that reusable software components are
classical solutions to developing large and complex software systems and are capable of
reducing software development time and costs as well as increase the quality of the developed
product.
Also, [2], [5] report that, increased inclination of most software developers towards software
reuse is because the use of reusable components reduces project risks and costs especially
where new technologies are required to develop software from scratch as well as promotes
applications interoperability. When reusable components are correctly applied in software
reuse, it could increase developers’ productivity, shorten time-to-market, improve software
quality and reduce software maintenance costs [4], [20], [21].
Sources of Reusable Software Components
The answers to Q2: What are the different sources of reusable software components? are
provided thus. The reviewed articles indicate that there exist various sources of reusable
software components as outlined below:
i. In-house Components Development Project – following the need for specific
components in a software project, in-house development team could be constituted
to develop new reusable components suitable for the project [1], [22], [23].
ii. Legacy Systems – old software system with quality reusable components can be
examined with the intent of identifying and extracting the quality components for
reuse in new projects [1], [24], [25]. The legacy system could be an open source
software (OSS) or a legacy asset of the organization.
iii. Components from new Development Projects – in this case, as a new software is
being developed, components are planned for and created from the software that is
being developed for use in reuse projects [1], [26].
iv. Components Repositories – this is a well-structured storage of reusable
components with adequate characterisation of components to facilitate easy storage,
identification and retrieval of suitable and quality components for reuse [1], [26],
[27].The repository can be on the Internet or in-house repository of the organization.
In [22] DHIS2 Shared Component Platform, that facilitates component reuse within
the DHIS2 platform ecosystem is designed, developed, evaluated and presented for
use.
v. COTS Sources – this refer to vendors who offer reusable software components for
sale in the form of COTS [1], [28]. In this case the internal structure and contents of
the component is unavailable therefore making it difficult to assessed the quality of
Page 6 of 16
199
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
the component save for quality rating specified by the developer or the vendor on
the product.
Methods for Classifying Components Stored in Repositories
The way and manner reusable components are organized in repositories could affect the
process of component identification. Q3: What are the methods for classifying reusable
components that are stored repositories? Was designed to review the methods for
components classification. In [29], the following four methods for components classification
are presented:
i. Free Text Classification
In this method, keywords that are relevant to each components are carefully selected and used
to automatically index the components stored in the repositories. The indexing process has to
do with creating a list of search items for all components stored in available repositories to be
used in components search as initiated by users. During a search, the user inputs the keywords
that best describe the component and a list of ranked components that match the search criteria
are displayed in return. This is the search technique adopted by search engines like Google,
MSN Search, Yahoo and others. The disadvantage of this technique is that irrelevant
components may form part of the search results since a component may be associated with
many keywords.
ii. Enumerated Classification
This is a one dimensional classification scheme where components are classified based on a set
of mutually exclusive classes with a provision for sub categorization at different levels
enumerated within the main class. Being that it is one-dimensional, it cannot accommodate
multiple characteristics of components, hence not flexible enough to yield the desired results
from a search.
iii. Attribute Value Technique
This technique uses a set of attributes to classify a components. For instance, a component may
be associated with attributes like name, classification code, author, function, size, last updated
date and so forth. The setback of this technique is that, where a search is initiated with
attributes that are not part of the components classification, the search result will be incorrect.
iv. Faceted Classification
In this case, facets are used to describe the components. Facets in this refer to group of
descriptors like component’s functionalities, implementation requirements and so forth.
Faceted classification, goes with guided search because users are usually presented with
options to select those that are relevant to the search being conceived. The method is very
effective but highly labour intensive to classify components with relevant facets [29].
Challenges in Identifying Suitable Reusable Components from Sources
The following findings were made with respect to Q4: What are the Challenges in identifying
suitable reusable components from available components sources? 100% of the reviewed
articles maintain that even though software reuse is highly beneficial, it is not without
challenges. Some of these challenges are outlined thus:
Page 7 of 16
200
European Journal of Applied Sciences (EJAS) Vol. 9, Issue 5, October-2021
Services for Science and Education – United Kingdom
i. Inadequate methods for cataloguing and classifying components that are
stored in various repositories: findings from the review indicate that existing
methods are inadequate as they do not provide for multi-dimensional classification
of components to accommodate both functional and non-functional characteristics
of components, resulting in increased costs and efforts to identify components [1],
[22], [30], [31], [32], [29].
ii. Inadequate tools and methods for components Identification using multi- objective optimization Technique: in [4], [16] it is stated that existing tools and
methods are inadequate in using multiple quality criteria to identify components as
they do not harness multi-objective optimization problem solving technique. Also,
lack of adequate metrics for measuring most of the quality criteria encourages the
use of manual methods which are characterized by low results accuracy [5], [4].
Furthermore, [33], [34] maintains that most components identification methods are
theoretical and very difficult to comprehend, hence rarely used by component
integrators especially for large system.
iii. High cost of components identification due to searching of multiple sources:
As reported in [8], [11] component identification process usually involves searching
various components repositories in the Internet to identify the desired components,
a process that could be very expensive to undertake. This is also confirmed in [5],
[35], [7], [36], [37]. High costs of searching for suitable glue code is another cost
factor; and all of these are influenced by the complexity of the optimal selection
problem which increases with increase in number of repositories, volume of
components in each repository and quality attributes being considered [38], [39],
[40], [41], [19].
iv. Difficulty in meeting licensing and authorization requirements to access some
components repositories. Most component sources on the internet where quality
components could be found are protected by some licensing and authorization
policies that must be met before access is granted [2]. Meeting these requirements
could be a bit difficult for some especially where many of such sources are involved.
Methods for Identifying Relevant Reusable Components from Components Repository
This section responds to Q5: What are the methods for identifying relevant reusable
components from available components sources? In the review, about 84% of the reviewed
articles commented on methods for identifying components from sources for reuse. These
methods are outlined thus:
i. Multi-objective Optimization Methods
These methods seek to address components identification problem as a multi-objective
optimization problem where multiple quality criteria are used. Findings indicate that this is a
novel method and yet to be adequately explored [42]. In [4], a method that is based on non- dominated sorting genetic algorithm II (NSGA-II) is proposed for solving components
identification problem using multi-objective optimization problem technique. The method uses
three quality criteria namely cohesion, coupling and complexity to identify appropriate
components. The use of non-dominated sorting genetic algorithm II (NSGA-III) is highly
recommended for upcoming methods to allow for the use of multiple criteria in the
optimization problem [42].
Page 8 of 16
201
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
ii. Clustering Methods
In software reuse, clustering methods are highly adopted by practitioners because of its ability
to reduce the search space and optimize search time [9], [43]. [44], [45]. This method uses high
cohesion and low coupling strategy to identify components from available repositories.
Different flavours of clustering methods exist. In [46], clustering methods that uses similarity
function to identify component clusters and estimate project cost is presented. Also, in [47],
clustering method that uses Gaussian function to count the features and evaluates features
distribution in a component is presented. Another clustering method that is based on use cases
in proposed in [48]. Unfortunately, clustering methods are not adequately automated with
robust and user-friendly features hence require some manual processes to be fully
implemented [9].
iii. Graph-based Method
In this methods, components identification problems is modelled as a graph, G =G(N,E) where
N is the set of nodes and E is the set of edges. In [49] the method is used to address components
identification problem by applying the heuristic from graph concepts where weighted graphs
are used to identify mutually disjoint sub-graphs as components with high quality. The
disadvantage of this approach is that weights are manually assigned to edges by a domain
expert, who may not estimate the weights accurately.
iv. CRUD-based Method
CRUD is an acronym for four relationship types namely Create, Read, Update and Delete used
to specify semantic relationship between elements that are presented in a matrix that can be
used to solve problems. As presented in [4], CRUD method called COMO was presented decades
ago for use in components identification based on use cases or class matrix created from use
case diagrams or class diagrams respectively. Thereafter, a tool similar to COMO called O2BC
that uses business events and domain objects as inputs to create the matrix was presented.
However, this method has a number of limitations similar to Clustering due to the use of
clustering method, hence not highly supported.
v. Heuristic/Metaheuristic Methods
Heuristic methods are designed for solving problems more quickly when classic methods are
too slow, or used for finding approximate solution when classic methods fail to find any exact
solution. In software reuse, this situation could arise depending on the complexity of the
problem to solve [6]. Relying on heuristic concepts, search-based software engineering has
been introduced to deal with such situations [9]. In [6], metaheuristic algorithms are presented
as a tool for extracting components from existing software to build standard Java Bean reusable
software components.
vi. Neural Network Method
In [39], a method named Neuro-fuzzy Inference engine that combines the features of both
neural networks and Fuzzy algorithms to perform domain relevancy appraisal needed to
identify quality reusable components from existing object-oriented systems is presented.
Because neural network can be used to define fuzzy rules for the fuzzy inference system as well
as discover relationships and pattern in the data, it can be used to pre-process data in the fuzzy
system, hence the combination of the two.
Page 9 of 16
202
European Journal of Applied Sciences (EJAS) Vol. 9, Issue 5, October-2021
Services for Science and Education – United Kingdom
vii. Formal Concept Analysis Method
Formal concept analysis (FCA) is a mathematical theory about concepts and concepts
hierarchies. It explicitly formalizes the extension and intension of a concept, their mutual
relationships and the fact that increasing intent implies decreasing extent and vice versa. FCA
is also applied in components identification as in [50] where components stability is used as a
key quality attribute together with dispersion and distance concept to replace cohesion and
coupling concepts used in other methods. The disadvantage of these methods is that some key
processes are manually undertaken by experts, a situation that could result in low accuracy,
hence not adopted.
viii. Other Methods
There are some other methods that are not identified with any of the above, hence classified in
this review as other methods and scribed thus. In [10], a method called Rate of Reusability
Metric is presented that uses components reusability rate to create ‘Matrix-of Reusability’ that
can be used in selecting best components from the repositories. Also, [3] presents a method
that can be used to identify quality components from legacy software in three stages by
assessing components structural properties, token-based semantic relationship and change
history evolutionary relationships respectively.
A method called preference-based component identification using particle swarm optimization
(PCI-PSO) is presented in [51] which use customized particle swarm optimization (PSO)
technique to automatically classify classes in a software into suitable logical components based
on software architect’s preferences. In [11], a method that uses genetic algorithm to find the
best optimal software reusable component from components repository is presented. JReuse
is another method proposed in [52] that uses naming similarity of two object-oriented entities,
namely classes and methods to identify quality components from repositories. Automated tool
was also developed from the method and used to evaluate 38 e-commerce software from
GitHub for quality components and confirmed to be effective and efficient. In [53], a method
called Search-Based Logical Component Identification (SBLCI) that is based on genetic
algorithm undertaken iteratively is presented.
Also, in [54], a method called Clone detection and program slicing is presented and structured
into four phases namely, tagging the user query to class and method names, constructing
pattern/s of code features using clone detection technique, searching components in the library
based on the clone pattern/s and aid the comprehension of the retrieved code components with
program slicing technique.
In summary, [22], [33] and [53] maintain that most of these methods rely on experts’ opinion
hence may not be as accurate as expected. Also, [8] and [15] report that most components
identification methods are theoretical and very difficult to comprehend, hence rarely used by
component integrators especially for large system. The use of approximation techniques like
Analytical Hierarchy process (AHP) in most methods is another issue, hence the need for
further researches to explore other methods that could yield accurate results.
E. Quality Criteria for reusable Components Ranking and Selecting
A quality criterion was also accessed using Q6: What are the quality criteria that influence
components identification from sources? Following the review, about 96% of the reviewed
Page 10 of 16
203
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
articles emphasized the importance of quality criteria in components identification. In [33],
component quality model with 11 attributes including reusability, coupling, complexity,
cohesion, interface documentation is presented. These and other attributes considered key in
components identification are presented thus:
i. Reusability: the degree to which a software component can be reused in other
software projects [6], [55], [14], [56], [57], [58]
ii. Reliability: this is the quality of reusable component that makes it robust, fault- tolerant and highly available [25], [12], [41], [7], [11], [19], [58].
iii. Robustness: the degree to which a component continues to function properly under
abnormal conditions or circumstances during a given period of time [10], [7], [11], [56],
[59].
iv. Testability: this has to do with the ability of a component to facilitate the creation and
execution of successful tests [8], [10], [60], [58].
v. Availability: this attribute defines the proportion of time that a component that the
component is available to perform useful work [6], [14]., [33], [8], [56], [61].
vi. Capacity: the maximum number of entities that a component can successfully handle
at a single point in time. This could be in terms of the number of users, simultaneous
transactions, records and so forth Pandey and [8], [55], [58], [61].
vii. Usability: This attribute defines the ease with which a components can be used by
developers to develop new software systems. This could be assessed in terms user- friendliness of the component interface and reference support [55], [56], [58].
viii. Maintainability: This is degree to which a software component can be modified to
correct faults, improve performance or or adapt to a changed environment. This also
addresses adaptability and extensibility as well [6], [55], [14], [19], [41], [7], [11], [59].
ix. Portability: quality of a component that minimizes efforts required to support it
across heterogeneous operating system platforms, programming languages and
compilers [3], [28], [55], 2018), [14], [56].
x. Stability: quality of reusable component that over the years from one version to
another has gone through minimal number of modifications yet still working perfectly
according to specifications [6], [28], [62], [63], [7], [56]
xi. Interoperability: this refers to the component’s ability to successfully run,
communicate and exchange information with other components or systems outside its
domain [28], [56], [59].
xii. Cohesion: this is the degree to which the constituent parts in a component belong
together [8], [6], [14]. Also, components with high cohesion tend to be preferable,
because high cohesion enhances other attributes like robustness, reliability,
reusability, and understandability [55], [33].
xiii. Coupling: this is the degree of interdependence between the constituent parts in a
component. It is a measure of how closely connected the elements are. Components
with low coupling are preferable because low coupling will impact positively on other
attributes [8], [6], [55], [8], [33].
xiv. Complexity: this is the measure of the level of interaction between the different parts
of the components. This attribute is determines by coupling and cohesion. Low
coupling and high cohesion are indicator for acceptable complexity [8], [6], [55], [8],
[33].
xv. Documentation level: this attribute refers to the quality of a component that provides
useful reference materials about the component and its interface; how to use it, identify
Page 11 of 16
204
European Journal of Applied Sciences (EJAS) Vol. 9, Issue 5, October-2021
Services for Science and Education – United Kingdom
and resolve issues that could arise in course of using it [37], [19], [41], [7], [11], [25],
[12], [59], [56].
xvi. cost of integration: this describes the cost of utilizing the component in the
development projects which include cost identifying, selecting or extracting the
component as well as integrating it to develop the new [41], [7], [11], [25], [12], [59],
[56].
Gaps in Components Identification from Available Sources
This section responds to Q7: What are the gaps in components identifying from available
sources? The gaps from the review are outlined below:
i. The need for methods with multi-dimensional approach in cataloguing and classifying
software components that are stored in components repositories using both functional
and non-functional characteristics of reusable components is emphasized as existing
methods are inadequate in this regard [6], [31], [30], [64], [32], [65].
ii. Also, the need for automated tools and methods that utilize multi-objective optimization
algorithm in solving components identification problems to enable the use of multiple
quality criteria in components identification problems is identified [5], [6], [13], [5],
[16], [11], [66].
iii. The need for adequate metrics for measuring quality attributes of reusable software
components which values could be used in effective an efficient cataloguing and
classifying of components to minimize efforts, time and costs of searching available
sources to identify components is also identified [2], [5], [63], [60].
iv. The need for Unified platforms to support software reuse with respect to components
identification, selection and integration to enhance the quality of software reuse process
and reuse products [2], [67], [58].
CONCLUSION
Increased adoption of software reuse in software projects has further emphasized the
importance of quality reusable software components in modern software projects. Considering
the numerous sources of reusable components especially on the Internet and the geometric
increase of components in such repositories on daily basis, it becomes imperative that methods
for identifying components from these repositories are reviewed with the intension of evolving
methods, techniques and tools that will enable integrators identify components from
repositories with minimal time and costs since existing methods are inadequate in handling
multidimensional components identification problems.
The use multi-objective optimization algorithms like non-dominated sorting genetic algorithm
III (NSGA-III) are presented as novel approach to addressing such multidimensional problems.
Therefore, greater efforts in designing and developing automated tools that are based on this
technique are highly recommended to optimize the problem solution. Furthermore, the need
for adequate methods for cataloguing and categorizing components that are stored in
repositories and other sources is also identified. With these, the process of components
identification using multiple quality criteria will be enhanced.
Page 12 of 16
205
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
References
[1] Al-Badareen, A. B., Saleh, A. M., Abuaddous, H. Y. and Enaizan, O. (2021). In the Process of Software
Development: Available Resources and Applicable Scenarios; Journal of Theoretical and Applied Information
Technology; 99(1)
http://www.jatit.org/volumes/Vol99No1/3Vol99No1.pdf
[2] Saeed, T. (2020). Current Issues in Software Re-usability: A Critical Review of the Methodological & Legal
Issues; Journal of Software Engineering and Application 3(9)
https://www.scirp.org/journal/paperinformation.aspx?paperid=103273
[3] Rathee, A. and Chhabra, J. K. (2019). Sensitivity Analysis of Evolutionary Algorithm for Reusable Software
Component Identification; Mendel Soft Computing Journal, 25(1)
https://doi.org/10.13164/mendel.2019.1.031
[4] Gholamshahi, S. and Hasheminejad, S. M. H. (2020). Software component identification and selection: A
research review; Journal of Software Practice and Experience; 49(1), pp.40-69, Wiley Online Library
https://onlinelibrary.wiley.com/doi/10.1002/spe.2656
[5] Imoize, A. L., Idowu, D. and Bolaji, T. (2019). A Brief Overview of Software Reuse and Metrics in Software
Engineering; World Scientific News, An International Science Journal
https://www.worldscientificnews.com
[6] Rathee, A. and Chhabra, J. K. (2020) Mining Reusable Software Components from Object-Oriented Source
Code using Discrete PSO and Modeling Them as Java Beans; Information Systems Frontiers, Springer, vol. 22(6),
pages 1519-1537, December.
https://ideas.repec.org/a/spr/infosf/v22y2020i6d10.1007_s10796-019-09948-4.html
[7] Garga, R. (2017). A systematic review of COTS evaluation and selection approaches; Growing
Science;http://www.m.growingscience.com/ac/Vol3/ac_2017_3.pdf
[8] Pandey and Tulika (2019). Review for Different Approaches for identify a Software Component, Journal of
Emerging Technologies and Innovative Research (JETIR, 6(5), 2019
https://www.jetir.org/papers/JETIR1905K19.pdf
[9] Gholamshahi, S. and Hasheminejad, S. M. H. (2018). A method for identifying software components based on
Non-dominated Sorting Genetic Algorithm; Soft Computing Journal (SCJ), University of Kashan, 2018; 7 (2) :47-
64
http://scj.kashanu.ac.ir/article-1-521-en.html
[10] Tiwari, U. K. And Kumar, S. (2019). Selection of Components Using Rate-Of-Reusability And Matrix-Of- Reusability; Journal of Engineering Science and Technology Vol. 14, No. 2 (2019); School of Engineering, Taylor’s
University pp. 659 - 673
https://jestec.taylors.edu.my/Vol%2014%20issue%202%20April%202019/14_2_11.pdf
[11] Islam (2017). An Effective Approach for Evaluation and Selection of Component; Journal of Computer
Engineering and Intelligent Systems; Vol.8, No.1, 2017 www.iiste.org
[12] Alrubaee, A. U., Cetinkaya, D., Liebchen, G. and Dogan, H. (2020). A Process Model for Component-Based
Model-Driven Software Development, MDPI
https://www.mdpi.com/2078-2489/11/6/302/pdf
[13] Kitchenham, B. and Charters, S. (2007). Guidelines for Performing Systematic Literature Reviews in
Software Engineering; Keele University and Durham University Joint Report, (2007)
https://userpages.uni-koblenz.de/~laemmel/esecourse/slides/slr.pdf
[14] Ekanem, B. A (2017). Quality Indicators for Effective Component-Based Software Application; International
Journal of Computer Science Trends and Technology (IJCST) – Volume 5 Issue 6, Nov - Dec 2017
Page 13 of 16
206
European Journal of Applied Sciences (EJAS) Vol. 9, Issue 5, October-2021
Services for Science and Education – United Kingdom
https://www.academia.edu/35339806/_IJCST-V5I6P12_Ekanem_Bassey_Asuquo
[15] Pande, J. (2012). On Some Critical Issues in Component Selection in Component based Software
Development; International Journal of Computer Applications (0975 – 8887) Volume 46– No.4, May 2012
https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.735.3500&rep=rep1&type=pdf
[16] Goyal, S. and Parashar, A. (2017). Selecting the COTS Components Using Ad-hoc Approach; I.J. Wireless and
Microwave Technologies, Modern Education and Computer Science Press, vol. 5 pp. 22-31http://mecs- press.org/ijwmt/ijwmt-v7-n5/IJWMT-V7-N5-3.pdf
[17] Dirnfeld, R. (2021). Reuse in Self-Adaptive Software Systems A Literature Review; Master Thesis Project,
Linneuniversitetet, Kalmar Vaxjo https://www.diva-portal.org/smash/get/diva2:1573734/FULLTEXT01.pdf
[18] Anasuodei, M. and Akpofure, O. N. (2021). Software Reusability: Approaches and Challenges; International
Journal of Research and Innovation in Applied Science (IJRIAS) |Volume VI, Issue V, May 2021
https://www.rsisinternational.org/journals/ijrias/DigitalLibrary/volume-6-issue-5/142-146.pdf
[19] Kaur, I. and Kaur, S. (2015). Efficient ranking and Retrieval of reusable software Components; International
Journal of Applied Engineering Research 10(15):35354-35361
https://www.researchgate.net/publication/283762688_Efficient_ranking_and_retrieval_of_reusable_software_c
omponents
[20] Kaur, P. S., Singh, J. and Singh, H. (2014). Component Selection Repository with Risk Identification;
Conference: 2014 International Conference on Computing for Sustainable Global Development (INDIACom)
https://www.researchgate.net/publication/269273645_Component_Selection_Repository_with_Risk_Identificati
on
[21] Bhatia, R., Dave, M. and Joshi, R. C. (2006). Retrieval of Most Relevant Reusable Component Using Genetic
Algorithms. Conference: Proceedings of the International Conference on Software Engineering Research and
Practice & Conference on Programming Languages and Compilers, SERP 2006, Las Vegas, Nevada, USA, June 26-
29, 2006, Volume 1
https://www.researchgate.net/publication/221610702_Retrieval_of_Most_Relevant_Reusable_Component_Usin
g_Genetic_Algorithms
[22] Bengtsson, A. (2021). Facilitating Software Reuse Using Design Science Research to Develop Design
Principles for Implementing A Component Repository; M. Sc. Thesis on Informatics: Programming and System
Architecture; Department of Informatics Faculty of mathematics and natural sciences University of Oslo.
https://www.mn.uio.no/ifi/english/research/groups/is/research-library/masters-theses/bengtsson.pdf
access date: 26th July, 2021
[23] Kamalraj, R., Kannan, A. R. and Ranjani, P. (2012). Classification and Selection of Reusable Software
Components Using Mutation Technique; International Journal of Computer Science And Technology (IJCST) Vol.
3, Issue 3 http://www.ijcst.com/vol33/3/a952.pdf
[24] Ekanem, B. A. and Woherem, E. (2016). Legacy Components Stability Assessment and Ranking Using
Software Maturity Index. International Journal of Computer Applications (IJCA), Foundation of Computer
Science (FCS), 134(13), New York, USA, 2016
https://www.ijcaonline.org/archives/volume134/number13/23976-2016908157 Access Date: 12th March,
2021
[25] Arsene, K. K. I., Adama, S., Prosper, K. K. and Marcellin, B. K. (2019). Proposal of Automatic Methods for the
Reuse of Software Components in a Library; (IJACSA) International Journal of Advanced Computer Science and
Applications, Vol. 10, No. 2, 2019
https://thesai.org/Downloads/Volume10No2/Paper_8-Proposal_of_Automatic_Methods.pdf
[26] Qureshi, M. R. J. and Sandhu, M. E. (2013). Survey-Based Analysis of the Proposed Component-Based
Development Process; https://arxiv.org/ftp/arxiv/papers/1202/1202.2498.pdf
Page 14 of 16
207
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
[27] AL-Badareen, A. B, Selamat, M. H., Jabar, M. A., Din, J. and Turaev, S. (2011). Reusable Software Component
Life Cycle, INTERNATIONAL JOURNAL OF COMPUTERS Issue 2, Volume 5, 2011
https://www.naun.org/main/NAUN/computers/19-863.pdf
[28] Capilla, R., Gallina, B., Cetina, C., & Favaro, J. (2019). Opportunities for Software Reuse in an Uncertain
World: from Past to Emerging Trends. Journal of Software: Evolution and Process, 31(8).
https://doi.org/10.1002/Smr.2217
[29] Kaur, V. and Goel, S. (2011). Facets of Software Component Repository; International Journal on Computer
Science and Engineering 3(6)
https://www.researchgate.net/publication/228726189_Facets_of_Software_Component_Repository
[30] Manjhi, D. and Chaturvedi, A. (2019). Software Component Reusability Classification in Functional
Paradigm, 2019 IEEE International Conference, 2019
https://ieeexplore.ieee.org/abstract/document/8869123 Access Date: 19th April, 2021
[31] Kalian, A. (2014). Characterization of Reusable Software Components For Better Reuse, International
Journal of Research in Engineering and Technology 03(05):584-588, 2014
https://www.researchgate.net/publication/273301351_Characterization_Of_Reusable_Software_Components_fo
r_Better_Reuse Access Date: 12th March, 2021
[32] Hudaib, A., Huneiti, A. and Othman, I. (2016). Software Reusability Classification and Predication Using Self- Organizing Map (SOM), Communications and Network, 8(3), 2016
https://www.scirp.org/journal/paperinformation.aspx?paperid=69828 Access Date: 17th April, 2021
[33] Ali, M. A. and Yap, N. K. (2019). Software Component Quality Model; International Journal of Engineering
and Advanced Technology (IJEAT) ISSN: 2249 – 8958, 9(1), October 2019 https://www.ijeat.org/wp- content/uploads/papers/v9i1/A2659109119.pdf
[34] Sharma, H. (2016). Software Reuse. https://www.slideshare.net/indusharma3517/software-resuse Access
Date: 28th May, 2021
[35] Selvarani, R. and Mangayarkarasi, P. (2017). Modeling of Reusability Estimation in Software Design with
External Constraints, Software Project Management for Distributed Computing, Springer, Cham, pp. 3-23
[36] Kessel, M. and Atkinson, C. (2016). Ranking software components for reuse based on non-functional
Properties, Information Systems Frontiers volume 18, pages825–853 (2016)
https://link.springer.com/article/10.1007/s10796-016-9685-3
[37] Mittal, S. and Bhatia, P. K. (2013). Framework for Evaluating and Ranking the Reusability of COTS
Components based upon Analytical Hierarchy Process; International Journal of Innovations in Engineering and
Technology (IJIET)
http://ijiet.com/wp-content/uploads/2013/09/47.pdf
[38] Garga, R., Sharma, R. K. and Sharma, K. (2016). Ranking and selection of commercial off-the-Shelf using
Fuzzy distance based approach; Decision Science Letters 5 (2016) 201–210
http://www.growingscience.com/dsl/Vol5/dsl_2015_51.pdf
[39] Kim, H. (2008). Automatic Identification of Potential Reusable Mobile Components; IAENG International
Journal of Computer Science, 35(4)
http://www.iaeng.org/IJCS/issues_v35/issue_4/IJCS_35_4_04.pdf
[40] Gall, H. (2010). ReUse: Challenges and Business Success; Software Evolution & Architecture Lab (Seal).
https://www.slideshare.net/hcgall/software-reuse-challenges-and-business-success Access Date: 28th May,
2021
[41] Jha, S. K. and Mishra, R. K. (2016). Multi Criteria Based Retrieval Techniques for Reusable Software
Components From Component Repository; International Journal of Engineering Applied Sciences and
Technology, 2016 Vol. 1, Issue 6, pp. 88-91
Page 15 of 16
208
European Journal of Applied Sciences (EJAS) Vol. 9, Issue 5, October-2021
Services for Science and Education – United Kingdom
https://www.ijeast.com/papers/88-91,Tesma106,IJEAST.pdf
[42] Yannibelli, V., Pacini, E., Monge, D., Mateos, C. and Rodriguez, G. (2020). A Comparative Analysis of NSGA-II
and NSGA-III for Autoscaling Parameter Sweep Experiments in the Cloud; Hindawi Scientific Programming
Volume 2020, https://www.hindawi.com/journals/sp/2020/4653204/
[43] Basha, N. M. J. and Mohan, C. (2014). A Strategy To Identify Components Using Clustering Approach For
Component Reusability; Computer Science & Information Technology
https://arxiv.org/ftp/arxiv/papers/1406/1406.4123.pdf
[44] Srinivas, C., Radhakrishna, V. and Rao, C. V. G. (2013). Clustering Software Components for Component
Reuse and Program Restructuring; ICCC '13: Proceedings of the Second International Conference on Innovative
Computing and Cloud Computing, December 2013; ACM Digital Library, pp.261–266
https://dl.acm.org/doi/abs/10.1145/2556871.2556933
[45] Shtern, M. and Tzerpos, V. (2012). Clustering Methodologies for Software Engineering; Advances in Software
Engineering, Hindawi
https://www.hindawi.com/journals/ase/2012/792024/
[46] Srinivas, C., Radhakrishna, V. and Rao, C. V. G. (2014A). Clustering and Classification of Software Component
for Efficient Component Retrieval and Building Component Reuse Libraries; 2nd International Conference on
Information Technology and Quantitative Management, ITQM 2014; Procedia Computer Science 31 ( 2014 )
1044 – 1050
https://pdf.sciencedirectassets.com/280203/1-s2.0-S1877050914X00050
[47] Srinivas, C., Radhakrishna, V. and Rao, C. V. G. (2014B). Software Components Clustering and Classification
Using Novel Similarity Measure, Procedia Technology, 8th International Conference Interdisciplinary in
Engineering, INTER-ENG 2014, 9-10 October 2014, Tirgu-Mures, Romania; 19 (2015) 866-873, Elsevier.
https://core.ac.uk/download/pdf/82019856.pdf
[48] Shahmohammadi, G., Jalili, S. and Hasheminejad, S. M. H. (2010). Identification of System Software
Components Using Clustering Approach, Journal of Object Technology 9(6):77-98
https://www.researchgate.net/publication/220299201_Identification_of_System_Software_Components_Using_
Clustering_Approach
[49] Albani, A., Overhage, S., Birkmeier, D. (2008). Towards a Systematic Method for Identifying Business
components. In: Chaudron MRV, Szyperski, CA, Reussner, RH, eds Component-based Software Engineering: 11th
International Symposium, CBSE 2008, Karlsruhe, Germany, October 14-17, 2008, Proceedings, Berlin,
Germany:Springer-Verlag Berlin Heidelberg; 2008:262-277, Leture Notes in Computer Science; vol 5282
[50] Hamza, H. S. (2009). A Framework for Identifying Reusable Software Components using Formal Concept
Analysis. In: Proceedings of the 2009 Sixth International Conference on Information Technology: New
Generations: 2009; Las Vegas, NV
[51] Hasheminejad, S. M. H. and Gholamshahi, S. (2107). PCI-PSO: Preference-Based Component Identification
Using Particle Swarm Optimization; Journal of Intelligent Syatems; 2019; 28(5): 733–748; De Gruyter Publishers
https://www.degruyter.com/document/doi/10.1515/jisys-2017-0244/html
[52] Oliveira, J., Fernandes, E., Souza, M. and Figueiredo, E. (2016). A Method Based on Naming Similarity to
Identify Reuse Opportunities; XII Brazilian Symposium on Information Systems, Florianópolis, SC, May 17-20,
2016 https://sol.sbc.org.br
[53] Hasheminejad, S. M. H. and Jalili, S. (2014). An evolutionary approach to identify logical components; Journal
of Systems and Software; Elsavier, Vol. 96, October 2014, Pages 24-50
https://www.sciencedirect.com/science/article/abs/pii/S0164121214001228#!
[54] Aziz, M. A and North, S. (2007). Retrieving Software Component using Clone Detection and Program Slicing;
Research Publication, The Memorandum CS-07-03, Department of Computer Science
http://www.dcs.shef.ac.uk/intranet/research/public/resmes/CS0703.pdf
Page 16 of 16
209
Ekanem, B. A., & Agbele, K. K. (2021). A Review of Software Components Identification Methods and Quality Assessment Criteria. European Journal
of Applied Sciences, 9(5). 194-209.
URL: http://dx.doi.org/10.14738/aivp.95.10772
[55] Kessel, M. and Atkinson, C. (2018). Integrating reuse into the rapid, continuous software Engineering cycle
through test-driven search; Association for Computing Machinery (ACM) Digital Library
https://dl.acm.org/doi/10.1145/3194760.3194761
[56] Upadhyay, N., Despande, B. M., &Agrawal, V. P. (2011). Towards a software component quality model. In
International Conference on Computer Science and Information Technology (pp. 398-412).Springer, Berlin,
Heidelberg
[57] Amin, F. Mahmood, A. K. and Oxley, A. (2011). A Review of Software Component Reusability Assessment
Approaches, Research Journal of Information Technology, 3: 1-11, 2011
https://scialert.net/fulltext/?doi=rjit.2011.1.11 Access Date: 17th April, 2021
[58] Priyalakshmi, G. and Latha, R. (2018). Evaluation of Software Reusability Based on Coupling and Cohesion,
International Journal of Software Engineering and Knowledge Engineering,
Vol. 28, No. 10, pp. 1455-1485, 2018
https://www.worldscientific.com/doi/abs/10.1142/S0218194018500420 Access Date: 12th March, 2021
[59] Alvaro, A., Almeida, E. S., & Meira, S. L. (2005). Quality Attributes for a Component Quality Model. 10th
WCOP/19th ECCOP, Glasgow, Scotland, 31-37.
[60] Ekanem, B. A. (2016). Dealing with Components Reusability Issues as Cutting-edge Applications Turn
legacy, SAI Computing Conference Proceedings 2016, July 13-15, 2016, London, UK, 2016
https://ieeexplore.ieee.org/ie17/7547233/7555953/07556129.pdf
Access Date: 12th March, 2021
[61] Kaur, R., Arora, S., Jha, P. C. and Madan, S. (2015). Fuzzy Multi-criteria Approach For Component Selection of
Fault Tolerant Software System under Consensus Recovery Block Scheme; International Conference on
Advanced Computing Technologies and Applications (ICACTA2015); Procedia Computer Science 45 (2015) pp.
842 – 851; Elsevier
[62] Ekanem, B. A. 2015. Assessment of Components Stability for Modernization Using Software Maturity Index,
International Journal of Scientific Research and Engineering Studies (IJSRES) 2(12) www.ijsres.com Retrieved
on: March 16, 2020
[63] Ajayi, O. O., Chiemeke, S. C. and Ukaoha, K. C. (2019). Assessing the stability of selected Software
Components for Reusability; International Journal of Intelligent Computing and Information Science.
https://ijicis.journals.ekb.eg/article_96103_d688575be2b0486cc0124407a0945c91.pdf
[64] Niranjam, P. and GuruRao, C, V. (2011). A Model Software Reuse Repository with an Intelligent
Classification and Retrieval Technique, Computer Science and Engineering; 1(1): 15-21; 2011
http://article.sapub.org/10.5923.j.computer.20110101.03.html Access Date: 17th April, 2021
[65] Capretz, L. F., Ahmed, F., Al-Maati, S. and AlAghbari, Z. (2008). COTS-Based Software Product Line
Development; International Journal of Web Information Systems, Volume 4, Number 2, pp. 165-180, Emerald
Group Publishing, 2008. https://core.ac.uk/download/pdf/61639163.pdf
[66] Kessel, M. and Atkinson, C. (2015). Ranking Software Components for Pragmatic Reuse, 2015 IEEE/ACM 6th
International Workshop on Emerging Trends in Software Metrics, 2015
[67] Flood, C. A. (2017). Unified Software Engineering Reuse: A Methodology for Effective Software Reuse;
Master’s Theses and Graduation Research, San Jose State University
https://scholarworks.sjsu.edu/cgi/viewcontent.cgi?article=8343&context=etd_theses