A Study of Bad Smells in Code

Size: px
Start display at page:

Download "A Study of Bad Smells in Code"

Transcription

1 International Journal for Science and Emerging ISSN No. (Online): Technologies with Latest Trends 7(1): (2013) ISSN No. (Print): A Study of Bad Smells in Code Gurpreet Singh* and Vinay Chopra** *M.Tech Student Department of Computer Science and Engineering, D A V I E T. **Asst. Prof. Department of Department of Computer Science and Engineering, D A V I E T. Jalandhar, Punjab, India (Received 16 April 2013 Accepted 22 April 2013) Abstract- Software development is an area which is into action for the last fifteen to twenty years. As rapidly as the software development took place, with the same ratio the trend of analysing the code raised. Code smells are structural characteristics of software that may indicate a code or design problem that makes software hard to evolve and maintain, and may trigger refactoring of code. The presence of code and design smells can have a severe impact on the quality of a program. In this paper it is reviewed that what the researchers had done so far on code smells, how code smells affect certain quality attributes and what are the relevant areas for further improvement. Keywords-Code Smell, Refactoring, Code Smell Detection, Software Quality, Software Evolution, Maintainability. I Introduction The concept of code smell was introduced fowler and beck [1] as an indicator of problems within in the design or code of software by presenting an informal definition of 22 code smells that provide a set of characteristics used as indicator for design flaws with respect to the maintainability of software system. Code smells are structural characteristics of software that may indicate a code or design problem that makes software hard to evolve and maintain, and may trigger refactoring of code [2]. In computer programming, code smell is any symptom in the source code of a program that possibly indicates a deeper problem. Code smells are usually not bugs-they are not technically incorrect and don't currently prevent the program from functioning. Instead, they indicate weaknesses in design that may be slowing down development or increasing the risk of bugs or failures in the future [3]. A code smell can be said as the drawback of the code. The code should not just be sufficient cable of producing the appropriate result but also it should be written in such a format that, it should take minimum effort to produce the appropriate result [4]. Code smell generally indicates that the code should be refactored or the overall design should be re-examined.

2 17 Singh and Chopra II Common Code Smells Following are the summary of bad smells given by Fowler et.al [1]. Duplicated code: means that the same code structure appears in more than one place. Long method: is a method that is too long, so it is difficult to understand, change, or extend. Large class: means that a class is trying to do too much. These classes have too many instances, variables or methods. God class: usually called also design flaw, refer to class that tends to centralise the intelligence of the system. Long parameter list: a long list of parameters in a procedure or function make readability and code quality worse. Feature envy: means that a method is more interested in other class (es) than the one where it is currently located. This method is in the wrong place since it is more tightly coupled to the other class than to the one where it is currently located. Contrived complexity: forced usage of overly complicated design patterns where simpler design would suffice. Complex conditionals: branches that check lots of unrelated conditions and edge cases that don't seem to capture the meaning of a block of code. Primitive obsession: the smell represents a case where primitives are used instead of small classes. Switch statement: the smell means a case where type codes or runtime class type detection are used instead of polymorphism. Data clumps: the smell means that software has data items that often appear together. Temporary fields: the smell means that class has a variable which is only used in some situation. Refused bequest: the smell means that a child class does not fully support all the methods or data it inherits. Lazy class: a class that is doing nothing enough and should be removed. Data class: a class that contain data, but hardly any logic for it. Middle man: it means that a class is delegating most of its tasks to subsequent classes. Divergent change: the smell means that one class need to be continuously changed for different reasons.

3 Singh and Chopra 18 III Drawbacks of Code Smell A major challenge in the modern information society is ensuring the maintainability of increasingly large and complex software systems. Code smells are assumed to indicate bad design that leads to less maintainable code [2]. The software life cycle comprises two major parts; the initial development, followed by the active maintenance and evolution to adapt to user needs. For most other industries, development cost is the major part of the lifetime cost of a project. However for software development it has been found that maintenance and evolution are also critical activities from the cost perspective and might comprise up to 80% of the overall cost and effort [4]. Maintenance costs often can be inflated through poor software design, code incomprehensibility, sloppy and error prone practices, inflexible design structures, bad assumptions etc. Hence, Code smells can make code difficult to understand, alter and enhance. The resources are utilized non-optimally and more memory is consumed that increases effort and time. IV Related Work Fowler et.al [1] gave definitions for 22 different code smells and introduced a technique called refactoring. Refactoring is the process of changing a software system in such a way that it does not alter the external behaviour of code yet improves its internal structure. It is disciplined way to clean up code that minimizes the chances of introducing bugs. They explained how to do refactoring in controlled and efficient manner, and how to go about reworking a bad design into good one. Van Emden, E. et.al [5] presented an approach for automatic detection and visualization of code smell and discussed how this approach can be used in the design of a software inspection tool. They built a prototype named jcosmo in java source code as tool for their approach. Early feedback enables early correction, thereby lowering the development costs and increasing the chances for success. Mantyla, M. et.al [6] authors present a taxonomy that categorise similar bad smells into six classes that is, Bloaters, Object-oriented abusers, Change preventers, Dispensable, Encapsulators, Couplers. It makes the smell more understandable and recognises the relationship between smells. Mantyla [7] studied how code smells evolve over time and how code smell influence the behaviour of infected system element. The analysis was helpful in building tool support.

4 19 Singh and Chopra Khomh, F. et.al [8] proposed a Bayesian approach to manage the uncertainty on whether a class in a program is a smell or not. Bayesian belief networks (BBNs) have been used to specify smell and to detect them in programs. There exist many approaches to specify and detect smells. Most of these approaches are manual [9] or based on rules [10][11][12]Manually detecting bad smells is a time consuming process and strongly depends on developers programming experience. As a consequence, recently, several tools and methodologies have been introduced for automatic detecting bad smells. Most of these methods are metrics based which identify bad smells using different compositions of software metrics. However, Moha et.al. [13] argue that these metric-based methods are insufficient to precisely identify bad smell. Zhang et.al. [14] proposes a pattern based approach to detect bad smells. Their approach defines bad smells as patterns of source code, so that bad smells can be identified through examining these patterns in source code. IV Conclusion and Future Work After studying various research papers on code smells, it is found that code smells affects the quality of software system. A code smell is a hint or the description of a symptom that something has gone wrong somewhere in your code. Numbers of tools has been built for the detection of code smells and were validated on different open source software system. Early feedback enables early correction, thereby lowering the development costs and increasing the chances for success. Code Smells are triggers that make you think, Are you still doing a right thing. Not much of work has been done in automatic removal of code smells. The future work can be done on building a tool that can automatically detect and correct the code smells. V References [1] Fowler, M. and K. Beck, Refactoring: improving the design of existing code. 1999: Addison-Wesley Professional. [2] Fontana, F.A. and Braione, P. and Zanoni, M. Automatic detection of bad smells in code: An experimental assess, Journal of Object Technology, Vol.11 No.2, [3] Web Reference for code smell: [4] Alkhatib, G., The maintenance problem of application software: An empirical analysis, Journal of Software Maintenance: Research and Practice, Vol.4 No.2, pp , 1992, Wiley Online Library. [5] Van Emden, E. and Moonen, L. Java quality assurance by detecting code smells Proceedings of IEEE Ninth Working Conference on Reverse Engineering, pp , 2002.

5 20 Singh and Chopra [6] Mantyla, M. and Vanhanen, J. and Lassenius, C. A taxonomy and an initial empirical study of bad smells in code, International Conference on Software Maintenance, IEEE, pp , [7] M. V. M antyl a. An experiment on subjective evolvability evaluation of object-oriented software: explaining factors and interrater agreement. In Proceedings of the International Symposium on Empirical Software Engineering, pp , [8] Khomh, F. and Vaucher, S. and Gueheneuc, Y.G. and Sahraoui, H. A bayesian approach for the detection of code and design smells, 9th International Conference on Quality Software, IEEE, pp , [9] G. Travassos, F. Shull, M. Fredericks, and V. R. Basili Detecting defects in objectoriented designs: using reading techniques to increase software quality, in Proceedings of the 14 th Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp , ACM Press, [10] E. H. Alikacem and H. Sahraoui. Generic metric extraction framework. In Proceedings of the 16th International Workshop on Software Measurement and Metrik Kongress (IWS-M/MetriKon), pp , [11] R. Marinescu. Detection strategies: Metrics-based rules for detecting design laws, in Proceedings of the 20th International Conference on Software Maintenance, pp , IEEE Computer Society Press, [12] M. J. Munro. Product metrics for automatic identification of bad smell design problems in java source-code, in Proceedings of the 11th International Software Metrics Symposium IEEE Computer Society Press, [13] N. Moha, Y.-G.Gueheneuc, and P. Leduc, Automatic Generation of Detection Algorithm for Design Defects, presented at Automated Software Engineering, ASE, 21 st IEEE/ACM international Conference, [14] Zhang, M. and Baddoo, N. and Wernick, P. and Hall, T. Improving the precision of fowler's definitions of bad smells 32nd Annual IEEE Software Engineering Workshop, pp , 2008.

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

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

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

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

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

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

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 clean up, code standard, maintainability, extendibility, software refactoring, bad smell code.

Keywords Code clean up, code standard, maintainability, extendibility, software refactoring, bad smell code. Volume 7, Issue 5, May 2017 ISSN: 2277 128X International Journal of Advanced Research in Computer Science and Software Engineering Research Paper Available online at: www.ijarcsse.com A Review on Bad

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

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

Analysis of Various Software Metrics Used To Detect Bad Smells

Analysis of Various Software Metrics Used To Detect Bad Smells The International Journal Of Engineering And Science (IJES) Volume 5 Issue 6 Pages PP -14-20 2016 ISSN (e): 2319 1813 ISSN (p): 2319 1805 Analysis of Various Software Metrics Used To Detect Bad Smells

More information

An experience report on using code smells detection tools

An experience report on using code smells detection tools Università degli Studi di Milano Bicocca DISCo Dipartimento di Informatica, Sistemistica e Comunicazione Francesca Arcelli Fontana, Elia Mariani Andrea Morniroli, Raul Sormani, Alberto Tonello RefTest

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

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

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

An Empirical Investigation into Code Smells Elimination Sequences for Energy Efficient Software

An Empirical Investigation into Code Smells Elimination Sequences for Energy Efficient Software An Empirical Investigation into Code Smells Elimination Sequences for Energy Efficient Software A DISSERTATION SUBMITTED IN PARTIAL FULFILLMENT OF THE REQUIREMENT FOR THE AWARD OF THE DEGREE OF MASTER

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

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

Using FCA to Suggest Refactorings to Correct Design Defects

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

More information

CSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke

CSE 403 Lecture 21. Refactoring and Code Maintenance. Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke CSE 403 Lecture 21 Refactoring and Code Maintenance Reading: Code Complete, Ch. 24, by S. McConnell Refactoring, by Fowler/Beck/Brant/Opdyke slides created by Marty Stepp http://www.cs.washington.edu/403/

More information

An Approach for Graphical User Interface Bad Smells Detection

An Approach for Graphical User Interface Bad Smells Detection The final publication is available at Springer via http://dx.doi.org/10.1007/978-3-319-05948-8_19 An Approach for Graphical User Interface Bad Smells Detection J.C. Silva 1 J.C Campos 2 J. Saraiva 2 J.L.

More information

The Legacy Bridge Problem. Douglas Lyon and Chris Huntley

The Legacy Bridge Problem. Douglas Lyon and Chris Huntley The Legacy Bridge Problem by Douglas Lyon and Chris Huntley Abstract We present a way to automate the reuse of legacy systems without multiple-inheritance, copying source code, accessing existing code

More information

An Empirical Study of Architectural Decay in Open-Source Software

An Empirical Study of Architectural Decay in Open-Source Software An Empirical Study of Architectural Decay in Open-Source Software Duc M. Le Annual Research Review 4/2017 Center for Systems and Software Engineering Motivation Explicitly manifest as Issues Problems Implicitly

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

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

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

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

Refactoring and Detection of Bad Smells of Coding Using Larger Scale and Critical Incident Technique

Refactoring and Detection of Bad Smells of Coding Using Larger Scale and Critical Incident Technique Refactoring and Detection of Bad Smells of Coding Using Larger Scale and Critical Incident Technique Dr. P. Suresh 1, S. MuthuKumaran 2 1 HOD, Computer Science, Salem Sowdeshwari College, Salem 2 Assistant

More information

A Systematic Review of Bad Smells Metrics. Luiz Paulo Coelho Ferreira

A Systematic Review of Bad Smells Metrics. Luiz Paulo Coelho Ferreira A Systematic Review of Bad Smells Metrics Luiz Paulo Coelho Ferreira Motivation One of the main goals in Software Engineering is to transform software development in a process predictable and controlled.

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

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

UML Specification and Correction of Object-Oriented Anti-patterns

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

More information

What? reorganising its internal structure

What? reorganising its internal structure What? Improving a computer program by reorganising its internal structure without t altering its external behaviour. (http://dictionary.reference.com/browse/refactoring ) Why? Improves the over all design

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

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

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

Introduction to Software Engineering

Introduction to Software Engineering Introduction to Software Engineering Gérald Monard Ecole GDR CORREL - April 16, 2013 www.monard.info Bibliography Software Engineering, 9th ed. (I. Sommerville, 2010, Pearson) Conduite de projets informatiques,

More information

void printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) {

void printowing(double amount) { printbanner(); printdetails(); void printdetails(double amount) { Refactoring References: Martin Fowler, Refactoring: Improving the Design of Existing Code; ; Bruce Wampler, The Essence of Object-Oriented Oriented Programming with Java and UML A recent OO technique that

More information

INTERNATIONAL JOURNAL OF COMPUTER ENGINEERING & TECHNOLOGY (IJCET) NEED FOR DESIGN PATTERNS AND FRAMEWORKS FOR QUALITY SOFTWARE DEVELOPMENT

INTERNATIONAL JOURNAL OF COMPUTER ENGINEERING & TECHNOLOGY (IJCET) NEED FOR DESIGN PATTERNS AND FRAMEWORKS FOR QUALITY SOFTWARE DEVELOPMENT INTERNATIONAL JOURNAL OF COMPUTER ENGINEERING & TECHNOLOGY (IJCET) International Journal of Computer Engineering and Technology (IJCET), ISSN 0976 6367(Print), ISSN 0976 6367(Print) ISSN 0976 6375(Online)

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

Software LEIC. Lecture 23

Software LEIC. Lecture 23 Software Engineering @ LEIC Lecture 23 Last Lecture Software Architecture Architectural Patterns Application Architectures Software Architecture in the ES+SD Project Today Software Architecture Dependable

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

CSCD01 Engineering Large Software Systems. Refactoring. Joe Bettridge. Winter With thanks to Anya Tafliovich (Based on Refactoring by M.

CSCD01 Engineering Large Software Systems. Refactoring. Joe Bettridge. Winter With thanks to Anya Tafliovich (Based on Refactoring by M. CSCD01 Engineering Large Software Systems Refactoring Joe Bettridge Winter 2018 With thanks to Anya Tafliovich (Based on Refactoring by M. Fowler) What is Refactoring? Process of changing a software system

More information

Research Article Exploring the Eradication of Code Smells: An Empirical and Theoretical Perspective

Research Article Exploring the Eradication of Code Smells: An Empirical and Theoretical Perspective Software Engineering Volume 21, Article ID 8213, 12 pages doi:1.1155/21/8213 Research Article Exploring the Eradication of Code Smells: An Empirical and Theoretical Perspective S. Counsell, 1 R. M. Hierons,

More information

Effect of Principle Component Analysis and Support Vector Machine in Software Fault Prediction

Effect of Principle Component Analysis and Support Vector Machine in Software Fault Prediction International Journal of Computer Trends and Technology (IJCTT) volume 7 number 3 Jan 2014 Effect of Principle Component Analysis and Support Vector Machine in Software Fault Prediction A. Shanthini 1,

More information

Reengineering II. Transforming the System

Reengineering II. Transforming the System Reengineering II Transforming the System Recap: Reverse Engineering We have a detailed impression of the current state We identified the important parts We identified reengineering opportunities We have

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

Influence of Anti-Patterns on Software Maintenance: A Review

Influence of Anti-Patterns on Software Maintenance: A Review Influence of Anti-Patterns on Software Maintenance: A Review Sharanpreet Kaur, Mata Gujri College, Fatehgarh Sahib Punjab, Satwinder Singh Baba Banda Singh Bahadur Engineering College, Fatehgarh Sahib,

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

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

Predicting Source Code Quality with Static Analysis and Machine Learning. Vera Barstad, Morten Goodwin, Terje Gjøsæter

Predicting Source Code Quality with Static Analysis and Machine Learning. Vera Barstad, Morten Goodwin, Terje Gjøsæter Predicting Source Code Quality with Static Analysis and Machine Learning Vera Barstad, Morten Goodwin, Terje Gjøsæter Faculty of Engineering and Science, University of Agder Serviceboks 509, NO-4898 Grimstad,

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

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

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

EmpAnADa Project. Christian Lange. June 4 th, Eindhoven University of Technology, The Netherlands.

EmpAnADa Project. Christian Lange. June 4 th, Eindhoven University of Technology, The Netherlands. EmpAnADa Project C.F.J.Lange@tue.nl June 4 th, 2004 Eindhoven University of Technology, The Netherlands Outline EmpAnADa introduction Part I Completeness and consistency in detail Part II Background UML

More information

Application of Object Oriented Metrics to Java and C Sharp: Comparative Study

Application of Object Oriented Metrics to Java and C Sharp: Comparative Study International Journal of Computer Applications (9 888) Volume 64 No., February Application of Object Oriented Metrics to Java and C Sharp: Comparative Study Arti Chhikara Maharaja Agrasen College,Delhi,India

More information

Software Evolution: An Empirical Study of Mozilla Firefox

Software Evolution: An Empirical Study of Mozilla Firefox Software Evolution: An Empirical Study of Mozilla Firefox Anita Ganpati Dr. Arvind Kalia Dr. Hardeep Singh Computer Science Dept. Computer Science Dept. Computer Sci. & Engg. Dept. Himachal Pradesh University,

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

Evaluating the Effect of Inheritance on the Characteristics of Object Oriented Programs

Evaluating the Effect of Inheritance on the Characteristics of Object Oriented Programs Journal of Computer Science 2 (12): 872-876, 26 ISSN 1549-3636 26 Science Publications Evaluating the Effect of Inheritance on the Characteristics of Object Oriented 1 Thabit Sultan Mohammed and 2 Hayam

More information

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS

CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS CHAPTER 4 HEURISTICS BASED ON OBJECT ORIENTED METRICS Design evaluation is most critical activity during software development process. Design heuristics are proposed as a more accessible and informal means

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

Rule-Based System for Flaw Specification and Detection in Object-Oriented Programs

Rule-Based System for Flaw Specification and Detection in Object-Oriented Programs Rule-Based System for Flaw Specification and Detection in Object-Oriented Programs El Hachemi Alikacem 1 and Houari A. Sahraoui 2 1 Computer Research Institute of Montreal 405, Ogilvy Avenue, Suite 100,

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

Object-Oriented Analysis and Design

Object-Oriented Analysis and Design 0. Object Orientation: An Subject/Topic/Focus: over this lecture Summary: Lecturer, lecture, rooms, assistants, lab classes, credit points... Need for systems analysis and software engineers Literature

More information

Investigating the Effectiveness of Greedy Algorithm on Open Source Software Systems for Determining Refactoring Sequence

Investigating the Effectiveness of Greedy Algorithm on Open Source Software Systems for Determining Refactoring Sequence Investigating the Effectiveness of Greedy Algorithm on Open Source Software Systems for Determining Refactoring Sequence Sandhya Tarwani 1 Ashish Sureka 2 1 SRM University, India (sandhya.tarwani@gmail.com)

More information

Trust4All: a Trustworthy Middleware Platform for Component Software

Trust4All: a Trustworthy Middleware Platform for Component Software Proceedings of the 7th WSEAS International Conference on Applied Informatics and Communications, Athens, Greece, August 24-26, 2007 124 Trust4All: a Trustworthy Middleware Platform for Component Software

More information

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics

On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics On the Impact of Aspect-Oriented Programming on Object-Oriented Metrics Jean-Yves Guyomarc h and Yann-Gaël Guéhéneuc GEODES - Group of Open and Distributed Systems, Experimental Software Engineering Department

More information

GA-driven Automatic Refactoring based on Design Patterns

GA-driven Automatic Refactoring based on Design Patterns Software Engineering 2012, 2(2): 29-35 DOI: 10.5923/j.se.20120202.03 GA-driven Automatic Refactoring based on Design Patterns Takao Shimomura Dept. of Information Science and Intelligent Systems, University

More information

Agile Architecture. The Why, the What and the How

Agile Architecture. The Why, the What and the How Agile Architecture The Why, the What and the How Copyright Net Objectives, Inc. All Rights Reserved 2 Product Portfolio Management Product Management Lean for Executives SAFe for Executives Scaled Agile

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

"(c) 2016 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for all other users, including reprinting/

(c) 2016 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for all other users, including reprinting/ "(c) 2016 IEEE. Personal use of this material is permitted. Permission from IEEE must be obtained for all other users, including reprinting/ republishing this material for advertising or promotional purposes,

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

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

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

Empirical Software Engineering. Empirical Software Engineering with Examples! is not a topic for examination. Classification.

Empirical Software Engineering. Empirical Software Engineering with Examples! is not a topic for examination. Classification. Empirical Software Engineering Empirical Software Engineering with Examples is not a topic for examination a sub-domain of software engineering focusing on experiments on software systems devise experiments

More information

A STUDY ON ASSOCIATION RULE MINING BASED SOFTWARE DESIGN DEFECT DETECTION

A STUDY ON ASSOCIATION RULE MINING BASED SOFTWARE DESIGN DEFECT DETECTION STUDIA UNIV. BABEŞ BOLYAI, INFORMATICA, Volume LVIII, Number 1, 2013 A STUDY ON ASSOCIATION RULE MINING BASED SOFTWARE DESIGN DEFECT DETECTION ZSUZSANNA MARIAN Abstract. In this paper we are investigating

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

Type Checking and Type Equality

Type Checking and Type Equality Type Checking and Type Equality Type systems are the biggest point of variation across programming languages. Even languages that look similar are often greatly different when it comes to their type systems.

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, Sahil Puri and Parul Verma 03 April 2018 Outline Introduction Research Questions Methodology Data Characteristics Analysis

More information

Fault Identification from Web Log Files by Pattern Discovery

Fault Identification from Web Log Files by Pattern Discovery ABSTRACT International Journal of Scientific Research in Computer Science, Engineering and Information Technology 2017 IJSRCSEIT Volume 2 Issue 2 ISSN : 2456-3307 Fault Identification from Web Log Files

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

Refactoring. Refactoring Techniques

Refactoring. Refactoring Techniques Refactoring Refactoring Techniques Code Quality is Important! Refactoring is... A disciplined technique for restructuring an existing body of code, altering its internal structure without changing its

More information

Empirical Software Engineering. Empirical Software Engineering with Examples. Classification. Software Quality. precision = TP/(TP + FP)

Empirical Software Engineering. Empirical Software Engineering with Examples. Classification. Software Quality. precision = TP/(TP + FP) Empirical Software Engineering Empirical Software Engineering with Examples a sub-domain of software engineering focusing on experiments on software systems devise experiments on software, in collecting

More information

Refactoring and Rearchitecturing

Refactoring and Rearchitecturing Refactoring and Rearchitecturing Overview Introduction Refactoring vs reachitecting Exploring the situation Legacy code Code written by others Code already written Not supported code Code without automated

More information

Refactoring. Herez Moise Kattan NUSP: João S. Brito Júnior NUSP:

Refactoring. Herez Moise Kattan NUSP: João S. Brito Júnior NUSP: Refactoring Herez Moise Kattan NUSP: 9860455 João S. Brito Júnior NUSP: 5889672 1 Definition Refactoring is the process of changing a software system in such a way that it does not* alter the external

More information

Lecture Notes. Polymorphism. Polymorphism. If Polymorphism is Not Available. To be placed at:

Lecture Notes. Polymorphism. Polymorphism. If Polymorphism is Not Available. To be placed at: To be placed at: Lecture Notes www.cs.umb.edu/~jxs/courses/cs40 Polymorphism Polymorphism If Polymorphism is Not Available Customer gettotaltax():float * Account accounts # balance: float getbalance():

More information

Performance Analysis of AODV Routing Protocol with and without Malicious Attack in Mobile Adhoc Networks

Performance Analysis of AODV Routing Protocol with and without Malicious Attack in Mobile Adhoc Networks , pp.63-70 http://dx.doi.org/10.14257/ijast.2015.82.06 Performance Analysis of AODV Routing Protocol with and without Malicious Attack in Mobile Adhoc Networks Kulbir Kaur Waraich 1 and Barinderpal Singh

More information

Software Testing Techniques

Software Testing Techniques Software Testing Techniques Sahil Munjal, Sahil Bhardwaj, Sachin Malik Student, Dronacharya College of Engineering, Khentawas, Farrukhnagar, Gurgaon Abstract Testing a software is a complex issue. This

More information

Refactoring. Paul Jackson. School of Informatics University of Edinburgh

Refactoring. Paul Jackson. School of Informatics University of Edinburgh Refactoring Paul Jackson School of Informatics University of Edinburgh Refactoring definition Refactoring (noun) is a change made to the internal structure of software to make it easier to understand,

More information

An Approach to Software Component Specification

An Approach to Software Component Specification Page 1 of 5 An Approach to Software Component Specification Jun Han Peninsula School of Computing and Information Technology Monash University, Melbourne, Australia Abstract. Current models for software

More information

An Expert System for Design Patterns Recognition

An Expert System for Design Patterns Recognition IJCSNS International Journal of Computer Science and Network Security, VOL.17 No.1, January 2017 93 An Expert System for Design Patterns Recognition Omar AlSheikSalem 1 and Hazem Qattous 2 1 Department

More information

Automated Unit Testing A Practitioner's and Teacher's Perspective

Automated Unit Testing A Practitioner's and Teacher's Perspective Automated Unit Testing A Practitioner's and Teacher's Perspective Prof. Peter Sommerlad HSR - Hochschule für Technik Rapperswil Institute for Software Oberseestraße 10, CH-8640 Rapperswil peter.sommerlad@hsr.ch

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

CHAPTER 4 HUMAN FACTOR BASED USER INTERFACE DESIGN

CHAPTER 4 HUMAN FACTOR BASED USER INTERFACE DESIGN CHAPTER 4 HUMAN FACTOR BASED USER INTERFACE DESIGN 4.1 Introduction Today one of the most important concerns is how to use the system with effectiveness, efficiency and satisfaction. The ease or comfort

More information

Software Engineering Testing and Debugging Testing

Software Engineering Testing and Debugging Testing Software Engineering Testing and Debugging Testing Prof. Dr. Peter Thiemann Universitt Freiburg 08.06.2011 Recap Testing detect the presence of bugs by observing failures Debugging find the bug causing

More information

SNS College of Technology, Coimbatore, India

SNS College of Technology, Coimbatore, India Support Vector Machine: An efficient classifier for Method Level Bug Prediction using Information Gain 1 M.Vaijayanthi and 2 M. Nithya, 1,2 Assistant Professor, Department of Computer Science and Engineering,

More information

AN AGENT BASED INTELLIGENT TUTORING SYSTEM FOR PARAMETER PASSING IN JAVA PROGRAMMING

AN AGENT BASED INTELLIGENT TUTORING SYSTEM FOR PARAMETER PASSING IN JAVA PROGRAMMING AN AGENT BASED INTELLIGENT TUTORING SYSTEM FOR PARAMETER PASSING IN JAVA PROGRAMMING 1 Samy Abu Naser 1 Associate Prof., Faculty of Engineering &Information Technology, Al-Azhar University, Gaza, Palestine

More information

Monografia - Engenharia de Software Experimental Bruno Cardoso UFMG, Maio 2014

Monografia - Engenharia de Software Experimental Bruno Cardoso UFMG, Maio 2014 Monografia - Engenharia de Software Experimental Bruno Cardoso UFMG, Maio 2014 A systematic literature review is a means of identifying, evaluating and interpreting all available research relevant to a

More information

Analyzing the Product Line Adequacy of Existing Components

Analyzing the Product Line Adequacy of Existing Components Analyzing the Product Line Adequacy of Existing Components Jens Knodel and Dirk Muthig Fraunhofer Institute for Experimental Software Engineering (IESE), Fraunhofer-Platz 1, D-67663 Kaiserslautern, Germany

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