(READ) Artificial Intelligence Techniques in Software Engineering For Automated Software Reuse and Design (IEEE)
(READ) Artificial Intelligence Techniques in Software Engineering For Automated Software Reuse and Design (IEEE)
Abstract—Mining of software engineering data have proved significant AI techniques that are relevant in the software
successful for reusability of components in software reuse domain and the whole sphere of the software
development. Artificial Intelligence improves a large engineering field are tabulated in the last section.
application domain of software engineering activities. Feldt et al., have presented the AI in SE Application Levels
Intelligent knowledge discovery integrates Artificial
Intelligence with Data Mining for intelligent computing of
(AI-SEAL) taxonomy that categorizes applications
software engineering tasks. The integration of artificial according to their point of AI application, the type of AI
intelligence with data mining for supporting software technology used and the automation level allowed [1]. This
engineering applications leads to Software Intelligence. This proves that AI in software engineering domain is a very
paper analyzes three artificial intelligence techniques that uses promising research area and exploring in depth is of
data mining, business intelligence, machine learning for relevance in solving various software engineering related
promoting automated software reuse for software construction problems and concerns. Innovative applications of artificial
and overall software development. The business intelligence intelligence techniques in software engineering like
tools are used for intelligent knowledge discovery of code that schedules for software development projects as well as
will be used for reusability of applications and components. An
analysis of several AI techniques in software reuse domain of
Information Technology management, software application
software engineering is discussed for automated software reuse development and software security have been considered
and identification of potential research prospects in the field. [3]. Raza Et al., have discussed about the AI techniques in
software development along with risk management phase in
Keywords—Software Reuse, Artificial Intelligence (AI), AI based systems and genetic codes [6]. Thus knowledge
Business Intelligence (BI), Software Intelligence (SI). discovery with AI is significant in automated software reuse
and design in the software engineering field.
I. INTRODUCTION The paper is organized into five sections. Section I deals
Software engineering tasks involves various activities that with introduction part and discussed about significance of
cut across all the stages of the Software Development AI in the sphere of software engineering . Section II deals
Lifecycle (SDLC) phases. Various data mining techniques with the significance of AI in software engineering with
have been applied for extracting useful knowledge from data data mining where knowledge based systems and business
obtained throughout the process of SDLC. This paper intelligence will be discussed along with their present
discusses about various artificial intelligence techniques that importance in the overall software development. Section III
have applications in automation of software design with discusses about the automated software construction with
reusability. Artificial intelligence techniques like artificial software intelligence for reuse in systematic software
neural networks, fuzzy logic, intelligent knowledge based development. Section IV addresses the various AI
systems, data mining etc. have been exploring the software techniques for software reusability where an analysis of AI
engineering field for solving several software engineering techniques in reusability is discussed with a tabular
problems. But the risks associated with the increasing approach and in accordance with the present research
software complexity needs automation of all the above relevance.The last section concludes the paper along with
techniques. As the software grows in size the complexity reference that support and are relevant to the topic of the
increases with increase in time and cost for the overall research field.
software construction. There is a huge amount of data
generation from all the stages of SDLC. The data varies
II. AI IN SOFTWARE ENGINEERING
from requirements analysis and specification, system and
software design, implementation and unit testing, integration WITH DATA MINING
and system testing, operation and maintenance phases [4]. Mining of software engineering data has been a successful
the data generated at the system and software design phase domain for extracting useful information from various types
takes the whole software architecture and design patterns for of software repositories for resolving potential software
reuse. Mining of these huge data proves successful for engineering problems. There are several applications of
knowledge discovery and identification for component for artificial intelligence that employ data mining in software
productive reuse. However integration of AI in the process engineering domain. But employing business intelligence
improves the overall process of software development with with software development remains a potential search area
reusability and supports automation for organizational for automation of software intelligence tasks. Various
standards. This paper aims at presenting various facets of business intelligence tools are already available in the
AI in software reuse domain of software engineering for market that support the software development activities in
promoting software intelligence. The analysis of most organizations. The role of AI in software engineering has
Authorized licensed use limited to: UNIVERSIDAD VERACRUZANA. Downloaded on November 14,2022 at 18:58:28 UTC from IEEE Xplore. Restrictions apply.
been emphasized by Harman et al., with search based This roadmap is the future to various automation tasks in the
software engineering and work on probabilistic reasoning software engineering field employing data mining and
and machine learning in the field [7]. This section discusses artificial intelligence.
about the role of AI in software engineering field along with
the amalgamation of three most prominent research fields of III. AUTOMATED SOFTWARE CONSTRUCTION WITH SOFTWARE
software engineering, data mining and artificial intelligence INTELLIGENCE FOR REUSE
to support the concept of software intelligence and thus Software construction involves the whole arena of the
leading to automation of the whole software development Software Development Lifecycle (SDLC) with huge data
process. being processed at all the stages. The increasing software
A. Knowledge Based Systems with Mining of Software complexity makes the data processing slow with such a
Engineering Data large amount of data being generated at all the SDLC levels.
Knowledge discovery in software repositories has been very Mining of useful information at all the stages of SDLC
makes the knowledge discovery process fruitful for use in
promising and successful research field for solving various
software engineering problems. Mining of software the reusability of potential components. Software reuse
engineering data and the related software metrics like makes the task of application development easy and time
preserving. The components that are the potential candidates
Software metrics such as Cyclomatic Complexity,
Cyclomatic Density, LOC Total , LOC Executable, LOC for reuse in the applications development are carefully
Comments, LOC Code and Comments, LOC Blank, selected and should be employed with high quality
components that are bug free and adapted to changes in the
Number of Lines, Node Count , Edge Count, Weighted
Methods per Class, Depth of Inheritance Tree, NOC current trend and technologies. For effective and efficient
Number of Children, Coupling between Object Classes, reusability the reusable components should be developed
with a problem- driven methodology and problem solving
Response for a Class, Lack of Cohesion of Methods,
Method Hiding Factor, Method Inheritance Factor, approach of various software engineering tasks. There is a
Polymorphism Factor, Coupling Factor, Number of need for employing intelligence in the above process of
software reusability so that the process of software
interfaces, Class size, Number of classes, etc. have been
classified for easy application of data mining techniques in construction becomes automated and the reusable
software reuse process [15]. Knowledge based systems are a components are selected keeping in view the problem
domain of the software engineering task. Furthermore it will
fruitful source for amalgamation of artificial intelligence
with software engineering for reusability of potential help in maintaining the software quality, will make the
components. Business Intelligence is analogous to software software more efficient and easily adaptable to changes in
technology and thus reduce the cost and time for the overall
intelligence as both the platforms aims at integrating
artificial intelligence pertaining to successful decision software development.
making in businesses and software’s respectively.
A. Systematic Software Development with AI
B. Business Intelligence for Software Engineering Automated software construction involves integration of
artificial intelligence techniques with software engineering
The future trend of artificial intelligence with software
engineering deals with modeling of objects of real world and data mining. Mining of software engineering data will
like business process, expert knowledge or process models help in extracting useful knowledge for identification and
selection of potential candidates for reuse and the
and research areas like agent oriented software engineering,
knowledge based systems, computational intelligence and consolidation of artificial intelligence techniques will aid in
automated software engineering find importance in both the employing intelligence to the above stated process. This will
lead to automation of the whole sphere of software
research fields[8]. Business intelligence integrates the
process the integrating intelligence in the software engineering activities involving software reuse. Software
engineering tasks which will lead to automation of software Intelligence is known with Business Intelligence in
organizations as BI supports SI in software business. The
development process. The following Fig.1 gives a roadmap
to software intelligence with intelligent knowledge whole The area of software intelligence can be explored
discovery from software engineering data. This will lead to for reusing traditional BI platforms for adoption of BI
infrastructures in large organizations [2]. Systematic
intelligent automation of of the software industry.
software development can be enhanced with the integration
of artificial intelligence techniques at all the levels of
software development. The architecture, process and
Knowledge discovery process -----> Artificial
Intelligence-----> Software Fngineering ------> Software organization of software reuse is significant for business
success with reuse business framework in reuse driven
Intelligence-----> Intelligent Software Reuse ---->
Intelligent Software libraries -----> Intelligent software engineering [11][12]. The amalgamation of three
most promising and significant fields of software
automation
engineering, data mining and artificial intelligence will help
in the promotion of software intelligence and thus will
Fig. 1. Roadmap to software intelligence with intelligent knowledge
discovery from software engineering data
ultimately automate the process of software construction
with reusability as a special byproduct of the above process.
That is software intelligence which is employed with AI and
mining tasks supports the whole platform of software
Authorized licensed use limited to: UNIVERSIDAD VERACRUZANA. Downloaded on November 14,2022 at 18:58:28 UTC from IEEE Xplore. Restrictions apply.
development with all the stages of SDLC in dynamic state AI Artificial Intelligence in Software Engineering
and software reusability as a particular yield for future Techni Data Mining in Software
Software
Engineering Applications
software developments at organizational level. The next ques Engineering
Area
section discusses about the various AI techniques that have Software
Software
a significant role in the domain of software reusability for 4. Hierarchical clustering
Modeling
Design and
systematic software development. patterns
Evaluating
Software
5. K-NN and neural networks software
Evaluation
activities
IV. ANALYSIS OF ARTIFICIAL TECHNIQUES FOR REUSABILITY
Identifying
Neural network and Software
Artificial intelligence techniques such as knowledge 6.
classification Reuse
software
based systems, neural networks, fuzzy logic, machine component
Classification, Classificati
learning and data mining have been explored as the way to 7. Decision Trees and
Software
on and
improve many of the software development activities [9]. Clustering
Reuse
retrieval
Amaar at al., have discussed about application of AI in
requirement engineering, software architecture design, Table II below states the various machine learning
software coding and testing and automation of programming techniques that are used in the software engineering
process [10]. This section provides a tabular analysis of three
platform. The deep learning methods held software
Artificial Intelligence techniques that are prevalent in the
developers to extract requirements from natural language
software reuse domain of software engineering. Only the
prominent techniques are stated in a systematic broad area. text , generate source code, predict defects in software etc.
Various other AI techniques are present that aid in the and for various other software engineering tasks [13].
software development process. This paper discusses the three Machine learning techniques like deep learning, deep
AI techniques like data mining, machine learning, neural believe networks, similarity computing, generalize program
networks which are detailed in separate tabular form for abstractions, clustering of components etc. are used in the
showing their individual relevance in the broad area of software reuse domain of software engineering [14].
software engineering with software reuse as a significant
field of software engineering. The most significant TABLE II. ARTIFICIAL INTELLIGENCE TECHNIQUES FOR SOFTWARE
ENGINEERING: MACHINE LEARNING
techniques are mentioned in the table and have relevance in
the whole sphere of the software engineering field with AI Artificial Intelligence in Software Engineering
software reuse as a special domain for promotion of software Tec
hniq Software
intelligence in organizations. Machine Learning in Software
ues Engineering Applications
Engineering
Area
Table I below states the various data mining techniques that g
Software
are used in the mining of software engineering data for Reusability
software reuse. Mining techniques like classification, Software
Deep Learning model- Auto and other
1. engineering
clustering, associations, regression, summarization and Encoder (AE)
tasks
software
generalization, dependency modeling, change and deviation engineering
tasks
detection, model visualization and exploratory data analysis Software
etc. have been stated in the table below [4]. Mining Deep Learning model- Auto Software
Reusability
2. Encoder (AE)-Deep belief engineering
algorithms like association rule mining, frequent subgraph networks (DBN) tasks
and other
mining, partial order mining, graph matching, clustering , software
Software
classification etc. have been used for several software Deep Learning model- Software
Reusability
engineering tasks like debugging, maintenance, bug 3. Convolutional neural engineering
and other
network (CNN) tasks
detection etc. Software developers are in need for Software software
Intelligence (SI) which is like Business Intelligence (BI) Software
Deep Learning model- Software
Reusability
uses fact based support system to improve business decision 4. Recurrent neural network engineering
and other
making by using fact-based support systems to support their (RNN) tasks
software
daily decision-making processes [2]. The table below lists Instance based learning/ Case Similarity Software
5.
down the frequently used data mining techniques in the based reasoning (IBL/CBR) computing Reusability
software development process that supports software reuse Explanation based learning
Generalize
Software
6. program
domain of software engineering. (EBL) Reusability
abstractions
Locate and
TABLE I. ARTIFICIAL INTELLIGENCE TECHNIQUES FOR SOFTWARE Instance based learning/ Case adopt Software
ENGINEERING: DATA MINING 7.
based reasoning (IBL/CBR) software to Reusability
Artificial Intelligence in Software Engineering specifications
AI Cost of Software
Techni Software 8. Decision tree learning (DT)
Data Mining in Software rework Reusability
ques Engineering Applications
Engineering Instance based learning/ Case Active Software
Area 9.
Software based reasoning (IBL/CBR) browsing Reusability
Software Clustering of Software
1. Knowledge discovery reusability 10. Genetic Algorithms (GA)
Reuse components Reusability
activities
Identifying Instance based learning/ Case Knowledge Software
Software 11.
2. Classification software based reasoning (IBL/CBR representation Reusability
Reuse
components
Software Predicting
3. Clustering
Reuse reusability
Authorized licensed use limited to: UNIVERSIDAD VERACRUZANA. Downloaded on November 14,2022 at 18:58:28 UTC from IEEE Xplore. Restrictions apply.
Table III below states the various neural network techniques REFERENCES
like artificial neural networks, multilayer perceptron, neuro [1] Feldt, R., Neto, F. G., & Torkar, R. “ Ways of Applying Artificial
fuzzy etc. that are used in the software engineering Intelligence in Software Engineering”. arXiv preprint
platform. Neural networks have been used for identifying arXiv:1802.02033. 2018
and searching of reusable components. Component Based [2] Hassan, Ahmed E., and Tao Xie. "Software intelligence: the future
of mining software engineering data." Proceedings of the FSE/SDP
Software which help in achieving software quality along workshop on Future of software engineering research. ACM, 2010.
with efficiency are based on parallel processing and neural [3] Mohammadian M. Innovative Applications of Artificial Intelligence
networks are considered for enhancing the same [5]. Techniques in Software Engineering. In: Papadopoulos H., Andreou
A.S., Bramer M. (eds) Artificial Intelligence Applications and
TABLE III. ARTIFICIAL INTELLIGENCE TECHNIQUES FOR SOFTWARE Innovations. AIAI 2010. IFIP Advances in Information and
ENGINEERING: NEURAL NETWORKS Communication Technology, vol 339. Springer, Berlin, Heidelberg,
2010
AI Artificial Intelligence in Software Engineering [4] Tangsripairoj S., Samadzadeh M.H. A Taxonomy of Data Mining
Tec Applications Supporting Software Reuse. In: Abraham A., Franke K.,
hniq Software
Neural networks in Software Köppen M. (eds) Intelligent Systems Design and Applications.
ues Engineering Applications
Engineering Advances in Soft Computing, vol 23. Springer, Berlin, Heidelberg,
Area
g 2003
Software COCOMO,
1. Artificial Neural Networks Testing effort defect [5] Chythanya, N. Krishna, and Lakshmi Rajamani. "Neural Network
Approach for Reusable Component Handling." 2017 IEEE 7th
estimation removal etc.
International Advance Computing Conference (IACC). IEEE, 2017
Software
COCOMO, [6] Raza, Farah Naaz. "Artificial intelligence techniques in software
Neural Network model - development
2. FP, LOC engineering (AITSE)." International MultiConference of Engineers
Multilayer perceptron effort
etc. and Computer Scientists (IMECS 2009). Vol. 1. 2009
estimation
UFP, LOC, [7] Harman, Mark. "The role of artificial intelligence in software
Software cost engineering." Proceedings of the First International Workshop on
3. Neural Networks COCOMO
estimation Realizing AI Synergies in Software Engineering. IEEE Press, 2012.
etc.
Reusability Software [8] Rech, Jörg, and Klaus-Dieter Althoff. "Artificial intelligence and
4. Artificial Neural Networks
assessment reuse software engineering: Status and future trends." KI 18.3 (2004): 5-11.
Software [9] Meziane, Farid, and Sunil Vadera. "Artificial intelligence in software
Feed forward neural
Software reliability engineering: Current developments and future prospects." Machine
5. network, recurrent neural
Reliability growth Learning: Concepts, Methodologies, Tools and Applications, 1215-
network
models 1236, IGI Global, 2012
Neuro-fuzzy and neural Software Reliability
6. [10] Ammar, Hany H., Walid Abdelmoez, and Mohamed Salah Hamdi.
networks Reliability models
"Software engineering using artificial intelligence techniques: Current
Component state and open problems." Proceedings of the First Taibah University
Neural networks, Software
7. based software International Conference on Computing and Information Technology
fuzzy systems reusability
engineering (ICCIT 2012), Al-Madinah Al-Munawwarah, Saudi Arabia. 2012
Component
Software [11] Griss, Martin L. Software reuse architecture, process, and
8. Evolutionary algorithms based software
reusability organization for business success. IEEE, 86-89. DOI:
engineering
0.1109/TOOLS.1998.711049, 1997
[12] Jacobson, I., M. Griss, and P. Johnson. Software Reuse: Architecture,
Process and organization for Business Success Addison Wesley, 1997
V. CONCLUSION
[13] Li, Xiaochen, et al. "Deep Learning in Software Engineering." arXiv
This paper presents the analysis of various artificial preprint arXiv:1805.04825 2018
intelligence techniques for software reuse domain of [14] Zhang, Du. "Applying machine learning algorithms in software
software engineering. The integration of artificial development." Proceedings of the 2000 Monterey workshop on
intelligence with data mining for supporting software modeling software system structures in a fastly moving scenario.
2000
engineering applications leading to Software Intelligence for
[15] Prakash, BV Ajay, D. V. Ashoka, and VN Manjunath Aradhya.
promoting automated software reuse for software "Application of data mining techniques for software reuse process."
construction and overall software development. An analysis Procedia Technology 4 ,384-389, 2012
of several AI techniques discussed will lead to prospective
identification of potential research prospects in the field of
artificial intelligence with software reuse domain of software
engineering.
Authorized licensed use limited to: UNIVERSIDAD VERACRUZANA. Downloaded on November 14,2022 at 18:58:28 UTC from IEEE Xplore. Restrictions apply.