close

Вход

Забыли?

вход по аккаунту

?

s41870-017-0050-7

код для вставкиСкачать
Int. j. inf. tecnol.
DOI 10.1007/s41870-017-0050-7
ORIGINAL RESEARCH
An analytical automated refinement approach for structural
modeling large-scale codes using reverse engineering
Alireza Souri1
•
Monire Norouzi2 • Parvaneh Asghari1
Received: 20 July 2017 / Accepted: 12 October 2017
Bharati Vidyapeeth’s Institute of Computer Applications and Management 2017
Abstract In this paper, an analytical automated refinement
approach is presented to facilitate the behavioral modeling
large-scale codes using reverse engineering methods. First,
the relation features of the code structure are extracted
using Understand tool. The structural model of the largescale code is presented in forms of class diagrams. A
middleware application is presented to translate the
extracted features to class relations. Two evolutionary
algorithms are addressed for clustering the existing classes.
Finally, by using a converter, we transform the cluster class
relations to an executive file in Rational Rose. The
response time of the clustering with our approach is lower
than the other algorithms.
Keywords Large-scale codes Reverse engineering Clustering Class diagram
1 Introduction
By increasing the volume of the complex systems and
reusability of the code structures, re-engineering methods
have been applied to maintain software quality, software
& Alireza Souri
a.souri@srbiau.ac.ir
Monire Norouzi
monire_norouzi@yahoo.com
Parvaneh Asghari
par.asghari2017@gmail.com
1
Department of Computer Engineering, Science and Research
Branch, Islamic Azad University, Tehran, Iran
2
Young Researchers and Elite Club, Hadishahr Branch,
Islamic Azad University, Hadishahr, Iran
updates, code up to dating, and etc. [1–3]. Large scale code
analysis [4] is an emerging paradigm to interconnect ultralarge scales software systems such as healthcare systems,
an integrated security firewall, electronic government and
etc. [5]. Analyzing some huge codes for refinement and reengineering the structure of them is very time consuming
costly [6]. Reusability is a key point of the reverse engineering to configure large scale codes [7, 8]. Reverse
engineering goal [1] is to extract the understanding of the
programs by using the source code as the main resource,
organization and the behavior of the program and make
some sets of useful visions for the programmers [9, 10].
The aims of object-oriented reverse engineering are as
follows [11]:
•
•
•
•
•
•
Solving the complexity
Creating various and different visions
Recycling the missed information
Finding the external effects
Combining the high-level interactive
Enabling reuses
In the process of software complement, the analytical
refinement of the large-scale codes has an important role
for behavioral modeling complex systems [12]. In the
recent researches and to the best of our knowledge, there is
no any approach that supports both feature analysis and
reverse engineering methods to large-scale codes refinement dynamically [7, 9]. In this paper, an analytical automated refinement approach is presented to facilitate
behavioral modeling large-scale codes using reverse engineering methods. The principal contributions of this
research are as follows:
•
Presenting automated framework to refinement the
large scale codes architecture.
123
Int. j. inf. tecnol.
•
•
•
•
Extracting the relation features of code structure using
Understand tool.
Presenting an evolutionary mechanism for finding the
best clustering class diagrams.
Translating clustered class relations to a middleware
structural model.
Visualizing middleware structural model based on an
executable diagram in Rational Rose platform.
The structure of this paper is summarized as follow:
Sect. 2 represents some related work in code analysis using
reverse engineering methods. Section 3 illustrates the
proposed approach based on analytical refinement method.
This section shows the process of extracting software
architecture that includes code analysis, clustering
approach, and generating the structural model. The experimental results are presented by large-scale security codes
as a case study. Section 4 provides the conclusion and
feature works on this topic.
2 Related work
In this section, some related studies presented the analytical frameworks to analyze large-scale codes [13]. For
example, [5] proposed a novel parsing code framework
called SolidFX using a reverse-engineering method. This
framework supports the visual analysis and objectivity
exploitation of the C and C?? codes that are suggested to
use engineering pipeline. In this paper, the authors discussed several design decisions taken to construct SolidFX
and the application of the real industrial platforms as the
large-scale codes. Also, Raja Chowdhury and Chetty [7]
presented an analytical decomposition method for largescale Gene Regulatory Networks (GRN) in two independent class of networks. To accelerate the derivation system,
a cardinality-based wellness work is proposed for surmising huge scale GRNs to permit fuse of learning of determined in-degree. A novel neighborhood seeks technique is
likewise proposed to additionally encourage the consolidation of organic information by quality bunching and
quality positioning. Trial thinks about a show that the
proposed approach is fruitful in adapting substantial
hereditary systems, right now not achievable with existing
S-framework based displaying approaches. Shatnawi, Seriai [14] have presented a method for re-building object
situated APIs into segment based ones by mine segments as
a gathering of classes in view of the recurrence. They are
utilized together and their capacity to frame a quality-driven segment. To approve this approach, they tested 100
Java applications that utilized four APIs. In addition,
Rountev, Volgin [11] presented a simple UML-based
framework that is essential for imprisonment general
123
control flow. This research describes an algorithm for
mapping a reducible exception-free intra-procedural Control flow graph to UML, using the proposed extensions and
also investigate the intrinsic tradeoffs of various issue
arrangements, and examine their suggestions for figuring
out devices. This work is a considerable stride towards
giving great device support to viable and productive figuring out of UML grouping graphs. To the best of our
knowledge, there is no any approach that supports both
feature analysis and reverse engineering methods to largescale codes refinement dynamically.
3 Analytical refinement approach
In this section, we illustrate the proposed framework to
generate the structural modeling a large-scale code. The
first step in understanding the operation of the programs is
using the reverse engineering tools for extracting the
relation model of code architecture. The relation model of
classes for any software component determine its structure.
In Fig. 1, the following process will be discussed for
extracting the relation model of classes and determining the
architecture of a software.
3.1 Code analysis
In this section, we use the Understand tool for achieving
the relationship model of the classes as a reverse engineering tool. Dependency between each class and modules
of a large scale code helps the software developers when
they want to update a specific class, they have little
changes in its dependent classes. Understand tool presents
a graphical view of the dependencies between classes with
CSV format. Understand tool is able to analyze the codes
with various languages such as C/C??, C#, FORTRAN,
Java, and Pascal. In this paper, we will analyze a Java large
scale code. Figure 2 shows extracted dependency between
classes; the numbers on the transitions shows the dependency between each class.
Fig. 1 Process of extracting code structure
Int. j. inf. tecnol.
Fig. 2 Dependency between classes
Fig. 3 Matrix whose value is not zero saved as a text file
This graphical view is not suitable for analyzing this
code. The classes and the number of dependencies should
be clustered. Understand tool creates the output file of
these dependencies with .CSV format. The output file with
.CSV format is a matrix which its first column and row are
the names of classes and its data are the number of
dependency between classes. Suppose class A and class B;
following events increase the number of dependencies rate
one unit: calling A class method by class B, inheriting class
A from class B and defining a variable in class A from class
B. If calls occur in a loop, it should count just one time.
3.2 Clustering approach
By extracting the weighted relation model of classes by
Understand tool, Bunch tool used for clustering the classes
in order to have an optimal architecture for software. The
Excel file outputted be converted from the Understand tool
into the Bunch suitable input. Bunch suitable input is .txt
file. Following procedure should be done to cluster the
classes:
1.
Converting
Understand
suitable input.
output
into
Bunch
•
•
2.
Adding Excel reference into C# environment.
Running C# code for converting Understand output
into Bunch input.
Using Bunch for clustering
•
Determining clustering method in Bunch
For converting the Excel file into a text file we prepare a C# code in which there is a window named
‘‘Bunch File’’ that we should choose the Excel file. In
the program path, there is a text file named ‘‘head’’ that
contains the first row of the matrix. ‘‘Bunch input’’
proposed program converts Excel file into Bunch suitable input using the ‘‘head’’ file. Output file of these
program named ‘‘Bunch’’ with format .txt.
Prepared C# code loads the Excel file in a loop and
saves it in a matrix. Finally, prepares the Excel file in a
n 9 n matrix in which n shows the number of classes. As
Fig. 3 shows, each element i, j in the matrix whose value is
not zero saved as a text file. This file is a Bunch input.
Now there is a .txt file which is suitable for Bunch input
that we can cluster the classes. Bunch is a Java tool. In
Bunch tool, Agglomerative clustering selected in the action
sub-section. The result of clustering method of Hill
123
Response Time (Second)
Int. j. inf. tecnol.
100
80
60
40
20
0
HC
GA
20
50
100
Pop Size
Fig. 4 Response time of clustering in Bunch
200
climbing and genetic algorithm compared. In addition,
incremental MQ weighted choose as the clustering algorithm. Total MQ evaluations and elapsed time are two
important factors. Total MQ evaluations show the clustering quality. The Bunch output file is .dot format. Figure 4 displays the response time of clustering. As the
Fig. 4, Hill climbing algorithm has the less response time
in compare of the Genetic algorithm in different population
size 20, 50, 100 and 200.
Figure 5 show the Total MQ evaluations of clustering. A
genetic algorithm (GA) has more a Total MQ Evaluations
in compare of Hill climbing (HC) algorithm in different
population size 20, 50, 100 and 200.
3.3 Generating structural model
After creating the cluster output file, now it should convert
into a Rational Rose file by using the translator code. This
code which creates the output file with Extension .mdl
which is a suitable file to be shown in Rational Rose tool.
We should add the Rationalrose .tlb into the references of
our project. Form1 is the result. It should open the
dependency file and clustered file in the form1 and then the
output is a file with extension .mdl which automatically
opens in Rational Rose environment (Fig. 6). Now there
are component diagram and class diagram of the large scale
code.
Fig. 5 Total MQ evaluations of clustering in Bunch
Fig. 6 Generated class diagrams in Rational Rose
123
Int. j. inf. tecnol.
4 Conclusion and future work
In this paper, a dynamic analytical refinement approach for
extracting the structural models of the large-scale codes
using reverse engineering methods. We had shown the
process of extracting software architecture that includes
code analysis, clustering approach, and generating the
structural model. The evolutionary algorithms used for
clustering the high-level dependencies of the code structure. Experimental results show that our framework has
better execution time for clustering class features and best
dependency exploration for structural modeling generation
in large-scale codes dynamically. In the future research, we
will discuss call fetching of codes and be refining some
important metrics for decreasing existing faults in code
structure.
References
1. Lopez-Herrejon RE et al (2015) An assessment of search-based
techniques for reverse engineering feature models. J Syst Softw
103:353–369
2. Keshanchi B, Souri A, Navimipour NJ (2017) An improved
genetic algorithm for task scheduling in the cloud environments
using the priority queues: formal verification, simulation, and
statistical testing. J Syst Softw 124:1–21
3. Norouzi M, Souri A, Zamini MS (2016) A data mining classification approach for behavioral malware detection. J Comput
Netw Commun 2016:1
4. Sangal N et al (2005) Using dependency models to manage
complex software architecture. SIGPLAN Not 40(10):167–176
5. Telea A, Byelas H, Voinea L (2009) A Framework for reverse
engineering large C?? code bases. Electron Notes Theor Comput Sci 233:143–159
6. Basso FP et al (2016) Automated design of multi-layered web
information systems. J Syst Softw 117:612–637
7. Raja Chowdhury A, Chetty M (2015) Network decomposition
based large-scale reverse engineering of gene regulatory network.
Neurocomputing 160:213–227
8. Souria A, Shariflooa MA, Norouzia M (2012) Analyzing SMV &
UPPAAL model checkers in real-time systems. Comput Sci
1:631–639
9. Brunelière H et al (2014) MoDisco: a model driven reverse
engineering framework. Inform Softw Technol 56(8):1012–1032
10. Safarkhanlou A et al (2015) Formalizing and verification of an
antivirus protection service using model checking. Procedia
Comput Sci 57(Supplement C):1324–1331
11. Rountev A, Volgin O, Reddoch M (2005) Static control-flow
analysis for reverse engineering of UML sequence diagrams.
SIGSOFT Softw Eng Notes 31(1):96–102
12. Souri A Jafari Navimipour N (2014) Behavioral modeling and
formal verification of a resource discovery approach in grid
computing. Expert Syst Appl 41(8):3831–3849
13. Fernández-Sáez AM et al (2015) Are forward designed or
reverse-engineered UML diagrams more helpful for code maintenance?: a family of experiments. Inf Softw Technol 57:644–663
14. Shatnawi A et al (2017) Reverse engineering reusable software
components from object-oriented APIs. J Syst Softw 131(Supplement C):442–460
123
Документ
Категория
Без категории
Просмотров
6
Размер файла
960 Кб
Теги
017, 0050, s41870
1/--страниц
Пожаловаться на содержимое документа