Flow-Augmented Call Graph: A New Foundation for Taming API Complexity Qirun Zhang 1009004750 1.

Slides:



Advertisements
Similar presentations
Program Slicing – Based Techniques
Advertisements

Enabling Speculative Parallelization via Merge Semantics in STMs Kaushik Ravichandran Santosh Pande College.
Search in Source Code Based on Identifying Popular Fragments Eduard Kuric and Mária Bieliková Faculty of Informatics and Information.
Data Flow Coverage. Reading assignment L. A. Clarke, A. Podgurski, D. J. Richardson and Steven J. Zeil, "A Formal Evaluation of Data Flow Path Selection.
SOFTWARE TESTING. INTRODUCTION  Software Testing is the process of executing a program or system with the intent of finding errors.  It involves any.
A Regression Test Selection Technique for Aspect- Oriented Programs Guoqing Xu The Ohio State University
1 Program Slicing Purvi Patel. 2 Contents Introduction What is program slicing? Principle of dependences Variants of program slicing Slicing classifications.
1 Cost Effective Dynamic Program Slicing Xiangyu Zhang Rajiv Gupta The University of Arizona.
A Framework for Ontology-Based Knowledge Management System
SSP Re-hosting System Development: CLBM Overview and Module Recognition SSP Team Department of ECE Stevens Institute of Technology Presented by Hongbing.
Designing Software for Ease of Extension and Contraction
BASIS PATH TESTING ● By Tom McCabe ● McCabe, T., "A Software Complexity Measure," IEEE Trans. Software Engineering, vol. SE-2, December 1976, pp
Unit Testing CS 414 – Software Engineering I Don Bagert Rose-Hulman Institute of Technology January 16, 2003.
OOSE 01/17 Institute of Computer Science and Information Engineering, National Cheng Kung University Member:Q 薛弘志 P 蔡文豪 F 周詩御.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University ICSE 2003 Java.
1 A Discriminative Approach to Topic- Based Citation Recommendation Jie Tang and Jing Zhang Presented by Pei Li Knowledge Engineering Group, Dept. of Computer.
Efficient Evaluation of XQuery over Streaming Data Xiaogang Li Gagan Agrawal The Ohio State University.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University 1 Refactoring.
A Lightweight Platform for Integration of Resource Limited Devices into Pervasive Grids Stavros Isaiadis and Vladimir Getov University of Westminster
Graph Data Management Lab, School of Computer Science gdm.fudan.edu.cn XMLSnippet: A Coding Assistant for XML Configuration Snippet.
1 PARSEWeb: A Programmer Assistant for Reusing Open Source Code on the Web Suresh Thummalapenta and Tao Xie Department of Computer Science North Carolina.
A Metadata Based Approach For Supporting Subsetting Queries Over Parallel HDF5 Datasets Vignesh Santhanagopalan Graduate Student Department Of CSE.
Change Impact Analysis for AspectJ Programs Sai Zhang, Zhongxian Gu, Yu Lin and Jianjun Zhao Shanghai Jiao Tong University.
Software Testing The process of operating a system or component under specified conditions, observing and recording the results, and making an evaluation.
Exploring Online Social Activities for Adaptive Search Personalization CIKM’10 Advisor : Jia Ling, Koh Speaker : SHENG HONG, CHUNG.
Automatically Repairing Broken Workflows for Evolving GUI Applications Sai Zhang University of Washington Joint work with: Hao Lü, Michael D. Ernst.
Debug Concern Navigator Masaru Shiozuka(Kyushu Institute of Technology, Japan) Naoyasu Ubayashi(Kyushu University, Japan) Yasutaka Kamei(Kyushu University,
Workshop on Software Product Archiving and Retrieving System Takeo KASUBUCHI Hiroshi IGAKI Hajimu IIDA Ken’ichi MATUMOTO Nara Institute of Science and.
Advanced Compiler Design An Introduction to the Javali Compiler Framework Zoltán Majó 1.
Autonomic scheduling of tasks from data parallel patterns to CPU/GPU core mixes Published in: High Performance Computing and Simulation (HPCS), 2013 International.
Computation and data migration in an embedded many-core SoC January Matthieu BRIEDA Anca MOLNOS Julien.
Andreas Papadopoulos - [DEXA 2015] Clustering Attributed Multi-graphs with Information Ranking 26th International.
Zhuo Peng, Chaokun Wang, Lu Han, Jingchao Hao and Yiyuan Ba Proceedings of the Third International Conference on Emerging Databases, Incheon, Korea (August.
Deriving Input Syntactic Structure From Execution Zhiqiang Lin Xiangyu Zhang Purdue University November 11 th, 2008 The 16th ACM SIGSOFT International.
IDENTIFYING SEMANTIC DIFFERENCES IN ASPECTJ PROGRAMS Martin Görg and Jianjun Zhao Computer Science Department, Shanghai Jiao Tong University.
Exploiting Code Search Engines to Improve Programmer Productivity and Quality Suresh Thummalapenta Advisor: Dr. Tao Xie Department of Computer Science.
Dataflow Analysis for Concurrent Programs using Datarace Detection Ravi Chugh, Jan W. Voung, Ranjit Jhala, Sorin Lerner LBA Reading Group Michelle Goodstein.
Using Social Network Analysis Methods for the Prediction of Faulty Components Gholamreza Safi.
Gordana Rakić, Zoran Budimac
Aspect Mining Jin Huang Huazhong University of Science & Technology, China
Software Engineering1  Verification: The software should conform to its specification  Validation: The software should do what the user really requires.
API Hyperlinking via Structural Overlap Fan Long, Tsinghua University Xi Wang, MIT CSAIL Yang Cai, MIT CSAIL.
1 Approximate XML Query Answers Presenter: Hongyu Guo Authors: N. polyzotis, M. Garofalakis, Y. Ioannidis.
SOFTWARE TESTING. Introduction Software Testing is the process of executing a program or system with the intent of finding errors. It involves any activity.
Graph Data Management Lab, School of Computer Science Branch Code: A Labeling Scheme for Efficient Query Answering on Tree
Speaker : Yu-Hui Chen Authors : Dinuka A. Soysa, Denis Guangyin Chen, Oscar C. Au, and Amine Bermak From : 2013 IEEE Symposium on Computational Intelligence.
Bin Xin, Patrick Eugster, Xiangyu Zhang Dept. of Computer Science Purdue University {xinb, peugster, Lightweight Task Graph Inference.
ReIm & ReImInfer: Checking and Inference of Reference Immutability and Method Purity Wei Huang 1, Ana Milanova 1, Werner Dietl 2, Michael D. Ernst 2 1.
DECOR: A Distributed Coordinated Resource Monitoring System Shan-Hsiang Shen Aditya Akella.
White Box Testing by : Andika Bayu H.
Rule-based static analysis of network protocol implementations Octavian Udrea, Cristian Lumezanu, and Jeffrey S. Foster Usenix Security Symposium 2006.
Stories of the past and a future topic on API recommendation Qirun Zhang.
SOFTWARE TESTING LECTURE 9. OBSERVATIONS ABOUT TESTING “ Testing is the process of executing a program with the intention of finding errors. ” – Myers.
Precisely Selecting Regression Test for Aspect-Oriented Programs Guoqing Xu The Ohio State University
Software Test Metrics When you can measure what you are speaking about and express it in numbers, you know something about it; but when you cannot measure,
Making k-Object-Sensitive Pointer Analysis More Precise with Still k-Limiting Tian Tan, Yue Li and Jingling Xue SAS 2016 September,
Efficient Evaluation of XQuery over Streaming Data
Software Metrics 1.
Software Testing.
Trustworthiness Management in the Social Internet of Things
OBJECT LOCATION IN UNSTRUCTURED P2P NETWORKS USING RANDOM WALK
The most important work in Operating Systems
Program Slicing Baishakhi Ray University of Virginia
Cross-library API Recommendation Using Web Search Engines
Methodology & Current Results
SAT-Based Area Recovery in Technology Mapping
Estimating Timing Profiles for Simulation of Embedded Systems
Chapter 2. Problem Solving and Software Engineering
MAPO: Mining and Recommending API Usage Patterns
Overview of Exception Handling Implementation in Open64
Presentation transcript:

Flow-Augmented Call Graph: A New Foundation for Taming API Complexity Qirun Zhang

2 Past work: Taming API Complexity Future plan: in the Presence of Pointers

Outline Background Approach Evaluation Conclusion Q&A 3

Background 4

Motivation 5 Background

A Flow-Augmented Call Graph (FACG) G = (N,E) for procedure P is a directed multigraph in which each node n corresponds to either a caller P or a callee Q, and each weighted edge e represents a call-site augmented with control flow. Call GraphFlow-Augmented Call Graph 6

Background 7 What is the insight of FACG?

Background Why taming API complexity? – For Software maintenances – Most of software are not documented well – For API documentation maintenances Apache Project alsoPercentage % % 8 scpSEE ALSO rcp(1), sftp(1), ssh(1), ssh-add(1), ssh- agent(1), ssh-keygen(1), ssh_config(5), sshd(8)

Background Research solutions – How API is used PLDI-05, OOPSLA-06, ECOOP-09, ASE-07, ICSE-05, AOSD-07 – How API is implemented Suade (FSE-05), Fran(FSE-07), Altair(FSE-09) 9

Approach 10

Approach Overview 11

Approach Parsing & Hashing – How to parse the source code? – What kind of elements should be extracted? Solution gcc Gimple IR API call-site, basic block, conditional block. Build the CFG 12

Approach Handling Function Pointers – Collecting the path conditions – Over-approximate the program behavior – Testing the validation by SMT solver 13

Approach Reducing CFG – The CFG considered [1] – Eliminate the back edge [2] – Unroll the loop once [1] Podgurski, A., Lori, Clarke, A.: A formal model of program dependences and its implications for software testing, debugging, and maintenance. IEEE Transactions on Software Engineering 16, 965–979 (1990) [2] Ramanathan, M.K., Grama, A., Jagannathan, S.: Path-sensitive inference of function precedence protocols. In: ICSE. pp. 240–250 (2007) 14

Approach Calculating the Flow of Callees – The inflow of the basic block associated with Q – The outflow of the basic block associated with Q 15

Approach Augmenting the Call graph Call GraphFlow-Augmented Call Graph 16

17 Augmenting the Call graph Approach

Recommending API – Computing Cosine similarities 18 g0h0g1h1g2 f f f200011

Evaluation 19

Evaluation Subject Project Experimental Setup – A specific task suggested by Fran [2]: Given a query API, retrieve other APIs in the same module – Module is defined by original documentation 20 [2] Saul, Z.M., Filkov, V., Devanbu, P.T., Bird, C.: Recommending random walks. In: ESEC/SIGSOFT FSE. pp. 15–24 (2007) 20

Evaluation Case study 21

Evaluation Quantitative evaluation – Compare the F1 according to the original documentation 22

Evaluation The impact of FACG Without FACG With FACG 23

Conclusion 24

Conclusion Our contribution – We proposed the Flow-Augmented Call Graph – We applied FACG on API recommendation. Our approach could advance the state-of-the-arts – We developed a framework for program analysis by Gcc. Future work – Recommendation system? – Static analysis? – SMT solving? 25

Q&A Thanks! 26

27