+ All Categories
Home > Documents > Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf ·...

Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf ·...

Date post: 04-Jun-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
29
Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi , Ali Mesbah and Karthik Pattabiraman ECOOP 2015 [email protected]
Transcript
Page 1: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Hybrid DOM-Sensitive Change Impact Analysis for JavaScript

Saba Alimadadi, Ali Mesbah and Karthik Pattabiraman

ECOOP 2015 [email protected]

Page 2: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Change Impact Analysis (CIA)!

•  Software must continually change to adapt to the changing environment.

•  Goal: identifying parts of the program that are potentially affected by a change.

1!

Page 3: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Challenges of CIA for JavaScript!

2!

JavaScript DOM

Server

Page 4: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Challenge 1: Impact through the DOM!

3!

JavaScript DOM

function calculateTax() { $(‘.price’).each(function(index) { $(this).text(addTaxToPrice( $(this).text()); }); }

function checkPrice() { . . . var cad_price = $(‘#price_ca’).innerText(); . . . }

id=price_ca

fieldset

div div

body

class=price

Page 5: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Challenge 2: Impact through Event Propagation!

4!

JavaScript DOM

function checkPrice() { . . . }

fieldset

div div

body

id=price_ca

name=prices

function calculateTax() { . . . }

$(‘#price_ca’).bind(‘click’, checkPrice); $(‘prices’).bind(‘click’, calculateTax);

Page 6: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Challenge 3: Impact through XHRs!

5!

function updateItem(xhr) { var updatedInfo = getUpdatedPrice(xhr.responseText); suggestItem.apply(this, updatedInfo); }

function checkPrice() { var itemName = extractName($(‘item231’)O; $.ajax({ url : ‘prices/latest.php’, type : ‘POST’, data : itemName, success : eval(getAction() + ‘item’) }); }

XHR!

JavaScript Server

Page 7: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Challenges of CIA for Client-Side JavaScript

1.  JavaScript and Document Object Model (DOM)

2.  Events and event propagation

3.  JavaScript and XMLHttpRequests (XHRs) + High dynamism of JavaScript

6!

Page 8: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Exploratory Study: DOM-related and Event-based Impacts

•  Subject: 10 web apps (online contests, GitHub trending, etc.) •  Gathered data: –  JavaScript-DOM interactions (write-read pairs)

– Event propagation

•  Further analysis of the structure of graphs. –  Measured metrics: fan-in and fan-out of functions and DOM elements,

and average path lengths

7!

Page 9: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Exploratory Study: Results!

•  W-R DOM elements: 42%

8!

•  Propagated handlers: 14%

42%

58%

DOM Elements

W-R Elements

14%

86%

Event Handlers

Propagated

foo() elem bar()

Page 10: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Hybrid Analysis!

9!

Static Analysis

Dynamic Analysis

Hybrid Model

Ranked Impact Sets

Page 11: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Static Analysis!

10!

Dynamic Analysis

Hybrid Model

Ranked Impact

Sets

Static Analysis

Control (and data) dependencies

Partial data-flow analysis

Page 12: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Example: Static Model!

11!

checkPrice()!

XHR!

updateItem()!

suggestItem()!

getUpdatedPrice()! calculateTax()!

addTaxToPrice()!

Function

XHR object

DOM element

Directed and

labeled edge

Page 13: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Dynamic Analysis!

12!

Dynamic Analysis

Hybrid Model

Ranked Impact

Sets

Static Analysis Impact through DOM

foo() elem bar()

Impact through events XHR relations (open, send, response)

Dynamic call graph

JavaScript dynamism (eval(), function variadicity)

Page 14: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Example: Dynamic Model!

13!

checkPrice()!

XHR!

updateItem()!

suggestItem()!

getUpdatedPrice()! calculateTax()!

#item231!

#priceGca!.price!

displaySuggesKon()!

Function

XHR object

DOM element

Directed and

labeled edge

Page 15: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

14!

Static Analysis

Dynamic Analysis

Hybrid Model

Ranked Impact Sets

Page 16: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Example: Hybrid Analysis!

15!15!

checkPrice()!

XHR!

updateItem()!

suggestItem()!

getUpdatedPrice()! calculateTax()!

addTaxToPrice()!

#item231!

#priceGca!.price!

displaySuggesKon()!

Function

XHR object

DOM element

Directed and

labeled edge

Vertices

Edges

Page 17: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

16!

Static Analysis

Dynamic Analysis

Hybrid Model

Ranked Impact Sets

Page 18: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Impact Metrics and Impact Set Ranking

•  Problem: size of impact sets •  Solutions: impact ranks, based on impact

metrics –  fin(d): Number of functions f such that f W d

–  fin(f): Number of elements d such that f R d

–  fout(f): Number of elements d such that f W d

–  Lavg(P): Average length of impact paths in the app

–  Dm(e): Minimum distance of e from the change set

–  IRpr(e): Impact of previous entity

17!

Page 19: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Tool Implementation: Tochal

•  Tochal: open source – https://github.com/saltlab/tochal

•  Proxy (Java, JavaScript) – Esprima, Estraverse, Escodegen, Mutation

Summary, WALA

•  Client-side (Google Chrome extension) – Chrome DevTools

18!

Page 20: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Research Question 1

Does Tochal outperform static and dynamic analysis methods in terms of the completeness of

the results obtained?

19!

Page 21: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Study: Static vs. Dynamic vs. Tochal

•  10 web applications •  3 random functions as change sets •  Comparing: – Size of impact sets – Number of functions in dependency graphs

20!

Page 22: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Results: Impact Sets

•  Comparing size of impact sets

21

0

0.5

1

1.5

2

Static

Dynamic

Tochal

Static

Hybrid : 26%

Dynamic

Hybrid : 80%

Page 23: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Results: Graphs

•  Comparing size of model graphs

22

Static

Hybrid : 59%

Dynamic

Hybrid : 84%

Static Dynamic

Page 24: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Results: Graphs

•  Comparing size of model graphs

23

Pure Static

Hybrid : 15%

Pure Dynamic

Hybrid : 42%

Static Dynamic

Page 25: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Research Question 2

24!

Does Tochal help developers in practice to perform change impact analysis?

Page 26: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Experiment: Design

•  12 participants from industry

•  Performed 4 tasks

•  We measured task completion duration and accuracy

25!

Task Description

T1 Finding the potential impact of a DOM element

T2 Finding the potential impact of a JavaScript function

T3 Finding a conflict after making a new change (no ranking)

T4 Finding a bug in JavaScript code

Page 27: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

User Experiment: Results!

26!

0

300

600

900

1200

1500

1800

2100

2400

T1 T2 T3 T4 Total

Tochal Other

0

20

40

60

80

100

T1 T2 T3 T4 Total

Tochal Other

Accuracy Duration

80% faster 2 times more accurate

Page 28: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

Results: Ranking

Duration Accuracy

0:00!

1:12!

2:24!

3:36!

4:48!

6:00!

7:12!

W/O rank

W/ rank

2~3 times faster 25% more accurate

0

20

40

60

80

100

Page 29: Hybrid DOM-Sensitive Change Impact Analysis for JavaScriptsaba/dl/tochal-slides.pdf · 2015-07-10 · Hybrid DOM-Sensitive Change Impact Analysis for JavaScript Saba Alimadadi, Ali

28!


Recommended