Exploring the Relations between Code Cloning and Programming Languages

Size: px
Start display at page:

Download "Exploring the Relations between Code Cloning and Programming Languages"

Transcription

1 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 to suit local needs is a common practice. Very similar sections of code are named clones. Cloning can be easier than sharing a common part of code from a library and does not affect the functionality of a system at all [1] but contributes to make further developments difficult and expensive. Detecting and characterizing software clones can help to minimize these impacts by explaining future software maintenance efforts [2]. Besides, it can be used to validate software evolution hypotheses [3]. Software clones have been the focus of research studies that generally address the construction of clone detection tools or the occurrence of clones (how, when and why they appear) [4]. This study discusses the occurrence of clones from the perspective of programming languages. It explores existing clones in software systems developed with programming languages that have similar syntactic characteristics: the object oriented languages C++ and Java. Four candidate software applications from a same domain were selected for this research. These applications are the clients Columba, IC , TTY-Grin and Ishmail. The first two were developed with Java while the second ones where developed with C++. The clone detection toolkit Gemini/CCFinder was applied to detect the clones in these

2 clients. Then, using CLICS (CLone Interpretation and Classification System) we explored and analyzed the documented cloning activity. The results shows the similarities among the software clones found in the candidate applications are not directly related to the programming languages used in their development. Characteristics of the application can lead to the existence of certain types of clones. These characteristics may indicate that development processes, rather than characteristics of programming languages, can better contribute to relate the presence of similar types of clones in different applications. This study is structured as follows. In the next section we discuss the proposed study in the context of software cloning and related work. Section 3 presents the tools and processes used to explore software clones. Section 4 describes the case studies. Section 5 presents a brief comparison between C++ and Java, the programming languages of the candidate applications used in our case studies. Section 6 covers the results and their analyses. The last section presents conclusions and suggestions for future work. 2. Proposed Study Copying code within a software system and adapting it to suit local needs through minor, non functional alterations, is a well known problem for evolving software systems leading to software clones. Similar portions of code are called software clones, and clone analysis is the research area that supports software cloning studies. Code cloning has been extensively used within the software development community. For example, for large and long term development systems it is estimated that 25 up to 30% of their modules may have been cloned [5]. These cases generally involve the copy of entire system modules and their slight modification to attend to local needs or the use of parts of modules in other modules.

3 Cloning does not affect the normal functioning of a system, but can contribute for further development to become very expensive. The main advantage of software cloning is the fast solution it provides to a problem. Copying and customizing part of the code does not require further negotiations with system designers and stakeholders. On the other hand, the copied code may contain unknown bugs and redundant parts that are not necessary. Besides, copied parts have to be maintained and modifications in an original part may also require the cloned part to be modified. These steps are time consuming and can lead to many other problems, especially in the absence of proper documentation. The identification of clones may reduce the effort devoted to test, maintain and evolve software systems by explaining future software maintenance efforts [2] and contributing to validate software evolution hypotheses [3]. Software clones have been the focus of several research studies. These studies often address the construction of clone detection tools and the occurrence of clones (how, when and why they appear) [4]. Within the category of studies addressing clones occurrence, very few discuss software clones from the perspective of programming languages. Among them, Dagenais et al. [6] study clones in large sets of object oriented software libraries and programs in two different programming languages: Java and Modula-3. In this study factors affecting clone detection accuracy and their frequency of occurrence are discussed and a comparison between systems written in both languages is presented. A previous study of Dagenais et al. [7] discusses the factors affecting the cloning detection accuracy and their frequence of occurrence. This study concentrates in a smaller set of object oriented software libraries and discusses the findings based on their architecture and on their development processes. Our study investigates the relation between software clones and the programming language used to develop a software system. Differently from the studies discussed above, we do not consider problems affecting the occurrence of clones. We concentrate our efforts in finding similarities and differences among software clones. The clone

4 detection tool CLICS provides the taxonomy of clones used to support finding these similarities and/or differences. More specifically, this study has the objectives of exploring differences and similarities between the code clones in the software applications studied, as well as to identify specific clone trends. Then we try to explain these similarities and differences based on characteristics of the programming languages used to develop our candidate applications. Given this studies characteristics, which were mentioned above, we can categorize it, according to Shaw [8], as a Generalization or Characterization research study. These types of studies intend to answer general questions with the objective of providing insights for future research. One of the common questions they aim to answer is: What are the varieties of X, how are they related? Following the same reasoning our study explores varieties of software clones in a set of candidate applications and their specific relations, using programming languages characteristics to facilitate the establishment of these relations. 3. Clone Detection Tools The first step of this study consists of detecting clones in the selected applications. For this purpose we used three different tools, which implement clone detection and classification techniques: Gemini, CCFinder and CLICS (CLone Interpretation and Classification System). Gemini/CCFinder is a Java based integrated environment for the analysis of code clones. CCFinder is a clone detection tool based on token-based representations of the source code [9]. It detects code clones from given source files and prints out data to a standard output that includes information about CCFinder, the paths of the input source files, locations at which the errors are reported and the maximal clone pairs [10].

5 Gemini is a GUI application that provides interactive code clone analysis in graphical mode [10]. It uses CCFinder internally to detect code clones and presents the results in the form of scatter plots and clone metric graphs. Source code and its respective clones and files can also be visualized, providing a documented activity of all the clones presented in a software system. CLICS (CLone Interpretation and Classification System) extends the work of Gemini/CCFinder. It provides a filtering mechanism for false matches and organizes the clones based on a taxonomy of clones. A detailed description of this taxonomy can be found in Kapser and Godfrey [11]. CLICS facilitates the removal of clones from the resulting set as well as the addition of files in the analysis without changing the detection results. Cloning relationships resulting from CLICS can be easily visualized and the clone statistics and classification that it provides contribute to richer analyses of software clones. Our study applied all these clone detection tools to the software application candidates described on the next section. The extraction process to obtain the final data involved three steps. First we used Gemini/CCFinder to detect code clones in the applications source code. The results for each application were stored in separated files. The second step involved loading each of these text files in CLICS. This tool decoded and organized the software clones for the candidate applications and produced, among other outputs, a summary of the findings. In a final step, this summary was manually further refined to facilitate its analysis. 4. Case Studies Four software applications were selected for the case studies: Columba, Ic , TTY- Grin and Ishmail. These are open source applications from the communications domain and are classified as clients or MUAs (mail user agents) under the development status production/stable. All these applications were developed with object-oriented

6 languages. Columba and Ic programming language is Java. TTY-Grin and Ishmail programming language is C++. Columba is an open source MUA that provides an easy to use graphical interface with wizards and is very similar to other popular clients. It is operational system independent and runs on every platform that supports Java. Its current version, 1.0 RC2, was entirely implemented with Java. IC is an operational system independent client written entirely in Java and based on the Java Mail API. It was designed for developers that want to make modifications and add new extensions. Each release of IC is distributed with its source code, allowing anyone to compile and build the application. The current version is TTY-Grin is a screen-orientated interactive news and client. It is a text based application that was entirely written in C++ to facilitate newsgroup and access for users of POSIX operational systems. This study used TTY-Grin current version, number 0.5.7a. Ishmail is a graphical client for Unix systems. Originally developed as a commercial product, its source code was released under the GNU (General Public License) on Ishmail s programming language is C++. This study used Ishmail version Considering the metric lines of code (LOC) as an indicator of the size of the applications, Ishmail and Columba are classified as the largest ones. These clients have 103,291 and 101,484 LOC respectively. Ic has 32,551 LOC and TTY-Grin is the smallest application, with 16,429 LOC. 5. A Comparison between Java and C++

7 Comparisons of characteristics of programming languages are generally highly influenced by the opinions of their authors. Objective information is not easily available. There are many different comparisons of C++ and Java within the computer science literature. The most common are non-quantitative and strongly based on the author viewpoint, for example [12]. A second group involves benchmarks measuring implementations of certain applications in each of these languages, for example [13], [14] and [15]. Benchmarks often compare one or more characteristics such as performance, memory consumption, etc. They are useful when the objective involves the selection of a programming language to develop programs similar to the samples used in the benchmark. If the samples are very simple and small they can however lead to uncertainty. A third group comparing C++ and Java involves empirical studies based on several large systems, for example [16], [17]. Larger samples can be prone to a lack of homogeneity because differences in their development processes. Studies based on controlled experimentation and focusing on constructs of the languages, such as [18] and [19] can provide more information independent of opinions. From an object oriented programming perspective, there are some significant differences between Java and C++. Writing about such differences could lead to a whole paper or even to a book if we have decided to use examples to discuss specific characteristics of each of these programming languages. To keep it simple a brief comparison between these languages is presented on Table 1. It is based on the references cited above and limits the scope to characteristics related to the syntax of both programming languages. Java is considered a pure object-oriented language while C++ is hybrid between procedural and object-oriented. Although some of Java rules and idioms are similar to rules and idioms in C++ and others are common to all object oriented languages, there

8 are completely Java specific rules and idioms. In general, Java shares many of the syntactical elements with C++ while avoiding its limitations. C++ Java Functions and Methods Can have stand-alone functions. Methods (functions) are part of the class to which they belong to. The main method can return a value. The main method cannot return a value. Optional function parameters. No optional method parameters. Data Structures Pointers. Reference types. typedef is used to define types. No typedef. String concatenation is done through a Has a built-in string concatenation library function. operator(+). Arrays are hybrid object. Arrays are instances of subclasses of class Object. Strings are null-terminated character Strings are objects. arrays. Object Oriented Programming Supports multiple inheritance. Does not support multiple inheritance. Templates are used as parameterized type. No parameterized type. No formal interface specifications. Supports formal interface specifications. Operator overloading. No operator overloading. Function overloading. No function overloading. No garbage collector mechanism. Objects Garbage collector mechanism for objects. must be deallocated from memory. Separate types are necessary for structs, All nonprimitive types are objects. unions, enums, and arrays. Supports dynamic binding for virtual All methods (except final methods) are functions only. dynamically bound. Table 1 C++ versus Java 6. Software Clones in Java and C++ This section shows the findings with their respective analyses. A general summary of cloning activity for all the candidate applications, which is generated by CLICS, can be found on Table 2. Detailed results involving clones by taxonomy and generation are then

9 presented and analyzed. Although object oriented refers to methods and not to functions, our analyses use these terms without distinction, because CLICS taxonomy refers to functions. Columba Ic TTY- Grin Ishmail Files in the analysis Lines of Code Function Regions Other Types of Regions Functions that have Clones % of Function Regions that have Clones Function Regions that have Same Region Clones % of Function Regions that have Same Region Clones Function Regions that have Clones to some other Function Region % of Function Regions that have Clones to some other Function Region Other Types of Regions with Clones Lines in the systems that are part of at least one Clone Files with Clones Average Length of a Clone Table 2: Profiles of cloning activity Table 3 shows the percentage of clones that occur in the same file, in the same directory but not in the same file, and in different directories for each of the applications. These results for all the applications indicate the highest percentages of software clones occur within the same directory but not in the same file and the lowest percentages occur within the same file. % of Clones Columba Ic TTY-Grin Ishmail Same File Same Directory Different Directories Table 3: Cloning activity by taxonomy Low percentages of clones within a same file seem to be common in object oriented applications. Specifically in the case of Java applications, there is a single file for each

10 class and its methods. Moreover, differently from C++, it does not support functional overloading. The combined name and parameter list for each method in a Java class must be unique. This could contribute to justify low percentages of Same File Clones for Columba and Ic . Because the highest percentages of software clones for all the software candidates are in the same directory, we decided to concentrate our analyses in this category. Our findings showed the highest percentages of software clones in the same directory but in different files for all the four applications are categorized as Function to Function Clones. The percentages of these clones for Columba, Ic , TTY-Grin and Ishmail are respectively 99.82%, 100%, 97.73% and 99.15%. CLICS subdivides Function to Function clones in Function Clones, Partial Function Clones, Cloned Function Body Clones and Cloned Blocks. Function Clones are functions that share a minimum of 60% of their code. Partial Function Clones are those were one function is a slightly copy of the other. Cloned Function Body Clones are functions where a smaller function was copied into a larger one and Cloned Blocks are blocks of code not large enough to be classified within any other Function to Function clone category. Exploring the subcategories of Function to Function clones, we obtained the results on Table 4. From this table we can see the highest percentages of clones within the same directory but in different files are Cloned Blocks for Ic and Ishmail and Function Clones for Columba and TTY-Grin. % of Clones Columba Ic TTY-Grin Ishmail Function Clones Partial Function Clones Cloned Function Body Cloned Blocks Table 4: Profiles of cloning activity in a same directory

11 An analysis of the code for Columba s Function Clones within the same directory but in different files showed these clones are generally part of classes belonging to the GUI (Graphical User Interface). An example can be found on Appendix 1. The duplicated code is generally an extension of a same major class. This type of clones could have been reduced with the use of interfaces. Arnold and Gosling [20] say: Any major class you expect to be extended, whether abstract or not, should be an implementation of an interface. Although this requires a little more work on your part, it enables a whole category of use that is otherwise precluded." It is interesting to note that Ic , the other Java application, has almost half of the percentage of Columba s Function Clones. Ic GUI was implemented with the JavaMail API [21]. This could have contributed to reduce the presence of these types of clones. The Function Clones within the same directory but in different files for TTY-Grin are generally clones of functions to organize the address book and newsgroups. An example can be found on Appendix 2. TTY-Grin is a text based application but these clones are part of the user interface. Although this client is a C++ application it is interesting to note the similarity with Columba, where a high percentage of Function Clones within the same directory are also part of the user interface. Ishmail is a specific case in the Function Clones scenario. When trying to identify possible reasons to explain its low percentage of Function Clones, we drew attention to the fact it is graphical client for Unix systems. Such applications usually present some particularities related to their development processes. Because the clients with a high percentage of Function Clones have the majority of these clones in the user interface we further investigated the development process for Ishmail GUI. In fact, it is not a pure C++ source code [23]. Ishmail s GUI was implemented with OSF/Motif and the X Window System. OSF/Motif is a graphical user interfaces for the X Window System, an open standard understood by many operating systems and used for drawing

12 graphical displays. It is based on IBM's Common User Access (CUA) specification which facilitates the migration of PC users to UNIX environments. Exploring Ishmail s Function Clones source code, we found out an interesting characteristic. Mostly of these clones are parts of functions that support editing user s preferences. These functions integrate with OSF/Motif s widgets. An example of Ishmail s Function Clones can be found on Appendix 3. Following the same reasoning adopted at the beginning of our analyses, because for Ic and Ishmail the highest percentage of clones within the same directory but in different files are Cloned Blocks, we decided to further explore this group. Cloned Blocks can exist in several spots in a function and can have different roles [11]. Due to these characteristics, CLICS taxonomy further subdivides this group into other subgroups. Table 4 depicts the percentages of different types of Cloned Blocks for Ic and Ishmail. Ic s highest percentage of Cloned Blocks belongs to the subcategory Initialization Clones while the highest percentage of Cloned Blocks for Ishmail are Less Simple Call Clones. % of Cloned Blocks Ic Ishmail Initialization Clones 45.98% 11.65% Finalization Clones 18.39% 13.87% Loop Clones 0.00% 2.59% Starting Loop Clones 1.15% 1.51% Partial Loop Clones 0.00% 0.36% Clone in Switches 0.00% 0.43% Conditional Clones 3.45% 10.06% Multi-Conditional Clones 1.15% 0.72% Partial Match Conditials 0.00% 3.09% Simple Call Clones 0.00% 12.44% Less Simple Call Clones 1.15% 14.81% Clone Islands 19.54% 13.59% Table 4: Profiles of Cloned Blocks Subcategory

13 Exploring Ishmail s source code for Less Simple Call Clones, we found out the majority of these clones are part of the GUI. They are within the code to create and manage GUI components, such as windows and its subcomponents, for example frames, buttons and boxes. Ic s Initialization Clones are part of private methods. An example can be found on Appendix 4. Java's private methods are accessible only by objects within the same class. A significant number of classes use very similar methods. Multiple inheritance could contribute to reduce the presence of this clones but it is not supported in Java. Table 4 also shows that within the subcategories of Cloned Blocks, there are high percentages of Finalization Clones and Clone Islands for both clients. The majority of Ishmail s Initialization Clones are part of methods to handle files while its Clone Islands are divided between methods related to the GUI and methods to handle files. The majority of Finalization Clones as well as Clone Islands for Ic are part of methods to establish contents of dialogue boxes. Finally, the lowest percentages of Cloned Blocks for Ic and Ishmail are Partial Loop Clones, and Clones in Switches. Partial Loop Clones are part of for, do/while and while iteration structures while Clones in Switches are clones of switch structures. These are the largest clients in terms of LOC. Avoiding iteration and switch structures is a common practice in large applications. This is because they usually require control of individual programming styles once they involve the work of multiple programmers. However polymorphism, which is a characteristic of object oriented languages, could explain the low presence of these types of clones in these applications. 7. Conclusions

14 Extracting information that could be very useful for future developments and maintenance is a challenging part of software clone research studies. This study explored differences and similarities in the occurrence of software clone within four client applications. Besides, it attempted to explain the findings based on characteristics of the programming languages C++ and Java, used to develop these applications. The results show no clone similarities between applications developed with a same programming language. On the other hand, because C++ and Java present some relevant syntactic differences when compared, we would expect to find out more clone differences between C++ applications and Java applications. However, the findings point to similarities with respect to the occurrence of certain types of clones between applications developed with C++ and applications developed with Java. As an exploratory study, we believe these results should further encourage future work to relate clone characteristics to development processes. In a previous study [22] we found they can explain the occurrence of clones more precisely. In general, object oriented programming language syntaxes are very complex, especially C++. This, added to the time needed to understand the source code, makes this kind of research very time consuming. Our suggestion is to realize smaller and more controlled experiments to relate programming language characteristics to CLICS taxonomy of clones. These experiments would focus only on the source code related to important components of the software architecture. Some of these study findings, based on our opinion, would be interesting subjects of further investigations. We found a high percentage of Function Clones related to the GUI in Columba, which is a Java application. Ic , which is the other Java application used an API and did not present a high occurrence of these types of clones. Exploring to which extent the use of libraries can contribute to reduce code clones would be a very interesting contribution to future developments.

15 References [1] Davey, N.; Barson, P.C.; Field, S.D.H., Frank, R.J. and Tansley, D.S.W.; The Development of a Software Clone Detector. Int. Jrnl. of Applied Software Technology, 1(3-4): , [2] Rysselberghe, Filip and Demeyer, Van Serge; Evaluating duplicated code detection techniques. In Evolution of Large-scale Industrial Software Applications (ELISA), pages 1--12, [3] G. Antonio, G. Casazza, M. Di Penta, and E. Merlo, "Modeling clones evolution through time series," in Proceedings of IEEE International Conference on Software Maintenance, (Florence, Italy), pp , Nov [4] Walenstein, Andrew; Lakhotia, Arun and Koschke, Rainer; The Second International Workshop on Detection of Software Clones: Workshop Report; ACM SIGSOFT Software Engineering Notes, Volume 29, Number 2, [5] Mayrand, J., Leblanc, C. and Merlo, E.M.; Experiment on the automatic detection of function clones in a software system using metrics. In International Conference on Software Maintenance, pp , Monterey, California, November [6] Dagenais, Michel; Patenaude, Jean-Francois; Merlo, Ettore and Lague, Bruno; Clones Occurrence in Java and Modula-3 Software Systems. In Advances in Software Engineering, pp , Springer-Verlag New York Inc., New York, NY, USA, [7] Dagenais, Michel; Merlo, Ettore; Lague, Bruno and Proulx, Daniel; Clones Ocurrence in Large Object Oriented Software Packages ; Proceedings of CASCON 98, Toronto, Ontario, Canada, [8] Shaw, Mary; What Makes Good Research in Software Engineering? invited presentation given at ETAPS 2002, Grenoble, France. [9] Toshihiro Kamiya, Shinji Kusumoto, and Katsuro Inoue; CCFinder: A multilinguistic token-based code clone detection system for large scale source code. IEEE Transactions on Software Engineering, 28(7): , July [10] Toshihiro Kamiya; CCFinder File Formats, Gemini/CCFinder documentation. Feb 29, [11] Kapser, Cory and Godfrey, Michael W., Toward a Taxonomy of Clones in Source Code: A Case Study, 2002, School of Computer Science, University of Waterloo. [12] Irimia, Andrei; Enhancing the introductory computer science curriculum: C++ or Java? ; Journal of Computing Sciences, Volume 17, Issue 2 (December 2001), pp , Publisher Consortium for Computing Sciences in Colleges, USA.

16 [13] Prechelt, Lutz; Technical opinion: comparing Java vs. C/C++ efficiency differences to interpersonal differences ; Communications of the ACM Volume 42, Issue 10 (October 1999), pp , ACM Press New York, NY, USA. [14] Lewis, J.P. and Neumann, Ulrich; Performance of Java versus C++ ; University of Southern California, Jan [15] Sangappa, Sudhir; Palaniappan, K. and Tollerton, Richard; Benchmarking Java against C/C++ for interactive scientific visualization, Proceedings of the 2002 joint ACM-ISCOPE conference on Java, pp , ACM Press, New York, NY, USA. [16] Mayrand, Jean; Patenaude, Jean-François; Merlo, Ettore; Dagenais, Michel and Laguë, Bruno; Software assessment using metrics: A comparison across large C++ and Java systems ; Annals of Software Engineering, Volume 9, Number 1 2, pp ; Kluwer Academic Publishers B.V.; March [17] Ferrett, L.K. and Offutt, J.; An empirical comparison of modularity of procedural and object-oriented software ; Proceedings of the Eighth IEEE International Conference on Engineering of Complex Computer Systems, [18] El Emam, K. Benlarbi, S. Goel, N. Melo, W. Lounis, H. Rai and S.N.; The optimal class size for object-oriented software IEEE Transactions on Software Engineering, Volume 28, Issue 5; May [19] Sinha, S. and Harrold, M.J.; Analysis and testing of programs with exception handling constructs IEEE Transactions on Software Engineering, Volume 26, Issue 9, pp , Sept [20] Ken Arnold and James Gosling, The Java Programming Language, Addison- Wesley, [21] Nourie, Dana; The Technologies Behind IC An Open-Source Project, Technical Papers, Sun Microsystems, Inc. June [22] Webster, Ilca; COS846 Assignment 2. [23] Ishmail website -

17 Appendix 1 Columba - Function Clones

18 Appendix 2 TTY-Grin - Function Clones

19 Appendix 3 Ishmail Function Clones

20 Appendix 4 Ic - Initialization Clones

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

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

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

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

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

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

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

The goal of this project is to enhance the identification of code duplication which can result in high cost reductions for a minimal price.

The goal of this project is to enhance the identification of code duplication which can result in high cost reductions for a minimal price. Code Duplication New Proposal Dolores Zage, Wayne Zage Ball State University June 1, 2017 July 31, 2018 Long Term Goals The goal of this project is to enhance the identification of code duplication which

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

An Experience Report on Analyzing Industrial Software Systems Using Code Clone Detection Techniques

An Experience Report on Analyzing Industrial Software Systems Using Code Clone Detection Techniques An Experience Report on Analyzing Industrial Software Systems Using Code Clone Detection Techniques Norihiro Yoshida (NAIST) Yoshiki Higo, Shinji Kusumoto, Katsuro Inoue (Osaka University) Outline 1. What

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

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

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

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

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

Identification of Crosscutting Concerns: A Survey

Identification of Crosscutting Concerns: A Survey Identification of Crosscutting Concerns: A Survey Arvinder Kaur University School of IT GGSIP, University, Delhi arvinder70@gmail.com Kalpana Johari CDAC, Noida kalpanajohari@cdacnoida.in Abstract Modularization

More information

Empirical Study on Impact of Developer Collaboration on Source Code

Empirical Study on Impact of Developer Collaboration on Source Code Empirical Study on Impact of Developer Collaboration on Source Code Akshay Chopra University of Waterloo Waterloo, Ontario a22chopr@uwaterloo.ca Parul Verma University of Waterloo Waterloo, Ontario p7verma@uwaterloo.ca

More information

Cloning by Accident?

Cloning by Accident? Cloning by Accident? An Empirical Study of Source Code Cloning Across Software Systems Project Report for CS 846: Software Evolution and Design Winter 2005 By Raihan Al-Ekram, rekram@swag.uwaterloo.ca

More information

Lecture 25 Clone Detection CCFinder. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim

Lecture 25 Clone Detection CCFinder. EE 382V Spring 2009 Software Evolution - Instructor Miryung Kim Lecture 25 Clone Detection CCFinder Today s Agenda (1) Recap of Polymetric Views Class Presentation Suchitra (advocate) Reza (skeptic) Today s Agenda (2) CCFinder, Kamiya et al. TSE 2002 Recap of Polymetric

More information

code pattern analysis of object-oriented programming languages

code pattern analysis of object-oriented programming languages code pattern analysis of object-oriented programming languages by Xubo Miao A thesis submitted to the School of Computing in conformity with the requirements for the degree of Master of Science Queen s

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

A Novel Ontology Metric Approach for Code Clone Detection Using FusionTechnique

A Novel Ontology Metric Approach for Code Clone Detection Using FusionTechnique A Novel Ontology Metric Approach for Code Clone Detection Using FusionTechnique 1 Syed MohdFazalulHaque, 2 Dr. V Srikanth, 3 Dr. E. Sreenivasa Reddy 1 Maulana Azad National Urdu University, 2 Professor,

More information

Evaluating Software Maintenance Cost Using Functional Redundancy Metrics

Evaluating Software Maintenance Cost Using Functional Redundancy Metrics 1 Evaluating Software Maintenance Cost Using Functional Redundancy Metrics Takeo Imai, Yoshio Kataoka, Tetsuji Fukaya System Engineering Laboratory Corporate Research & Development Center Toshiba Corp.

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

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

Multi-Paradigm Approach for Teaching Programming

Multi-Paradigm Approach for Teaching Programming Multi-Paradigm Approach for Teaching Laxmi P Gewali* and John T Minor School of Computer Science University of Nevada, Las Vegas 4505 Maryland Parkway, Las Vegas Nevada 89154 Abstract: Selecting an appropriate

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

A PARSING APPROACH FOR SYSTEM BEHAVIOUR MODELING

A PARSING APPROACH FOR SYSTEM BEHAVIOUR MODELING IADIS International Conference Applied Computing 2007 A PARSING APPROACH FOR SYSTEM BEHAVIOUR MODELING Lau Sei Ping 1, Wee Bui Lin 2, Nurfauza bt Jali 3 Faculty of Computer Science and Information Technology

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

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

How are Developers Treating License Inconsistency Issues? A Case Study on License Inconsistency Evolution in FOSS Projects

How are Developers Treating License Inconsistency Issues? A Case Study on License Inconsistency Evolution in FOSS Projects How are Developers Treating License Inconsistency Issues? A Case Study on License Inconsistency Evolution in FOSS Projects Yuhao Wu 1(B), Yuki Manabe 2, Daniel M. German 3, and Katsuro Inoue 1 1 Graduate

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

International Journal for Management Science And Technology (IJMST)

International Journal for Management Science And Technology (IJMST) Volume 4; Issue 03 Manuscript- 1 ISSN: 2320-8848 (Online) ISSN: 2321-0362 (Print) International Journal for Management Science And Technology (IJMST) GENERATION OF SOURCE CODE SUMMARY BY AUTOMATIC IDENTIFICATION

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

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

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

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

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

Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department

Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department Al al-bayt University Prince Hussein Bin Abdullah College for Information Technology Computer Science Department 0901212 Python Programming 1 st Semester 2014/2015 Course Catalog This course introduces

More information

Evaluation and Design Issues of Nordic DC Metadata Creation Tool

Evaluation and Design Issues of Nordic DC Metadata Creation Tool Evaluation and Design Issues of Nordic DC Metadata Creation Tool Preben Hansen SICS Swedish Institute of computer Science Box 1264, SE-164 29 Kista, Sweden preben@sics.se Abstract This paper presents results

More information

MACHINE LEARNING BASED METHODOLOGY FOR TESTING OBJECT ORIENTED APPLICATIONS

MACHINE LEARNING BASED METHODOLOGY FOR TESTING OBJECT ORIENTED APPLICATIONS MACHINE LEARNING BASED METHODOLOGY FOR TESTING OBJECT ORIENTED APPLICATIONS N. Kannadhasan and B. Uma Maheswari Department of Master of Computer Applications St. Joseph s College of Engineering, Chennai,

More information

KClone: A Proposed Approach to Fast Precise Code Clone Detection

KClone: A Proposed Approach to Fast Precise Code Clone Detection KClone: A Proposed Approach to Fast Precise Code Clone Detection Yue Jia 1, David Binkley 2, Mark Harman 1, Jens Krinke 1 and Makoto Matsushita 3 1 King s College London 2 Loyola College in Maryland 3

More information

Software Architecture Recovery based on Dynamic Analysis

Software Architecture Recovery based on Dynamic Analysis Software Architecture Recovery based on Dynamic Analysis Aline Vasconcelos 1,2, Cláudia Werner 1 1 COPPE/UFRJ System Engineering and Computer Science Program P.O. Box 68511 ZIP 21945-970 Rio de Janeiro

More information

Java Learning Object Ontology

Java Learning Object Ontology Java Learning Object Ontology Ming-Che Lee, Ding Yen Ye & Tzone I Wang Laboratory of Intelligent Network Applications Department of Engineering Science National Chung Kung University Taiwan limingche@hotmail.com,

More information

Taxonomy Dimensions of Complexity Metrics

Taxonomy Dimensions of Complexity Metrics 96 Int'l Conf. Software Eng. Research and Practice SERP'15 Taxonomy Dimensions of Complexity Metrics Bouchaib Falah 1, Kenneth Magel 2 1 Al Akhawayn University, Ifrane, Morocco, 2 North Dakota State University,

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

IJREAS Volume 2, Issue 2 (February 2012) ISSN: SOFTWARE CLONING IN EXTREME PROGRAMMING ENVIRONMENT ABSTRACT

IJREAS Volume 2, Issue 2 (February 2012) ISSN: SOFTWARE CLONING IN EXTREME PROGRAMMING ENVIRONMENT ABSTRACT SOFTWARE CLONING IN EXTREME PROGRAMMING ENVIRONMENT Ginika Mahajan* Ashima** ABSTRACT Software systems are evolving by adding new functions and modifying existing functions over time. Through the evolution,

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

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science)

Lecture 09. Ada to Software Engineering. Mr. Mubashir Ali Lecturer (Dept. of Computer Science) Lecture 09 Ada to Software Engineering Mr. Mubashir Ali Lecturer (Dept. of dr.mubashirali1@gmail.com 1 Summary of Previous Lecture 1. ALGOL 68 2. COBOL 60 3. PL/1 4. BASIC 5. Early Dynamic Languages 6.

More information

PerlDSM: A Distributed Shared Memory System for Perl

PerlDSM: A Distributed Shared Memory System for Perl PerlDSM: A Distributed Shared Memory System for Perl Norman Matloff University of California, Davis matloff@cs.ucdavis.edu Abstract A suite of Perl utilities is presented for enabling Perl language programming

More information

Chapter 1. Preliminaries

Chapter 1. Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

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

JAVA An overview for C++ programmers

JAVA An overview for C++ programmers JAVA An overview for C++ programmers Wagner Truppel wagner@cs.ucr.edu edu March 1st, 2004 The early history James Gosling, Sun Microsystems Not the usual start for a prog.. language Consumer electronics,

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

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

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++

Course Text. Course Description. Course Objectives. StraighterLine Introduction to Programming in C++ Introduction to Programming in C++ Course Text Programming in C++, Zyante, Fall 2013 edition. Course book provided along with the course. Course Description This course introduces programming in C++ and

More information

Empirical Evaluation and Critical Review of Complexity Metrics for Software Components

Empirical Evaluation and Critical Review of Complexity Metrics for Software Components Proceedings of the 6th WSEAS Int. Conf. on Software Engineering, Parallel and Distributed Systems, Corfu Island, Greece, February 16-19, 2007 24 Empirical Evaluation and Critical Review of Complexity Metrics

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

A Tagging Approach to Ontology Mapping

A Tagging Approach to Ontology Mapping A Tagging Approach to Ontology Mapping Colm Conroy 1, Declan O'Sullivan 1, Dave Lewis 1 1 Knowledge and Data Engineering Group, Trinity College Dublin {coconroy,declan.osullivan,dave.lewis}@cs.tcd.ie Abstract.

More information

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia

Object Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia Object Oriented Programming in Java Jaanus Pöial, PhD Tallinn, Estonia Motivation for Object Oriented Programming Decrease complexity (use layers of abstraction, interfaces, modularity,...) Reuse existing

More information

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering Practical Software Development using UML and Java. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized

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

Scalable Coding of Image Collections with Embedded Descriptors

Scalable Coding of Image Collections with Embedded Descriptors Scalable Coding of Image Collections with Embedded Descriptors N. Adami, A. Boschetti, R. Leonardi, P. Migliorati Department of Electronic for Automation, University of Brescia Via Branze, 38, Brescia,

More information

Software Language Engineering of Architectural Viewpoints

Software Language Engineering of Architectural Viewpoints Software Language Engineering of Architectural Viewpoints Elif Demirli and Bedir Tekinerdogan Department of Computer Engineering, Bilkent University, Ankara 06800, Turkey {demirli,bedir}@cs.bilkent.edu.tr

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

ExMAn: A Generic and Customizable Framework for Experimental Mutation Analysis 1

ExMAn: A Generic and Customizable Framework for Experimental Mutation Analysis 1 ExMAn: A Generic and Customizable Framework for Experimental Mutation Analysis 1 Jeremy S. Bradbury, James R. Cordy, Juergen Dingel School of Computing, Queen s University Kingston, Ontario, Canada {bradbury,

More information

Chapter 1. Preliminaries

Chapter 1. Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

More information

Eclipse Support for Using Eli and Teaching Programming Languages

Eclipse Support for Using Eli and Teaching Programming Languages Electronic Notes in Theoretical Computer Science 141 (2005) 189 194 www.elsevier.com/locate/entcs Eclipse Support for Using Eli and Teaching Programming Languages Anthony M. Sloane 1,2 Department of Computing

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

Ontology Matching with CIDER: Evaluation Report for the OAEI 2008

Ontology Matching with CIDER: Evaluation Report for the OAEI 2008 Ontology Matching with CIDER: Evaluation Report for the OAEI 2008 Jorge Gracia, Eduardo Mena IIS Department, University of Zaragoza, Spain {jogracia,emena}@unizar.es Abstract. Ontology matching, the task

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

A Comparison of Text-Categorization Methods applied to N-Gram Frequency Statistics

A Comparison of Text-Categorization Methods applied to N-Gram Frequency Statistics A Comparison of Text-Categorization Methods applied to N-Gram Frequency Statistics Helmut Berger and Dieter Merkl 2 Faculty of Information Technology, University of Technology, Sydney, NSW, Australia hberger@it.uts.edu.au

More information

Er. Himanshi Vashisht, Sanjay Bharadwaj, Sushma Sharma

Er. Himanshi Vashisht, Sanjay Bharadwaj, Sushma Sharma International Journal Scientific Research in Computer Science, Engineering and Information Technology 2018 IJSRCSEIT Volume 3 Issue 8 ISSN : 2456-3307 DOI : https://doi.org/10.32628/cseit183833 Impact

More information

Evaluating the Evolution of a C Application

Evaluating the Evolution of a C Application Evaluating the Evolution of a C Application Elizabeth Burd, Malcolm Munro Liz.Burd@dur.ac.uk The Centre for Software Maintenance University of Durham South Road Durham, DH1 3LE, UK Abstract This paper

More information

Change Detection System for the Maintenance of Automated Testing

Change Detection System for the Maintenance of Automated Testing Change Detection System for the Maintenance of Automated Testing Miroslav Bures To cite this version: Miroslav Bures. Change Detection System for the Maintenance of Automated Testing. Mercedes G. Merayo;

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

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

Visual Detection of Duplicated Code

Visual Detection of Duplicated Code Visual Detection of Duplicated Code Matthias Rieger, Stéphane Ducasse Software Composition Group, University of Berne ducasse,rieger@iam.unibe.ch http://www.iam.unibe.ch/scg/ Abstract Code duplication

More information

Research Article Software Clone Detection and Refactoring

Research Article Software Clone Detection and Refactoring ISRN Software Engineering Volume 2013, Article ID 129437, 8 pages http://dx.doi.org/10.1155/2013/129437 Research Article Software Clone Detection and Refactoring Francesca Arcelli Fontana, Marco Zanoni,

More information

From Whence It Came: Detecting Source Code Clones by Analyzing Assembler

From Whence It Came: Detecting Source Code Clones by Analyzing Assembler From Whence It Came: Detecting Source Code Clones by Analyzing Assembler Ian J. Davis and Michael W. Godfrey David R. Cheriton School of Computer Science University of Waterloo Waterloo, Ontario, Canada

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

Chapter 5. Names, Bindings, and Scopes

Chapter 5. Names, Bindings, and Scopes Chapter 5 Names, Bindings, and Scopes Chapter 5 Topics Introduction Names Variables The Concept of Binding Scope Scope and Lifetime Referencing Environments Named Constants 1-2 Introduction Imperative

More information

An approach to quantifying the run-time behaviour of Java GUI applications

An approach to quantifying the run-time behaviour of Java GUI applications An approach to quantifying the run-time behaviour of Java GUI applications Aine Mitchell, James F. Power Abstract This paper outlines a new technique for collecting dynamic trace information from Java

More information

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING 10.2478/cris-2013-0011 PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING NIKOLETTA MINAROVA 77 INTRODUCTION Since the first design concept of computers came into the world,

More information

A System of Patterns for Web Navigation

A System of Patterns for Web Navigation A System of Patterns for Web Navigation Mohammed Abul Khayes Akanda and Daniel M. German Department of Computer Science, University of Victoria, Canada maka@alumni.uvic.ca, dmgerman@uvic.ca Abstract. In

More information

Automated Improvement for Component Reuse

Automated Improvement for Component Reuse Automated Improvement for Component Reuse Muthu Ramachandran School of Computing The Headingley Campus Leeds Metropolitan University LEEDS, UK m.ramachandran@leedsmet.ac.uk Abstract Software component

More information

INCORPORATING ADVANCED PROGRAMMING TECHNIQUES IN THE COMPUTER INFORMATION SYSTEMS CURRICULUM

INCORPORATING ADVANCED PROGRAMMING TECHNIQUES IN THE COMPUTER INFORMATION SYSTEMS CURRICULUM INCORPORATING ADVANCED PROGRAMMING TECHNIQUES IN THE COMPUTER INFORMATION SYSTEMS CURRICULUM Charles S. Saxon, Eastern Michigan University, charles.saxon@emich.edu ABSTRACT Incorporating advanced programming

More information

Testing Component-Based Software

Testing Component-Based Software Testing Component-Based Software Jerry Gao, Ph.D. San Jose State University One Washington Square San Jose, CA 95192-0180 Email:gaojerry@email.sjsu.edu 1 Abstract Today component engineering is gaining

More information

Principles of Programming Languages. Lecture Outline

Principles of Programming Languages. Lecture Outline Principles of Programming Languages CS 492 Lecture 1 Based on Notes by William Albritton 1 Lecture Outline Reasons for studying concepts of programming languages Programming domains Language evaluation

More information

Programmers Life made easy through Smart Source Code Generator

Programmers Life made easy through Smart Source Code Generator International Journal of Engineering& Scientific Research Vol.5 Issue 4, April 2017, ISSN: 2347-6532 Impact Factor: 6.660 JournalHomepage:http://www.ijmra.us,Email:editorijmie@gmail.com Double-Blind Peer

More information

Special Topics: Programming Languages

Special Topics: Programming Languages Lecture #23 0 V22.0490.001 Special Topics: Programming Languages B. Mishra New York University. Lecture # 23 Lecture #23 1 Slide 1 Java: History Spring 1990 April 1991: Naughton, Gosling and Sheridan (

More information

License.

License. License This document is licensed under the terms of the Creative Commons Attribution-Noncommercial 3.0 Germany license. You are allowed to to Share to copy, distribute, and transmit the document to Remix

More information

Déjà Vu: A Hierarchical Case-Based Reasoning System for Software Design

Déjà Vu: A Hierarchical Case-Based Reasoning System for Software Design Déjà Vu: A Hierarchical Case-Based Reasoning System for Software Design Barry Smyth Hitachi Dublin Laboratory Trinity College Dublin 2 Ireland. Tel. 01-6798911 Fax. 01-6798926 E-mail: bsmyth@vax1.tcd.ie

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

AURA: A Hybrid Approach to Identify

AURA: A Hybrid Approach to Identify : A Hybrid to Identify Wei Wu 1, Yann-Gaël Guéhéneuc 1, Giuliano Antoniol 2, and Miryung Kim 3 1 Ptidej Team, DGIGL, École Polytechnique de Montréal, Canada 2 SOCCER Lab, DGIGL, École Polytechnique de

More information

Chapter 1 Preliminaries

Chapter 1 Preliminaries Chapter 1 Preliminaries Chapter 1 Topics Reasons for Studying Concepts of Programming Languages Programming Domains Language Evaluation Criteria Influences on Language Design Language Categories Language

More information

Specification-Based Testing 1

Specification-Based Testing 1 Specification-Based Testing 1 Stuart Anderson Overview 1 Basic terminology A view of faults through failure Systematic versus randomised testing A systematic approach to specification-based testing A simple

More information

SOFTWARE LAYERS AND MEASUREMENT

SOFTWARE LAYERS AND MEASUREMENT SOFTWARE LAYERS AND MEASUREMENT Jean-Marc Desharnais, Software Engineering Laboratory in Applied Metrics Denis St-Pierre, DSA Consulting Inc. Serge Oligny, Laboratoire de recherche en gestion des logiciels

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

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation

Object-Oriented Software Engineering. Chapter 2: Review of Object Orientation Object-Oriented Software Engineering Chapter 2: Review of Object Orientation 2.1 What is Object Orientation? Procedural paradigm: Software is organized around the notion of procedures Procedural abstraction

More information