CBSE'051 Component-Level Dataflow Analysis Atanas (Nasko) Rountev Ohio State University.

Slides:



Advertisements
Similar presentations
Uncovering Performance Problems in Java Applications with Reference Propagation Profiling PRESTO: Program Analyses and Software Tools Research Group, Ohio.
Advertisements

ASSUMPTION HIERARCHY FOR A CHA CALL GRAPH CONSTRUCTION ALGORITHM JASON SAWIN & ATANAS ROUNTEV.
Data-Flow Analysis II CS 671 March 13, CS 671 – Spring Data-Flow Analysis Gather conservative, approximate information about what a program.
Pointer Analysis – Part I Mayur Naik Intel Research, Berkeley CS294 Lecture March 17, 2009.
1 CS 201 Compiler Construction Lecture Interprocedural Data Flow Analysis.
Software Process Models
Whole-Program Linear-Constant Analysis with Applications to Link-Time Optimization Ludo Van Put – Dominique Chanet – Koen De Bosschere Ghent University.
Program Representations. Representing programs Goals.
1 Practical Object-sensitive Points-to Analysis for Java Ana Milanova Atanas Rountev Barbara Ryder Rutgers University.
Page 1 Building Reliable Component-based Systems Ivica Crnkovic Chapter 9 Component Composition and Integration.
Common Sub-expression Elim Want to compute when an expression is available in a var Domain:
Representing programs Goals. Representing programs Primary goals –analysis is easy and effective just a few cases to handle directly link related things.
Fall 2007CS 225 Introduction to Software Design Chapter 1.
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Emery Berger University of Massachusetts, Amherst Advanced Compilers CMPSCI 710.
From last time: live variables Set D = 2 Vars Lattice: (D, v, ?, >, t, u ) = (2 Vars, µ, ;,Vars, [, Å ) x := y op z in out F x := y op z (out) = out –
Advanced Compilers CSE 231 Instructor: Sorin Lerner.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
X := 11; if (x == 11) { DoSomething(); } else { DoSomethingElse(); x := x + 1; } y := x; // value of y? Phase ordering problem Optimizations can interact.
Scaling CFL-Reachability-Based Points- To Analysis Using Context-Sensitive Must-Not-Alias Analysis Guoqing Xu, Atanas Rountev, Manu Sridharan Ohio State.
Interprocedural Analysis Noam Rinetzky Mooly Sagiv Tel Aviv University Textbook Chapter 2.5.
Direction of analysis Although constraints are not directional, flow functions are All flow functions we have seen so far are in the forward direction.
Recap from last time: live variables x := 5 y := x + 2 x := x + 1 y := x y...
Direction of analysis Although constraints are not directional, flow functions are All flow functions we have seen so far are in the forward direction.
Composing Dataflow Analyses and Transformations Sorin Lerner (University of Washington) David Grove (IBM T.J. Watson) Craig Chambers (University of Washington)
Spring 2009CS 225 Introduction to Software Design Chapter 1.
From last class. The above is Click’s solution (PLDI 95)
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
 1. Introduction  2. Development Life-Cycle  3. Current Component Technologies  4. Component Quality Assurance  5. Advantages and Disadvantages.
Precision Going back to constant prop, in what cases would we lose precision?
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 4 Web technologies: HTTP, CGI, PHP,Java applets)
Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams Atanas (Nasko) Rountev Ohio State University with Olga Volgin and Miriam.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University STATIC ANALYSES FOR JAVA IN THE PRESENCE OF DISTRIBUTED COMPONENTS AND.
PRESTO Research Group, Ohio State University Interprocedural Dataflow Analysis in the Presence of Large Libraries Atanas (Nasko) Rountev Scott Kagan Ohio.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2011 Course Overview John Cavazos University.
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
Introduction to Software Design Chapter 1. Chapter Objectives  To become familiar with the software challenge and the software life cycle  To understand.
11 Chapter 11 Object-Oriented Databases Database Systems: Design, Implementation, and Management 4th Edition Peter Rob & Carlos Coronel.
Programming Models & Runtime Systems Breakout Report MICS PI Meeting, June 27, 2002.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Merging Equivalent Contexts for Scalable Heap-cloning-based Points-to.
Coverage Criteria for Testing of Object Interactions in Sequence Diagrams Atanas (Nasko) Rountev Scott Kagan Jason Sawin Ohio State University.
Rethinking Soot for Summary-Based Whole- Program Analysis PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Dacong Yan.
U NIVERSITY OF M ASSACHUSETTS, A MHERST Department of Computer Science Advanced Compilers CMPSCI 710 Spring 2004 Lecture 1 Emery Berger University of Massachusetts,
Software Testing Reference: Software Engineering, Ian Sommerville, 6 th edition, Chapter 20.
Mark Marron 1, Deepak Kapur 2, Manuel Hermenegildo 1 1 Imdea-Software (Spain) 2 University of New Mexico 1.
Information System Design (IT60105) Lecture 26 Object-Oriented System Testing.
Application of Design Heuristics in the Designing and Implementation of Object Oriented Informational Systems.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
ESEC/FSE-99 1 Data-Flow Analysis of Program Fragments Atanas Rountev 1 Barbara G. Ryder 1 William Landi 2 1 Department of Computer Science, Rutgers University.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Merging Equivalent Contexts for Scalable Heap-cloning-based Points-to.
Software Tamper Resistance: Obstructing Static Analysis of Programs Chenxi Wang, Jonathan Hill, John Knight, Jack Davidson at university of Virginia This.
Random Interpretation Sumit Gulwani UC-Berkeley. 1 Program Analysis Applications in all aspects of software development, e.g. Program correctness Compiler.
Pointer Analysis – Part I CS Pointer Analysis Answers which pointers can point to which memory locations at run-time Central to many program optimization.
5/7/03ICSE Fragment Class Analysis for Testing of Polymorphism in Java Software Atanas (Nasko) Rountev Ohio State University Ana Milanova Barbara.
Sept 12ICSM'041 Precise Identification of Side-Effect-Free Methods in Java Atanas (Nasko) Rountev Ohio State University.
Object Naming Analysis for Reverse- Engineered Sequence Diagrams Atanas (Nasko) Rountev Beth Harkness Connell Ohio State University.
1PLDI 2000 Off-line Variable Substitution for Scaling Points-to Analysis Atanas (Nasko) Rountev PROLANGS Group Rutgers University Satish Chandra Bell Labs.
ECE 750 Topic 8 Meta-programming languages, systems, and applications Automatic Program Specialization for J ava – U. P. Schultz, J. L. Lawall, C. Consel.
Csontos Péter, Porkoláb Zoltán Eötvös Loránd Tudományegyetem, Budapest ECOOP 2001 On the complexity of exception handling.
ISBN Chapter 12 Support for Object-Oriented Programming.
A Single Intermediate Language That Supports Multiple Implemtntation of Exceptions Delvin Defoe Washington University in Saint Louis Department of Computer.
What Do Computers Do? A computer system is
Static Analysis of Object References in RMI-based Java Software
Atanas (Nasko) Rountev Ohio State University
Complexity Time: 2 Hours.
Atanas (Nasko) Rountev Barbara G. Ryder Rutgers University
Building a Whole-Program Type Analysis in Eclipse
Points-to Analysis for Java Using Annotated Constraints
Interactive Exploration of Reverse-Engineered UML Sequence Diagrams
Advanced Compiler Design
Optimizing Compilers CISC 673 Spring 2009 Course Overview
Presentation transcript:

CBSE'051 Component-Level Dataflow Analysis Atanas (Nasko) Rountev Ohio State University

CBSE'052 Outline  Interprocedural dataflow analysis  Whole-program analysis: limitations  Problem:  Problem: making dataflow analysis usable and useful for component-based software  Technical challenges  Ongoing and future work

CBSE'053 Uses of Dataflow Analysis  Software understanding tools  e.g. dependence analysis for program slicing, change impact analysis, refactoring, etc.  Software testing  e.g. dataflow-based testing; testing of object interactions in OO software  Software checking  e.g. object protocols: open(read|write)*close  Performance optimizations in compilers

CBSE'054 Model for Whole-Program Analysis code for C 1 code for C 2 … code for C n  C 1 + C 2 + … + C n constitute a complete program  Implicit assumption: it is possible and desirable to analyze the source code of the entire program as a single unit dataflow solution for C 1 + C 2 + … + C n WholeProgramDataflowAnalysis

CBSE'055 Limitations of Whole-Program Analysis  What if some of the components are only available in binary form?  What if we are building a library?  What if we are using large libraries that need to be re-analyzed from scratch?  e.g. the standard Java libraries contain a few thousand classes  What if one part of program changes?  may have to re-analyze the entire program

CBSE'056 Outline  Interprocedural dataflow analysis  Whole-program analysis: limitations  Problem:  Problem: making dataflow analysis usable and useful for component-based software  Dozens of existing analyses could potentially become useful for component-based software  In tools for software understanding, testing, checking, and optimization  Technical challenges

CBSE'057 A Simple Case: Main + Lib code for Lib  Goal: the solution for Main should be as good as the solution that would have been computed by a whole-program analysis (no loss of precision) ComponentLevelDataflowAnalysis summary for Lib code for Main dataflow solution for Main ComponentLevelDataflowAnalysis summary for Lib dataflow solution for Lib

CBSE'058 Component Model and Summary Info  Component = set of related procedures or classes  Component interactions: synchronous calls, shared variables  Challenge: more sophisticated component models  Summary information is computed based only on the source code of Lib  Challenge: use info from component specifications

CBSE'059 Summary Functions Main Lib Main calls procedure Q path p 1 : dataflow function f 1 path p 2 : dataflow function f 2 Summary function for Q: f Q = f 1  f 2 computed by the analysis of Lib Q

CBSE'0510 Open Questions  Challenge: compact representation of dataflow functions and their transitive composition and meet  Existing work solves this problem for some analysis categories; need generalizations  Challenge: callbacks  e.g., function pointers in C  e.g., virtual dispatch in C++ and Java  Fundamental problem, not addressed adequately by existing work

CBSE'0511 Callbacks Main Lib Main calls procedure Q; during the call, Lib calls R The function for p 2 cannot be computed until Main is analyzed Q R subpaths Solution: summary functions for subpaths, computed during the analysis of Lib; Later, compose them with the functions from Main

CBSE'0512 Ongoing Work  Goal 1  Goal 1 (achieved): theoretical model for computing and using summary functions in the presence of callbacks  Goal 2  Goal 2 (ongoing): instantiate the model to common categories of analyses  dependence analysis, pointer analysis, etc.  Goal 3  Goal 3: experimental evaluation  e.g. how large are the summaries?  Eclipse plug-in for call graph construction: needs summary info for all Java 1.4 libraries

CBSE'0513 Future Work  Beyond the traditional restrictions  Use not only code, but also component specifications: e.g., “sharpen” the summary functions based on preconditions  Higher-level of abstraction for component interfaces and interactions  Right now: low-level mechanisms such as procedure calls and shared variables  Extensive experimental evaluation on real-world software systems