Refactoring Industrial-Strength Code

Size: px
Start display at page:

Download "Refactoring Industrial-Strength Code"

Transcription

1 Refactoring Industrial-Strength Code Refining code toward better design Usman Parvez Department of Computer Science National University of Computer and Emerging Sciences Lahore Pakistan Abstract Good software design leads to a reusable system that is easier to extend and evolve. Better object-oriented design always leads to more modular, flexible and robust system. Factors like time and resource constraints in industry result in compromise of good object-oriented design. Adding features or extending legacy systems is always very difficult. Software Refactoring allows to change the internal structure of a software system without changing its observable behavior. Refactoring doesn t guarantee that the performance of the system would improve but make its maintainable and extensible. In this thesis, we understand an industrial code, identified different code smells and provided appropriated refactoring technique for more readable and modular system. Further we have suggested code smells and there appropriate refactoring technique that have not been listed by Martin Fowler. Keywords-component; Refactoring; Code Smells; Anti Pattern; I. INTRODUCTION In our research we have targeted industrial strength code. The application is in production in several organizations worldwide. The application has evolved drastically and has consumed over 10 man-years. It has been developed using PowerBuilder an IBM Tool for Rapid Application Development. As the application has evolved the design of the application has been compromised resulting into difficult to maintain and inextensible system. The reasons for this were diverse: Multiple Clients input Domain Complexity Incomplete and unstable requirements Frequent changes under pressure of time Underestimation of the complexity Lack of documentation rules Drop out of project leaders Inexperienced developers In our study we focused on understanding the Domain and model it using both the Top down and Bottom up approaches [17]. Further we analyzed and identified code smells that exists in industrial strength code and suggested refactoring techniques for their mitigation. Importance of design can be analyzed in large Enterprise level systems having numerous clients connected. Maintainability and extensibility are the major factors associated with it. Code smells are the symptom in the source code of a program that possibly indicates need of code refactoring. Common code smells found in code are Duplicate Code, Large Method, Large Class, Feature Envy, Inappropriate intimacy, Refused bequest, Lazy class, Duplicated method and Contrived Complexity [8]. Refactoring of code is ensured to remove the code smells. Importance of Refactoring code has been done informally for years. However, The first thesis on program restructuring (Refactoring) was done by Opdyke, William [4][5]. Refactoring is gaining its acceptance among software developers [2] and has been defined as the process of changing a software system in such a ways that results into improved internal quality and preserving its external behavior. The process could be informally referred to as "cleaning up" or "taking out the garbage" [6]. Refactoring neither fixes bugs nor adds new functionality, though it might pave the way either activity but it do improves the understandability of the code, changes its internal structure and design, and removes dead code. In short it refines the original source. Goal. We want to examine the code smells and deterioration of software design due to rapid change in system. We believe that the design of the system is initially developed at the start of the project within 3-6 months of the project life cycle and rest it s the coding that takes part in development. During the development and maintenance phase there is high chance of code deterioration due to change in business domain, frequent changes under pressure of time, inexperience resources and lack of documentation rules, until software design is refactored accordingly. Our study was to identify the code smells in code that are commonly found in industrial code about are not listed and are different than smells listed by Fowler [3-5]. Contribution. We present a case study results by investigating into the code. The exploratory study has resulted into identification of several code smells that have a negative

2 impact on the classes including some of the code smells that are not listed. We propose a refactoring solution for the code smells identified that improves the readability improves code design as well efficiency by eliminating unnecessary conditionings. II. CASE STUDY Our thesis started with a study of an industrial code related to financials domain. Focused area was calculation module that is responsible for all sort of calculations related to accruals, Arrears, rental and amortization calculations. A. Understaning the Domain Prior to start identification of bad smells [8] the objective was to understand the domain by Top down and bottom up approach [17]. We has several sessions with the domain experts and mean while also understand things by code scraping and web content. B. Identification of Code Smells and there Mitigation The calculation module was modified and altered by number of resources due nature of clients, requirement change and domain complexity. As the application evolved it has compromised on design and code quality. Initially we started identification of code smells using automated tools like CCFinder [24] and PBCA[23]. CC Finder is a tool to find duplicate code. It uses token based clone-detecting technique and the metrics [19]. Looking into the CCFinder, PCBA reports and code scraping combination of anti-pattern found was Spaghetti Code and God Class [3-5]. The know code smells illustrated by Folwer [3] found in code were Duplicate Code Large Class Long Method Long parameter List Type Codes Temporary Field Conditional Complexity C. Refactoring Techinques Respective refactoring techniques can be utilized to remove these code smells [5]. For example, Duplicate Code can be removed by Extract Method, Pull-up Field, Form Template Method Extract Class [3]. Similarly, Extract Method, Replace Temp with Query, Introduce Parameter Object, Preserve Whole Object, Replace Method with Method Object, Decompose Conditional for Long Method. Conditional Complexity could be removed by Replace Parameter with Method, Preserve Whole Object, or Introduce Parameter Object [3]. III. RELATED WORK Significant amount of research has been done in field of Code understanding, Identification of Code smell and refactoring. Several approaches for understanding Code have been devised to decrease or at least maintain the cost of understanding the software. Different approaches include Code Understanding Theory, Data-centered versus Control-centered, Code Understanding and Tools [17]. A major contribution in field of identification of code smell and refactoring techniques has been added by Martin Fowler [3][5][8] that has been further extended by K.Bent [8], Riel and Demeyer. Riel has major contribution in identification of antipatterns in the software design. Another major contribution of A.J Riel to object oriented design and refactoring is object- Oriented Design Heuristics [26]. OOD Heuristics are basically are the pattern and practices and experience of the author to improve object oriented design. Serge Demeyer [27] provided a literature in order to guide on how to reverse engineer legacy systems, understand their problems, and then reengineer those systems to meet new demands. Patterns have been used to clarify and explain the process of understanding large code bases, hence transforming them to meet new requirements. Several Methodology and research work has been published for identification of Code Smells that can be categorized as Detection based on lexical analysis [18,19] Detection based on source code metrics [20], Detection based on an abstract syntax tree representation of the system [21], Detection based on isomorphic program dependence graphs [22]. Lientz, Swanson & Tompkins [28] did a study, where they surveyed 69 system and department managers from as many organizations on maintenance effort and activities. Overall, they found the distribution of the maintenance activity to be 18.2 % adaptive, 17.4% corrective, 60.3% perfective and 4.1% other [28]. Current researches include metrics based refactoring which helps in identifying areas to be focused for refactoring. Several tools have been developed for code smells identification and guidance [29-30][23]. Some tools with automated refactoring have also been created. IV. CODE SMELLS AND REFACTORING Although, different authors have provided a list of various code smells, however we have discovered some code smells in this study which has not been provided in the current literature. We list them in this section. Despite of the code smells identified by Fowler we found some patterns that could be refined by refactoring. We believe that these patterns are quite often found in industrial code related to financial applications. Thereby these can be improved by applying the appropriate suggested refactoring technique.

3 A. Branching in a Loop It has been observed in the code that in loop there is sometimes a different logic for the first iteration of loop and different for rest of the iteration, same as it can be seen in the code snippet added below. The branch statement is executed for each iteration unnecessarily. Code Smell Pattern FOR counter = 0 TO maxcount rentalamount[counter + 1] = (period - counter) * Amount IF counter = 0 THEN principalamount[counter + 1] = financedamount - principalamount[counter + 1] ELSE principalamount[counter + 1] = principalamount[counter] - principalamount [counter + 1] END IF NEXT Figure 1. Code smell Branching in a loop In the above code we can see a loop starting from counter 0 to maxcount where maxcount is variable holding value for loop iteration count. The above code basically calculates the rental amount and principal amount for each period. principalamount, FinancedAmount are array of size n where n is number of periods in selected case. It can be observed from the above code snippet Figure 1 that there is different calculation for the first iteration of the code that principalamount[counter + 1] = financedamount - principalamount[counter + 1] is executed only as it is places in a condition where counter is zero. And principalamount[counter + 1] = principalamount[counter] - principalamount [counter + 1] is executed for rest of the iteration. Refactoring This situation can be avoided by simply executing the task of first iteration prior to the execution of the loop. Look into the Figure 2 containing refactored code. The code for the first iteration is placed before the loop that is only focused for the iteration where counter in 0. principalamount[1] = financedamount - principalamount[1] rentalamount[ 1] = (period) * Amount FOR counter = 1 TO maxcount rentalamount[counter + 1] = (period - counter) * Amount principalamount[counter + 1] = principalamount[counter] - principalamount [counter + 1] NEXT Figure 2. Refactoring Branching in a loop The loop is now executed from index 1 instead of 0, as the iteration 0 has been fetched and executed before the loop. Comparing the code in Figure 1 and Figure 2 we can see that Conditioning for index 0 has been removed that has resulted in reducing the complexity of the algorithm by o(n-1). B. Standardzining equations to Eliminate Conditioning It has been observed in some of the cases that the equations can be standardized instead of applying branching into the cases. Look into the code snippet in Figure 3 Code Smell Pattern IF frequency = 4 THEN interst_rate =Truncate((EXP(LOG interst_rate /100 +1)/(1*4))-1)*(1*4), 10) ELSEIF frequency = 1 THEN interst_rate=truncate((exp(log(interst_rate/100 +1)/(1*1))-1)*(1*1), 10) ELSEIF frequency = 2 THEN interst_rate =truncate((exp(log(interst_rate/100 +1)/(1*2))-1)*(1*2), 10) END IF Figure 3. Code Smell for Standardizing Equaiton The above code calculates an interest rate in a financial application based on the frequency period selected. Refactoring By observing the pattern in figure 3 we can analyze the equations in the conditioning statements the pattern is similar except that equation is directly dependent on the frequency of the statement thereby the formula could be simplified to the formula mentioned in Figure 4. By creating generalized formula for this type of case we can now eliminate branch conditioning. interst_rate =Truncate((EXP(LOG(interst_rate/100 +1)/(1*frequency))-1)*(1* frequency), 10) Figure 4. Refactored Code after Standardizing Equaiton

4 C. Replace Conditioning by Matrix Data Structure Another pattern analyzed and repeatedly found in industrial code is nested branching. Use of if within another if can be quite expensive especially if it is also nested within a loop. Have a look into the code snippet below. There is type code Frequency that has several dependent variables on it like interval, divisor, frequency and period, And these value may be constant throughout the application domain hence can be stored at a common location. Code Smell Pattern IF frequncytypecode = '00001' THEN interval = 1 ELSEIF frequncytypecode = '00002' THEN IF mod(period, 3) <> 0 THEN RETURN -2 period = period / 3 interval = 3 ELSEIF frequncytypecode = '00004' THEN IF mod(period, 6) <> 0 THEN RETURN -3 period = period / 6 interval = 6 ELSEIF frequncytypecode = '00003' THEN IF mod(period, 12) <> 0 THEN RETURN -4 period = period / 12 interval = 12 END IF Refactoring Figure 5. Code Smell for Data Centric Conditioning To handle the above pattern we suggest combination of changes. Primarily we suggest a data structure that would be responsible to hold common dependent variable values i.e. in interval, Divisor and frequency. Secondly, to remove nested if statements we present a data structure that need to be populated once throughout the application life and can be reused as key value pair. The data table is created for the formula like period = period / frequency once the application is executed as shown in Figure 6. Now whenever a clients need to access a value what it need is to get the global structure and obtain the value from the object where are period value can be obtained by simply passing the type code and period to it. Frq\ Month Figure 6. Data Table Pattern for One time Values The case IF mod(period, 3) <> 0 THEN RETURN -2 period = period / 3 can be handled by accessing value from data table populated as illustrated above. To obtain the value from the data table we just need a FrequencyTypeCode and Period. Code snippet looks like perioddatatable [<period>][<typecode>] e.g. period = perioddatatable[12] [ 0001 ] Figure 7. Data Table Pattern for One time Values Using the suggested refactoring approach we can achieve reduced Line of code, reduced conditional complexity and ease of access. V. DISCUSSION After more than five month code analysis and identification of code smell lot of code short comings were found that could be removed by refactoring. For our analysis we conducted a show case refactoring. During the refactoring process things we learned from the exercise are 1. Refactoring is harder apply as expected 2. Its time consuming 3. Restructuring of software design is quite doubtful sometimes until it s clear that it would simplify the future change and its ripples or make things more worse. Purely depends on the existing design and exposure to the new design. 4. Overall code short comings are reduced We initially started refactoring of the calculation module by segregating the responsibilities from the god class to its

5 specified classes. After segregation of class with our domain knowledge and code scraping knowledge we restructured the application design by applying appropriate refactoring technique and design pattern. For our study we used two sub modules of calculation engine for matrices calculation and result comparison. We compare the results of the two sub module of calculation engine Amortization and rental calculation before and after applying refactoring technique. Metrics Before After Model 1 Class 3 Classes LOC Method Count 8 23 Avg. Method LOC Unused Variable 19 0 Inline Comments Code Comments Figure 8. Refactoring Branching in a loop From the above matrices (figure 8) you can see the software model has been improved for amortization number of classes has increased for better improve design. Line of code has been drastically reduced by applying refactoring techniques for duplicate code like extracting method and using utility methods. Method counts have increased from 8 to 23, the increase in method count depicts the standardization and segregation of responsibilities that result in more readable and understandable code. Average LOC per method has been reduced from 203 to 70 lines. The line of code per method should be lesser but it was not reduced more in our case study due to increase in complexity and dependency in calculation within code and its data structures. Moreover there were number of unused variables in the code that were removed and similar was the case of Inline and code Comments that were removed where ever possible. Metrics Before After Model 1 Class 3 Classes LOC Method Count Avg. Method LOC Unused Variable 3 0 Inline Comments Code Comments Figure 9. Refactoring Branching in a loop Similarly, the metrics for rent calculation module can be analyzed in figure 9. The above metrics prove that refactoring the code and eliminating code smells always result into better software design. VI. CONCLUSION In this paper, we reported an exploratory study, analyzed the code several times for the identification of the code smells we found hundreds of code smells which provides empirical evidence of the negative impact of code smells on classes due to intensive change in code. This case study supports the inference in the literature that smells may have a negative impact on software evolution. The study also provides evidence to practitioners that they should pay more attention to systems with a high occurrence of smells during development and maintenance [25]. Systems that are changing repeatedly contains a high number of code smells therefore, the cost-of-ownership of such systems will be higher than for other systems, because developers will have to put more effort. ACKNOWLEDGMENT I sincerely thank Dr. Usman Bhatti, Asst. Professor National University of Computer and Emerging Sciences, who initially put forth the idea of writing this thesis. This thesis is result of his initiative and constant motivation. The great inspiration and constant encouragement from Dr. Usman is highly acknowledged. The completion of this thesis could not have been possible without my Parents support and prayers. REFERENCES [1] C. Gopalan, Refactoring Techniques in PB, SYS-CON Media, In September 11, Available: [Accessed: Dec. 5, 2009] [2] N.C. Mendonga, P.H.M. Maia, L.A. Fonseca, R.M.C. Andrade, RefaX: a refactoring framework based on XML Authors, Software Maintenance, Proceedings. 20th IEEE International Conference on. 11/10/2004; DOI: /ICSM [3] F. Martin. Refactoring. Canada: Addison-Wesley. ISBN [4] W.F. Opdyke,. Refactoring Object-Oriented Frameworks, University of Illinois at Urbana-Champaign, Year [5] F. Martin, Etymology Of Refactoring, In September 10, Available: [Accessed: Jan. 3, 2010] [6] Code refactoring, Wikipedia.com, Available: [Accessed: Jan. 13, 2010] [7] R. C. Martin, "Refactoring," in Title: Agile Software Development, Principles, Patterns, and Practices, 1st Edition. Publisher: Edition Prentice Hall, October 15, 2002, pp. inclusive page numbers [8] M. Fowler and K. Beck, "Bad Smells in Code," in Refactoring: Improving the Design of Existing Code, Addison-Wesley, 2000, pp [9] PowerBuilder, Wikipedia.com, Available: [Accessed: Jan. 13, 2010] [10] PowerBuilder A rich Application Development Tool, Sybase, Available:

6 [Accessed: December. 05, 2009] [11] Emerson Murphy-Hill, A. P. Black, "Refactoring Tools: Fitness for Purpose," IEEE Software, vol. 25, no. 5, pp , Sep./Oct. 2008, doi: /ms [12] W. Kadir and P. Loucopoulos. Relating evolving business rules to software design. In Int. Conf. on Software Engineering and Practice (SERP), volume 1, pages , Las Vegas, NV, June CSREA Press [13] M. Lehman. The programming process. Technical Report RC2722, IBM Research Centre, Yorktown Heights, NY, Sept [14] M. Lehman. Software evolution threat and challenge. Professorial and Jubilee Lecture, Oct th international Stevens Award, hosted by ICSM [15] M. Pizka, Straightening Spaghetti-Code with Refactoring?, In Proceedings of the Int. Conf. on Software Engineering Research and Practice SERP, 2004 [16] Software Design, Wikipedia.com, Available: [Accessed: Jan. 20, 2010] [17] H. Yang, P. Luker, W. C. Chu, "Code Understanding through Program Transformation for Reusable Component Identification," wpc, pp.148, 5th International Workshop on Program Comprehension (WPC '97), 1997 [18] B. S. Baker. A Program for Identifying Duplicated Code. Computing Science and Statistics, 24:49 57, [19] T. Kamiya, S.i Kusumoto, and K. Inoue. Ccfinder: A MultilinguisticToken-based Code Clone Detection System for Large Scale Source Code. IEEE Trans. Softw. Eng., 28(7): , [20] J. Mayrand, C. Leblanc, and E. Merlo. Experiment on the Automatic Detection of Function Clones in a Software System Using Metrics. In ICSM 96: Proceeding of the 1996 International Conference on Software Maintenance, page 244, Washington, DC USA, IEEE Computer Society. [21] I. D. Baxter, A. Yahin, L. Moura, Marcelo Sant Anna, and Lorraine Bier. Clone Detection Using Abstract Syntax Trees. In ICSM 98: Proceedings of the InternationalConference on Software Maintenance, page 368, Washington, DC, USA, IEEE Computer Society. [22] J. Krinke. Identifying Similar Code with Program Dependence Graphs. In WCRE 01: Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE 01), page 301, Washington, DC, USA, IEEE Computer Society. [23] PB Code Analyzer, Ecocion.com, Available: [Accessed: Feb. 21, 2010] [24] CC Finder Official Site, CCFinder.net, Available: [Accessed: Dec. 20, 2009] [25] F. Khomh, M. D. Penta, Y. Gueheneuc An Exploratory Study of the Impact of Code Smells on Software Change-proneness, Proceedings of the th Working Conference on Reverse Engineering; Year 2009; Pages: [26] A.J Riel, Object-Oriented Design Heuristics, 1st edition, Year: 1996; ISBN: X [27] S. Demeyer, S. Ducasse, O. Nierstrasz; Object-Oriented Reengineering Patterns; Publisher: Morgan Kaufmann; 1st edition; Published 2002; ISBN-13: [28] S.R. Schach, B.Jin, G.Z. Heller; Determining the Distribution of Maintenance Categories: Survey versus Empirical Study; Volume 8, Issue 4; Year: 2003 [29] D.Binkley, M. Ceccato, Mark Harman, F. Ricca, Paolo Tonella, "Tool- Supported Refactoring of Existing Object-Oriented Code into Aspects," IEEE Transactions on Software Engineering, vol. 32, no. 9, pp , Sept. 2006, doi: /tse [30] Herbold, S. Grabowski, J. Neukirchen Automated Refactoring Suggestions Using the Results of Code Analysis Tools; Advances in System Testing and Validation Lifecycle, VALID '09. First International Conference on Issue Date: Sept Page(s):

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

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

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

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

Software Reengineering P1: Intro & Organization. Martin Pinzger Delft University of Technology

Software Reengineering P1: Intro & Organization. Martin Pinzger Delft University of Technology Software Reengineering P1: Intro & Organization Martin Pinzger Delft University of Technology Greenfield software development 2 Non-greenfield software development? 3 How often did you...... encounter

More information

Imagine you ve written a piece of code but then accidentally deleted and lost it.

Imagine you ve written a piece of code but then accidentally deleted and lost it. Why Refactor? Imagine you ve written a piece of code but then accidentally deleted and lost it. Questions: How much time would it take you to reconstruct from scratch what you had the same amount, or more,

More information

Administrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004

Administrivia. Programming Language Fall Example. Evolving Software. Project 3 coming out Midterm October 28. Refactoring October 14, 2004 CMSC 433 Programming Language Fall 2004 Project 3 coming out Midterm October 28 Administrivia Refactoring October 14, 2004 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing

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

Evolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring

Evolving Software. CMSC 433 Programming Language Technologies and Paradigms Spring Example. Some Motivations for This Refactoring CMSC 433 Programming Language Technologies and Paradigms Spring 2007 Refactoring April 24, 2007 Lots of material taken from Fowler, Refactoring: Improving the Design of Existing Code 1 Evolving Software

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

Refactoring Framework for Instance Code Smell Detection

Refactoring Framework for Instance Code Smell Detection International Journal of Advanced Research in Computer Engineering & Technology (IJARCET) Refactoring Framework for Instance Code Smell Detection D. Raj Kumar, G.M. Chanakya Abstract Code and design smells

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 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

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

Exploring Software Refactoring Decisions in a Lean Startup

Exploring Software Refactoring Decisions in a Lean Startup Ömer Furkan Tercan Exploring Software Refactoring Decisions in a Lean Startup School of Science Thesis submitted for examination for the degree of Master of Science in Technology. Espoo 30.11.2015 Thesis

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

Patterns in Software Engineering

Patterns in Software Engineering Patterns in Software Engineering Lecturer: Raman Ramsin Lecture 10 Refactoring Patterns Part 1 1 Refactoring: Definition Refactoring: A change made to the internal structure of software to make it easier

More information

Refactoring. Chen Tang March 3, 2004

Refactoring. Chen Tang March 3, 2004 Refactoring Chen Tang March 3, 2004 What Is Refactoring (Definition) Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet

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

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

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

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

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

Analysis of the Test Driven Development by Example

Analysis of the Test Driven Development by Example Computer Science and Applications 1 (2013) 5-13 Aleksandar Bulajic and Radoslav Stojic The Faculty of Information Technology, Metropolitan University, Belgrade, 11000, Serbia Received: June 18, 2013 /

More information

Classification and Summarization of Software Refactoring Researches: A Literature Review Approach

Classification and Summarization of Software Refactoring Researches: A Literature Review Approach , pp.279-284 http://dx.doi.org/10.14257/astl.2014.46.59 Classification and Summarization of Software Refactoring Researches: A Literature Review Approach Mesfin Abebe and Cheol-Jung Yoo Chonbuk National

More information

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion

Refactorings. Refactoring. Refactoring Strategy. Demonstration: Refactoring and Reverse Engineering. Conclusion Refactorings Refactoring What is it? Why is it necessary? Examples Tool support Refactoring Strategy Code Smells Examples of Cure Demonstration: Refactoring and Reverse Engineering Refactor to Understand

More information

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture

Credit where Credit is Due. Lecture 25: Refactoring. Goals for this lecture. Last Lecture Credit where Credit is Due Lecture 25: Refactoring Kenneth M. Anderson Object-Oriented Analysis and Design CSCI 6448 - Spring Semester, 2002 Some of the material for this lecture and lecture 26 is taken

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

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

COURSE 11 DESIGN PATTERNS

COURSE 11 DESIGN PATTERNS COURSE 11 DESIGN PATTERNS PREVIOUS COURSE J2EE Design Patterns CURRENT COURSE Refactoring Way refactoring Some refactoring examples SOFTWARE EVOLUTION Problem: You need to modify existing code extend/adapt/correct/

More information

What Kinds of Refactorings are Co-occurred? An Analysis of Eclipse Usage Datasets

What Kinds of Refactorings are Co-occurred? An Analysis of Eclipse Usage Datasets 2014 6th International Workshop on Empirical Software Engineering in Practice What Kinds of Refactorings are Co-occurred? An Analysis of Eclipse Usage Datasets Tsubasa Saika 1, Eunjong Choi 1, Norihiro

More information

Restructuring. What is restructuring? Tudor Gîrba Reengineering life cycle. What? forward engineering. reverse engineering

Restructuring. What is restructuring? Tudor Gîrba   Reengineering life cycle. What? forward engineering. reverse engineering Restructuring Tudor Gîrba www.tudorgirba.com Reengineering life cycle Reengineering... is the examination and alteration of a subject system to reconstitute it in a new form and the subsequent implementation

More information

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis.

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis. SOFTWARE ENGINEERING SOFTWARE EVOLUTION Saulius Ragaišis saulius.ragaisis@mif.vu.lt CSC2008 SE Software Evolution Learning Objectives: Identify the principal issues associated with software evolution and

More information

McCa!"s Triangle of Quality

McCa!s Triangle of Quality McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency

More information

AntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation

AntiPatterns. EEC 421/521: Software Engineering. AntiPatterns: Structure. AntiPatterns: Motivation AntiPatterns EEC 421/521: Software Engineering Definition: An AntiPattern describes a commonly occurring solution to a problem that generates decidedly negative consequences Refactoring Reference: Refactoring

More information

Software Design COSC 4353/6353 D R. R A J S I N G H

Software Design COSC 4353/6353 D R. R A J S I N G H Software Design COSC 4353/6353 D R. R A J S I N G H Week 5 Refactoring What is Refactoring? Code Smells Why Refactoring? Techniques IDEs What is Refactoring? Art of improving the design of existing code

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

Fascinating Observation Monitor-based Clamant Code Smell Detection Using Python

Fascinating Observation Monitor-based Clamant Code Smell Detection Using Python Fascinating Observation Monitor-based Clamant Code Smell Detection Using Python M.Sangeetha 1, Dr. P.Sengottuvelan 2 M. Sangeetha, Ph.D Research scholar, Department of computer science, Periyar University

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

Objectives: On completion of this project the student should be able to:

Objectives: On completion of this project the student should be able to: ENGI-0655/5232 Software Construction and Evolution Project 1 Reverse Engineering Refactoring & Object Oriented Design Due date November 10, 2009-4:00 pm 1. Aims The aim of this project is to give you more

More information

Sub-clones: Considering the Part Rather than the Whole

Sub-clones: Considering the Part Rather than the Whole Sub-clones: Considering the Part Rather than the Whole Robert Tairas 1 and Jeff Gray 2 1 Department of Computer and Information Sciences, University of Alabama at Birmingham, Birmingham, AL 2 Department

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

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

Specification and Automated Detection of Code Smells using OCL

Specification and Automated Detection of Code Smells using OCL Specification and Automated Detection of Code Smells using OCL Tae-Woong Kim 1, Tae-Gong Kim 2 and Jai-Hyun Seu 3 School of Computer Engineering, Inje University, Obang-dong 607, Gimhae, Gyeong-Nam, Korea

More information

Refactoring. George Dinwiddie idia Computing, LLC

Refactoring. George Dinwiddie idia Computing, LLC Refactoring George Dinwiddie idia Computing, LLC http://idiacomputing.com http://blog.gdinwiddie.com What is Refactoring? Refactoring is a disciplined technique for restructuring an existing body of code,

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

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

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

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

Implementing evolution: Refactoring

Implementing evolution: Refactoring 2IS55 Software Evolution Sources Implementing evolution: Refactoring Alexander Serebrenik / SET / W&I 17-5-2010 PAGE 1 Last week Problem: changing code is difficult Assignment 6 Deadline: Today Assignment

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

Model refactoring within a Sequencer TOMAŽ KOS 1, TOMAŽ KOSAR 2, JURE KNEZ 1, MARJAN MERNIK 2

Model refactoring within a Sequencer TOMAŽ KOS 1, TOMAŽ KOSAR 2, JURE KNEZ 1, MARJAN MERNIK 2 Model refactoring within a Sequencer TOMAŽ KOS 1, TOMAŽ KOSAR 2, JURE KNEZ 1, MARJAN MERNIK 2 1 DEWESoft d.o.o. Gabersko 11a, 1420 Trbovlje SLOVENIA {tomaz.kos, jure.knez}@dewesoft.si http://www.dewesoft.si

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

How We Refactor, and How We Know It

How We Refactor, and How We Know It Emerson Murphy-Hill, Chris Parnin, Andrew P. Black How We Refactor, and How We Know It Urs Fässler 30.03.2010 Urs Fässler () How We Refactor, and How We Know It 30.03.2010 1 / 14 Refactoring Definition

More information

Searching for Refactoring Opportunities to apply the Strategy Pattern

Searching for Refactoring Opportunities to apply the Strategy Pattern Searching for Refactoring Opportunities to apply the Strategy Pattern Guinther de B. Pauli 1, Eduardo K. Piveta 1 1 Programa de Pós Graduação em Informática Universidade Federal de Santa Maria - Santa

More information

Software Evolution. Dr. James A. Bednar. With material from

Software Evolution. Dr. James A. Bednar.  With material from Software Evolution Dr. James A. Bednar jbednar@inf.ed.ac.uk http://homepages.inf.ed.ac.uk/jbednar With material from Massimo Felici, Conrad Hughes, and Perdita Stevens SAPM Spring 2012: Evolution 1 Software

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

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

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

Effectiveness of Code Refactoring Techniques for Energy Consumption in a Mobile Environment

Effectiveness of Code Refactoring Techniques for Energy Consumption in a Mobile Environment Int'l Conf. Software Eng. Research and Practice SERP'18 165 Effectiveness of Code Refactoring Techniques for Energy Consumption in a Mobile Environment O. Barack and L. Huang Department of Computer Science

More information

CSC 408F/CSC2105F Lecture Notes

CSC 408F/CSC2105F Lecture Notes CSC 408F/CSC2105F Lecture Notes These lecture notes are provided for the personal use of students taking CSC 408H/CSC 2105H in the Fall term 2004/2005 at the University of Toronto. Copying for purposes

More information

Designing with patterns - Refactoring. What is Refactoring?

Designing with patterns - Refactoring. What is Refactoring? Designing with patterns - Refactoring Bottom up based application of patterns Improving the design after it has been written What is Refactoring? Two definitions, the object and act of change in software

More information

Towards the Code Clone Analysis in Heterogeneous Software Products

Towards the Code Clone Analysis in Heterogeneous Software Products Towards the Code Clone Analysis in Heterogeneous Software Products 11 TIJANA VISLAVSKI, ZORAN BUDIMAC AND GORDANA RAKIĆ, University of Novi Sad Code clones are parts of source code that were usually created

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

Living and Working with Aging Software. Ralph Johnson. University of Illinois at Urbana-Champaign

Living and Working with Aging Software. Ralph Johnson. University of Illinois at Urbana-Champaign Living and Working with Aging Software Ralph Johnson University of Illinois at Urbana-Champaign rjohnson@illinois.edu Old software gets brittle n n Hard to change Hard to understand Software should be

More information

Introduction to Software Engineering (ESE : Einführung in SE) Prof. O. Nierstrasz

Introduction to Software Engineering (ESE : Einführung in SE) Prof. O. Nierstrasz Introduction to Software Engineering (ESE : Einführung in SE) Prof. O. Nierstrasz ESE Introduction Lecturer Assistants Lectures Exercises WWW Prof. Oscar Nierstrasz scg.unibe.ch/oscar Erwann Wernli Aaron

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

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

Improving Evolvability through Refactoring

Improving Evolvability through Refactoring Improving Evolvability through Refactoring Jacek Ratzinger, Michael Fischer Vienna University of Technology Institute of Information Systems A-1040 Vienna, Austria {ratzinger,fischer}@infosys.tuwien.ac.at

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

Understading Refactorings

Understading Refactorings Understading Refactorings Ricardo Terra terra@dcc.ufmg.br Marco Túlio Valente mtov@dcc.ufmg.br UFMG, 2010 UFMG, 2010 Understanding Refactorings 1 / 36 Agenda 1 Overview 2 Refactoring 3 Final Considerations

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

How Often and What StackOverflow Posts Do Developers Reference in Their GitHub Projects?

How Often and What StackOverflow Posts Do Developers Reference in Their GitHub Projects? How Often and What StackOverflow Posts Do Developers Reference in Their GitHub Projects? Saraj Singh Manes School of Computer Science Carleton University Ottawa, Canada sarajmanes@cmail.carleton.ca Olga

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

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

CHAPTER 11 Refactoring

CHAPTER 11 Refactoring CHAPTER 11 Refactoring Introduction When, Why, What? Which Refactoring Tools? Demonstration: Internet Banking Iterative Development Life-cycle Prototype Consolidation: design review Expansion: concurrent

More information

DAT159 Refactoring (Introduction)

DAT159 Refactoring (Introduction) DAT159 Refactoring (Introduction) Volker Stolz 1, with contributions by: Larissa Braz 2, Anna M. Eilertsen 3, Fernando Macías 1, Rohit Gheyi 2 Western Norway University of Applied Sciences, Universidade

More information

Refactoring, 2nd Ed. A love story. Michael Hunger

Refactoring, 2nd Ed. A love story. Michael Hunger Refactoring, 2nd Ed. A love story Michael Hunger Michael Hunger Open Sourcerer Neo4j @mesirii It crashed at 940! I know what you're here for! Covers By: dev.to/rly Which Refactoring do you like most? Extract

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

An Object Oriented Runtime Complexity Metric based on Iterative Decision Points

An Object Oriented Runtime Complexity Metric based on Iterative Decision Points An Object Oriented Runtime Complexity Metric based on Iterative Amr F. Desouky 1, Letha H. Etzkorn 2 1 Computer Science Department, University of Alabama in Huntsville, Huntsville, AL, USA 2 Computer Science

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

Code Smells & Refactoring

Code Smells & Refactoring Material and some slide content from: - Mehdi Amoui Kalareh - Fowler Refactoring book Code Smells & Refactoring Reid Holmes Lecture 18 - Tuesday November 22 2011. Program restructuring Software systems

More information

Usability Evaluation as a Component of the OPEN Development Framework

Usability Evaluation as a Component of the OPEN Development Framework Usability Evaluation as a Component of the OPEN Development Framework John Eklund Access Testing Centre and The University of Sydney 112 Alexander Street, Crows Nest NSW 2065 Australia johne@testingcentre.com

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

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

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

Automated Approach for Anti-Pattern Detection

Automated Approach for Anti-Pattern Detection Automated Approach for Anti-Pattern Detection Neha Nanda Computer Science and Engineering Lovely Professional University, Phagwara, Punjab, India nehananda50@gmail.com Rohitt Sharma Computer Science and

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

CHAPTER 11 Refactoring

CHAPTER 11 Refactoring CHAPTER 11 Refactoring Introduction When, Why, What? Which Refactoring Tools? Demonstration: Internet Banking Iterative Development Life-cycle Prototype Consolidation: design review Expansion: concurrent

More information

Reverse Software Engineering Using UML tools Jalak Vora 1 Ravi Zala 2

Reverse Software Engineering Using UML tools Jalak Vora 1 Ravi Zala 2 IJSRD - International Journal for Scientific Research & Development Vol. 2, Issue 03, 2014 ISSN (online): 2321-0613 Reverse Software Engineering Using UML tools Jalak Vora 1 Ravi Zala 2 1, 2 Department

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

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

Refactoring. Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11. University of Colorado, 2011

Refactoring. Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11. University of Colorado, 2011 Refactoring Kenneth M. Anderson University of Colorado, Boulder CSCI 4448/5448 Lecture 27 11/29/11 University of Colorado, 2011 Credit where Credit is Due Some of the material for this lecture is taken

More information

Source Code Rejuvenation is not Refactoring

Source Code Rejuvenation is not Refactoring Source Code Rejuvenation is not Refactoring Peter Pirkelbauer Damian Dechev Bjarne Stroustrup Texas A&M University SOFSEM 2010 Parasol Lab (Texas A&M) Source Code Rejuvenation is not Refactoring Jan 25

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 and Er. Rupinder Singh 2 1 Research Scholar, Dept. of Computer Science and Engineering, Chandigarh University, Gharuan, India (Email: Pardeepdharni664@gmail.com)

More information

Abstract: Refactorings are used to improve the internal structure of software without changing its external behavior.

Abstract: Refactorings are used to improve the internal structure of software without changing its external behavior. Refactoring: Risks and its Effects on Software Quality Attribute Ramesh Kumar, Dr.Rajesh Verma Research Scholar, Department of Computer Science, Singhania University, Rajasthan. Asst. Professor, Department

More information

Code Smells & Refactoring

Code Smells & Refactoring Material and some slide content from: - Mehdi Amoui Kalareh SERVICES COMPONENTS OBJECTS MODULES Code Smells & Refactoring Reid Holmes Lecture 21 - Thursday November 25 2010. Program restructuring Software

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

Aspect Design Pattern for Non Functional Requirements

Aspect Design Pattern for Non Functional Requirements Aspect Design Pattern for Non Functional Requirements FAZAL-E-AMIN¹, ANSAR SIDDIQ², HAFIZ FAROOQ AHMAD³ ¹ ²International Islamic University Islamabad, Pakistan ³NUST Institute of Information Technology,

More information