How We Refactor, and How We Know It
|
|
- Andra Ashlee Jacobs
- 6 years ago
- Views:
Transcription
1 Emerson Murphy-Hill, Chris Parnin, Andrew P. Black How We Refactor, and How We Know It Urs Fässler Urs Fässler () How We Refactor, and How We Know It / 14
2 Refactoring Definition Refactoring is the process of changing the structure of a program without changing the way that it behaves. Benefit understand software improve code metrics readability complexity maintainability Urs Fässler () How We Refactor, and How We Know It / 14
3 About the study Motivation replicate old studies with bigger data sets confirm other refactoring studies contribute new refactoring detecting strategies Urs Fässler () How We Refactor, and How We Know It / 14
4 Data Source 4 data sets mainly Java developers Data set People Source Toolsmiths 4 Eclipse refactoring tool developers detailed refactoring histories Eclipse CVS Eclipse and JUnit developers extracted from Eclipse CVS Users 41 programmers in the wild captured with Mylin (Eclipse plugin) Everyone over developers Eclipse usage collector Urs Fässler () How We Refactor, and How We Know It / 14
5 Usage Data Collector - Commands yearmonth command bundleid bundleversion executecount usercount org.eclipse.ui.file.save org.eclipse.ui I org.eclipse.ui.file.save org.eclipse.ui M org.eclipse.ui.file.save org.eclipse.ui M org.eclipse.ui.file.save org.eclipse.ui I org.eclipse.ui.file.save org.eclipse.ui M org.eclipse.ui.edit.delete org.eclipse.ui I org.eclipse.ui.edit.delete org.eclipse.ui M org.eclipse.ui.edit.delete org.eclipse.ui M org.eclipse.ui.edit.delete org.eclipse.ui I org.eclipse.ui.edit.delete org.eclipse.ui M org.eclipse.ui.edit.copy org.eclipse.ui I org.eclipse.ui.edit.copy org.eclipse.ui I org.eclipse.ui.edit.copy org.eclipse.ui M org.eclipse.ui.edit.copy org.eclipse.ui M org.eclipse.ui.edit.copy org.eclipse.ui I org.eclipse.ui.edit.copy org.eclipse.ui I org.eclipse.ui.edit.copy org.eclipse.ui M org.eclipse.ui.file.revert org.eclipse.ui I org.eclipse.ui.edit.paste org.eclipse.ui I org.eclipse.ui.edit.paste org.eclipse.ui M org.eclipse.ui.edit.paste org.eclipse.ui M org.eclipse.ui.edit.paste org.eclipse.ui I org.eclipse.ui.edit.paste org.eclipse.ui M Urs Fässler () How We Refactor, and How We Know It / 14
6 Investigated aspects of refactorings and results Tool-Usage behavior differences of Toolsmiths and Users they differ kind of usage 40% in batch mode configuration 90% use default configuration Detecting refactoring commit messages don t predict refactorings changes on signatures often the signature isn t changed Refactoring practice frequency of refactorings they are frequent way of refactoring mostly mixed with other work on the code frequency of tool usage they are underused differences of tool usage wide variety Urs Fässler () How We Refactor, and How We Know It / 14
7 Hypothesis #3 Hypothesis Programmers often don t configure refactoring tools Urs Fässler () How We Refactor, and How We Know It / 14
8 Hypothesis #3 - Programmers don t configure refactoring tools analyzed top 5 refactoring tools Toolsmiths data set overall change frequency < 10% programmers don t use configurations limitations just Toolsmiths data set only 5 most-common tools Urs Fässler () How We Refactor, and How We Know It / 14
9 Hypothesis #1 Hypothesis Toolsmiths and Users differ Refactoring tool usage by groups Toolsmiths Users Everyone Rename Extract Local Variable Move Extract Method Change Method Signature Inline rest Urs Fässler () How We Refactor, and How We Know It / 14
10 Hypothesis #1 - Toolsmiths and Users differ they differ designer of software can t be used as reference limitations gathered data over different periods of time Users included non-java refactorings other aspect of study shows that refactoring tools are underused why is the rename tool so popular? Urs Fässler () How We Refactor, and How We Know It / 14
11 Discussion Tool-Usage Behavior Users underuse refactoring tools improve tools improve documentation refactoring tools are used repeatedly and with default configuration omit configuration implement batch mode Detecting Refactoring commit messages don t contain information about refactoring needs further replication many refactorings are low-level rethink refactoring detecting strategies Urs Fässler () How We Refactor, and How We Know It / 14
12 Discussion Refactoring Practice results support evidence of earlier studies refactoring tools need improvements programmers refactor frequently increase tool support refactoring is mixed with coding allow quick switches between tasks teach refactoring during courses refactoring tools are underused explore alternative interfaces identify common work-flows why are they underused? Urs Fässler () How We Refactor, and How We Know It / 14
13 Conclusions new insights how programmers refactor how refactoring tools are used how refactoring tools can be improved challenge certain assumptions about refactoring Urs Fässler () How We Refactor, and How We Know It / 14
14 Threads to validate Limitations of the Study mainly Java developers with Eclipse Users and Toolsmiths may not represent programmers in general Users and Everyone may overlap with Toolsmiths small data sets Owen thoughts to many hypotheses finding of hypothesis 1 contradicts conclusion of hypothesis 3 reflects agile software development behavior user-story driven development Urs Fässler () How We Refactor, and How We Know It / 14
15 Appendix Urs Fässler () How We Refactor, and How We Know It / 15
16 Data Source 1/2 Toolsmiths from 4 developers who maintain Eclipse s refactoring tools include detailed histories about refactoring tools which tools, when used, what configuration between December 2005 and August 2007 Eclipse CVS developer of the Eclipse and JUnit code extracted from their Concurrent Versioning System (CVS) randomly sampled from 3400 commits and search manually for refactorings many used automatic detection strategies first who compared tool logs with code histories same time period, same projects, same developers as represented in Toolsmiths Urs Fässler () How We Refactor, and How We Know It / 15
17 Data Source 2/2 Users from 41 volunteer programmers in the wild Everyone captured with Mylyn, a Plugin for Eclipse used the data already for other study latter half of % Java on average 66 development hours per programmer captured with the Eclipse Usage Collector from over developers first use of these data in research Java and others between April 2008 and January 2009 Urs Fässler () How We Refactor, and How We Know It / 15
18 Investigated Aspects 1/4 investigated 9 aspects in 3 categories Refactoring-Tool-Usage behavior differences of Toolsmiths and Users compared refactoring tool usage in Toolsmiths against Users and Everyone they differ H Toolsmiths and Users differ kind of usage Toolsmiths and Users same tool used within 1 minute (batch mode) 40% in batch mode H Programmers repeat refactorings configuration analyzed 5 most popular tools from Toolsmiths 90% use default configuration H Programmers often don t configure refactoring tools Urs Fässler () How We Refactor, and How We Know It / 15
19 Investigated Aspects 2/4 Refactoring detection commit messages searched manually in 40 commits for refactorings compared these results with the commit messages don t predict refactorings a H Commit messages don t predict refactoring changes on class and method signatures looked which refactorings don t change signature the signature often isn t changed b H Many refactorings are medium and low-level a Pure refactorings were all labeled, Some refactorings were sometimes labeled, No refactorings were often labeled as refactorings Eclipse CVS Toolsmiths b Low 18% 33% Medium 22% 27% High 60% 40% Urs Fässler () How We Refactor, and How We Know It / 15
20 Investigated Aspects 3/4 Refactoring practice 1/2 frequency of refactorings analyzed data to see how often refactorings occur Users: 41% of programming sessions contained refactoring activity Toolsmith: on average 30 refactorings each week refactorings are frequent H Refactorings are frequent way of refactoring looked for semantic changes when refactorings occurred 30% of commits contains refactorings and other work on code 3% of commits are pure refactorings most time refactoring is mixed with other work on the code H Floss refactoring is common Urs Fässler () How We Refactor, and How We Know It / 15
21 Investigated Aspects 4/4 Refactoring practice 2/2 frequency of tool usage compared manually found refactorings with tool usage data 89% were performed by hand refactoring tools are underused H Refactoring tools are underused differences of tool usage same method as before some tools are used often, some rarely H Different refactorings are performed with and without tools Urs Fässler () How We Refactor, and How We Know It / 15
22 Level of refactoring High Change the signature of classes, methods and fields Examples: rename class, move static field, add parameter Medium Change signature and significantly change blocks of code Examples: extract method, inline constant, convert anonymous type to nested type Low Changes only on blocks of code Examples: extract local variable, rename local variable, add assertion Urs Fässler () How We Refactor, and How We Know It / 15
23 CVS Commit Messages Revision Author Comment 1.83 johna Updated copyrights btripkovic clean up 1.77 btripkovic digest and pack200 tool 1.76 btripkovic icu reverse and import clean-up 1.71 btripkovic digest fix 1.68 btripkovic digest stuff 1.64 kkolosow unnecessary non nls tags 1.55 dbirsan fix support for mirrors 1.53 dbirsan Update copyright using releng tool 1.50 dbirsan Add API disclaimer 1.49 dbirsan cleanup 1.48 dbirsan remove dependency on compatibility layer dbirsan partial refactoring 1.46 dbirsan fix test failures 1.45 dbirsan backup previous change 1.42 wmelhem organized imports 1.41 droberts Copyright fix - automated changes 1.32 celek merged into celek merge core 1.30 celek Improve Search 1.29 celek Improve Search 1.28 celek multistatus.iserror + CPP 1.27 celek Refactoring logging and debugging 1.23 vlad javadoc pass 1.21 celek NL and reconciliation revised 1.2 vlad merge 2.0 changes 1.18 celek new spec (2.0.4) 1.16 celek End API review g 1.14 celek retry site and parsing defensive coding Partial history of org.eclipse.update.core.model.defaultsiteparser.java Urs Fässler () How We Refactor, and How We Know It / 15
24 Refactoring tool usage in Eclipse Name Toolsmiths Users Everyone Rename Extract Local Variable Inline Extract Method Move Change Method Signature Convert Local To Field Introduce Parameter Extract Constant Convert Anonymous To nested Move Member Type to New File Pull Up Encapsulate Field Extract Interface Generalize Declared Type Push Down Infer Generic Type Arguments Use Supertype Where Possible Introduce Factory Extract Superclass Extract Class Introduce Parameter Object Introduce Indirection Urs Fässler () How We Refactor, and How We Know It / 15
25 Refactoring tool configuration in Eclipse from Toolsmiths Refactoring Tool Configuration Option Default Value Change Frequency Extract Local Variable Declare the local variable as final false 0.05 Extract Method New method visibility private 0.06 Declare thrown runtime exceptions false 0.24 Generate method comment false 0.09 Rename Type Update references true 0.03 Update similarly named variables and methods false 0.24 Update textual occurrences in comments and strings false 0.15 Update fully qualified names in non-java text files true 0.07 Rename Method Update references true 0 Keep original method as delegate to renamed method false 0.01 Inline Method Delete method declaration true 0.09 Urs Fässler () How We Refactor, and How We Know It / 15
26 Refactorings over 40 sessions Rename Constant (H) Push Down (H) Generalize Declared Type (H) Extract Method (M) Move Member (H) Remove Parameter (H) Inline Local (L) Extract Local (L) Inline Method (M) Rename Local (L) Rename Field (H) Rename Method (H) Rename Type (H) Add Parameter (H) Decrease Method Visibility (H) Increase Method Visibility (H) Introduce Parameter (M) Reorder Parameter (H) Extract Class (H) Extract Constant (M) Inline Constant (M) Introduce Factory (H) Rename Resource (H) Manual (Labeled) Manual (Unlabeled) Tool (Labeled) Tool (Unlabeled) Urs Fässler () How We Refactor, and How We Know It / 15
27 Normalization Procedure In the paper, we discussed a normalization procedure for some reported data. To explain the procedure we used for calculating, we ll give the intuitive explanation and an example calculation below: In section 3.5, we wish to estimate how many pure-refactoring commits were made to CVS. Recall that previously, we sampled 20 Labeled projects and 20 Unlabeled projects, and we know that 6 Labeled commits were pure-refactoring and 0 Unlabeled commits were pure-refactoring. Naively, might simply do the addition (6+0) and divide over the total commits to get the estimate: 6/40 = 15%. However, this is a good estimate for our sample, but a bad estimate for the population as a whole, because our sample was drawn from two unequal strata. Specifically, in this naive estimate, we are giving too much weight to the 6 pure-refactoring commits, because Labeled commits only account for about 10% of total commits. So what do we do? Instead of the naive approach, we normalize our estimate for the relative proportions of Labeled ( 10%) to Unlabeled commits ( 90%). The following calculation gives the normalized result: ( 1 ) 290 = is the number of Labeled pure-refactoring commits. 0 is the number of Unlabeled pure-refactoring commits. 290 is the number of Labeled commits is the number of Unlabeled commits. Urs Fässler () How We Refactor, and How We Know It / 15
28 The (now more than) 72 different refactorings 1/2 From Add Parameter Change Bidirectional Association to Unidirectional Change Reference to Value Change Unidirectional Association to Bidirectional Change Value to Reference Collapse Hierarchy Consolidate Conditional Expression Consolidate Duplicate Conditional Fragments Convert Dynamic to Static Construction Convert Static to Dynamic Construction Decompose Conditional Duplicate Observed Data Eliminate Inter-Entity Bean Communication Encapsulate Collection Encapsulate Downcast Encapsulate Field Extract Class Extract Interface Extract Method Extract Package Extract Subclass Extract Superclass Form Template Method Hide Delegate Hide Method Hide presentation tier-specific details from the business tier Inline Class Inline Method Inline Temp Introduce A Controller Introduce Assertion Introduce Business Delegate Introduce Explaining Variable Introduce Foreign Method Introduce Local Extension Introduce Null Object Introduce Parameter Object Introduce Synchronizer Token Localize Disparate Logic Merge Session Beans Move Business Logic to Session Move Class Move Field Urs Fässler () How We Refactor, and How We Know It / 15
29 The (now more than) 72 different refactorings 2/2 Move Method Parameterize Method Preserve Whole Object Pull Up Constructor Body Pull Up Field Pull Up Method Push Down Field Push Down Method Reduce Scope of Variable Refactor Architecture by Tiers Remove Assignments to Parameters Remove Control Flag Remove Double Negative Remove Middle Man Remove Parameter Remove Setting Method Rename Method Replace Array with Object Replace Assignment with Initialization Replace Conditional with Polymorphism Replace Conditional with Visitor Replace Constructor with Factory Method Replace Data Value with Object Replace Delegation with Inheritance Replace Error Code with Exception Replace Exception with Test Replace Inheritance with Delegation Replace Iteration with Recursion Replace Magic Number with Symbolic Constant Replace Method with Method Object Replace Nested Conditional with Guard Clauses Replace Parameter with Explicit Methods Replace Parameter with Method Replace Record with Data Class Replace Recursion with Iteration Replace Static Variable with Parameter Replace Subclass with Fields Replace Temp with Query Replace Type Code with Class Replace Type Code with State/Strategy Replace Type Code with Subclasses Reverse Conditional Self Encapsulate Field Separate Data Access Code Separate Query from Modifier Split Loop Split Temporary Variable Substitute Algorithm Use a Connection Pool Wrap entities with session Urs Fässler () How We Refactor, and How We Know It / 15
How We Refactor, and How We Know it. Emerson Murphy-Hill, Chris Parnin, Andrew P. Black ICSE 2009
How We Refactor, and How We Know it Emerson Murphy-Hill, Chris Parnin, Andrew P. Black ICSE 2009 Introduction Refactoring is the process of changing the structure of a program without changing the way
More informationSOFTWARE 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 informationJUnit 3.8.1, 64. keep it simple stupid (KISS), 48
Index A accessor methods, 11, 152 add parameter technique, 189 190 add() method, 286 287, 291 algorithm, substituting, 104 105 AND logical operator, 172 architectural design patterns, 277 278 architecture,
More informationHow We Refactor, and How We Know It
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. X, NO. T, MONTH YEAR 1 How We Refactor, and How We Know It Emerson Murphy-Hill, Chris Parnin, and Andrew P. Black Abstract Refactoring is widely practiced
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 informationSmall changes to code to improve it
Small changes to code to improve it 1 Refactoring Defined A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior
More informationOverview of Eclipse Lectures. Module Road Map
Overview of Eclipse Lectures 1. Overview 2. Installing and Running 3. Building and Running Java Classes 4. Refactoring Lecture 2 5. Debugging 6. Testing with JUnit 7. Version Control with CVS 1 Module
More informationTutorial 02: Writing Source Code
Tutorial 02: Writing Source Code Contents: 1. Generating a constructor. 2. Generating getters and setters. 3. Renaming a method. 4. Extracting a superclass. 5. Using other refactor menu items. 6. Using
More informationIndex. Index. More information. block statements 66 y 107 Boolean 107 break 55, 68 built-in types 107
A abbreviations 17 abstract class 105 abstract data types 105 abstract method 105 abstract types 105 abstraction 92, 105 access level 37 package 114 private 115 protected 115 public 115 accessors 24, 105
More informationComposing Methods. Extract Method - Code that can be grouped - Meaningful name for method
Composing Methods Extract Method - Code that can be grouped - Meaningful name for method Inline Method - inverse of Extract Method - Method body is more obvious Extract Variable - Expression: hard to understand
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 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 informationTemplate-based Reconstruction of Complex Refactorings
Template-based Reconstruction of Complex Refactorings Kyle Prete, Napol Rachatasumrit, Nikita Sudan, Miryung Kim Electrical and Computer Engineering The University of Texas at Austin Problem: Refactoring
More informationRefactoring with Eclipse
Refactoring with Eclipse Seng 371 Lab 8 By Bassam Sayed Based on IBM article Explore refactoring functions in Eclipse JDT by Prashant Deva Code Refactoring Code refactoring is a disciplined way to restructure
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 informationFoundations of object orientation
Foreword Preface List of projects discussed in detail in this book Acknowledgments Part 1 Chapter 1 Chapter 2 Foundations of object orientation Objects and classes 1.1 Objects and classes 1.2 Creating
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 informationCompaq Interview Questions And Answers
Part A: Q1. What are the difference between java and C++? Java adopts byte code whereas C++ does not C++ supports destructor whereas java does not support. Multiple inheritance possible in C++ but not
More informationCourse Description. Learn To: : Intro to JAVA SE7 and Programming using JAVA SE7. Course Outline ::
Module Title Duration : Intro to JAVA SE7 and Programming using JAVA SE7 : 9 days Course Description The Java SE 7 Fundamentals course was designed to enable students with little or no programming experience
More information104. Intermediate Java Programming
104. Intermediate Java Programming Version 6.0 This course teaches programming in the Java language -- i.e. the Java Standard Edition platform. It is intended for students with previous Java experience
More informationLab Exercise Refactoring using Eclipse
Lunds tekniska högskola Datavetenskap, Nov, 2017 Torbjörn Ekman and Görel Hedin (Modified from cvs to git by Ulf Asklund) EDAF45 Programvaruutveckling i grupp projekt Lab Exercise Refactoring using Eclipse
More informationJava SE7 Fundamentals
Java SE7 Fundamentals Introducing the Java Technology Relating Java with other languages Showing how to download, install, and configure the Java environment on a Windows system. Describing the various
More informationEINDHOVEN UNIVERSITY OF TECHNOLOGY
EINDHOVEN UNIVERSITY OF TECHNOLOGY Department of Mathematics & Computer Science Exam Programming Methods, 2IP15, Wednesday 17 April 2013, 09:00 12:00 TU/e THIS IS THE EXAMINER S COPY WITH (POSSIBLY INCOMPLETE)
More informationImplementing evolution: Refactoring
2IS55 Software Evolution Implementing evolution: Refactoring Alexander Serebrenik Sources / SET / W&I 5-6-2012 PAGE 1 Last week How to implement evolution Last week: evolution strategies and decision making
More informationRefactoring Practice: How it is and How it Should be Supported An Eclipse Case Study Abstract Introduction
Refactoring Practice: How it is and How it Should be Supported An Eclipse Case Study Zhenchang Xing and Eleni Stroulia Computing Science Department University of Alberta Edmonton AB, T6G 2H1, Canada {xing,stroulia}@cs.ualberta.ca
More informationChapter 5 Object-Oriented Programming
Chapter 5 Object-Oriented Programming Develop code that implements tight encapsulation, loose coupling, and high cohesion Develop code that demonstrates the use of polymorphism Develop code that declares
More informationAbsolute C++ Walter Savitch
Absolute C++ sixth edition Walter Savitch Global edition This page intentionally left blank Absolute C++, Global Edition Cover Title Page Copyright Page Preface Acknowledgments Brief Contents Contents
More informationRefactoring. Section (JIA s) OTHER SOURCES
Refactoring Section 7.2.1 (JIA s) OTHER SOURCES Code Evolution Programs evolve and code is NOT STATIC Code duplication Outdated knowledge (now you know more) Rethink earlier decisions and rework portions
More informationIndex. Bitwise operations, 131. Cloud, 88, 101
Index A Analysis, NetBeans batch analyzers, 127 dynamic code analysis, 128 Java 8 lambda expressions, 127 static code analysis definition, 128 FindBugs categories, 144 Inspect & Transform tool, 129 inspections,
More informationPatterns 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 informationProgramming Kotlin. Familiarize yourself with all of Kotlin s features with this in-depth guide. Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI
Programming Kotlin Familiarize yourself with all of Kotlin s features with this in-depth guide Stephen Samuel Stefan Bocutiu BIRMINGHAM - MUMBAI Programming Kotlin Copyright 2017 Packt Publishing First
More informationObjects First with Java
^ Objects First with Java A Practical Introduction using BlueJ David J. Barnes and Michael Kolling Second edition PEARSON Prentice Hall Harlow, England London New York Boston San Francisco Toronto Sydney
More informationReview sheet for Final Exam (List of objectives for this course)
Review sheet for Final Exam (List of objectives for this course) Please be sure to see other review sheets for this semester Please be sure to review tests from this semester Week 1 Introduction Chapter
More informationWhidbey Enhancements to C# Jeff Vaughan MSBuild Team July 21, 2004
Whidbey Enhancements to C# Jeff Vaughan MSBuild Team July 21, 2004 Outline Practical Partial types Static classes Extern and the namespace alias qualifier Cool (and practical too) Generics Nullable Types
More informationEnterprise Architect Training Courses
On-site training from as little as 135 per delegate per day! Enterprise Architect Training Courses Tassc trainers are expert practitioners in Enterprise Architect with over 10 years experience in object
More informationDOWNLOAD PDF CORE JAVA APTITUDE QUESTIONS AND ANSWERS
Chapter 1 : Chapter-wise Java Multiple Choice Questions and Answers Interview MCQs Java Programming questions and answers with explanation for interview, competitive examination and entrance test. Fully
More informationConstruction: High quality code for programming in the large
Construction: High quality code for programming in the large Paul Jackson School of Informatics University of Edinburgh What is high quality code? High quality code does what it is supposed to do......
More informationProgramming in Scala Second Edition
Programming in Scala Second Edition Martin Odersky, Lex Spoon, Bill Venners artima ARTIMA PRESS WALNUT CREEK, CALIFORNIA Contents Contents List of Figures List of Tables List of Listings Foreword Foreword
More informationObject-Oriented Design
Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration
More informationRecap: Class Diagrams
Com S 362: Object-Oriented Analysis and Design Recap: Class Diagrams Class diagrams represent design structure Three parts: name, attribute, operations Visibility, attribute type, multiplicity Association,
More informationGet Unique study materials from
Downloaded from www.rejinpaul.com VALLIAMMAI ENGNIEERING COLLEGE SRM Nagar, Kattankulathur 603203. DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING Year & Semester : IV Section : EEE - 1 & 2 Subject Code
More informationCONTENTS. PART 1 Structured Programming 1. 1 Getting started 3. 2 Basic programming elements 17
List of Programs xxv List of Figures xxix List of Tables xxxiii Preface to second version xxxv PART 1 Structured Programming 1 1 Getting started 3 1.1 Programming 3 1.2 Editing source code 5 Source code
More informationMagento Technical Guidelines
Magento Technical Guidelines Eugene Shakhsuvarov, Software Engineer @ Magento 2018 Magento, Inc. Page 1 Magento 2 Technical Guidelines Document which describes the desired technical state of Magento 2
More informationPROCESS DEVELOPMENT METHODOLOGY The development process of an API fits the most fundamental iterative code development
INTRODUCING API DESIGN PRINCIPLES IN CS2 Jaime Niño Computer Science, University of New Orleans New Orleans, LA 70148 504-280-7362 jaime@cs.uno.edu ABSTRACT CS2 provides a great opportunity to teach an
More informationC++ (Non for C Programmer) (BT307) 40 Hours
C++ (Non for C Programmer) (BT307) 40 Hours Overview C++ is undoubtedly one of the most widely used programming language for implementing object-oriented systems. The C++ language is based on the popular
More informationSelenium Testing Course Content
Selenium Testing Course Content Introduction What is automation testing? What is the use of automation testing? What we need to Automate? What is Selenium? Advantages of Selenium What is the difference
More informationCORE JAVA TRAINING COURSE CONTENT
CORE JAVA TRAINING COURSE CONTENT SECTION 1 : INTRODUCTION Introduction about Programming Language Paradigms Why Java? Flavors of Java. Java Designing Goal. Role of Java Programmer in Industry Features
More informationbe used for more than one use case (for instance, for use cases Create User and Delete User, one can have one UserController, instead of two separate
UNIT 4 GRASP GRASP: Designing objects with responsibilities Creator Information expert Low Coupling Controller High Cohesion Designing for visibility - Applying GoF design patterns adapter, singleton,
More informationCSE 70 Final Exam Fall 2009
Signature cs70f Name Student ID CSE 70 Final Exam Fall 2009 Page 1 (10 points) Page 2 (16 points) Page 3 (22 points) Page 4 (13 points) Page 5 (15 points) Page 6 (20 points) Page 7 (9 points) Page 8 (15
More informationEECS 4314 Advanced Software Engineering. Topic 10: Software Refactoring Zhen Ming (Jack) Jiang
EECS 4314 Advanced Software Engineering Topic 10: Software Refactoring Zhen Ming (Jack) Jiang Acknowledgement Some slides are adapted from Professor Marty Stepp, Professor Oscar Nierstrasz Relevant Readings
More informationKerievsky_book.fm Page 355 Thursday, July 8, :12 PM. Index
Kerievsky_book.fm Page 355 Thursday, July 8, 2004 12:12 PM Index A Absorbing class, 117 Abstract Factory, 70 71 Accept methods, 327 Accumulation methods, 315, 325 330 Accumulation refactorings Collecting
More informationNews in RSA-RTE 10.0 updated for sprint Mattias Mohlin/Anders Ek, June 2016
News in RSA-RTE 10.0 updated for sprint 2016.29 Mattias Mohlin/Anders Ek, June 2016 Overview of Improvements (1/3) Now based on Eclipse Mars (4.5.2) New installation scheme RSARTE is now installed as a
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 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 informationThink of drawing/diagramming editors. ECE450 Software Engineering II. The problem. The Composite pattern
Think of drawing/diagramming editors ECE450 Software Engineering II Drawing/diagramming editors let users build complex diagrams out of simple components The user can group components to form larger components......which
More informationJava: introduction to object-oriented features
Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: introduction to object-oriented features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer
More informationWeb Application Design. Husni Husni.trunojoyo.ac.id
Web Application Design Husni Husni.trunojoyo.ac.id Based on Randy Connolly and Ricardo Hoar Fundamentals of Web Development, Pearson Education, 2015 Objectives 1 Real World Web 2 Software Design Principle
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 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 informationNews in RSA-RTE 10.2 updated for sprint Mattias Mohlin, May 2018
News in RSA-RTE 10.2 updated for sprint 2018.18 Mattias Mohlin, May 2018 Overview Now based on Eclipse Oxygen.3 (4.7.3) Contains everything from RSARTE 10.1 and also additional features and bug fixes See
More informationCS Internet programming Unit- I Part - A 1 Define Java. 2. What is a Class? 3. What is an Object? 4. What is an Instance?
CS6501 - Internet programming Unit- I Part - A 1 Define Java. Java is a programming language expressly designed for use in the distributed environment of the Internet. It was designed to have the "look
More informationSynchronization SPL/2010 SPL/20 1
Synchronization 1 Overview synchronization mechanisms in modern RTEs concurrency issues places where synchronization is needed structural ways (design patterns) for exclusive access 2 Overview synchronization
More informationBig Java Late Objects
Big Java Late Objects Horstmann, Cay S. ISBN-13: 9781118087886 Table of Contents 1. Introduction 1.1 Computer Programs 1.2 The Anatomy of a Computer 1.3 The Java Programming Language 1.4 Becoming Familiar
More informationThe Design Process. General Development Issues. C/C++ and OO Rules of Thumb. Home
A l l e n I. H o l u b & A s s o c i a t e s Home C/C++ and OO Rules of Thumb The following list is essentially the table of contents for my book Enough Rope to Shoot Yourself in the Foot (McGraw-Hill,
More informationJava SE 8 Programming
Oracle University Contact Us: +52 1 55 8525 3225 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features and Application Programming
More informationShort Notes of CS201
#includes: Short Notes of CS201 The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with < and > if the file is a system
More informationChapter 12. OOP: Creating Object-Oriented Programs The McGraw-Hill Companies, Inc. All rights reserved. McGraw-Hill
Chapter 12 OOP: Creating Object-Oriented Programs McGraw-Hill 2010 The McGraw-Hill Companies, Inc. All rights reserved. Chapter Objectives - 1 Use object-oriented terminology correctly Create a two-tier
More informationChapter 3. Interactive Software Development Assistants Logic-based Software Representation. Logic-based Software Analysis
Advanced Logic Programming Summer semester 2012 R O O T S Chapter 3. Logic-based Analysis Interactive Development Assistants Logic-based Representation Logic-based Analysis Logic-based Transformation Motivation
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 informationBadge#8: Geek Refactoring
Badge#8: Geek Refactoring Nuno Pombo, Qualidade de Software, 2018/19 1 When To Refactor? Rule of Three When adding a feature When fixing a bug During a code review 2 How To Refactor? The code should become
More informationChapter 11 Object and Object- Relational Databases
Chapter 11 Object and Object- Relational Databases Copyright 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 11 Outline Overview of Object Database Concepts Object-Relational
More informationWhat 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 informationIntro to Haskell Notes: Part 5
Intro to Haskell Notes: Part 5 Adrian Brasoveanu October 5, 2013 Contents 1 Curried functions and related issues 1 1.1 Curried functions......................................... 1 1.2 Partially applied
More informationSoftware Engineering /48
Software Engineering 1 /48 Topics 1. The Compilation Process and You 2. Polymorphism and Composition 3. Small Functions 4. Comments 2 /48 The Compilation Process and You 3 / 48 1. Intro - How do you turn
More informationCS201 - Introduction to Programming Glossary By
CS201 - Introduction to Programming Glossary By #include : The #include directive instructs the preprocessor to read and include a file into a source code file. The file name is typically enclosed with
More informationArchitectural Styles. Reid Holmes
Material and some slide content from: - Emerson Murphy-Hill - Software Architecture: Foundations, Theory, and Practice - Essential Software Architecture Architectural Styles Reid Holmes Lecture 5 - Tuesday,
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationType Hierarchy. Comp-303 : Programming Techniques Lecture 9. Alexandre Denault Computer Science McGill University Winter 2004
Type Hierarchy Comp-303 : Programming Techniques Lecture 9 Alexandre Denault Computer Science McGill University Winter 2004 February 16, 2004 Lecture 9 Comp 303 : Programming Techniques Page 1 Last lecture...
More informationWeek. Lecture Topic day (including assignment/test) 1 st 1 st Introduction to Module 1 st. Practical
Name of faculty: Gaurav Gambhir Discipline: Computer Science Semester: 6 th Subject: CSE 304 N - Essentials of Information Technology Lesson Plan Duration: 15 Weeks (from January, 2018 to April, 2018)
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 informationWeiss Chapter 1 terminology (parenthesized numbers are page numbers)
Weiss Chapter 1 terminology (parenthesized numbers are page numbers) assignment operators In Java, used to alter the value of a variable. These operators include =, +=, -=, *=, and /=. (9) autoincrement
More informationHugbúnaðarverkefni 2 - Static Analysis
Time to do some refactoring of my Java. Hugbúnaðarverkefni 2 - Static Analysis Fyrirlestrar 7 & 8 A Refactoring Micro-Example 15/01/2006 Dr Andy Brooks 1 Case Study Dæmisaga Reference A Refactoring Micro-Example,
More informationThe pre-processor (cpp for C-Pre-Processor). Treats all # s. 2 The compiler itself (cc1) this one reads text without any #include s
Session 2 - Classes in C++ Dr Christos Kloukinas City, UoL http://staff.city.ac.uk/c.kloukinas/cpp (slides originally produced by Dr Ross Paterson) A C++ source file may contain: include directives #include
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 informationThe following topics will be covered in this course (not necessarily in this order).
The following topics will be covered in this course (not necessarily in this order). Introduction The course focuses on systematic design of larger object-oriented programs. We will introduce the appropriate
More informationJava SE 8 Programming
Java SE 8 Programming Training Calendar Date Training Time Location 16 September 2019 5 Days Bilginç IT Academy 28 October 2019 5 Days Bilginç IT Academy Training Details Training Time : 5 Days Capacity
More informationDOT NET Syllabus (6 Months)
DOT NET Syllabus (6 Months) THE COMMON LANGUAGE RUNTIME (C.L.R.) CLR Architecture and Services The.Net Intermediate Language (IL) Just- In- Time Compilation and CLS Disassembling.Net Application to IL
More informationThe New Java Technology Memory Model
The New Java Technology Memory Model java.sun.com/javaone/sf Jeremy Manson and William Pugh http://www.cs.umd.edu/~pugh 1 Audience Assume you are familiar with basics of Java technology-based threads (
More informationCOPYRIGHTED MATERIAL. Table of Contents. Foreword... xv. About This Book... xvii. About The Authors... xxiii. Guide To The Reader...
Table of Contents Foreword..................... xv About This Book... xvii About The Authors............... xxiii Guide To The Reader.............. xxvii Part I Some Concepts.................. 1 1 On Patterns
More informationChapter 6 Introduction to Defining Classes
Introduction to Defining Classes Fundamentals of Java: AP Computer Science Essentials, 4th Edition 1 Objectives Design and implement a simple class from user requirements. Organize a program in terms of
More informationConcepts of Programming Languages
Concepts of Programming Languages Lecture 10 - Object-Oriented Programming Patrick Donnelly Montana State University Spring 2014 Patrick Donnelly (Montana State University) Concepts of Programming Languages
More informationSoftware Development & Education Center. Java Platform, Standard Edition 7 (JSE 7)
Software Development & Education Center Java Platform, Standard Edition 7 (JSE 7) Detailed Curriculum Getting Started What Is the Java Technology? Primary Goals of the Java Technology The Java Virtual
More informationComparing Approaches to Analyze Refactoring Activity on Software Repositories
Comparing Approaches to Analyze Refactoring Activity on Software Repositories Gustavo Soares a,, Rohit Gheyi a, Emerson Murphy-Hill b, Brittany Johnson b a Department of Computing and Systems, Federal
More informationCS 6456 OBJCET ORIENTED PROGRAMMING IV SEMESTER/EEE
CS 6456 OBJCET ORIENTED PROGRAMMING IV SEMESTER/EEE PART A UNIT I 1. Differentiate object oriented programming from procedure oriented programming. 2. Define abstraction and encapsulation. 3. Differentiate
More informationObject Oriented Programming in Java. Jaanus Pöial, PhD Tallinn, Estonia
Object Oriented Programming in Java Jaanus Pöial, PhD Tallinn, Estonia Motivation for Object Oriented Programming Decrease complexity (use layers of abstraction, interfaces, modularity,...) Reuse existing
More informationInternational Journal for Management Science And Technology (IJMST)
Volume 4; Issue 03 Manuscript- 1 ISSN: 2320-8848 (Online) ISSN: 2321-0362 (Print) International Journal for Management Science And Technology (IJMST) GENERATION OF SOURCE CODE SUMMARY BY AUTOMATIC IDENTIFICATION
More informationINTRODUCTION TO.NET. Domain of.net D.N.A. Architecture One Tier Two Tier Three Tier N-Tier THE COMMON LANGUAGE RUNTIME (C.L.R.)
INTRODUCTION TO.NET Domain of.net D.N.A. Architecture One Tier Two Tier Three Tier N-Tier THE COMMON LANGUAGE RUNTIME (C.L.R.) CLR Architecture and Services The.Net Intermediate Language (IL) Just- In-
More informationJava SE 8 Programming
Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 67863102 Java SE 8 Programming Duration: 5 Days What you will learn This Java SE 8 Programming training covers the core language features
More informationTraining topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives
Training topic: OCPJP (Oracle certified professional Java programmer) or SCJP (Sun certified Java programmer) Content and Objectives 1 Table of content TABLE OF CONTENT... 2 1. ABOUT OCPJP SCJP... 4 2.
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 information