Software Engineering Department Graph-Less Dynamic Dependence-Based Dynamic Slicing Algorithms Árpád Beszédes, Tamás Gergely and Tibor Gyimóthy University.

Slides:



Advertisements
Similar presentations
Program Slicing: Theory and Practice Tibor Gyimóthy Department of Software Engineering University of Szeged.
Advertisements

A Survey of Runtime Verification Jonathan Amir 2004.
Compiler Support for Superscalar Processors. Loop Unrolling Assumption: Standard five stage pipeline Empty cycles between instructions before the result.
Introduction to Memory Management. 2 General Structure of Run-Time Memory.
Recursion vs. Iteration The original Lisp language was truly a functional language: –Everything was expressed as functions –No local variables –No iteration.
Programming Languages Marjan Sirjani 2 2. Language Design Issues Design to Run efficiently : early languages Easy to write correctly : new languages.
Program Slicing. 2 CS510 S o f t w a r e E n g i n e e r i n g Outline What is slicing? Why use slicing? Static slicing of programs Dynamic Program Slicing.
Program Slicing Mark Weiser and Precise Dynamic Slicing Algorithms Xiangyu Zhang, Rajiv Gupta & Youtao Zhang Presented by Harini Ramaprasad.
1 Program Slicing Purvi Patel. 2 Contents Introduction What is program slicing? Principle of dependences Variants of program slicing Slicing classifications.
Presented By: Krishna Balasubramanian
1 Cost Effective Dynamic Program Slicing Xiangyu Zhang Rajiv Gupta The University of Arizona.
CS590F Software Reliability What is a slice? S: …. = f (v)  Slice of v at S is the set of statements involved in computing v’s value at S. [Mark Weiser,
A Comparison of Online and Dynamic Impact Analysis Algorithms Ben Breech Mike Tegtmeyer Lori Pollock University of Delaware.
ELEC Fall 05 1 Very- Long Instruction Word (VLIW) Computer Architecture Fan Wang Department of Electrical and Computer Engineering Auburn.
Program Representations Xiangyu Zhang. CS590Z Software Defect Analysis Program Representations  Static program representations Abstract syntax tree;
(Page 554 – 564) Ping Perez CS 147 Summer 2001 Alternative Parallel Architectures  Dataflow  Systolic arrays  Neural networks.
Chapter 2: Impact of Machine Architectures What is the Relationship Between Programs, Programming Languages, and Computers.
Programming Fundamentals (750113) Ch1. Problem Solving
20 February Detailed Design Implementation. Software Engineering Elaborated Steps Concept Requirements Architecture Design Implementation Unit test Integration.
Reduced Instruction Set Computers (RISC) Computer Organization and Architecture.
PJSISSTA '001 Black-Box Test Reduction Using Input-Output Analysis ISSTA ‘00 Patrick J. Schroeder, Bogdan Korel Department of Computer Science Illinois.
CH07: Writing the Programs Does not teach you how to program, but point out some software engineering practices that you should should keep in mind as.
Final Exam Review Instructor : Yuan Long CSC2010 Introduction to Computer Science Apr. 23, 2013.
1 Chapter-01 Introduction to Computers and C++ Programming.
A Portable Virtual Machine for Program Debugging and Directing Camil Demetrescu University of Rome “La Sapienza” Irene Finocchi University of Rome “Tor.
AMOST Experimental Comparison of Code-Based and Model-Based Test Prioritization Bogdan Korel Computer Science Department Illinois Institute of Technology.
Design Space Exploration
INTRODUCTION TO COMPUTING CHAPTER NO. 06. Compilers and Language Translation Introduction The Compilation Process Phase 1 – Lexical Analysis Phase 2 –
A Specification Language and Test Planner for Software Testing Aolat A. Adedeji 1 Mary Lou Soffa 1 1 DEPARTMENT OF COMPUTER SCIENCE, UNIVERSITY OF VIRGINIA.
Department of Computer Science A Static Program Analyzer to increase software reuse Ramakrishnan Venkitaraman and Gopal Gupta.
DEPARTMENT OF COMPUTER SCIENCE & TECHNOLOGY FACULTY OF SCIENCE & TECHNOLOGY UNIVERSITY OF UWA WELLASSA 1 CST 221 OBJECT ORIENTED PROGRAMMING(OOP) ( 2 CREDITS.
KEVIN COOGAN, GEN LU, SAUMYA DEBRAY DEPARTMENT OF COMUPUTER SCIENCE UNIVERSITY OF ARIZONA 報告者:張逸文 Deobfuscation of Virtualization- Obfuscated Software.
Software Engineering Research Group, Graduate School of Engineering Science, Osaka University Analysis and Implementation Method of Program to Detect Inappropriate.
Foundations of Software Testing Chapter 5: Test Selection, Minimization, and Prioritization for Regression Testing Last update: September 3, 2007 These.
CS212: DATA STRUCTURES Lecture 1: Introduction. What is this course is about ?  Data structures : conceptual and concrete ways to organize data for efficient.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Design and Implementation.
Dataflow Analysis Topic today Data flow analysis: Section 3 of Representation and Analysis Paper (Section 3) NOTE we finished through slide 30 on Friday.
IXA 1234 : C++ PROGRAMMING CHAPTER 1. PROGRAMMING LANGUAGE Programming language is a computer program that can solve certain problem / task Keyword: Computer.
L8 - March 28, 2006copyright Thomas Pole , all rights reserved 1 Lecture 8: Software Asset Management and Text Ch. 5: Software Factories, (Review)
Property of Jack Wilson, Cerritos College1 CIS Computer Programming Logic Programming Concepts Overview prepared by Jack Wilson Cerritos College.
Static Program Analyses of DSP Software Systems Ramakrishnan Venkitaraman and Gopal Gupta.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Technology and Science, Osaka University Dependence-Cache.
Efficient Instant-Fuzzy Search with Proximity Ranking Authors: Inci Centidil, Jamshid Esmaelnezhad, Taewoo Kim, and Chen Li IDCE Conference 2014 Presented.
Chapter 11: Dynamic Analysis Omar Meqdadi SE 3860 Lecture 11 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
CASE/Re-factoring and program slicing
Java Basics Hussein Suleman March 2007 UCT Department of Computer Science Computer Science 1015F.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
Software Engineering Research Group, Graduate School of Engineering Science, Osaka University A Slicing Method for Object-Oriented Programs Using Lightweight.
Program Design. The design process How do you go about writing a program? –It’s like many other things in life Understand the problem to be solved Develop.
ICC Module 3 Lesson 1 – Computer Architecture 1 / 26 © 2015 Ph. Janson Information, Computing & Communication Computer Architecture Clip 1 – Assembler.
1 Software Testing & Quality Assurance Lecture 13 Created by: Paulo Alencar Modified by: Frank Xu.
Evaluating C++ Design Pattern Miner Tools Lajos Jenő Fülöp 1, Tamás Gyovai 2 and Rudolf Ferenc 1 1 Department of Software Engineering University of Szeged,
Lecture #1: Introduction to Algorithms and Problem Solving Dr. Hmood Al-Dossari King Saud University Department of Computer Science 6 February 2012.
PROGRAMMING FUNDAMENTALS INTRODUCTION TO PROGRAMMING. Computer Programming Concepts. Flowchart. Structured Programming Design. Implementation Documentation.
Some of the utilities associated with the development of programs. These program development tools allow users to write and construct programs that the.
1 OPERATING SYSTEMS. 2 CONTENTS 1.What is an Operating System? 2.OS Functions 3.OS Services 4.Structure of OS 5.Evolution of OS.
OPERATING SYSTEMS CS 3502 Fall 2017
Testing and Debugging PPT By :Dr. R. Mall.
Static Slicing Static slice is the set of statements that COULD influence the value of a variable for ANY input. Construct static dependence graph Control.
Topic: Python’s building blocks -> Variables, Values, and Types
Algorithm Analysis CSE 2011 Winter September 2018.
Aditya P. Mathur Purdue University
SwE 455 Program Slicing.
Arrays and Linked Lists
Program Slicing Baishakhi Ray University of Virginia
Chapter 12 Pipelining and RISC
A Dynamic System Analysis of Simultaneous Recurrent Neural Network
Chapter-1 Computer is an advanced electronic device that takes raw data as an input from the user and processes it under the control of a set of instructions.
Lecture 4: Instruction Set Design/Pipelining
Basics Prof. Hsin-Mu (Michael) Tsai (蔡欣穆)
Presentation transcript:

Software Engineering Department Graph-Less Dynamic Dependence-Based Dynamic Slicing Algorithms Árpád Beszédes, Tamás Gergely and Tibor Gyimóthy University of Szeged, Hungary SCAM’06, Philadelphia, PA, USA

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 Dynamic Slicing Algorithms need to read the execution trace  For an accurate result, it needs to be fine-grained  This implies Gigabytes for its size  An algorithm with proportional space requirements is bad! Dynamic Dependence Graph  Size of the DDG: number of statements executed  Global preprocessing prior to slicing For different purposes, specialized data structures can be used instead of the DDG  More efficient algorithms based on the same (syntactic) dependences  We give 6 new algorithms that compute the same slices

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 Algorithm Framework ProgramDef-useTrace for input a=1 1. read(a) 2. y=0 3. x=1 4. while(a>0) 5. y=x 6. x=2 7. a=a-1 8. z=y a :  y :  x :  p : {a} y : {x,p} x : {p} a : {a,p} z : y 1 1 read(a) 2 2 y=0 3 3 x=1 4 4 while(a>0) 5 5 y=x 6 6 x=2 7 7 a=a while(a>0) 8 9 z=y control dependence Two inputs, 6 different algorithms

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 Demand-Driven Algorithms Trace+D/U → DDG 1 1 read(a) a:  2 2 y=0 y:  3 3 x=1 x:  4 4 while(a>0) p:{a} 5 5 y=x y:{x,p} 6 6 x=2 x:{p} 7 7 a=a-1 a:{a,p} 4 8 while(a>0) p:{a} 8 9 z=y z:y Backward demand-driven slicing  Go backward  Maintain not yet processed actions in a worklist Forward demand-driven slicing  Go forward  Mark & unmark live variables Trace traversal:  Action-by-action (inefficient)  Jumping to relevant actions Backward slicing criterion: (8 9, y)Forward slicing criterion: (1 1, a)

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 More slices simultaneously? When we traverse the trace for demand-driven slicing,  Many dependences are visited that could be “reused”  More demand-driven slicing? The same dependences are traversed multiple times This is a “no preprocessing” approach. Improvements:  Compressing the trace  Not going action-by-action, but by skipping to relevant trace points  Why not compute more (all) slices? Naïve method: executing many demand-driven algorithms, virtually “in parallel”  Need to store all slices in the memory until the end/start of trace  See later…

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 Global Algorithms A better approach: computing all slices globally  By traversing the trace in a reverse way than the slicing direction Dual algorithms:  Backward slices: use “historical data”  forward processing  Forward slices: use “future data”  backward processing trace 123…123… Slices may by outputted instantly! trace 123…123… Slices may by outputted instantly!

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 Global and Parallel Algorithms Global for backward slices  Dynamic dependence set (of instruction numbers) for each variable Global for forward slices  Live set (of instruction numbers) for each variable Slices can be outputted instantly All slices are produced  a.k.a. full preprocessing Parallel for forward slices  Similar to global for backward slices, but stores actions in the sets Parallel for backward slices  Similar to global for forward slices, but stores actions in the sets Slices can be outputted at the end only

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 Summary of Algorithms No.Global / Demand- driven Slice direction Processing direction Useful? 0Demand-drivenBackward Practical 1Demand-drivenBackwardForwardUnfeasible 2Demand-drivenForwardBackwardUnfeasible 3Demand-drivenForward Practical 4GlobalBackward Parallel 5GlobalBackwardForwardPractical 6GlobalForwardBackwardPractical 7GlobalForward Parallel C C, Java, GCC/GDB Java

University of Szeged – Software Engineering Department 6th International Workshop on Source Code Analysis and Manipulation, SCAM' September 2006 Discussion and Open Issues Our implementation for C (src instrumentation & GDB) :  Global and Demand-driven for backward slices For Java (VM instrumentation):  Global for backward and parallel for forward slices Parallel algorithms only with some relaxation Which one to use, and when?  Difficult to answer  According to our experiments: if at least slices are needed, the global method is more appropriate (trace-to-iteration ratio)  Global algorithms are good for e.g. experimentation with Union slices To-do:  Elaboration on complexities  Possibilities for enhancement (for real languages)  Implementation and empirical investigation