Impact Analysis Yury Chebiryak [email protected] University of Saarland Department of...
-
Upload
liberty-vessey -
Category
Documents
-
view
221 -
download
0
Transcript of Impact Analysis Yury Chebiryak [email protected] University of Saarland Department of...
![Page 1: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/1.jpg)
Impact Analysis
Yury Chebiryak
University of SaarlandDepartment of Computer Science
![Page 2: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/2.jpg)
2/96
Impact Analysis is often used to assess the effects of a
change after change has been made
is rarely used to predict the effect of change before it is instantiated
![Page 3: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/3.jpg)
3/96
Techniques
ImpactAnalysis
TraceabilityAnalysis
DependencyAnalysis
![Page 4: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/4.jpg)
4/96
Dependency-based IA
DependencyAnalysis
Program Slicing Call Graph
Static Dynamic
![Page 5: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/5.jpg)
Whole Program Path-Based Dynamic Impact Analysis
James Law
Gregg Rothermel
![Page 6: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/6.jpg)
6/96
PathImpact Dynamic Call-based Works on binaries Relatively low cost Relatively low overhead
![Page 7: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/7.jpg)
7/96
Call Graph
M
A D
C E
F
G
B
![Page 8: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/8.jpg)
8/96
Call Graph
M
A D
C E
F
G
B
B is changed
![Page 9: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/9.jpg)
9/96
M
A D
C E
F
G
B
Call Graph
Assumption:change in B has a
potential impact on nodes reachable
from B
![Page 10: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/10.jpg)
10/96
Execution Traces (ET)
M
A D
C E
F
G
B
Run M()
ET: M
![Page 11: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/11.jpg)
11/96
Execution Traces
Run B()
ET: MB
M
A D
C E
F
G
B
![Page 12: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/12.jpg)
12/96
Execution Traces
M
A D
C E
F
G
B
Return
ET: MBr
![Page 13: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/13.jpg)
13/96
Execution Traces
ET: MBrA
M
A D
C E
F
G
B
Run A()
![Page 14: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/14.jpg)
14/96
Execution Traces
Run C()
ET: MBrAC
M
A D
C E
F
G
B
![Page 15: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/15.jpg)
15/96
Execution Traces
Run D()
ET: MBrACD
M
A D
C E
F
G
B
![Page 16: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/16.jpg)
16/96
Execution Traces
Return
ET: MBrACDr
M
A D
C E
F
G
B
![Page 17: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/17.jpg)
17/96
Execution Traces
Run E()
ET: MBrACDrE
M
A D
C E
F
G
B
![Page 18: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/18.jpg)
18/96
Execution Traces
Return
ET: MBrACDrEr
M
A D
C E
F
G
B
![Page 19: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/19.jpg)
19/96
Execution Traces
Return
ET: MBrACDrErr
M
A D
C E
F
G
B
![Page 20: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/20.jpg)
20/96
Execution Traces
Return
ET: MBrACDrErrr
M
A D
C E
F
G
B
![Page 21: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/21.jpg)
21/96
Execution Traces
M
A D
C E
F
G
B
Return
ET: MBrACDrErrrrx
![Page 22: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/22.jpg)
22/96
Execution Traces II Single
Multiple
MBrACDrErrrrx
MBrACDrErrrrxMBGrrrrxMBCFrrrrx
Programs with loops => very long trace
![Page 23: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/23.jpg)
23/96
SEQUITUR algorithm
Data compression algorithm by Larus: Online Created grammar reproduces trace exactly O(N) running time O(N) size in the worst case O(log N) size in the best case e.g. 2GB trace → 100 MB
![Page 24: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/24.jpg)
24/96
SEQUITUR algorithmalgorithm SEQUITUR( S )input Execution Trace Soutput Grammar GGrammar GRule T1. for each token in S2. append token to end of production for T3. if duplicate digram appears4. if other occurrence is a rule g in G5. replace new digram with non-terminal of g.6. else7. form a new rule and replace duplicate8. digrams with the new non-terminal.9. if any rule in G is used only once10. remove the rule by substituting the production.11. return G
![Page 25: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/25.jpg)
25/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
![Page 26: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/26.jpg)
26/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → MBrACDrErrrrx
![Page 27: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/27.jpg)
27/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → MBrACDrE x1 → rr
1 1
![Page 28: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/28.jpg)
28/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → MBrACDrE11x1 → rr
![Page 29: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/29.jpg)
29/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → MBrACDrE11xM1 → rr
![Page 30: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/30.jpg)
30/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → rACDrE11x 1 → rr
MBMB
![Page 31: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/31.jpg)
31/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → rACDrE11x 1 → rr2 → MB
22
![Page 32: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/32.jpg)
32/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → 2rACDrE11x2 1 → rr2 → MB
![Page 33: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/33.jpg)
33/96
SEQUITUR: example
ET: MBrACDrErrrrxMBGrrrrxMBCFrrrrx
T → 2rACDrE113G43CF4rx 1 → rr2 → MB3 → x24 → 1r
grammar => whole path DAG
![Page 34: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/34.jpg)
34/96
Whole path DAG
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 35: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/35.jpg)
35/96
PathImpact
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r x
UP()
E
![Page 36: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/36.jpg)
36/96
PathImpact
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r x
UP()
E
XBACKWARD() FORWARD()
![Page 37: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/37.jpg)
37/96
PathImpact
PathImpact(E): I {E} I = {}
Returns=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 38: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/38.jpg)
38/96
PathImpact
PathImpact(E): up(T, E) I = {E}
Returns=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 39: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/39.jpg)
39/96
PathImpact
PathImpact(E): forward(1) I = {E}
Returns=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 40: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/40.jpg)
40/96
PathImpact
PathImpact(E): forward(r) I = {E}
Returns=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 41: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/41.jpg)
41/96
PathImpact
PathImpact(E): Returns++ I = {E}
Returns=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 42: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/42.jpg)
42/96
PathImpact
PathImpact(E): forward(r) I = {E}
Returns=1
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 43: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/43.jpg)
43/96
PathImpact
PathImpact(E): Returns++ I = {E}
Returns=1
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 44: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/44.jpg)
44/96
PathImpact
PathImpact(E): after forward(1) I = {E}
Returns=4
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 45: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/45.jpg)
45/96
PathImpact
PathImpact(E): forward(3) -> x I = {E}
Returns=4
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 46: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/46.jpg)
46/96
PathImpact
PathImpact(E): backward(r) I = {E}
Returns=4
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
Skip=0
![Page 47: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/47.jpg)
47/96
PathImpact
PathImpact(E): Skip++ I = {E}
Returns=4Skip=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 48: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/48.jpg)
48/96
PathImpact
PathImpact(E): backward(D)->Skip-- I = {E}
Returns=4Skip=1
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 49: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/49.jpg)
49/96
PathImpact
PathImpact(E): backward(C)->I := I U {C},Returns--
I = {E}
Returns=4Skip=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 50: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/50.jpg)
50/96
PathImpact
PathImpact(E): backward(A)->I := I U {A},Returns--
I = {E, C}
Returns=3Skip=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 51: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/51.jpg)
51/96
PathImpact
PathImpact(E): backward(r)->Skip++ I = {E, C, A}
Returns=2Skip=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 52: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/52.jpg)
52/96
PathImpact
PathImpact(E): after backward(2) I = {E, C, A, M}
Returns=1Skip=0
T 2 r A C D r E 1 1 3 G 4 3 C F 4 r x
1 r r 2 M B 3 x 2 4 1 r
M A B C D GF r xE
![Page 53: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/53.jpg)
Chianti: A Tool for ChangeImpact Analysis of Java Programs
Ophelia ChesleyXiaoxia Ren
Barbara G. RyderFenil ShahFrank Tip
![Page 54: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/54.jpg)
54/96
Chianti: high-level concept
Inputs:
1) test suite T
2) original version of code
3) edited version of code
![Page 55: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/55.jpg)
55/96
Chianti: high-level concept
1) set of interdependent atomic changes A
![Page 56: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/56.jpg)
56/96
Chianti: high-level concept
1) set of interdependent atomic changes A
2) call graph for each test in T
![Page 57: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/57.jpg)
57/96
Chianti: high-level concept
1) set of interdependent atomic changes A
2) call graph for each test in T
3) T´ T – potentially affected by cA
![Page 58: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/58.jpg)
58/96
Chianti: high-level concept
1) set of interdependent atomic changes A
2) call graph for each test in T
3) T´ T – potentially affected by cA
4) for tiT´ determine A´A that may have affected ti
![Page 59: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/59.jpg)
59/96
Chianti: high-level concept
1) set of interdependent atomic changes A
2) call graph for each test in T
3) T´ T – potentially affected by cA
4) for tiT´ determine A´A that may have affected ti
determine subset of methods affected by
a set of changes
isolate subset of changes that affect
a given test
![Page 60: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/60.jpg)
60/96
Chianti: architectureSet of Unit Tests
Changedprogram P’
Originalprogram P
Call Graphof Tests
in P’
AffectedTests
AffectingChanges
Call GraphBuilder
CI analyzer
CHIANTI
Call Graphof Tests
in P
Atomic ChangeDecoder
AtomicChanges &
Dependencies
![Page 61: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/61.jpg)
61/96
Chianti: architectureSet of Unit Tests
Changedprogram
P’
Originalprogram
P
Call Graphof Tests
in P’
AffectedTests
AffectingChanges
Call GraphBuilder
CI analyzer
CHIANTI
Call Graphof Tests
in P
Atomic ChangeDecoder
AtomicChanges &
Dependencies
![Page 62: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/62.jpg)
62/96
Chianti: architectureSet of Unit Tests
Changedprogram P’
Originalprogram P
Call Graphof Tests
in P’
AffectedTests
AffectingChanges
Call GraphBuilder
CI analyzer
CHIANTI
Call Graphof Tests
in P
Atomic ChangeDecoder
AtomicChanges &
Dependencies
![Page 63: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/63.jpg)
63/96
Example: original versionclass A{public A() {}public void foo (){}
}class B extends A{public B(){}public void foo(){}
}class C extends A{public C(){}
}
![Page 64: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/64.jpg)
64/96
Example: changed version
class A{void foo (){}int x;
}class B extends A{void foo(){ B.bar(); }static void bar(){ y=17; }static int y;
}class C extends A{void foo(){ x=18; }int z;
}
![Page 65: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/65.jpg)
65/96
Example: testsclass Tests {public static void test1(){
A a = new A();a.foo();
}public static void test2(){
A a = new B();a.foo();
}public static void test3(){
A a = new C();a.foo();
}}
![Page 66: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/66.jpg)
66/96
Review: Atomic Changes
Change Description
AC Add an empty class
DC Delete an empty class
AM Add an empty method
DM Delete an empty method
CM Change body of a method
LC Change virtual method lookup
AF Add a field
DF Delete a field
![Page 67: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/67.jpg)
67/96
Review: Atomic Changes II
Change Description
CFI Change definition of an instance field initializer
CSFI Change definition of a static field initializer
AI Add an empty instance initializer
DI Delete an empty instance initializer
CI Change definition of an instance initializer
ASI Add an empty static initializer
DSI Delete an empty static initializer
CSI Change definition of a static initializer
![Page 68: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/68.jpg)
68/96
Example: Step 1
class A{void foo (){}int x;
}class B extends A{void foo(){ B.bar(); }static void bar(){ y=17; }static int y;
}class C extends A{void foo(){ x=18; }int z;
}
![Page 69: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/69.jpg)
69/96
Example: Step 1
AMB.bar()
class A{void foo (){}int x;
}class B extends A{void foo(){ B.bar(); }static void bar(){ y=17; }static int y;
}class C extends A{void foo(){ x=18; }int z;
}
CMB.foo()
AFB.y
CMB.bar()
![Page 70: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/70.jpg)
70/96
Example: Step 1
class A{void foo (){}int x;
}class B extends A{void foo(){ B.bar(); }static void bar(){ y=17; }static int y;
}class C extends A{void foo(){ x=18; }int z;
}
AFA.x
CMC.foo()
AMC.foo()
LCC, A.foo()
![Page 71: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/71.jpg)
71/96
Example: Step 1
class A{void foo (){}int x;
}class B extends A{void foo(){ B.bar(); }static void bar(){ y=17; }static int y;
}class C extends A{void foo(){ x=18; }int z;
}
AFC.z
![Page 72: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/72.jpg)
72/96
Example: atomic changesAM
B.bar()AFA.x
CMC.foo()
AMC.foo()
LCC, A.foo()
CMB.foo()
AFB.y
CMB.bar()
AFC.z
![Page 73: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/73.jpg)
73/96
Recall: high-level concept
1) set of interdependent atomic changes A
2) call graph for each test in T
3) T´ T – potentially affected by cA
4) for tiT´ determine A´A that may have affected ti
![Page 74: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/74.jpg)
74/96
Example: affected tests
A test is affected if its call graph contains:
1) node that corresponds to CM or DM, or
2) edge that corresponds to LC
![Page 75: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/75.jpg)
75/96
Example: affected tests
![Page 76: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/76.jpg)
76/96
Example: test1
void test1(){ A a = new A(); a.foo();}
<A, A.foo()>Tests.test1()
A.A() A.foo()
![Page 77: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/77.jpg)
77/96
Example: test2
void test2(){ A a = new B(); a.foo();}
Tests.test2()<B, A.foo()>
B.B() B.foo()
A.A()
CMB.foo()
![Page 78: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/78.jpg)
78/96
Example: test3
void test3(){ A a = new C(); a.foo();}
Tests.test3()<C, A.foo()>
C.C() A.foo()
A.A()
LCC, A.foo()
![Page 79: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/79.jpg)
79/96
Recall: high-level concept
1) set of interdependent atomic changes A
2) call graph for each test in T
3) T´ T – potentially affected by cA
4) for tiT´ determine A´A that may have affected ti
![Page 80: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/80.jpg)
80/96
Example: affecting changes
The set of atomic changes that affect a given affected test includes:
1) all atomic changes for nodes with AM and CM,
2) atomic changes in LC category, and
3) their transitively prerequisite atomic changes
![Page 81: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/81.jpg)
81/96
Example: affecting changes
![Page 82: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/82.jpg)
82/96
Example: AffectingChanges(test2)
Tests.test2()<B, A.foo()>
B.B() B.foo()
A.A() B.bar()
CMB.foo()
CMB.bar()
![Page 83: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/83.jpg)
83/96
Example: AffectingChanges(test2)
AMB.bar()
CMB.foo()
AFB.y
CMB.bar()
![Page 84: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/84.jpg)
84/96
Example
AFC.z
This atomic change does not affect any of the tests
=> additional tests are needed.
Remember the atomic change:
![Page 85: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/85.jpg)
85/96
Snapshot
![Page 86: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/86.jpg)
86/96
Chianti: Evaluation
Number of atomic changes between each pair of Daikon versions.
![Page 87: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/87.jpg)
87/96
Chianti: Evaluation
Categorization of the atomic changes.
![Page 88: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/88.jpg)
88/96
Chianti: Evaluation
Percentage of affected tests for each of the Daikon versions.
![Page 89: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/89.jpg)
89/96
Chianti: Evaluation
Average percentage of affecting changes, per affected test.
![Page 90: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/90.jpg)
90/96
Summary
PathImpact dynamic – uses dynamic traces online works on binariesChianti uses dynamic call graphs applicable for OOP (e.g. Java) determines affecting changes for every test
![Page 91: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/91.jpg)
91/96
References[1] Chesley, O., Dolby, J., Ren, X., Ryder, B., Shah, F., and Tip, F. Chianti:
A prototype change impact analysis tool for Java. Tech. Rep. DCS-TR-533, Rutgers University Department of Computer Science, September 2003.
[2] Chesley, O., Ren, X., Ryder, B., Shah, F., and Tip, F. Chianti: a tool for change impact analysis of java programs. In Proceedings of the 19th annual ACM SIGPLAN Conference on Object-oriented programming, systems, languages, and applications, pp. 432448.
[3] Law, J., Rothermel, G. Whole program Path-Based dynamic impact analysis. In Proc. of the 25th International Conference on Software Engineering, May 03-10, 2003, Portland, Oregon.
[4] Ryder, B., Tip, F. Change impact analysis for object-oriented programs. In Proceedings of the 2001 ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, pp. 4653, June 2001, Snowbird, Utah, United States.
![Page 92: Impact Analysis Yury Chebiryak urriy@wjpserver.cs.uni-sb.de University of Saarland Department of Computer Science.](https://reader034.fdocuments.us/reader034/viewer/2022051211/551a98d1550346761a8b5bed/html5/thumbnails/92.jpg)
92/96
Thanks for listening.
Questions?