A Study of Bad Smells in Code
|
|
- Melissa Matthews
- 5 years ago
- Views:
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 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 informationMaintainability 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 informationRefactoring 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 informationCode 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 informationCode 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 informationSoftware 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 informationCredit 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 informationKeywords 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 informationExploring 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 informationSpecification 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 informationAnalysis 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 informationAn 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 informationEvolving 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 informationRefactoring. 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 informationMcCa!"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 informationAn 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 informationAdministrivia. 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 informationImagine 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 informationUsing 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 informationCSE 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 informationAn 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 informationThe 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 informationAn 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 informationFascinating 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 informationHOW 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 informationMACHINE 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 informationRefactorings. 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 informationRefactoring 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 informationA 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 informationAntiPatterns. 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 informationImplementing 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 informationUML 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 informationWhat? 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 informationUnderstading 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 informationEr. 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 informationRestructuring. 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 informationIntroduction 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 informationvoid 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 informationINTERNATIONAL 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 informationCOURSE 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 informationSoftware 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 informationImproving 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 informationCSCD01 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 informationResearch 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 informationEffect 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 informationReengineering 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 informationAutomated 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 informationInfluence 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 informationImpact 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 informationRefactoring. 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 informationPredicting 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 informationDesigning 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 informationIMPACT 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 informationInternational 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 informationEmpAnADa 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 informationApplication 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 informationSoftware 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 informationThe 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 informationEvaluating 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 informationCHAPTER 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 informationCSC 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 informationRule-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 informationAbstract: 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 informationObject-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 informationInvestigating 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 informationTrust4All: 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 informationOn 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 informationGA-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 informationAgile 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 informationRefactoring, 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/ republishing this material for advertising or promotional purposes,
More informationEmpirical 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 informationSoftware 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 informationSHOTGUN 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 informationEmpirical 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 informationA 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 informationSoftware 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 informationType 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 informationEmpirical 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 informationFault 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 informationRefactoring. 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 informationRefactoring. 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 informationEmpirical 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 informationRefactoring 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 informationRefactoring. 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 informationLecture 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 informationPerformance 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 informationSoftware 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 informationRefactoring. 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 informationAn 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 informationAn 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 informationAutomated 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 informationClassification 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 informationCHAPTER 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 informationSoftware 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 informationSNS 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 informationAN 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 informationMonografia - 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 informationAnalyzing 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 informationEvaluating 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