Evaluating Software Maintenance Cost Using Functional Redundancy Metrics

Size: px
Start display at page:

Download "Evaluating Software Maintenance Cost Using Functional Redundancy Metrics"

Transcription

1 1 Evaluating Software Maintenance Cost Using Functional Redundancy Metrics Takeo Imai, Yoshio Kataoka, Tetsuji Fukaya System Engineering Laboratory Corporate Research & Development Center Toshiba Corp. a Abstract Source code copying for reuse (code cloning) is often observed in software implementations. Such code cloning causes difficulty when software functionalities are modified: i.e, cloned codes increase the maintenance cost of software. We aim to estimate the maintenance cost caused by clones. We propose a novel approach, which evaluates influence of cloned codes over the maintenance cost. The basic idea is to measure Functional Redundancy(FR): A degree of propagation of clone-potential functions. FR is measured as follows: First, we cluster functions in the software according to similarities between them. Second, we make n-ary weighted tree(fr tree) based on the cluster. Finally, we measure FR by weight of each node in FR-tree. In this paper, we describe the details of our proposal. We also apply the approach to 17K-ELOC C code to demonstrate its effectiveness. Keywords FR, Functional Redundancy, Code Cloning, Software Maintenance, Similarity, Cost I. INTRODUCTION In most software projects, quite a large proportion of the cost is used in maintenance [13]. We believe some effective method is needed to reduce the cost on software maintenance. Our primal objective is to construct a cost-effective method for maintenance management, such as the following: 1. Cost estimation on software maintainability 2. Problem detection using the estimation result 3. Activity control on the maintenance implementation In order to achieve our purpose, the achievement of the first step is the most important issue of our study. We therefore aim to evaluate the maintenance cost with quantitative metrics. There are several factors that affect the maintenance cost. One of the factors is code cloning, which occurs quite often. It also has a severe impact on the cost. We discuss the detail of this problem below. Code cloning is a software reuse technique using source code copying. Developers t to use this technique commonly for various reasons. One of the reasons is that it is easier to use existing software than to program from scratch. Another is that the code which developers want to reuse is usually not designed to be reused as a black-box. Therefore, many similar segments of a code are commonly observed throughout a software or a software project. Such scattered segments of codes (we call them simply as cloned codes or clones) however cause adverse effects, some of which are listed in [5]. We cite several such items: All authors are with System Engineering Laboratory, Corporate Research & Development Center, Toshiba Corporation, 1 Komukai-Cho, Saiwai-Ku, Kawasaki , Japan. Tel: Fax: E- mail:{takeo.imai, yoshio.kataoka, tetsuji.fukaya}@toshiba.co.jp The same software bug reoccurs throughout software despite many local fixes. Code reviews and inspections are needlessly exted. It becomes difficult to locate and fix all instances of a particular mistake. Software defects are replicated through the system. Developers create multiple unique fixes for bugs with no method of resolving the variations into a standard fix. The items above principally cause problems when a software is modified. If developers wish to modify a code segment, all clones of the segment potentially need to be modified, or the same software bug (or enhancement) reoccurs. That is why we focus on the code cloning problem as a significant cost-intensive issue. In this paper, our purpose is to construct a metric to estimate the software modification cost caused by code clones. Our first candidate for such metric was clone percentage, the ratio of cloned codes to the whole source code the in size; in LOC (Lines of Code), for example. We initially thought this way for the following reasons: In a previous work, Bosch [4] estimated the modification cost with the following equation. cost = requests LOC/request hour/loc where request is a modification request for the source code. Bosch also introduced the study of Henry et al.[6], which took statistics of software productivity with LOC/hour. Therefore, if LOC/request is calculated, we can estimate the cost per change request. Hence we thought clone percentage as the estimation of LOC caused by clones, and attempted to apply the equation above as our cost-estimation model. We, however, found an oversight in such a model. As we cited above, it becomes difficult to locate and fix all clones: i.e., clones cause an increased cost on identification: identifying the segments to be modified in the source code. Many of previous works dealing with clones [3][7][9][8][1] have focused on code detection techniques. This fact indicates the difficulty of identifying clones in a software. Here we assume a simple model of software modification with clones. The NS chart in Fig. 1 shows the flow of the model. When a request occurs, the modified place and its clones are identified, manually or with a clone-detection method. After

2 2 True True (requested) identify design implement another clone? False another change? False The second feature is to use similarity between two functions. Here, we do not indicate the definition of similarity. We simply assume that similarity is described in the real number, and the range is [0..1], such as percentage. Clones (clone-potential functions) rarely match each other exactly. i.e., clones match in some similarity. As we described in Section I, clones may increase the number of modified times. Therefore, as the similarity becomes larger, the chance of required modification may become greater. We must note here that the method for calculating similarity is not given in this paper, because the method is out of our concern. We can use various methods here for similarity estimation. Fig. 1. software modification model with clones that fixed codes are designed and implemented onto identified places. We must note the implement phase are repeated by the number of clones. Moreover, there may be another pattern of clones or a leak in clone detection: They can make other requests of modification. In this case the whole modification steps are iterated again, and the maintenance cost increases drastically. That is to say, there are two major factors that increase the maintenance cost: the modified size and the number of modified times. And the second factor is increased by clone propagation: the number of clones and the number of patterns of clones. In this paper, we focus on the clone propagation, and propose a metric named Functional Redundancy (FR), which stands for a degree of clone-potential function propagation. This paper is organized as follows: First, we discuss the detail of FR in Section II. We then apply our FR evaluation approach to 17K-ELOC sized practical software written in C in Section III. In Section IV we introduce some additional uses of FR for clone management. We discuss related works in comparison with ours in Section V. Finally we conclude this paper in Section VI. II. FUNCTIONAL REDUNDANCY A. Basic idea The FR metric has two features. First, the metric focuses on clone-potential functions: functions that possibly contain clones. One of the reasons of our focusing on clone-potential functions is a nature of clones: a segment of code and its clones basically have the same functionality, while a function in a source code is an explicit unit of functionality in a software. In addition, our experience alludes that many functions are cloned entirely. Another reason is, as we described above, that we take clone propagation into consideration in evaluating FR. In light of our objective, it is sufficient to estimate the number of functions containing clones. Such a feature, however, has a demerit. The estimation result might be inaccurate when the size of each function is uneven because we have to normalize the size of a source code by function. The suitability of the feature will be evaluated later. B. Measurement of FR B.1 similarity between functions Functions and their similarities can be illustrated as in Fig.2. Circles which contain numbers mean different functions (from 1 to 8), and values on each lines stand for the similarity ([0..1] in this figure) between two functions Fig. 2. functions and their similarity With the similarity, functions form some classified groups, which are shown as ovals in Fig. 2. The classification heuristic is as in the following, for example: 1. Set a threshold as the minimum (i.e, 0). 2. Raise the threshold. 3. If a value of the similarity becomes lower than the threshold, connect the relation associated with the value, and group functions that are connected with one another. 4. Return to 2 until the threshold comes up to the maximum (i.e, 1). Otherwise quit. In the example of Fig. 2, functions are grouped into two groups when the threshold is equal to 0.1: {1,2,3,4,5} and {6,7,8}. When the threshold is 0.4, there are 4 groups, {1,2,3}, {4, 5}, {6}, and {7,8}. C. FR tree An FR tree is an n-ary tree with which functions and their similarities are illustrated. The example of Fig.2 with a FR tree is shown in Fig. 3.

3 3 0.1(8) 0.4(5) 0.8(3) 1 0.6(2) 0.4(3) 0.7(2) Node: Fig. 3. FR tree Similarity (NL) procedure MakeTree(pairs: array of Pair) var T: Tree; N: Node; begin sort_by_similarity(pairs, decreasing); for i := 1 to sizeof(pairs) do begin if T contains pairs[i].node[1] and T contains pairs[i].node[2] then return; for j := 1 to 2 do begin new(n); register(n, T); if T contains pairs[i].node[j] then add tree_top(pairs[i].node[j]) to N.child; else add pairs[i].node[j] to N.child; An FR tree consists of nodes and their parent-child relations, like an ordinary n-ary tree. The tree also has a top (a node that does not have the parent node), external nodes (nodes that do not have the child node) and internal nodes (nodes that are not external ones). An external node in a tree corresponds to a function in one software. Every function has one corresponding external node. An internal node has a node (or nodes) whether internal or external. Additionally, an internal node has two extra weights: The number of leaves (NL) and Similarity. These weights are defined as follows. 1. Given any node N, NL of N (NL(N)) is the number of leaves N contains. Here, a leaf contained in a node N corresponds to (a) an external node that is a child of N, or (b) a leaf that is contained in a child of N. The number of leaves a node K contains can be calculated recursively, as follows. leaf(k) = leaf(k c ) + child ext (K) where K c child int(k) leaf(n) is a set of all leaves N contains, child ext (N) is a set of all external child nodes of N, child int (N) is a set of all internal child nodes of N, and S be the size of a set S. NL(N) corresponds to leaf(n). 2. Prior to defining similarity weight, we introduce someleaf(k) and conleaf(k, s). Let a node K have n children. We define a set someleaf(k) ={k 1,k 2..., k n }, where every element k i is K s child node when k i is external, or one of the leaves K s child has when k i is internal. Given the similarity s, we define conleaf(k, s) that satisfies the condition below: conleaf(k, s) def = {someleaf(k) return; Fig. 4. Algorithm of Making FR Tree k someleaf(k), k i someleaf(k), similar(k, k i )=s(1 i n, k k i )} where similar(k, k i ) equals the similarity between k and k i. Here we describe the similarity attribute of a node N as s(n). s(k) is equivalent to s iff both of the conditions (a) and (b) below are met: (a) There exists at least one conleaf(k, s). (b) For all s 1 s, there is no conleaf(k, s 1 ). In addition to the definitions above, an FR tree is formed with the following rule: 3. For all two nodes P and C whose relation is a parent-child one, the two similarities s(p ) and s(c) are related as follows: s(c) s(p ) D. Measurement process D.1 making FR tree Fig. 4 describes the algorithm to construct an FR tree, written in pseudo-pascal code. As an input, all function pairs and the similarity of every pair are given. First, the pairs are sorted by the similarity in the decreasing order. Then, each pair is added to the tree in order. D.2 measuring FR Here we measure FR based on an FR tree. The concept of FR is given below: As similarity between functions becomes greater, the possibility increases that these functions are clones, i.e., FR should be greater. FR should also be greater when there are more similar functions in a group.

4 4 Along with such concept, we measure FR from similarity and the number of leaves (or the number of children) each node of the tree has as weights. We propose two metrics, one of which can be an alternative of the other. We call them as FR1 and FR2. FR1 FR1 of a program P (fr 1 (P )) is defined as follows. fr 1 (P ) def = ( child(n) 1) s(n) +1 N nodes int(p ) where nodes int (P ) is a set of all internal nodes contained in FR tree of P. child(n) is a set of all the child nodes of N, whether internal or external. It should be noted that we can normalize the value of FR1. In the right side of the definition above, the number of product terms (( child(n) 1) s(n), and 1 ) is equivalent to the number of functions P has. Hence as for the range of the similarity [0..1] such as percentage, fr 1 (P ) and the number of functions ( func(p ) ) are related as follows. fr 1 (P ) func(p ) When fr 1 (P ) and func(p ) are equal, all similarities are equal to 1. Therefore, we can use the following normalizing operation to FR1 and calculate normalized FR1(fr 1 norm (P )). fr 1 norm = fr 1(P ) func(p ) In the example of Fig. 3, fr 1 (P ) and fr 1 norm (P ) are measured as follows. fr 1 (P ) = = 4.8 fr 1 norm (P )=4.8/8 =0.6 FR2 FR2 of a program P (fr 2 (P )) is defined as follows. fr 2 (P ) def = child(n) 2 s(n) N nodes(p ) FR2 evaluates the impact of child(n) more than FR1. As is mentioned above, the more children a node has in FR tree, the more clones there can be. Hence this metric is effective when many copies of the same code occur in a program in the same way. In the example of Fig. 3, fr 2 (P ) is measured as follows. fr 2 (P ) = = 16 In our study so far, we have not focused on FR2 as much as FR1. Therefore we discuss this method only briefly in this paper. III. EXPERIMENT AND EXAMINATION We applied FR metric FR1 to the source code of a system for telecommunication control. This code is written in C and it has approximately 17K ELOC (Executable Lines of Code). This software consists of 5 modules, which are between 2K and 4K ELOC size, and have about functions (Table. I). We call the modules A to E respectively. ELOC functions ELOC/func A B C D E TABLE I SAMPLE SOURCE CODE Here, we also applied clone percentage (CP) as our comparative approach. As we mentioned in Section I, CP was the first candidate of our metric. We believed this metric can evaluate the size of clones but cannot reflect the clone propagation. We compared our metric and CP, and then verified whether our belief was correct. In addition, another concern of ours was the issue described in Section II-A: Our metric has an inaccuracy in evaluating the size of clones. We verified this inaccuracy here. In this section, after introducing the detail of experiment method, we show the experiment result, and then move to their comparison. A. Experiment Detail A.1 Measurement of Similarity We measured similarity between two functions by using simple diff, and calculated the following equation, given a and b as functions. ( similarity(a, b) =max 1 diff(a) LOC(a), 1 diff(b) ) LOC(b) i.e., we calculated the number of common lines between a and b first, and then measured the ratio of common lines per all lines of each function. Using diff is actually an inefficient method, but the efficiency of similarity measurement is not our concern in this paper. There have been many effective approaches so far, and we can use them alternatively, if needed. We used the maximum of the ratio between two functions because we attempted to measure conservatively. A.2 Measurement of CP We also measured CP by using diff. CP = cloned(p ) LOC(P )

5 5 Where P is the measured program, LOC(P ) is all the ELOCs of P, and cloned(p ) is a cloned LOC of P, i.e. the number of not diff ed codes. In fact, accurate calculation cannot be carried out in a timeefficient manner, so we used some simpler approximation. The detail is not described here because it is out of our concern. A.3 Measurement of FR As an FR metric, we used normalized FR1(fr 1 norm ), which is shown in II-D.2. There are two reasons to select this metric. First, fr 1 norm is normalized so that we can compare the results with each other. Moreover, fr 1 norm represents an approximate percentage of clones; that is, we can compare the metric with CP. B. Experiment Result The experiment result is shown in Fig A B C D E Fig. 5. Experiment Result: CP and FR CP FR_norm Table II shows the statistical comparison between CP and FR: average, standard deviation, and correlation coefficient. CP FR average std dev correlation TABLE II COMPARISON WITH LINE-LEVEL REDUNDANCY We must note that Fig.5 shows the biggest difference on the measurement of module B, where CP was 21% while FR was 59%. With more detailed investigation, we found that there were over 50 similar functions in B (that is, over 55% of the functions were clones!). They looked almost entirely correspondent with each other, but the size of each function was about 10 lines. Therefore this great clone group affected CP much less than FR. This example shows that FR evaluated the clone propagation while CP did not. In this point of view, our purpose is achieved with the FR metric. On the other hand, CP and FR were strongly correlated as a whole; the correlation coefficient was between CP and FR. This seems to indicate that the demerit of FR had a less influence in our result. But we believe further evaluation and discussion is needed for appraising the influence of the demerit. Fig. 5 also shows another feature that FR exceeded CP in every module. This may be because of our FR measurement policy. As we mentioned, we used the maximum between two ratios as similarity. It may be why FR was considered to become relatively larger. We must also note that the algorithm of forming an FR tree make FR exaggerated. For example, let us consider the following situation. Given the three functions a, b and c, their similarity are: similarity(a, b) = 60% similarity(b, c) = 30% similarity(c, a) = 20% According to the algorithm described in Fig. 4, first, a and b make a node whose similarity is 60%. Second, b and c make a node of 30% similarity. Finally c and a is evaluated, but the FR tree already has both of the two functions. Therefore c and a are treated as their similarity being 30% in the tree. In actual situations, similarity consists (n 1)-dimension network during functions, not a tree. However it costs more to treat such network. We believe it is efficient to substitute an FR tree for the network. IV. ADDITIONAL USES OF FR In this section, we introduce additional uses of FR for clone management. We mentioned in Section I that our objective was to construct a maintenance-management method, such as in the following: 1. Cost estimation 2. Problem detection 3. Activity control In the previous sections, we described the first step of the method. Here we will describe the others in order. A. Detection of Influential Clones on FR Firstly we describe the approach along with FR metric to detect the most influential clones on maintenance cost. We achieve this aim with an FR tree. Our policy here is to detect clones which are more similar, and larger in number. Fig. 6 shows such algorithm. We introduce a criterion number u in advance. It is used to estimate how many clones should be detected. First, from the top of an FR tree, NL (See Section II- C) of each child node are compared. Second, the node whose NL is the largest is selected. Then the same operation is applied to the selected node. Finally, the larger NL node is traced from parent to child. It should be noted that the NL becomes smaller as this process is repeated. When NL becomes smaller than u, or the selected node has no internal node, we finally select the functions that the finally selected node has as its leaves, and this process s. We interpret these functions as the most influential clones.

6 6 function influentialcodedetection (tree: Tree) : set of Nodes var N: Node; begin N := top(tree); while (child(n) contains internal node) or ( leaf(n) is not less than $u$) do N := search_the_max_nl(child(n)); return leaf(n); Fig. 6. Influential Clone Detection: Algorithm This approach is based on a simple searching algorithm of n- ary tree. Therefore the complexity is O(log(n)) where n is the number of functions. In the example of Fig. 3, we start from the top 0.1(8), and select 0.4(5), 0.8(3) in order. If u is smaller than 5, the functions 1, 2, 3 as the leaves of the node 0.8(3) are finally chosen. If u is equal or larger than 5, the functions 1, 2, 3, 4, 5 of 0.4(5) are chosen. B. Modification Activity Control Secondly we describe the method to check the existence of clones when some modification request has taken place. This method is also an application of an FR tree. The process is described as the following: 1. An FR tree is given as an input in advance. 2. A function to be modified (f) is selected. 3. The FR tree is traced from the leaf associated with f, in the child-to-parent order. 4. As the tree is traced, the node s similarity becomes smaller, and NL becomes larger. The node is evaluated with these two weights. 5. According to the evaluation, one node N is chosen at the and the functions related to leaf(n) are determined as clones of f. To evaluate the nodes in the process above, we introduce Partial Functional Redundancy(PFR). Before the definition of PFR, we would like to redefine FR. With the definition here, the following equations are formed. N = top(p ) fr(n) = fr(p ) where top(p) is the top node of FR tree constructed from P. Given any number n, PFR of a function f (pfr(f,n)) is defined as follows: pfr(f,n) def = fr(p n (f)) where p n (f) is the nth parent node from the external node associated with f. In the process above, n starts with 1 and increases as the recursion of trace occurs. We can determine whether to finish the process with PFR. When the process is finished, functions of leaf(p n (f)) is determined as potential clones. V. RELATED WORK Mayrand et al.[11][12] aim at evaluating the quality of software, and focus on functional clones like our study. The main feature of their approach is to classify the clones according to their modified pattern: from ExactCopy to DistinctControlFlow. They use their classification for maintenance management and attempt to improve the maintenability. Balazinska et al. [1] follow Mayrands approach and classify clones in 18 patterns, but use the classification to suggest reengineering methods. The main advantage of our study over theirs will be the scope of evaluation: We evaluate the quality of the whole software with one metric, while their evaluation methods are based on the relation between two functions. As for the understandability of these evaluation results, we believe our approach is much easier to be understood. Moreover, our metric can be used to estimate the maintenance cost. This feature promotes the understandability and utility of our metric. In addition, our metric (FR1) can be normalized and therefore we can compare the estimation result with other softwares or projects. In return, our method does not deal with the semantics of clones. Therefore our method can detect which functions to be modified, but cannot suggest how to modify them. This feature is where their works have an advantage over ours. VI. CONCLUSION AND FUTURE WORK We have proposed a metric Functional Redundancy (FR) metric for estimating the maintenance cost caused by code clones, especially by propagation of clones throughout a software. We described the basic concept of FR metric, its measurement process. Then we applied our metric to 17K-ELOC source code written in C. In this context we verified our metric indubitably reflected the clone propagation, while clone percentage (CP, the ratio of cloned codes to the whole source code in LOC) did not. Moreover, we showed the demerit of FR, inaccuracy in evaluating the size of clones, had a little influence on our estimation result, and FR and CP had a strong correlation as a whole: the correlation coefficient with CP was We have also introduced the additional uses of FR, clonemanagement method based on FR: a detection of influential clones over the maintenance cost, and a management method when a modification request occurs. We believe FR is a novel approach to evaluate the quality of the whole software as to code clones. FR is especially good for analysis of the impact of clone propagation, which very few people have explored before. On the other hand, our metric might have the weakness in evaluating the size of clones. It is debatable which is more important issue for the maintenance cost estimation, and we have only limited information on the issue. We will inspect the relation between the size and the propagation of clones, and the impact each of them has on the maintenance cost in our future work. In addition, we will study some size-oriented approach, and finally merge FR and the size-oriented one. Such study will bring us more accurate and effective cost-estimation method.

7 7 REFERENCES [1] Magdalena Balazinska, Ettore Merlo, Michel Dagenais, Bruno Lagüe, and Kostas Kontogiannis. Measuring clone based reengineering opportunities. In Metrics 99, [2] Victor Basili, Lionel Briand, Steven Condon, Yong-Mi Kim, Walceĺio L. Melo, and Jon D. Valett. Understanding and predicting the process of software maintenance release. In Proceedings of the 1996 International Conference on Software Engineering (ICSE 96). ACM Press, [3] Ira D. Baxter, Andrew Yahin, Leonardo Moura, and Marcelo Sant Anna Lorraine Bier. Clone detection using abstract syntax trees. In Proceedings of the 1997 International Conference on Software Maintenance (ICSM 97). IEEE Computer Society Press, [4] Jan Bosch. Design & Use of Software Architectures. Addison Wesley, [5] William H. Brown, Raphael C. Malveau, Hays W. Skip McCormickIII, and Thomas J. Mowbray. AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley Computer Publishing, [6] J.E. Henry and J.P.Cain. A quantitative comparison of perfective and corrective software maintenance. Journal of Software Maintenance, Oct [7] J Howard Johnson. Identifying redundancy in source code using fingerprints. In CASCON 93, [8] Toshihiro Kamiya, Fumiaki Ohata, Kazuhiro Kondou, Shinji Kusumoto, and Katuro Inoue. Maintenance support tools for java programs: Ccfinder and jaat. In Proceedings of the 23rd International Conference on Software Engineering (ICSE 2001). ACM Press, [9] Jens Krinke. Identifying similar code with program depence graphs. In Proceedings of The Eighth Working Conference On Reverse Engineering 2001, [10] Bruno Laguë, Daniel Proulx, Ettore M. Merlo, Jean Mayrand, and John Hudepohl. Assessing benefits of incorporating function clone detection in a development process. In Proceedings of the 1997 International Conference on Software Maintenance (ICSM 97). IEEE Computer Society Press, [11] Jean Mayrand, Bruno Laguë, and John Hudepohl. Evaluating the benefits of clone detection in the software maintenance activities in large scale systems. In WESS 96, [12] Jean Mayrand, Claude Leblanc, and Ettore M. Merlo. Experiment on the automatic detection of function clones in a software system using metrics. In Proceedings of the International Conference on Software Management IEEE Computer Society Press, [13] Stephen R. Schach. Software Engineering. Asken Associates, 1993.

On Refactoring for Open Source Java Program

On Refactoring for Open Source Java Program On Refactoring for Open Source Java Program Yoshiki Higo 1,Toshihiro Kamiya 2, Shinji Kusumoto 1, Katsuro Inoue 1 and Yoshio Kataoka 3 1 Graduate School of Information Science and Technology, Osaka University

More information

Refactoring Support Based on Code Clone Analysis

Refactoring Support Based on Code Clone Analysis Refactoring Support Based on Code Clone Analysis Yoshiki Higo 1,Toshihiro Kamiya 2, Shinji Kusumoto 1 and Katsuro Inoue 1 1 Graduate School of Information Science and Technology, Osaka University, Toyonaka,

More information

Software Quality Analysis by Code Clones in Industrial Legacy Software

Software Quality Analysis by Code Clones in Industrial Legacy Software Software Quality Analysis by Code Clones in Industrial Legacy Software Akito Monden 1 Daikai Nakae 1 Toshihiro Kamiya 2 Shin-ichi Sato 1,3 Ken-ichi Matsumoto 1 1 Nara Institute of Science and Technology,

More information

Toward a Taxonomy of Clones in Source Code: A Case Study

Toward a Taxonomy of Clones in Source Code: A Case Study Toward a Taxonomy of Clones in Source Code: A Case Study Cory Kapser and Michael W. Godfrey Software Architecture Group (SWAG) School of Computer Science, University of Waterloo fcjkapser, migodg@uwaterloo.ca

More information

Algorithm to Detect Non-Contiguous Clones with High Precision

Algorithm to Detect Non-Contiguous Clones with High Precision Algorithm to Detect Non-Contiguous Clones with High Precision Sonam Gupta Research Scholar, Suresh Gyan Vihar University, Jaipur, Rajasthan, India Dr. P.C. Gupta Department of Computer Science and Engineering

More information

On Refactoring Support Based on Code Clone Dependency Relation

On Refactoring Support Based on Code Clone Dependency Relation On Refactoring Support Based on Code Dependency Relation Norihiro Yoshida 1, Yoshiki Higo 1, Toshihiro Kamiya 2, Shinji Kusumoto 1, Katsuro Inoue 1 1 Graduate School of Information Science and Technology,

More information

Keywords Code cloning, Clone detection, Software metrics, Potential clones, Clone pairs, Clone classes. Fig. 1 Code with clones

Keywords Code cloning, Clone detection, Software metrics, Potential clones, Clone pairs, Clone classes. Fig. 1 Code with clones Volume 4, Issue 4, April 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com Detection of Potential

More information

Rearranging the Order of Program Statements for Code Clone Detection

Rearranging the Order of Program Statements for Code Clone Detection Rearranging the Order of Program Statements for Code Clone Detection Yusuke Sabi, Yoshiki Higo, Shinji Kusumoto Graduate School of Information Science and Technology, Osaka University, Japan Email: {y-sabi,higo,kusumoto@ist.osaka-u.ac.jp

More information

To Enhance Type 4 Clone Detection in Clone Testing Swati Sharma #1, Priyanka Mehta #2 1 M.Tech Scholar,

To Enhance Type 4 Clone Detection in Clone Testing Swati Sharma #1, Priyanka Mehta #2 1 M.Tech Scholar, To Enhance Type 4 Clone Detection in Clone Testing Swati Sharma #1, Priyanka Mehta #2 1 M.Tech Scholar, 2 Head of Department, Department of Computer Science & Engineering, Universal Institute of Engineering

More information

COMPARISON AND EVALUATION ON METRICS

COMPARISON AND EVALUATION ON METRICS COMPARISON AND EVALUATION ON METRICS BASED APPROACH FOR DETECTING CODE CLONE D. Gayathri Devi 1 1 Department of Computer Science, Karpagam University, Coimbatore, Tamilnadu dgayadevi@gmail.com Abstract

More information

DCC / ICEx / UFMG. Software Code Clone. Eduardo Figueiredo.

DCC / ICEx / UFMG. Software Code Clone. Eduardo Figueiredo. DCC / ICEx / UFMG Software Code Clone Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Code Clone Code Clone, also called Duplicated Code, is a well known code smell in software systems Code clones

More information

Keywords Clone detection, metrics computation, hybrid approach, complexity, byte code

Keywords Clone detection, metrics computation, hybrid approach, complexity, byte code Volume 3, Issue 5, May 2013 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com An Emerging Approach

More information

Tool Support for Refactoring Duplicated OO Code

Tool Support for Refactoring Duplicated OO Code Tool Support for Refactoring Duplicated OO Code Stéphane Ducasse and Matthias Rieger and Georges Golomingi Software Composition Group, Institut für Informatik (IAM) Universität Bern, Neubrückstrasse 10,

More information

Clone Detection using Textual and Metric Analysis to figure out all Types of Clones

Clone Detection using Textual and Metric Analysis to figure out all Types of Clones Detection using Textual and Metric Analysis to figure out all Types of s Kodhai.E 1, Perumal.A 2, and Kanmani.S 3 1 SMVEC, Dept. of Information Technology, Puducherry, India Email: kodhaiej@yahoo.co.in

More information

Exploring the Relations between Code Cloning and Programming Languages

Exploring the Relations between Code Cloning and Programming Languages Exploring the Relations between Code Cloning and Programming Languages Ilca Webster Department of Computer Science York University 1. Introduction Copying code within a software system and adapting it

More information

Code Clone Detection Technique Using Program Execution Traces

Code Clone Detection Technique Using Program Execution Traces 1,a) 2,b) 1,c) Code Clone Detection Technique Using Program Execution Traces Masakazu Ioka 1,a) Norihiro Yoshida 2,b) Katsuro Inoue 1,c) Abstract: Code clone is a code fragment that has identical or similar

More information

Clone Analysis in the Web Era: an Approach to Identify Cloned Web Pages

Clone Analysis in the Web Era: an Approach to Identify Cloned Web Pages Clone Analysis in the Web Era: an Approach to Identify Cloned Web Pages Giuseppe Antonio Di Lucca, Massimiliano Di Penta*, Anna Rita Fasolino, Pasquale Granato dilucca@unina.it, dipenta@unisannio.it, fasolino@unina.it,

More information

DETECTING SIMPLE AND FILE CLONES IN SOFTWARE

DETECTING SIMPLE AND FILE CLONES IN SOFTWARE DETECTING SIMPLE AND FILE CLONES IN SOFTWARE *S.Ajithkumar, P.Gnanagurupandian, M.Senthilvadivelan, Final year Information Technology **Mr.K.Palraj ME, Assistant Professor, ABSTRACT: The objective of this

More information

Zjednodušení zdrojového kódu pomocí grafové struktury

Zjednodušení zdrojového kódu pomocí grafové struktury Zjednodušení zdrojového kódu pomocí grafové struktury Ing. Tomáš Bublík 1. Introduction Nowadays, there is lot of programming languages. These languages differ in syntax, usage, and processing. Keep in

More information

Visualization of Clone Detection Results

Visualization of Clone Detection Results Visualization of Clone Detection Results Robert Tairas and Jeff Gray Department of Computer and Information Sciences University of Alabama at Birmingham Birmingham, AL 5294-1170 1-205-94-221 {tairasr,

More information

International Journal of Computer Science Trends and Technology (IJCST) Volume 5 Issue 2, Mar Apr 2017

International Journal of Computer Science Trends and Technology (IJCST) Volume 5 Issue 2, Mar Apr 2017 RESEARCH ARTICLE OPEN ACCESS Handling Anomalies in the System Design: A Unique Methodology and Solution Pratik Rajan Bhore [1], Dr. Shashank D. Joshi [2], Dr. Naveenkumar Jayakumar [3] Department of Computer

More information

Relation of Code Clones and Change Couplings

Relation of Code Clones and Change Couplings Relation of Code Clones and Change Couplings Reto Geiger, Beat Fluri, Harald C. Gall, and Martin Pinzger s.e.a.l. software evolution and architecture lab, Department of Informatics, University of Zurich,

More information

Software Clone Detection. Kevin Tang Mar. 29, 2012

Software Clone Detection. Kevin Tang Mar. 29, 2012 Software Clone Detection Kevin Tang Mar. 29, 2012 Software Clone Detection Introduction Reasons for Code Duplication Drawbacks of Code Duplication Clone Definitions in the Literature Detection Techniques

More information

Problematic Code Clones Identification using Multiple Detection Results

Problematic Code Clones Identification using Multiple Detection Results Problematic Code Clones Identification using Multiple Detection Results Yoshiki Higo, Ken-ichi Sawa, and Shinji Kusumoto Graduate School of Information Science and Technology, Osaka University, 1-5, Yamadaoka,

More information

Searching for Configurations in Clone Evaluation A Replication Study

Searching for Configurations in Clone Evaluation A Replication Study Searching for Configurations in Clone Evaluation A Replication Study Chaiyong Ragkhitwetsagul 1, Matheus Paixao 1, Manal Adham 1 Saheed Busari 1, Jens Krinke 1 and John H. Drake 2 1 University College

More information

Falsification: An Advanced Tool for Detection of Duplex Code

Falsification: An Advanced Tool for Detection of Duplex Code Indian Journal of Science and Technology, Vol 9(39), DOI: 10.17485/ijst/2016/v9i39/96195, October 2016 ISSN (Print) : 0974-6846 ISSN (Online) : 0974-5645 Falsification: An Advanced Tool for Detection of

More information

ARCHITECTURE MIGRATION USING DSM IN A LARGE-SCALE SOFTWARE PROJECT

ARCHITECTURE MIGRATION USING DSM IN A LARGE-SCALE SOFTWARE PROJECT 14 TH INTERNATIONAL DEPENDENCY AND STRUCTURE MODELING CONFERENCE, DSM 12 KYOTO, JAPAN, SEPTEMBER 13 14, 2012 ARCHITECTURE MIGRATION USING DSM IN A LARGE-SCALE SOFTWARE PROJECT Takashi Maki Corporate Technology

More information

A Novel Technique for Retrieving Source Code Duplication

A Novel Technique for Retrieving Source Code Duplication A Novel Technique for Retrieving Source Code Duplication Yoshihisa Udagawa Computer Science Department, Faculty of Engineering Tokyo Polytechnic University Atsugi-city, Kanagawa, Japan udagawa@cs.t-kougei.ac.jp

More information

FUNCTION CLONE DETECTION IN WEB APPLICATIONS: A SEMIAUTOMATED APPROACH

FUNCTION CLONE DETECTION IN WEB APPLICATIONS: A SEMIAUTOMATED APPROACH Journal of Web Engineering, Vol. 3, No.1 (2004) 003-021 Rinton Press FUNCTION CLONE DETECTION IN WEB APPLICATIONS: A SEMIAUTOMATED APPROACH FABIO CALEFATO, FILIPPO LANUBILE, TERESA MALLARDO Dipartimento

More information

A study of the impact of C++ on software maintenance

A study of the impact of C++ on software maintenance A study of the impact of C++ on software maintenance Dennis Mancl AT&T Bell Laboratories Warren, NJ 07059 William Havanas AT&T Bell Laboratories Columbus, OH 43213 Abstract This is a case study of the

More information

Token based clone detection using program slicing

Token based clone detection using program slicing Token based clone detection using program slicing Rajnish Kumar PEC University of Technology Rajnish_pawar90@yahoo.com Prof. Shilpa PEC University of Technology Shilpaverma.pec@gmail.com Abstract Software

More information

Inheritance Metrics: What do they Measure?

Inheritance Metrics: What do they Measure? Inheritance Metrics: What do they Measure? G. Sri Krishna and Rushikesh K. Joshi Department of Computer Science and Engineering Indian Institute of Technology Bombay Mumbai, 400 076, India Email:{srikrishna,rkj}@cse.iitb.ac.in

More information

Code Clone Analysis and Application

Code Clone Analysis and Application Code Clone Analysis and Application Katsuro Inoue Osaka University Talk Structure Clone Detection CCFinder and Associate Tools Applications Summary of Code Clone Analysis and Application Clone Detection

More information

Source Code Author Identification Based on N-gram Author Profiles

Source Code Author Identification Based on N-gram Author Profiles Source Code Author Identification Based on N-gram Author files Georgia Frantzeskou, Efstathios Stamatatos, Stefanos Gritzalis, Sokratis Katsikas Laboratory of Information and Communication Systems Security

More information

1 Introduction. Abstract

1 Introduction. Abstract An MVC-based Analysis of Object-Oriented System Prototyping for Banking Related GUI Applications Correlationship between OO Metrics and Efforts for Requirement Change Satoru Uehara, Osamu Mizuno, Yumi

More information

UML Specification and Correction of Object-Oriented Anti-patterns

UML Specification and Correction of Object-Oriented Anti-patterns UML Specification and Correction of Object-Oriented Anti-patterns Maria Teresa Llano and Rob Pooley School of Mathematical and Computer Sciences Heriot-Watt University Edinburgh, United Kingdom {mtl4,rjpooley}@hwacuk

More information

An Effective Approach for Detecting Code Clones

An Effective Approach for Detecting Code Clones An Effective Approach for Detecting Code Clones Girija Gupta #1, Indu Singh *2 # M.Tech Student( CSE) JCD College of Engineering, Affiliated to Guru Jambheshwar University,Hisar,India * Assistant Professor(

More information

SHINOBI: A Real-Time Code Clone Detection Tool for Software Maintenance

SHINOBI: A Real-Time Code Clone Detection Tool for Software Maintenance : A Real-Time Code Clone Detection Tool for Software Maintenance Takanobu Yamashina Hidetake Uwano Kyohei Fushida Yasutaka Kamei Masataka Nagura Shinji Kawaguchi Hajimu Iida Nara Institute of Science and

More information

Refactoring Industrial-Strength Code

Refactoring Industrial-Strength Code Refactoring Industrial-Strength Code Refining code toward better design Usman Parvez Department of Computer Science National University of Computer and Emerging Sciences Lahore Pakistan usman.parvez@gmail.com

More information

A Study on A Tool to Suggest Similar Program Element Modifications

A Study on A Tool to Suggest Similar Program Element Modifications WASEDA UNIVERSITY Graduate School of Fundamental Science and Engineering A Study on A Tool to Suggest Similar Program Element Modifications A Thesis Submitted in Partial Fulfillment of the Requirements

More information

Folding Repeated Instructions for Improving Token-based Code Clone Detection

Folding Repeated Instructions for Improving Token-based Code Clone Detection 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation Folding Repeated Instructions for Improving Token-based Code Clone Detection Hiroaki Murakami, Keisuke Hotta, Yoshiki

More information

An Ethnographic Study of Copy and Paste Programming Practices in OOPL

An Ethnographic Study of Copy and Paste Programming Practices in OOPL An Ethnographic Study of Copy and Paste Programming Practices in OOPL Miryung Kim 1 Lawrence Bergman 2 Tessa Lau 2 David Notkin 1 Department of Computer Science & Engineering University of Washington 1

More information

Association Pattern Mining. Lijun Zhang

Association Pattern Mining. Lijun Zhang Association Pattern Mining Lijun Zhang zlj@nju.edu.cn http://cs.nju.edu.cn/zlj Outline Introduction The Frequent Pattern Mining Model Association Rule Generation Framework Frequent Itemset Mining Algorithms

More information

A Lost Cycles Analysis for Performance Prediction using High-Level Synthesis

A Lost Cycles Analysis for Performance Prediction using High-Level Synthesis A Lost Cycles Analysis for Performance Prediction using High-Level Synthesis Bruno da Silva, Jan Lemeire, An Braeken, and Abdellah Touhafi Vrije Universiteit Brussel (VUB), INDI and ETRO department, Brussels,

More information

CCFinderSW: Clone Detection Tool with Flexible Multilingual Tokenization

CCFinderSW: Clone Detection Tool with Flexible Multilingual Tokenization 2017 24th Asia-Pacific Software Engineering Conference CCFinderSW: Clone Detection Tool with Flexible Multilingual Tokenization Yuichi Semura, Norihiro Yoshida, Eunjong Choi and Katsuro Inoue Osaka University,

More information

HOW AND WHEN TO FLATTEN JAVA CLASSES?

HOW AND WHEN TO FLATTEN JAVA CLASSES? HOW AND WHEN TO FLATTEN JAVA CLASSES? Jehad Al Dallal Department of Information Science, P.O. Box 5969, Safat 13060, Kuwait ABSTRACT Improving modularity and reusability are two key objectives in object-oriented

More information

Hybrid Feature Selection for Modeling Intrusion Detection Systems

Hybrid Feature Selection for Modeling Intrusion Detection Systems Hybrid Feature Selection for Modeling Intrusion Detection Systems Srilatha Chebrolu, Ajith Abraham and Johnson P Thomas Department of Computer Science, Oklahoma State University, USA ajith.abraham@ieee.org,

More information

Robust Lip Contour Extraction using Separability of Multi-Dimensional Distributions

Robust Lip Contour Extraction using Separability of Multi-Dimensional Distributions Robust Lip Contour Extraction using Separability of Multi-Dimensional Distributions Tomokazu Wakasugi, Masahide Nishiura and Kazuhiro Fukui Corporate Research and Development Center, Toshiba Corporation

More information

Investigation of Metrics for Object-Oriented Design Logical Stability

Investigation of Metrics for Object-Oriented Design Logical Stability Investigation of Metrics for Object-Oriented Design Logical Stability Mahmoud O. Elish Department of Computer Science George Mason University Fairfax, VA 22030-4400, USA melish@gmu.edu Abstract As changes

More information

Using Dependency Graphs to Detect Open Source Intellectual Property Violation

Using Dependency Graphs to Detect Open Source Intellectual Property Violation 1 Using Dependency Graphs to Detect Open Source Intellectual Property Violation Gail Carmichael - gbanaszk@connect.carleton.ca and Siamak Sharif - SiamakSharif@hotmail.com Abstract Clone detection is important

More information

A Study of Bad Smells in Code

A Study of Bad Smells in Code International Journal for Science and Emerging ISSN No. (Online):2250-3641 Technologies with Latest Trends 7(1): 16-20 (2013) ISSN No. (Print): 2277-8136 A Study of Bad Smells in Code Gurpreet Singh* and

More information

DETERMINE COHESION AND COUPLING FOR CLASS DIAGRAM THROUGH SLICING TECHNIQUES

DETERMINE COHESION AND COUPLING FOR CLASS DIAGRAM THROUGH SLICING TECHNIQUES IJACE: Volume 4, No. 1, January-June 2012, pp. 19-24 DETERMINE COHESION AND COUPLING FOR CLASS DIAGRAM THROUGH SLICING TECHNIQUES Akhilesh Kumar 1* & Sunint Kaur Khalsa 1 Abstract: High cohesion or module

More information

EVALUATION OF TOKEN BASED TOOLS ON THE BASIS OF CLONE METRICS

EVALUATION OF TOKEN BASED TOOLS ON THE BASIS OF CLONE METRICS EVALUATION OF TOKEN BASED TOOLS ON THE BASIS OF CLONE METRICS Rupinder Kaur, Harpreet Kaur, Prabhjot Kaur Abstract The area of clone detection has considerably evolved over the last decade, leading to

More information

Software Clone Detection and Refactoring

Software Clone Detection and Refactoring Software Clone Detection and Refactoring Francesca Arcelli Fontana *, Marco Zanoni *, Andrea Ranchetti * and Davide Ranchetti * * University of Milano-Bicocca, Viale Sarca, 336, 20126 Milano, Italy, {arcelli,marco.zanoni}@disco.unimib.it,

More information

COST ESTIMATION FOR DISTRIBUTED SYSTEMS USING USE CASE DIAGRAM

COST ESTIMATION FOR DISTRIBUTED SYSTEMS USING USE CASE DIAGRAM S. V. Pingale et al. : Cost Estimation for Distributed Systems using Use Case Diagram Journal of Advances in Engineering Science 41 Section C (3), July - December 2010, PP 41-48 COST ESTIMATION FOR DISTRIBUTED

More information

Cross Language Higher Level Clone Detection- Between Two Different Object Oriented Programming Language Source Codes

Cross Language Higher Level Clone Detection- Between Two Different Object Oriented Programming Language Source Codes Cross Language Higher Level Clone Detection- Between Two Different Object Oriented Programming Language Source Codes 1 K. Vidhya, 2 N. Sumathi, 3 D. Ramya, 1, 2 Assistant Professor 3 PG Student, Dept.

More information

Classification of Java Programs in SPARS-J. Kazuo Kobori, Tetsuo Yamamoto, Makoto Matsusita and Katsuro Inoue Osaka University

Classification of Java Programs in SPARS-J. Kazuo Kobori, Tetsuo Yamamoto, Makoto Matsusita and Katsuro Inoue Osaka University Classification of Java Programs in SPARS-J Kazuo Kobori, Tetsuo Yamamoto, Makoto Matsusita and Katsuro Inoue Osaka University Background SPARS-J Reuse Contents Similarity measurement techniques Characteristic

More information

CS229 Lecture notes. Raphael John Lamarre Townshend

CS229 Lecture notes. Raphael John Lamarre Townshend CS229 Lecture notes Raphael John Lamarre Townshend Decision Trees We now turn our attention to decision trees, a simple yet flexible class of algorithms. We will first consider the non-linear, region-based

More information

Keywords: Binary Sort, Sorting, Efficient Algorithm, Sorting Algorithm, Sort Data.

Keywords: Binary Sort, Sorting, Efficient Algorithm, Sorting Algorithm, Sort Data. Volume 4, Issue 6, June 2014 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com An Efficient and

More information

A Technique to Detect Multi-grained Code Clones

A Technique to Detect Multi-grained Code Clones Detection Time The Number of Detectable Clones A Technique to Detect Multi-grained Code Clones Yusuke Yuki, Yoshiki Higo, and Shinji Kusumoto Graduate School of Information Science and Technology, Osaka

More information

Code Syntax-Comparison Algorithm based on Type-Redefinition-Preprocessing and Rehash Classification

Code Syntax-Comparison Algorithm based on Type-Redefinition-Preprocessing and Rehash Classification 320 JOURNAL OF MULTIMEDIA, VOL. 6, NO. 4, AUGUST 2011 Code Syntax-Comparison Algorithm based on Type-Redefinition-Preprocessing and Rehash Classification Baojiang Cui 1,2 1 Beijing University of Posts

More information

Insights into System Wide Code Duplication WCRE 2004

Insights into System Wide Code Duplication WCRE 2004 Insights into System Wide Code Duplication Matthias Rieger, Stéphane Ducasse, and Michele Lanza Software Composition Group University of Bern, Switzerland {rieger,ducasse,lanza}@iam.unibe.ch WCRE 2004

More information

Code duplication in Software Systems: A Survey

Code duplication in Software Systems: A Survey Code duplication in Software Systems: A Survey G. Anil kumar 1 Dr. C.R.K.Reddy 2 Dr. A. Govardhan 3 A. Ratna Raju 4 1,4 MGIT, Dept. of Computer science, Hyderabad, India Email: anilgkumar@mgit.ac.in, ratnaraju@mgit.ac.in

More information

JSCTracker: A Semantic Clone Detection Tool for Java Code Rochelle Elva and Gary T. Leavens

JSCTracker: A Semantic Clone Detection Tool for Java Code Rochelle Elva and Gary T. Leavens JSCTracker: A Semantic Clone Detection Tool for Java Code Rochelle Elva and Gary T. Leavens CS-TR-12-04 March 2012 Keywords: semantic clone detection, input-output behavior, effects, IOE behavior, Java

More information

A METRIC BASED EVALUATION OF TEST CASE PRIORITATION TECHNIQUES- HILL CLIMBING, REACTIVE GRASP AND TABUSEARCH

A METRIC BASED EVALUATION OF TEST CASE PRIORITATION TECHNIQUES- HILL CLIMBING, REACTIVE GRASP AND TABUSEARCH A METRIC BASED EVALUATION OF TEST CASE PRIORITATION TECHNIQUES- HILL CLIMBING, REACTIVE GRASP AND TABUSEARCH 1 M.Manjunath, 2 N.Backiavathi 1 PG Scholar, Department of Information Technology,Jayam College

More information

Impact of Dependency Graph in Software Testing

Impact of Dependency Graph in Software Testing Impact of Dependency Graph in Software Testing Pardeep Kaur 1, Er. Rupinder Singh 2 1 Computer Science Department, Chandigarh University, Gharuan, Punjab 2 Assistant Professor, Computer Science Department,

More information

Handover Anti-patterns

Handover Anti-patterns Kei Ito Waseda University k-win@toki.waseda.jp Handover Anti-patterns Hironori Washizaki Global Software Engineering Laboratory, Waseda University washizaki@waseda.jp Yoshiaki Fukazawa Global Software

More information

Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study

Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study Jadson Santos Department of Informatics and Applied Mathematics Federal University of Rio Grande do Norte, UFRN Natal,

More information

Log System Based on Software Testing System Design And Implementation

Log System Based on Software Testing System Design And Implementation 4th International Conference on Mechatronics, Materials, Chemistry and Computer Engineering (ICMMCCE 2015) Log System Based on Software Testing System Design And Implementation Yan Liu1, a, Dahai Jin1,

More information

Extracting Code Clones for Refactoring Using Combinations of Clone Metrics

Extracting Code Clones for Refactoring Using Combinations of Clone Metrics Extracting Code Clones for Refactoring Using Combinations of Clone Metrics Eunjong Choi 1, Norihiro Yoshida 2, Takashi Ishio 1, Katsuro Inoue 1, Tateki Sano 3 1 Graduate School of Information Science and

More information

Lecture 2: Getting Started

Lecture 2: Getting Started Lecture 2: Getting Started Insertion Sort Our first algorithm is Insertion Sort Solves the sorting problem Input: A sequence of n numbers a 1, a 2,..., a n. Output: A permutation (reordering) a 1, a 2,...,

More information

Common Coupling as a Measure of Reuse Effort in Kernel-Based Software with Case Studies on the Creation of MkLinux and Darwin

Common Coupling as a Measure of Reuse Effort in Kernel-Based Software with Case Studies on the Creation of MkLinux and Darwin Common Coupling as a Measure of Reuse Effort in Kernel-Based Software with Case Studies on the Creation of MkLinux and Darwin Liguo Yu Department of Informatics Computer and Information Sciences Department

More information

Using FCA to Suggest Refactorings to Correct Design Defects

Using FCA to Suggest Refactorings to Correct Design Defects Using FCA to Suggest Refactorings to Correct Design Defects Naouel Moha, Jihene Rezgui, Yann-Gaël Guéhéneuc, Petko Valtchev, and Ghizlane El Boussaidi GEODES, Department of Informatics and Operations Research

More information

Connectivity, Energy and Mobility Driven Clustering Algorithm for Mobile Ad Hoc Networks

Connectivity, Energy and Mobility Driven Clustering Algorithm for Mobile Ad Hoc Networks Connectivity, Energy and Mobility Driven Clustering Algorithm for Mobile Ad Hoc Networks Fatiha Djemili Tolba University of Haute Alsace GRTC Colmar, France fatiha.tolba@uha.fr Damien Magoni University

More information

Compiler Construction

Compiler Construction Compiler Construction Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ss-16/cc/ Recap: Static Data Structures Outline of Lecture 18 Recap:

More information

Maintainability and Agile development. Author: Mika Mäntylä

Maintainability and Agile development. Author: Mika Mäntylä Maintainability and Agile development Author: Mika Mäntylä ISO 9126 Software Quality Characteristics Are the required functions available in the software? How easy is it to

More information

Detection of Non Continguous Clones in Software using Program Slicing

Detection of Non Continguous Clones in Software using Program Slicing Detection of Non Continguous Clones in Software using Program Slicing Er. Richa Grover 1 Er. Narender Rana 2 M.Tech in CSE 1 Astt. Proff. In C.S.E 2 GITM, Kurukshetra University, INDIA Abstract Code duplication

More information

This is a repository copy of A Rule Chaining Architecture Using a Correlation Matrix Memory.

This is a repository copy of A Rule Chaining Architecture Using a Correlation Matrix Memory. This is a repository copy of A Rule Chaining Architecture Using a Correlation Matrix Memory. White Rose Research Online URL for this paper: http://eprints.whiterose.ac.uk/88231/ Version: Submitted Version

More information

A Rule Chaining Architecture Using a Correlation Matrix Memory. James Austin, Stephen Hobson, Nathan Burles, and Simon O Keefe

A Rule Chaining Architecture Using a Correlation Matrix Memory. James Austin, Stephen Hobson, Nathan Burles, and Simon O Keefe A Rule Chaining Architecture Using a Correlation Matrix Memory James Austin, Stephen Hobson, Nathan Burles, and Simon O Keefe Advanced Computer Architectures Group, Department of Computer Science, University

More information

CODE CLONE DETECTION A NEW APPROACH. - Sanjeev Chakraborty

CODE CLONE DETECTION A NEW APPROACH. - Sanjeev Chakraborty CODE CLONE DETECTION A NEW APPROACH - Sanjeev Chakraborty ` CONTENTS Need of Research...3 1. Abstract...4 2. Introduction...4 3. Related Works...5 4. Methodology...5 5. Experimental Set-Up...6 6. Implementation...6

More information

Rule-Based Method for Entity Resolution Using Optimized Root Discovery (ORD)

Rule-Based Method for Entity Resolution Using Optimized Root Discovery (ORD) American-Eurasian Journal of Scientific Research 12 (5): 255-259, 2017 ISSN 1818-6785 IDOSI Publications, 2017 DOI: 10.5829/idosi.aejsr.2017.255.259 Rule-Based Method for Entity Resolution Using Optimized

More information

ISSN: (PRINT) ISSN: (ONLINE)

ISSN: (PRINT) ISSN: (ONLINE) IJRECE VOL. 5 ISSUE 2 APR.-JUNE. 217 ISSN: 2393-928 (PRINT) ISSN: 2348-2281 (ONLINE) Code Clone Detection Using Metrics Based Technique and Classification using Neural Network Sukhpreet Kaur 1, Prof. Manpreet

More information

A Metric-based Approach for Reconstructing Methods in Object-Oriented Systems

A Metric-based Approach for Reconstructing Methods in Object-Oriented Systems A Metric-based Approach for Reconstructing Methods in Object-Oriented Systems Tatsuya Miyake Yoshiki Higo Katsuro Inoue Graduate School of Information Science and Technology, Osaka University {t-miyake,higo,inoue@istosaka-uacjp

More information

Code Similarity Detection by Program Dependence Graph

Code Similarity Detection by Program Dependence Graph 2016 International Conference on Computer Engineering and Information Systems (CEIS-16) Code Similarity Detection by Program Dependence Graph Zhen Zhang, Hai-Hua Yan, Xiao-Wei Zhang Dept. of Computer Science,

More information

Evaluation of a Business Application Framework Using Complexity and Functionality Metrics

Evaluation of a Business Application Framework Using Complexity and Functionality Metrics Evaluation of a Business Application Framework Using Complexity and Functionality Metrics Hikaru Fujiwara 1, Shinji Kusumoto 1, Katsuro Inoue 1, Toshifusa Ootsubo 2 and Katsuhiko Yuura 2 1 Graduate School

More information

Practical Language-Independent Detection of Near-Miss Clones

Practical Language-Independent Detection of Near-Miss Clones Practical Language-Independent Detection of Near-Miss Clones James R. Cordy Thomas R. Dean Nikita Synytskyy Queen s University Queen s University University of Waterloo cordy@cs.queensu.ca thomas.dean@ece.queensu.cam

More information

Revision of Inconsistent Orthographic Views

Revision of Inconsistent Orthographic Views Journal for Geometry and Graphics Volume 2 (1998), No. 1, 45 53 Revision of Inconsistent Orthographic Views Takashi Watanabe School of Informatics and Sciences, Nagoya University, Nagoya 464-8601, Japan

More information

Massively Parallel Approximation Algorithms for the Knapsack Problem

Massively Parallel Approximation Algorithms for the Knapsack Problem Massively Parallel Approximation Algorithms for the Knapsack Problem Zhenkuang He Rochester Institute of Technology Department of Computer Science zxh3909@g.rit.edu Committee: Chair: Prof. Alan Kaminsky

More information

Visualizing Clone Cohesion and Coupling

Visualizing Clone Cohesion and Coupling Visualizing Cohesion and Coupling Zhen Ming Jiang University of Waterloo zmjiang@cs.uwaterloo.ca Ahmed E. Hassan University of Victoria ahmed@ece.uvic.ca Richard C. Holt University of Waterloo holt@plg.uwaterloo.ca

More information

SHOTGUN SURGERY DESIGN FLAW DETECTION. A CASE-STUDY

SHOTGUN SURGERY DESIGN FLAW DETECTION. A CASE-STUDY STUDIA UNIV. BABEŞ BOLYAI, INFORMATICA, Volume LVIII, Number 4, 2013 SHOTGUN SURGERY DESIGN FLAW DETECTION. A CASE-STUDY CAMELIA ŞERBAN Abstract. Due to the complexity of object oriented design, its assessment

More information

BST Deletion. First, we need to find the value which is easy because we can just use the method we developed for BST_Search.

BST Deletion. First, we need to find the value which is easy because we can just use the method we developed for BST_Search. BST Deletion Deleting a value from a Binary Search Tree is a bit more complicated than inserting a value, but we will deal with the steps one at a time. First, we need to find the value which is easy because

More information

Detection and Behavior Identification of Higher-Level Clones in Software

Detection and Behavior Identification of Higher-Level Clones in Software Detection and Behavior Identification of Higher-Level Clones in Software Swarupa S. Bongale, Prof. K. B. Manwade D. Y. Patil College of Engg. & Tech., Shivaji University Kolhapur, India Ashokrao Mane Group

More information

SPM Users Guide. This guide elaborates on powerful ways to combine the TreeNet and GPS engines to achieve model compression and more.

SPM Users Guide. This guide elaborates on powerful ways to combine the TreeNet and GPS engines to achieve model compression and more. SPM Users Guide Model Compression via ISLE and RuleLearner This guide elaborates on powerful ways to combine the TreeNet and GPS engines to achieve model compression and more. Title: Model Compression

More information

Quick Parser Development Using Modified Compilers and Generated Syntax Rules

Quick Parser Development Using Modified Compilers and Generated Syntax Rules Quick Parser Development Using Modified Compilers and Generated Syntax Rules KAZUAKI MAEDA Department of Business Administration and Information Science, Chubu University 1200 Matsumoto, Kasugai, Aichi,

More information

Source Code Author Identification Based on N-gram Author Profiles

Source Code Author Identification Based on N-gram Author Profiles Source Code Author Identification Based on N-gram Author s Georgia Frantzeskou, Efstathios Stamatatos, Stefanos Gritzalis, Sokratis Katsikas Laboratory of Information and Communication Systems Security

More information

Construction of Software Model Graph and Analysing Object-Oriented Program(C#) Using Abstract Syntax Tree Method

Construction of Software Model Graph and Analysing Object-Oriented Program(C#) Using Abstract Syntax Tree Method Construction of Software Model Graph and Analysing Object-Oriented Program(C#) Using Abstract Syntax Tree Method Appala Srinuvasu Muttipati #1, Poosapati Padmaja *2 # Research Scholar, Department of Computer

More information

A HYBRID METHOD FOR SIMULATION FACTOR SCREENING. Hua Shen Hong Wan

A HYBRID METHOD FOR SIMULATION FACTOR SCREENING. Hua Shen Hong Wan Proceedings of the 2006 Winter Simulation Conference L. F. Perrone, F. P. Wieland, J. Liu, B. G. Lawson, D. M. Nicol, and R. M. Fujimoto, eds. A HYBRID METHOD FOR SIMULATION FACTOR SCREENING Hua Shen Hong

More information

Beyond the Refactoring Browser: Advanced Tool Support for Software Refactoring

Beyond the Refactoring Browser: Advanced Tool Support for Software Refactoring Beyond the Refactoring Browser: Advanced Tool Support for Software Refactoring Tom Mens Tom Tourwé Francisca Muñoz Programming Technology Lab Vrije Universiteit Brussel Pleinlaan 2, 1050 Brussel, Belgium

More information

White Box Testing with Object Oriented programming

White Box Testing with Object Oriented programming White Box Testing with Object Oriented programming Mrs.Randive R.B 1, Mrs.Bansode S.Y 2 1,2 TPCT S College Of Engineering,Osmanabad Abstract:-Software testing is one of the best means to affirm the quality

More information

Tree-Based Minimization of TCAM Entries for Packet Classification

Tree-Based Minimization of TCAM Entries for Packet Classification Tree-Based Minimization of TCAM Entries for Packet Classification YanSunandMinSikKim School of Electrical Engineering and Computer Science Washington State University Pullman, Washington 99164-2752, U.S.A.

More information