Systematic Source Code Transformations. Gustavo SANTOS

Similar documents
System Specific, Source Code Transformations

Recording and Replaying System Specific, Source Code Transformations

TopicViewer: Evaluating Remodularizations Using Semantic Clustering

AURA: A Hybrid Approach to Identify

APIEvolutionMiner: Keeping API Evolution under Control

Remodularization Analysis using Semantic Clustering

Making Program Refactoring Safer

2nd Belgian-Dutch workshop on Software Evolution

BugMaps-Granger: A Tool for Causality Analysis between Source Code Metrics and Bugs

Evolizer A Platform for Software Evolution Analysis and Research

Klocwork Architecture Excavation Methodology. Nikolai Mansurov Chief Scientist & Architect

ForkSim: Generating Software Forks for Evaluating Cross-Project Similarity Analysis Tools

Chapter 16 Recommending Program Transformations. Automating Repetitive Software Changes

Refactoring Practice: How it is and How it Should be Supported

Agenda. Tool-Supported Detection of Code Smells in Software Aspectization. Motivation. Mistakes in Software Aspectization. Advice-related mistakes

Automatically Generating Refactorings to Suppport API Evolution

Whole Platform Foundation. The Long Way Toward Language Oriented Programming

Automated Fault Identification (STATUS REPORT)

3.4 Data-Centric workflow

DIONE. (DAML Integrated Ontology Evolution Tools) Ontology Versioning in Semantic Web Applications. ISX Corporation Lehigh University

Classes and Objects. Object Orientated Analysis and Design. Benjamin Kenwright

Comparing Approaches to Analyze Refactoring Activity on Software Repositories

Seminar report Software reuse

High Available Complex Event Processing with Red Hat JBoss BRMS. Duncan Doyle Senior Architect, Red Hat

High Available Complex Event Processing with Red Hat JBoss BRMS. Duncan Doyle Senior Architect, Red Hat

Identification of Crosscutting Concerns: A Survey

SOFTWARE ENGINEERING. Curriculum in Software Engineering. Program Educational Objectives

Making Program Refactoring Safer

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

Storm. Distributed and fault-tolerant realtime computation. Nathan Marz Twitter

Commit 2.0. Marco D Ambros, Michele Lanza. Romain Robbes. ABSTRACT

Conducting a Self-Assessment of a Long-Term Archive for Interdisciplinary Scientific Data as a Trustworthy Digital Repository

A Characterization Study of Repeated Bug Fixes

The Journal of Systems and Software

Aspect Refactoring Verifier

Version control CSE 403

Multi-Tenancy & Isolation. Bogdan Munteanu - Dropbox

Klocwork Architecture Excavation Methodology. Nikolai Mansurov Chief Scientist & Architect

A MDD Methodology for Specification of Embedded Systems and Automatic Generation of Fast Configurable and Executable Performance Models

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

An Empirical Study of Multi-Entity Changes in Real Bug Fixes

Software Quality Assurance Plan

Automatic Inference of Structural Changes for Matching Across Program Versions

Large scale corporate Web Analysis for Business Intelligence

The tools of the MATERIA Project

A few more things about Agile and SE. Could help in interviews, but don t try to bluff your way through

Debugging Abstract State Machine Specifications: An Extension of CoreASM

IBM Software IBM InfoSphere Information Server for Data Quality

Analyzing Refactorings on Software Repositories

Configuration Management in the STAR Framework *

CSC 408F/CSC2105F Lecture Notes

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

Interactive Debugging for Big Data Analytics

Multi-Objective Optimization for Software Refactoring and Evolution

Quantifying and Assessing the Merge of Cloned Web-Based System: An Exploratory Study

A Scalable Approach to User-session-based Testing of Web Applications through Concept Analysis

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

Mining Frequent Bug-Fix Code Changes

More Accurate Recommendations for Method-Level Changes

License.

Visualizing the evolution of software using softchange

Reliability of Software Fault Prediction using Data Mining and Fuzzy Logic

DRVerify: The Verification of Physical Verification

REFLECTIONS ON OPERATOR SUITES

14 / 10 / 2013 M3 SOFT V3.0 AC8 NEW FEATURES

Rochester Institute of Technology. Making personalized education scalable using Sequence Alignment Algorithm

Getting the right module structure: finding and fixing problems in your projects!

CHAPTER 9 DESIGN ENGINEERING. Overview

Copyright by Na Meng 2014

Program Synthesis for Data Manipulation. Gustavo Soares Federal University of Campina Grande

San Jose State University College of Science Department of Computer Science CS151, Object-Oriented Design, Sections 1,2 and 3, Spring 2017

Searching for Configurations in Clone Evaluation A Replication Study

Interactive Exploration of Semantic Clusters

Combining Probabilistic Ranking and Latent Semantic Indexing for Feature Identification

Finding Extract Method Refactoring Opportunities by Analyzing Development History

Assessing and Improving Code Transformations to Support Software Evolution

BSIT 1 Technology Skills: Apply current technical tools and methodologies to solve problems.

Cheshire 3 Framework White Paper: Implementing Support for Digital Repositories in a Data Grid Environment

Matching Program Elements for Multi-Version Program Analyses

Introduction. O.Univ.-Prof. DI Dr. Wolfgang Pree. Universität Salzburg

Scaling Testing of Refactoring Engines

Containers Infrastructure for Advanced Management. Federico Simoncelli Associate Manager, Red Hat October 2016

Support for Static Concept Location with sv3d

On the Impact of Refactoring Operations on Code Quality Metrics

Improve Reliability With Accurate Voltage-Aware DRC. Matthew Hogan, Mentor Graphics

The Beyond the Border Action Plan

Grid Services and the Globus Toolkit

Managing Learning Objects in Large Scale Courseware Authoring Studio 1

SANER 17. Klagenfurt, Austria

1. Management Information Systems/ MIS211 (3 Crh.) pre. CS104+ BA Programming & Data Structures / MIS 213 (3 Cr.h.) pre CS104 (Computer Skills)

Theophilus Benson Aditya Akella David A Maltz

Token based clone detection using program slicing

Predicting Bugs. by Analyzing History. Sunghun Kim Research On Program Analysis System Seoul National University

KEEPING DATA ACCURATE WITH THE DUSA APPLICATION

Cisco Virtualized Workload Mobility Introduction

EiffelStudio the Eiffel IDE

Overview. Prerequisites. Course Outline. Course Outline :: Apache Spark Development::

Information Security Policy

BACHELOR OF COMPUTER APPLICATION

Software Architecture Recovery based on Dynamic Analysis

Transcription:

Systematic Source Code Transformations Gustavo SANTOS

Presentation Bachelor in Computer Science Master in Computer Science Short visit to RMoD team Funded by CAPES (Brazil) Science Without Borders program 2

Areas of Interest Change Impact Analysis Modularization Information Retrieval Quality Metrics Software Evolution 3

Introduction Identifying Systematic Code Transformations Replaying Systematic Code Transformations

Software Evolution Software is in constant evolution to remain useful [Leh1980] Evolution is composed of changes Performed in distinct moments in time By many developers Developers need to reason about code changes [Hat2011] [Leh1980] On Understanding Laws, Evolution, and Conservation in the Large-Program Life Cycle. JSS [Hat2011] Software Evolution Comprehension: Replay to the Rescue. ICPC 5

Refactoring Change made to the internal structure to make it [ ] cheaper to modify [ ] without changing its observable behavior [Fow1999] Regular and applied to few entities [Avg2013] [Fow1999] Refactoring: Improving the Design of Existing Code [Avg2013] Architecture sustainability. IEEE Software 6

Rearchitecting Rearchitecting (large refactoring) [Avg2013] Update APIs Improve the organization Less frequent but involves the entire system Rearchitecting dataset as product of my Master [San2014] [Avg2013] Architecture sustainability. IEEE Software [San2014] Remodularization Analysis using Semantic Clustering. CSMR-WCRE 7

Software Evolution Systematic Code Changes In Eclipse 2.1 3.0, for example: move class C to a package ui.ide in the initializer of C, add invocation to method setactionid Applied 22 times 8

Transformation Pattern Sequences of transformations that are applied to similar code entities organizeactioninheritance(class C) moveclass(c, getpackage( ui.ide )) addinvocation(c(), getmethod( setactionid )) transformation operator transformation pattern Operators can be atomic or aggregated 9

Conclusions Transformation patterns can be: Complex Tedious Error-prone Automation is needed 10

Introduction Identifying Systematic Code Transformations Replaying Systematic Code Transformations

Related Work We found work concerning such activity Application Destination of changes [Pan2009] Bug Fixes inside methods only [And2008] API evolution inside methods only [Kim2013] General files only [Mil2014] General inside methods only [Jia2015] General inside classes only 12

Related Work No existing work in rearchitecting Destination of the changes More complex operators Properties of the entities involved More system specific patterns 13

Investigative Study Identify similar changes semi-automatically Rearchitecting dataset Performed manually by the developers Systems before and after rearchitecting 14

Methodology Identify similar changes semi-automatically Extract the diff between versions Filter groups of similar changes Manually identify similar properties move class C to a package ui.ide in the initializer of C, add invocation to method setactionid C extends eclipse.action 15

Transformation Patterns Total of eleven patterns in real software systems Transformation Patterns are frequent 16

Transformation Patterns In JHotDraw, some operators were not applied In other systems, the pattern was not applied at once Transformation Patterns are complex 17

Conclusions Automation is needed Perform the transformations correctly Find transformation opportunities Generate custom transformations Abstract Replicable System specific Submitted paper to ICSME (under review) 18

Introduction Identifying Systematic Code Transformations Replaying Systematic Code Transformations

Problem Transformation patterns exist Generate custom, abstract transformations Replay in different code locations 20

Related Work Automated Code Transformation Application Destination of Changes Sydit [Men2011] Bug fixes methods only Lase [Men2013] Bug fixes methods only Critics [Zha2015] Bug fixes customizable 21

Solution move class StoreAction to a package ui.ide in StoreAction(), add invocation to setactionid What if the developer could Perform the changes manually once Generalize the performed changes Replay the changes in other locations execute it for all class C that extends eclipse.action 22

Approach MacroRecorder For each recorded event in the development tool, generate an equivalent transformation Macro Recorder Development Tool Transformation Tool e.g., Pharo, Eclipse e.g., Refactoring, Eclipse 23

Illustrating Example Enable recording Then perform the change manually remove method blocknode in class Parser remove class BlockNode Stop recording 24

Illustrating Example - Record performed changes changed entities changed code 25

Illustrating Example - Generalize add a new value add a new name, then save 26

Illustrating Example - Replay In the development tool, apply it to a new method with my custom name 27

Illustrating Example - Replay with the selected method Inspect the changes before applying, then execute Replay 28

Future Work Use MacroRecorder on the patterns we found before Check if the examples are correct 29