Automating Big Refactorings for Componentization and the Move to SOA

Size: px
Start display at page:

Download "Automating Big Refactorings for Componentization and the Move to SOA"

Transcription

1 Automating Big Refactorings for Componentization and the Move to SOA IBM Programming Languages and Development Environments Seminar 2008 Aharon Abadi, Ran Ettinger and Yishai Feldman Software Asset Management Group IBM Haifa Research Lab

2 Background What is Refactoring? The process of gradually improving the design of an existing software system by performing source code transformations that improve its quality in such a way that it becomes easier to maintain the system and reuse parts of it, while preserving the behavior of the original system For example: Extract Method void printowing(double amount) { printbanner(); // print details print( name: + _name); print( amount: + amount); } Source: Martin Fowler s online refactoring catalog 2 void printowing(double amount) { printbanner(); printdetails(amount); } void printdetails(double amount) { print( name: + _name); print( amount: + amount); }

3 Prior Art Refactoring to Design Patterns + 3

4 Our Interest: Big Refactorings Enterprise Architecture Patterns 4

5 The Gap: Techniques and Tools for Enterprise Refactoring?? 5

6 Automating Big Refactorings Enterprise Refactorings Separate Presentation Code from Business Logic (introduce the MVC pattern), Extract Reusable Services (implementing SOA), etc. Composition Small Refactorings Rename Paragraph, Split/Merge Paragraphs, Extract/Inline Paragraph/Section/Program, Extract Slice, Swap Consecutive (Independent) Statements/Sentences/Paragraphs/Sections, Split/Merge (Consecutive) Conditionals, Loop-Invariant Code Motion, etc. Required Quality Flexibility Allow (user-determined) choice between alternatives Applicability Avoid unnecessary rejections by precise identification of (weak) preconditions Reliability* Guarantee behavior preservation Enabling Technology Deep Program Analysis Program analysis infrastructure for legacy enterprise software systems: A powerful static analysis infrastructure using the plan-calculus intermediate representation 6 * See for examples of bugs in modern IDEs

7 Example: Introduce the MVC Pattern 7

8 As-Is Version: Photo Album Web Application Source: Alex Chaffee, draft Refactoring to MVC online article,

9 To-Be Version: Photo Album Web Application View Presentation Model Controller Source: Alex Chaffee, draft Refactoring to MVC online article, 2002 Model 9

10 Small Refactorings on the move to MVC All kinds of renaming Variables, fields, methods, etc. Extracting program entities Constants, local (temp) variables, parameters, methods (Extract Method, Replace Temp with Query, Decompose Conditional), classes (Extract Class, Extract Superclass, Extract Method Object) Some reverse refactorings too, to inline program entities Moving program entities Constants, fields, methods (Move Method, Pull-Up Method), statements (Swap Statements), classes Replace Algorithm 10

11 Shortcomings of Eclipse on the move to MVC Missing implementation for key transformations Extract Class, Extract Method Object Buggy implementation of some refactorings Extract/Inline Local Variable: Ignores potential modification of parameters (on any path from source to target location) See for examples of bugs in (earlier releases of) modern IDEs Restricted implementation of existing refactorings Extract Method: contiguous code only; weak control over parameters Move Method: Source class must have a field with type of target class Extract Local Variable: No control over location of declaration 11

12 Thanks! 12

13 Backup 13

14 Internal Representation: The Plan Calculus Wide-spectrum Specification to implementation Canonical Abstracts away from syntactic variations Language independent All legacy languages have similar capabilities Expressive Directly expresses program semantics in terms of dataflow and control-flow Convenient for machine manipulation Naturally expresses semantic transformations Rich, C A formal representation for plans in the programmer's apprentice. In Readings in Artificial intelligence and Software Engineering, C. Rich and R. C. Waters, Eds. Morgan Kaufmann Publishers, San Francisco, CA,

15 Program Sliding A family of provably-correct code-motion untangling transformations Automate slice extraction: Sequential composition of a selected slice with its complement (i.e. co-slice); Useful for refactoring, componentization, the move to SOA, obfuscation, etc. Combine statement reordering with code duplication, including duplication of assignments Sliding is particularly strong in Preserving behavior Maximizing reuse (of extracted computation s results, in the complement) Minimizing code duplication, i.e. yielding a smaller, more desirable complement; Improving applicability, i.e. less reasons to reject a request Benefit from the best of leading earlier solutions without suffering some of their respective deficiencies MOVE 0 TO TOTAL-SALE MOVE 0 TO TOTAL-PAY PERFORM VARYING i FROM 1 BY 1 UNTIL i > DAYS ADD SALE(i) TO TOTAL-SALE COMPUTE TOTAL-PAY = TOTAL-PAY + 0.1*SALE(i) IF SALE(i)>1000 ADD 50 TO TOTAL-PAY END-IF END-PERFORM COMPUTE PAY = TOTAL-PAY / DAYS COMPUTE PROFIT = 0.9*TOTAL-SALE - COST Example source: Lakhotia and Deprez (rewritten in COBOL) 15

16 Towards a COBOL Refactoring Catalog Rename Paragraph This refactoring might look trivial, but as it is with the renaming of variables, it must be done with care: the new name must be valid, it must not conflict with existing names, and it must be replaced correctly in each call (PERFORM, GO TO, etc.), without violating any column restrictions Split/Merge Paragraphs When merging two consecutive paragraphs, one must check the second is not referenced, or if it is, its reference must always follow a call to the first paragraph such that the two calls can be merged. Similarly, one must verify that any call to the first paragraph is either followed by a call to the second, or it must be a non-returning call that implies fall-through to the second paragraph Extract/Inline Paragraph/Section/Program Could support clone detection too, such that upon extraction, the tool will identify (at least exact) clones of the selected code, and suggest to replace it too with a call to the newly introduced program Extract Slice (through Sliding) First support the extraction of the code for computing a set of variables in a selected compound statement (or sentence); later add support for extraction from internal program points, i.e., the slicing criteria involves pairs of program point and (sets of) variables of interest (at that particular point); and finally support arbitrary method extraction, i.e., the slicing criteria involves a set of statements (or sentences), not necessarily contiguous, for extraction Swap Consecutive (Independent) Executable Program Entities Such as compound statements, sentences, and even paragraphs or sections Split/Merge (Consecutive) Conditionals So long as two instances of the conditional s predicate are guaranteed to evaluate similarly Loop-Invariant Code Motion Computation flavor: A loop-invariant computation is moved inside/outside that loop, as in optimizing compilers Conditional flavor: Instead of a computation, it is a loop-invariant conditional being moved If moved out, the loop itself is duplicated, for each branch of the conditional, but with each branch simplified based on the known conditional s result 16

Untangling: A Slice Extraction Refactoring

Untangling: A Slice Extraction Refactoring Untangling: A Slice Extraction Refactoring Ran Ettinger and Mathieu Verbaere Programming Tools Group Computing Laboratory University of Oxford Thanks to our supervisor Oege de Moor Supported by an Eclipse

More information

On the automation of challenging refactorings through advanced method extraction techniques

On the automation of challenging refactorings through advanced method extraction techniques On the automation of challenging refactorings through advanced method extraction techniques Ran Ettinger (RanE@il.ibm.com, https://researcher.ibm.com/researcher/view.php?person=il-rane) IBM Research Haifa

More information

On the automation of challenging refactorings through advanced method extraction techniques

On the automation of challenging refactorings through advanced method extraction techniques On the automation of challenging refactorings through advanced method extraction techniques Ran Ettinger (RanE@il.ibm.com), IBM Haifa Research Lab In Software Engineering Course, Ben-Gurion University

More information

On the separation of queries from modifiers. Ran Ettinger, IBM Research Haifa CREST Open Workshop, University College London 24 January 2011

On the separation of queries from modifiers. Ran Ettinger, IBM Research Haifa CREST Open Workshop, University College London 24 January 2011 On the separation of queries from modifiers Ran Ettinger, IBM Research Haifa CREST Open Workshop, University College London 24 January 2011 Separate Query from Modifier (SQfM) A refactoring technique by

More information

On the separation of queries from modifiers

On the separation of queries from modifiers On the separation of queries from modifiers Ran Ettinger, IBM Research Haifa COST Action IC0701 9 th MC and WG Meeting Darmstadt, Germany 29 February 2012 1 Separate Query from Modifier (SQfM) A refactoring

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

Refactoring with Eclipse

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

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

Extract Slice Refactoring. Rani Ettinger, Programming Tools Group, May 19th, 2003

Extract Slice Refactoring. Rani Ettinger, Programming Tools Group, May 19th, 2003 Extract Slice Refactoring Rani Ettinger, Programming Tools Group, May 19th, 2003 Outline Extract Slice Refactoring: Motivation Example Mechanics Correctness issues: Behaviour Preservation Limitations and

More information

REFLECTIONS ON OPERATOR SUITES

REFLECTIONS ON OPERATOR SUITES REFLECTIONS ON OPERATOR SUITES FOR REFACTORING AND EVOLUTION Ralf Lämmel, VU & CWI, Amsterdam joint work with Jan Heering, CWI QUESTIONS What s the distance between refactoring and evolution? What are

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

Small changes to code to improve it

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

Relational model continued. Understanding how to use the relational model. Summary of board example: with Copies as weak entity

Relational model continued. Understanding how to use the relational model. Summary of board example: with Copies as weak entity COS 597A: Principles of Database and Information Systems Relational model continued Understanding how to use the relational model 1 with as weak entity folded into folded into branches: (br_, librarian,

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 ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis.

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

More information

An Evolution of Mathematical Tools

An Evolution of Mathematical Tools An Evolution of Mathematical Tools From Conceptualization to Formalization Here's what we do when we build a formal model (or do a computation): 0. Identify a collection of objects/events in the real world.

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

Chapter 17. Methodology Logical Database Design for the Relational Model

Chapter 17. Methodology Logical Database Design for the Relational Model Chapter 17 Methodology Logical Database Design for the Relational Model Chapter 17 - Objectives How to derive a set of relations from a conceptual data model. How to validate these relations using the

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

Introduction to Compilers

Introduction to Compilers Introduction to Compilers Compilers are language translators input: program in one language output: equivalent program in another language Introduction to Compilers Two types Compilers offline Data Program

More information

Scaling Testing of Refactoring Engines

Scaling Testing of Refactoring Engines 1 Scaling Testing of Refactoring Engines Melina Mongiovi, Rohit Gheyi (advisor) Abstract Defining and implementing refactorings is a nontrivial task since it is difficult to define preconditions to guarantee

More information

EXTRACTION OF REUSABLE COMPONENTS FROM LEGACY SYSTEMS

EXTRACTION OF REUSABLE COMPONENTS FROM LEGACY SYSTEMS EXTRACTION OF REUSABLE COMPONENTS FROM LEGACY SYSTEMS Moon-Soo Lee, Yeon-June Choi, Min-Jeong Kim, Oh-Chun, Kwon Telematics S/W Platform Team, Telematics Research Division Electronics and Telecommunications

More information

Goals of Program Optimization (1 of 2)

Goals of Program Optimization (1 of 2) Goals of Program Optimization (1 of 2) Goal: Improve program performance within some constraints Ask Three Key Questions for Every Optimization 1. Is it legal? 2. Is it profitable? 3. Is it compile-time

More information

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems

The architecture of Eiffel software 3.1 OVERVIEW classes clusters systems 3 Draft 5.02.00-0, 15 August 2005 (Santa Barbara). Extracted from ongoing work on future third edition of Eiffel: The Language. Copyright Bertrand Meyer 1986-2005. Access restricted to purchasers of the

More information

Aspect Refactoring Verifier

Aspect Refactoring Verifier Aspect Refactoring Verifier Charles Zhang and Julie Waterhouse Hans-Arno Jacobsen Centers for Advanced Studies Department of Electrical and IBM Toronto Lab Computer Engineering juliew@ca.ibm.com and Department

More information

Making Program Refactoring Safer

Making Program Refactoring Safer Making Program Refactoring Safer Gustavo Soares 1, Rohit Gheyi 1, Dalton Serey 1 1 Department of Computing and Systems UFCG 58429-900 Campina Grande PB Brazil {gsoares,rohit,dalton}@dsc.ufcg.edu.br Abstract.

More information

Program Syntax; Operational Semantics

Program Syntax; Operational Semantics 9/5 Solved Program Syntax; Operational Semantics CS 536: Science of Programming, Fall 2018 A. Why Our simple programming language is a model for the kind of constructs seen in actual languages. Step-by-step

More information

Big Data Management and NoSQL Databases

Big Data Management and NoSQL Databases NDBI040 Big Data Management and NoSQL Databases Lecture 10. Graph databases Doc. RNDr. Irena Holubova, Ph.D. holubova@ksi.mff.cuni.cz http://www.ksi.mff.cuni.cz/~holubova/ndbi040/ Graph Databases Basic

More information

Chapter 3: Relational Model

Chapter 3: Relational Model Chapter 3: Relational Model Structure of Relational Databases Relational Algebra Tuple Relational Calculus Domain Relational Calculus Extended Relational-Algebra-Operations Modification of the Database

More information

Restricted Use Case Modeling Approach

Restricted Use Case Modeling Approach RUCM TAO YUE tao@simula.no Simula Research Laboratory Restricted Use Case Modeling Approach User Manual April 2010 Preface Use case modeling is commonly applied to document requirements. Restricted Use

More information

Sound and Extensible Renaming for Java

Sound and Extensible Renaming for Java Sound and Extensible Renaming for Java Max Schäfer, Torbjörn Ekman, Oege de Moor Daniel Gąsienica Software Engineering Seminar May 12, 2009 What Is Refactoring? To rewrite existing source code in order

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

PLT Course Project Demo Spring Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang

PLT Course Project Demo Spring Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang PLT Course Project Demo Spring 2013 Chih- Fan Chen Theofilos Petsios Marios Pomonis Adrian Tang 1. Introduction To Code Obfuscation 2. LLVM 3. Obfuscation Techniques 1. String Transformation 2. Junk Code

More information

Chapter 2: Relational Model

Chapter 2: Relational Model Chapter 2: Relational Model Database System Concepts, 5 th Ed. See www.db-book.com for conditions on re-use Chapter 2: Relational Model Structure of Relational Databases Fundamental Relational-Algebra-Operations

More information

An Annotated Language

An Annotated Language Hoare Logic An Annotated Language State and Semantics Expressions are interpreted as functions from states to the corresponding domain of interpretation Operators have the obvious interpretation Free of

More information

Relational Model: History

Relational Model: History Relational Model: History Objectives of Relational Model: 1. Promote high degree of data independence 2. Eliminate redundancy, consistency, etc. problems 3. Enable proliferation of non-procedural DML s

More information

Recap: Class Diagrams

Recap: 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 information

Machine-Independent Optimizations

Machine-Independent Optimizations Chapter 9 Machine-Independent Optimizations High-level language constructs can introduce substantial run-time overhead if we naively translate each construct independently into machine code. This chapter

More information

Architectural Design. Architectural Design. Software Architecture. Architectural Models

Architectural Design. Architectural Design. Software Architecture. Architectural Models Architectural Design Architectural Design Chapter 6 Architectural Design: -the design the desig process for identifying: - the subsystems making up a system and - the relationships between the subsystems

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

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164)

Introduction to Programming Languages and Compilers. CS164 11:00-12:30 TT 10 Evans. UPRM ICOM 4029 (Adapted from: Prof. Necula UCB CS 164) Introduction to Programming Languages and Compilers CS164 11:00-12:30 TT 10 Evans 1 ICOM 4036 - Outline Prontuario Course Outline Brief History of PLs Programming Language Design Criteria Programming Language

More information

4. An interpreter is a program that

4. An interpreter is a program that 1. In an aboslute loading scheme, which loader function is accomplished by programmer? A. Allocation B. LInking C. Reallocation D. both (A) and (B) 2. A compiler program written in a high level language

More information

Advanced Compiler Construction

Advanced Compiler Construction Advanced Compiler Construction Qing Yi class web site: www.cs.utsa.edu/~qingyi/cs6363 cs6363 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science

More information

Structural and Syntactic Pattern Recognition

Structural and Syntactic Pattern Recognition Structural and Syntactic Pattern Recognition Selim Aksoy Department of Computer Engineering Bilkent University saksoy@cs.bilkent.edu.tr CS 551, Fall 2017 CS 551, Fall 2017 c 2017, Selim Aksoy (Bilkent

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

How to Harvest Reusable Components in Existing Software. Nikolai Mansurov Chief Scientist & Architect

How to Harvest Reusable Components in Existing Software. Nikolai Mansurov Chief Scientist & Architect How to Harvest Reusable Components in Existing Software Nikolai Mansurov Chief Scientist & Architect Overview Introduction Reuse, Architecture and MDA Option Analysis for Reengineering (OAR) Architecture

More information

On Refactoring for Open Source Java Program

On Refactoring for Open Source Java Program On Refactoring for Open Source Java Program Yoshiki Higo 1,Toshihiro Kamiya 2, Shinji Kusumoto 1, Katsuro Inoue 1 and Yoshio Kataoka 3 1 Graduate School of Information Science and Technology, Osaka University

More information

1 Version management tools as a basis for integrating Product Derivation and Software Product Families

1 Version management tools as a basis for integrating Product Derivation and Software Product Families 1 Version management tools as a basis for integrating Product Derivation and Software Product Families Jilles van Gurp, Christian Prehofer Nokia Research Center, Software and Application Technology Lab

More information

Chapter 2 Overview of the Design Methodology

Chapter 2 Overview of the Design Methodology Chapter 2 Overview of the Design Methodology This chapter presents an overview of the design methodology which is developed in this thesis, by identifying global abstraction levels at which a distributed

More information

CS34800 Information Systems. The Relational Model Prof. Walid Aref 29 August, 2016

CS34800 Information Systems. The Relational Model Prof. Walid Aref 29 August, 2016 CS34800 Information Systems The Relational Model Prof. Walid Aref 29 August, 2016 1 Chapter: The Relational Model Structure of Relational Databases Relational Algebra Tuple Relational Calculus Domain Relational

More information

Automatic Mining of Functionally Equivalent Code Fragments via Random Testing. Lingxiao Jiang and Zhendong Su

Automatic Mining of Functionally Equivalent Code Fragments via Random Testing. Lingxiao Jiang and Zhendong Su Automatic Mining of Functionally Equivalent Code Fragments via Random Testing Lingxiao Jiang and Zhendong Su Cloning in Software Development How New Software Product Cloning in Software Development Search

More information

CHAPTER 11 Refactoring

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

More information

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

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

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

RECODER - The Architecture of a Refactoring System

RECODER - The Architecture of a Refactoring System RECODER - The Architecture of a Refactoring System Andreas Ludwig Prof. U. Aßmann http://recoder.sf.net Overview ➊Programming in the Large Problems, Concepts, The Approach ➋The Architecture of RECODER

More information

How We Refactor, and How We Know It

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

More information

In his paper of 1972, Parnas proposed the following problem [42]:

In his paper of 1972, Parnas proposed the following problem [42]: another part of its interface. (In fact, Unix pipe and filter systems do this, the file system playing the role of the repository and initialization switches playing the role of control.) Another example

More information

Detecting Structural Refactoring Conflicts Using Critical Pair Analysis

Detecting Structural Refactoring Conflicts Using Critical Pair Analysis SETra 2004 Preliminary Version Detecting Structural Refactoring Conflicts Using Critical Pair Analysis Tom Mens 1 Software Engineering Lab Université de Mons-Hainaut B-7000 Mons, Belgium Gabriele Taentzer

More information

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design Chapter 6 Architectural Design Lecture 1 1 Topics covered ² Architectural design decisions ² Architectural views ² Architectural patterns ² Application architectures 2 Software architecture ² The design

More information

GRASP Design Patterns A.A. 2018/2019

GRASP Design Patterns A.A. 2018/2019 GRASP Design Patterns A.A. 2018/2019 Objectives Introducing design patterns Introduzione ai design pattern Designing objects and responsibilities GRASP design patterns A long corridor A passage room Does

More information

DAT159 Refactoring (Introduction)

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

More information

כללי Extreme Programming

כללי Extreme Programming פיתוח מער כות תוכנה מבוססות Java כללי Extreme Programming אוהד ברזילי ohadbr@tau.ac.il Based on: K. Beck: Extreme Programming Explained. E. M. Burke and B.M. Coyner: Java Extreme Programming Cookbook.

More information

CSE 501: Compiler Construction. Course outline. Goals for language implementation. Why study compilers? Models of compilation

CSE 501: Compiler Construction. Course outline. Goals for language implementation. Why study compilers? Models of compilation CSE 501: Compiler Construction Course outline Main focus: program analysis and transformation how to represent programs? how to analyze programs? what to analyze? how to transform programs? what transformations

More information

SAFEREFACTOR Tool for Checking Refactoring Safety

SAFEREFACTOR Tool for Checking Refactoring Safety SAFEREFACTOR Tool for Checking Refactoring Safety Gustavo Soares 1, Diego Cavalcanti 1, Rohit Gheyi 1, Tiago Massoni 1, Dalton Serey 1,Márcio Cornélio 2 1 Department of Systems and Computing UFCG 2 Department

More information

Hierarchical Program Representation for Program Element Matching

Hierarchical Program Representation for Program Element Matching Hierarchical Program Representation for Program Element Matching Fernando Berzal, Juan-Carlos Cubero, and Aída Jiménez Dept. Computer Science and Artificial Intelligence, ETSIIT - University of Granada,

More information

Relaxed Memory-Consistency Models

Relaxed Memory-Consistency Models Relaxed Memory-Consistency Models [ 9.1] In Lecture 13, we saw a number of relaxed memoryconsistency models. In this lecture, we will cover some of them in more detail. Why isn t sequential consistency

More information

Embarcadero PowerSQL 1.1 New Features Guide. Published: July 14, 2008

Embarcadero PowerSQL 1.1 New Features Guide. Published: July 14, 2008 Embarcadero PowerSQL 1.1 New Features Guide Published: July 14, 2008 Copyright 1994-2008 Embarcadero Technologies, Inc. Embarcadero Technologies, Inc. 100 California Street, 12th Floor San Francisco, CA

More information

An Overview of Cost-based Optimization of Queries with Aggregates

An Overview of Cost-based Optimization of Queries with Aggregates An Overview of Cost-based Optimization of Queries with Aggregates Surajit Chaudhuri Hewlett-Packard Laboratories 1501 Page Mill Road Palo Alto, CA 94304 chaudhuri@hpl.hp.com Kyuseok Shim IBM Almaden Research

More information

6. Hoare Logic and Weakest Preconditions

6. Hoare Logic and Weakest Preconditions 6. Hoare Logic and Weakest Preconditions Program Verification ETH Zurich, Spring Semester 07 Alexander J. Summers 30 Program Correctness There are many notions of correctness properties for a given program

More information

A Lightweight Language for Software Product Lines Architecture Description

A Lightweight Language for Software Product Lines Architecture Description A Lightweight Language for Software Product Lines Architecture Description Eduardo Silva, Ana Luisa Medeiros, Everton Cavalcante, Thais Batista DIMAp Department of Informatics and Applied Mathematics UFRN

More information

Intermediate Representation (IR)

Intermediate Representation (IR) Intermediate Representation (IR) Components and Design Goals for an IR IR encodes all knowledge the compiler has derived about source program. Simple compiler structure source code More typical compiler

More information

Accelerated Mobile Pages Advertisement and Cascading Style Sheet Merging

Accelerated Mobile Pages Advertisement and Cascading Style Sheet Merging Technical Disclosure Commons Defensive Publications Series March 06, 2017 Accelerated Mobile Pages Advertisement and Cascading Style Sheet Merging Richard Rapp Justin Lewis Follow this and additional works

More information

Echinacea Release Notes

Echinacea Release Notes Echinacea Release Notes Sandbox: July, 2018 Production: September, 2018 At-a-Glance New Features and Enhancements highlights: Archiving Transactions to save on data storage Improved styling of Financial

More information

Instruction Scheduling Beyond Basic Blocks Extended Basic Blocks, Superblock Cloning, & Traces, with a quick introduction to Dominators.

Instruction Scheduling Beyond Basic Blocks Extended Basic Blocks, Superblock Cloning, & Traces, with a quick introduction to Dominators. Instruction Scheduling Beyond Basic Blocks Extended Basic Blocks, Superblock Cloning, & Traces, with a quick introduction to Dominators Comp 412 COMP 412 FALL 2016 source code IR Front End Optimizer Back

More information

CS232 VHDL Lecture. Types

CS232 VHDL Lecture. Types CS232 VHDL Lecture VHSIC Hardware Description Language [VHDL] is a language used to define and describe the behavior of digital circuits. Unlike most other programming languages, VHDL is explicitly parallel.

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

F. Tip and M. Weintraub REFACTORING. Thanks go to Andreas Zeller for allowing incorporation of his materials

F. Tip and M. Weintraub REFACTORING. Thanks go to Andreas Zeller for allowing incorporation of his materials F. Tip and M. Weintraub REFACTORING Thanks go to Andreas Zeller for allowing incorporation of his materials TODAY S LECTURE anti-patterns common response to a recurring problem that is usually ineffective

More information

340 Review Fall Midterm 1 Review

340 Review Fall Midterm 1 Review 340 Review Fall 2016 Midterm 1 Review Concepts A. UML Class Diagrams 1. Components: Class, Association (including association name), Multiplicity Constraints, General Constraints, Generalization/Specialization,

More information

10 - Integrated Development Environments

10 - Integrated Development Environments 10 - Integrated Development Environments Motivation Writing a toy application with a text editor is comparatively easy. Developing a large software system with just a text editor is much more difficult

More information

Compiler Design 1. Introduction to Programming Language Design and to Compilation

Compiler Design 1. Introduction to Programming Language Design and to Compilation Compiler Design 1 Introduction to Programming Language Design and to Compilation Administrivia Lecturer: Kostis Sagonas (Hus 1, 352) Course home page: http://user.it.uu.se/~kostis/teaching/kt1-11 If you

More information

Control-Flow Analysis

Control-Flow Analysis Control-Flow Analysis Dragon book [Ch. 8, Section 8.4; Ch. 9, Section 9.6] Compilers: Principles, Techniques, and Tools, 2 nd ed. by Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jerey D. Ullman on reserve

More information

IBM WebSphere Studio Asset Analyzer, Version 5.1

IBM WebSphere Studio Asset Analyzer, Version 5.1 Helping you quickly understand, enhance and maintain enterprise applications IBM, Version 5.1 Highlights n Provides interactive textual n Helps shorten the learning curve and graphic reports that help

More information

Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore

Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Compiler Design Prof. Y. N. Srikant Department of Computer Science and Automation Indian Institute of Science, Bangalore Module No. # 10 Lecture No. # 16 Machine-Independent Optimizations Welcome to the

More information

Chapter 6 Architectural Design

Chapter 6 Architectural Design Chapter 6 Architectural Design Chapter 6 Architectural Design Slide 1 Topics covered The WHAT and WHY of architectural design Architectural design decisions Architectural views/perspectives Architectural

More information

Laboratorio di Programmazione. Prof. Marco Bertini

Laboratorio di Programmazione. Prof. Marco Bertini Laboratorio di Programmazione Prof. Marco Bertini marco.bertini@unifi.it http://www.micc.unifi.it/bertini/ Code versioning: techniques and tools Software versions All software has multiple versions: Each

More information

How metadata can reduce query and report complexity As printed in the September 2009 edition of the IBM Systems Magazine

How metadata can reduce query and report complexity As printed in the September 2009 edition of the IBM Systems Magazine Untangling Web Query How metadata can reduce query and report complexity As printed in the September 2009 edition of the IBM Systems Magazine Written by Gene Cobb cobbg@us.ibm.com What is Metadata? Since

More information

Software: Systems and Applications Software

Software: Systems and Applications Software Chapter 4 Software: Systems and Applications Software The Importance of Software in Business High Software $ Hardware Low 1950 today time An Overview of Software What is Software? See Chapter 1! Classes

More information

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

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

More information

R13 SET Discuss how producer-consumer problem and Dining philosopher s problem are solved using concurrency in ADA.

R13 SET Discuss how producer-consumer problem and Dining philosopher s problem are solved using concurrency in ADA. R13 SET - 1 III B. Tech I Semester Regular Examinations, November - 2015 1 a) What constitutes a programming environment? [3M] b) What mixed-mode assignments are allowed in C and Java? [4M] c) What is

More information

MIT Introduction to Program Analysis and Optimization. Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology

MIT Introduction to Program Analysis and Optimization. Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology MIT 6.035 Introduction to Program Analysis and Optimization Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Program Analysis Compile-time reasoning about run-time behavior

More information

Software Construction

Software Construction Lecture 11: Command Design Pattern Software Construction in Java for HSE Moscow Tom Verhoeff Eindhoven University of Technology Department of Mathematics & Computer Science Software Engineering & Technology

More information

Semantic Interconnection Models & Inscape. Unit Interconnection Model. Example Uses of Unit IM

Semantic Interconnection Models & Inscape. Unit Interconnection Model. Example Uses of Unit IM Architecture and Design Intent Semantic Interconnection Models & Inscape Dewayne E Perry ENS 623A Office Hours: T/Th 11:00-12:00 perry @ ece.utexas.edu www.ece.utexas.edu/~perry/education/382v-s06/ Lecture

More information

NST: A Unit Test Framework for Common Lisp

NST: A Unit Test Framework for Common Lisp Smart Information Flow Technologies (SIFT, LLC) TC-lispers, June 9, 2009 Outline 1 Unit testing 2 3 The basic idea Early implementations, and other lessons How it maybe should work 4 What is unit testing?

More information

Using Strategies for Assessment of Functional Programming Exercises

Using Strategies for Assessment of Functional Programming Exercises Using Strategies for Assessment of Functional Programming Exercises Ir. Alex Gerdes Joint work with prof. dr. Johan Jeuring and dr. Bastiaan Heeren Open Universiteit Nederland School of Computer Science

More information

IBM Best Practices Working With Multiple CCM Applications Draft

IBM Best Practices Working With Multiple CCM Applications Draft Best Practices Working With Multiple CCM Applications. This document collects best practices to work with Multiple CCM applications in large size enterprise deployment topologies. Please see Best Practices

More information

Automatic Parallelization of Sequential C Code

Automatic Parallelization of Sequential C Code Automatic Parallelization of Sequential C Code Pete Gasper Department of Mathematics and Computer Science South Dakota School of Mines and Technology peter.gasper@gold.sdsmt.edu Caleb Herbst Department

More information

Model driven Engineering & Model driven Architecture

Model driven Engineering & Model driven Architecture Model driven Engineering & Model driven Architecture Prof. Dr. Mark van den Brand Software Engineering and Technology Faculteit Wiskunde en Informatica Technische Universiteit Eindhoven Model driven software

More information

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation

1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation 1DL321: Kompilatorteknik I (Compiler Design 1) Introduction to Programming Language Design and to Compilation Administrivia Lecturer: Kostis Sagonas (kostis@it.uu.se) Course home page (of previous year):

More information