Change Impact Analysis



Similar documents
Section IV.1: Recursive Algorithms and Recursion Trees

CS 2302 Data Structures Spring 2015

SOFTWARE TESTING TRAINING COURSES CONTENTS

Review; questions Discussion of Semester Project Arbitrary interprocedural control flow Assign (see Schedule for links)

Computing Concepts with Java Essentials

Loop Invariants and Binary Search

16. Recursion. COMP 110 Prasun Dewan 1. Developing a Recursive Solution

A binary search tree or BST is a binary tree that is either empty or in which the data element of each node has a key, and:

AP Computer Science Java Mr. Clausen Program 9A, 9B

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

Software Testing & Analysis (F22ST3): Static Analysis Techniques 2. Andrew Ireland

Big Data Processing with Google s MapReduce. Alexandru Costan

Optimizations. Optimization Safety. Optimization Safety. Control Flow Graphs. Code transformations to improve program

Designing with Exceptions. CSE219, Computer Science III Stony Brook University

Introduction to Computer Programming (CS 1323) Project 9

Rumen. Table of contents

HOW TO WRITE A LABORATORY REPORT

Software Testing. Definition: Testing is a process of executing a program with data, with the sole intention of finding errors in the program.

Visual Data Mining. Motivation. Why Visual Data Mining. Integration of visualization and data mining : Chidroop Madhavarapu CSE 591:Visual Analytics

MAX = 5 Current = 0 'This will declare an array with 5 elements. Inserting a Value onto the Stack (Push)

Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition

Outline. 1 Denitions. 2 Principles. 4 Implementation and Evaluation. 5 Debugging. 6 References

Not agree with bug 3, precision actually was. 8,5 not set in the code. Not agree with bug 3, precision actually was

Data Structures and Algorithms Written Examination

Software Reliability Estimation Based on Static Error Detection

AUTOMATED TESTING and SPI. Brian Lynch

A Static Analyzer for Large Safety-Critical Software. Considered Programs and Semantics. Automatic Program Verification by Abstract Interpretation

Using Eclipse CDT/PTP for Static Analysis

Static Analysis. Find the Bug! : Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled

CS 141: Introduction to (Java) Programming: Exam 1 Jenny Orr Willamette University Fall 2013

Oracle Database: SQL and PL/SQL Fundamentals

Algorithms and Data Structures Written Exam Proposed SOLUTION

Eclipse Visualization and Performance Monitoring

Distributed Computing and Big Data: Hadoop and MapReduce

Recursion. Slides. Programming in C++ Computer Science Dept Va Tech Aug., Barnette ND, McQuain WD

Java SE 8 Programming

Introduction to Programming System Design. CSCI 455x (4 Units)

COMPUTER SCIENCE COURSE OUTLINE

Data Structures. Algorithm Performance and Big O Analysis

UNIVERSITY OF WATERLOO Software Engineering. Analysis of Different High-Level Interface Options for the Automation Messaging Tool

Chapter 14 The Binary Search Tree

Java course - IAG0040. Unit testing & Agile Software Development

Chapter 6 Experiment Process

Why? A central concept in Computer Science. Algorithms are ubiquitous.

CHAPTER 11: SALES REPORTING

Java Program Coding Standards Programming for Information Technology

Oracle Database: SQL and PL/SQL Fundamentals NEW

16.1 MAPREDUCE. For personal use only, not for distribution. 333

How To Cluster Of Complex Systems

Lecture 13: The Knapsack Problem

The Tower of Hanoi. Recursion Solution. Recursive Function. Time Complexity. Recursive Thinking. Why Recursion? n! = n* (n-1)!

1. Introduction What is Slice? Background Why Slice? Purpose of this Document Intended Audience...

Static Program Transformations for Efficient Software Model Checking

MEASURES FOR EXCELLENCE SIZING AND CONTROLLING INCREMENTAL SOFTWARE DEVELOPMENT

Expanding the CASEsim Framework to Facilitate Load Balancing of Social Network Simulations

AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities

Big Data looks Tiny from the Stratosphere

Big Data Analytics. Lucas Rego Drumond

Oracle Database: SQL and PL/SQL Fundamentals

CS/COE

Project Scheduling & Tracking

How To Trace

Reinforcement Learning

Workflow Scenario: Trouble Ticket

Software Engineering 1

Kids College Computer Game Programming Exploring Small Basic and Procedural Programming

CSE373: Data Structures and Algorithms Lecture 3: Math Review; Algorithm Analysis. Linda Shapiro Winter 2015

Java Application Developer Certificate Program Competencies

EMF Compare. EMF Compare. Summary : Table des mises à jour Version Date Auteur(s) Mises à jour v1.0 06/10/11 Laurent Goubet Initial Version

Moving from CS 61A Scheme to CS 61B Java

GRID SEARCHING Novel way of Searching 2D Array

University Electronic Health Record

Oracle SQL. Course Summary. Duration. Objectives

THE SOFTWARE DEVELOPMENT LIFE CYCLE *The following was adapted from Glencoe s Introduction to Computer Science Using Java

ProfBuilder: A Package for Rapidly Building Java Execution Profilers Brian F. Cooper, Han B. Lee, and Benjamin G. Zorn

CS Matters in Maryland CS Principles Course

KS3 Computing Group 1 Programme of Study hours per week

Database Application Developer Tools Using Static Analysis and Dynamic Profiling

Query Processing C H A P T E R12. Practice Exercises

VisCG: Creating an Eclipse Call Graph Visualization Plug-in. Kenta Hasui, Undergraduate Student at Vassar College Class of 2015

Module 2. Software Life Cycle Model. Version 2 CSE IIT, Kharagpur

Binary Search Trees CMPSC 122

Computers. An Introduction to Programming with Python. Programming Languages. Programs and Programming. CCHSG Visit June Dr.-Ing.

Query-Based Approach to Workflow Process Dependency Analysis Technical Report 01 Faculty of Science 2005

Recovering Business Rules from Legacy Source Code for System Modernization

Continuous???? Copyright 2015 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Reinforcement Learning

Software Engineering Reference Framework

Pseudo code Tutorial and Exercises Teacher s Version

Transcription:

Change Impact Analysis Martin Ward Reader in Software Engineering martin@gkc.org.uk Software Technology Research Lab De Montfort University

Change Impact Analysis Impact analysis is a process that predicts and determines the parts of a software system that can be affected by changes to the system. Change Set: The parts of the software system that are to be changed Impact Set: The parts of the software system that are affected by the changes

Impact Analysis is Essential Impact analysis is a systematic approach to understanding impacts of software changes and is essential to: Identify the parts that require retesting Improve estimation of time, labor and money required for maintenance Reduce potential errors due to unknown change impacts Improve overall efficiency in software maintenance

Change Impact Analysis Impact analysis involves the following steps:

Change Impact Analysis Impact analysis involves the following steps: 1. Identify the artefacts that are to be modified

Change Impact Analysis Impact analysis involves the following steps: 1. Identify the artefacts that are to be modified 2. Trace forwards through any relationships that indicate a dependency on that artefact. These relationships will have the selected artefact as a source of the dependency.

Change Impact Analysis Impact analysis involves the following steps: 1. Identify the artefacts that are to be modified 2. Trace forwards through any relationships that indicate a dependency on that artefact. These relationships will have the selected artefact as a source of the dependency. 3. If a change affects any of these dependent artefacts, then other artefacts that depend on them will also be affected. The impact analysis must therefore act recursively looking for relationships that have any of the dependent artefacts as sources.

Change Impact Analysis Impact analysis involves the following steps: 1. Identify the artefacts that are to be modified 2. Trace forwards through any relationships that indicate a dependency on that artefact. These relationships will have the selected artefact as a source of the dependency. 3. If a change affects any of these dependent artefacts, then other artefacts that depend on them will also be affected. The impact analysis must therefore act recursively looking for relationships that have any of the dependent artefacts as sources. 4. This process continues until a complete graph is obtained starting at the selected artefacts and finishing with artefacts on which nothing else depends. Each artefact in the graph could therefore be affected by the change.

Impact Analysis Scope Management Any recursive analysis like this can produce large numbers of results which can often be meaningless to the user due to the sheer volume of information. In order to make the results more meaningful, the impact analysis needs to be scoped in some way. Mechanisms for scoping the impact analysis queries include:

Impact Analysis Scope Management Any recursive analysis like this can produce large numbers of results which can often be meaningless to the user due to the sheer volume of information. In order to make the results more meaningful, the impact analysis needs to be scoped in some way. Mechanisms for scoping the impact analysis queries include: Identify the maximum number of iterations of relationship traversal in the graph. This limits the graph to the artefacts that are most closely related to the artefact being changed.

Impact Analysis Scope Management Any recursive analysis like this can produce large numbers of results which can often be meaningless to the user due to the sheer volume of information. In order to make the results more meaningful, the impact analysis needs to be scoped in some way. Mechanisms for scoping the impact analysis queries include: Identify the maximum number of iterations of relationship traversal in the graph. This limits the graph to the artefacts that are most closely related to the artefact being changed. Restrict the query to specific relationships. This identifies the sort of relationships that are of interest in the analysis.

Static Impact Analysis Depends on analysis of source code Based on assumptions of all possible software runtime behaviors Results can include most of the software system in the impact set

Dynamic Impact Analysis Based on software runtime data and dynamic interactive behaviors of the software system Depends on a set of executions of the system Tend to produce more precise results than static approaches

Computing an Impact Analysis An impact analysis within a single program is equivalent to a forward slice. Computed by tracking control and data dependencies: i := 1; prod := 1; sum := 0; while i n do a := input[i]; sum := sum+a; prod := prod a; i := i+1 od; output1 := sum; output2 := prod

Computing an Impact Analysis An impact analysis within a single program is equivalent to a forward slice. Computed by tracking control and data dependencies: i := 1; prod := 1; sum := 0; while i n do a := input[i]; sum := sum+a; prod := prod a; i := i+1 od; output1 := sum; output2 := prod Note: a forward slice is not usually a complete program.

Forward Slicing Example If the condition in the loop is affected, then all variables assigned in the loop are included: i := 1; prod := 1; sum := 0; while i n sum max do a := input[i]; sum := sum+a; prod := prod a; i := i+1 od; output1 := sum; output2 := prod

Forward Slicing Example If the condition in the loop is affected, then all variables assigned in the loop are included: i := 1; prod := 1; sum := 0; while i n sum max do a := input[i]; sum := sum+a; prod := prod a; i := i+1 od; output1 := sum; output2 := prod

Forward Slicing Example Slicing on the first assignment to sum: i := 1; prod := 1; sum := 0; while i n do a := input[i]; sum := sum+a; prod := prod a; i := i+1 od; output1 := sum; sum := 0; output2 := sum

Forward Slicing Example Slicing on the first assignment to sum: i := 1; prod := 1; sum := 0; while i n do a := input[i]; sum := sum+a; prod := prod a; i := i+1 od; output1 := sum; sum := 0; output2 := sum

Change Impact Analysis Tools Chianti is a change impact analysis tool for Java that is implemented within eclipse. Analyse two versions of a Java program Decompose their difference into a set of atomic changes Calculate a partial order of inter-dependencies of these changes Report change impact in terms of affected (regression or unit) tests whose execution behavior may have been modified by the applied changes. For each affected test, determine a set of affecting changes that were responsible for the test s modified behavior.