University of Saarland Department of Computer Science Impact
- Slides: 92
University of Saarland Department of Computer Science Impact Analysis Yury Chebiryak urriy@wjpserver. cs. uni-sb. de /96
Impact Analysis n n 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 2
Techniques 3
Dependency-based IA 4
Whole Program Path-Based Dynamic Impact Analysis James Law Gregg Rothermel /96
Path. Impact n n n Dynamic Call-based Works on binaries Relatively low cost Relatively low overhead 6
Call Graph 7
Call Graph B is changed 8
Call Graph Assumption: change in B has a potential impact on nodes reachable from B 9
Execution Traces (ET) Run M() ET: M 10
Execution Traces Run B() ET: MB 11
Execution Traces Return ET: MBr 12
Execution Traces Run A() ET: MBr. A 13
Execution Traces Run C() ET: MBr. AC 14
Execution Traces Run D() ET: MBr. ACD 15
Execution Traces Return ET: MBr. ACDr 16
Execution Traces Run E() ET: MBr. ACDr. E 17
Execution Traces Return ET: MBr. ACDr. Er 18
Execution Traces Return ET: MBr. ACDr. Err 19
Execution Traces Return ET: MBr. ACDr. Errr 20
Execution Traces Return ET: MBr. ACDr. Errrrx 21
Execution Traces II n Single MBr. ACDr. Errrrx n Multiple MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx Programs with loops => very long trace 22
SEQUITUR algorithm Data compression algorithm by Larus: n Online n Created grammar reproduces trace exactly n O(N) running time n O(N) size in the worst case n O(log N) size in the best case n e. g. 2 GB trace → 100 MB 23
SEQUITUR algorithm SEQUITUR( S ) input Execution Trace S output Grammar G Rule T 1. for each token in S 2. append token to end of production for T 3. if duplicate digram appears 4. if other occurrence is a rule g in G 5. replace new digram with nonterminal of g. 6. else 7. form a new rule and replace duplicate 8. digrams with the new non-terminal. 9. if any rule in G is used only once 10. remove the rule by substituting the production. 11. return G 24
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx 25
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T → MBr. ACDr. Errrrx 26
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T → MBr. ACDr. E 1 1 x 1 → rr 27
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T → MBr. ACDr. E 11 x 1 → rr 28
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T → MBr. ACDr. E 11 x. M 1 → rr 29
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T → MB r. ACDr. E 11 x MB 1 → rr 30
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T → 2 r. ACDr. E 11 x 2 1 → rr 2 → MB 31
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T → 2 r. ACDr. E 11 x 2 1 → rr 2 → MB 32
SEQUITUR: example ET: MBr. ACDr. Errrrx. MBGrrrrx. MBCFrrrrx T 1 2 3 4 → → → 2 r. ACDr. E 113 G 43 CF 4 rx rr MB x 2 1 r grammar => whole path DAG 33
Whole path DAG 34
Path. Impact 35
Path. Impact 36
Path. Impact(E): I {E} Returns=0 I = {} 37
Path. Impact(E): up(T, E) Returns=0 I = {E} 38
Path. Impact(E): forward(1) Returns=0 I = {E} 39
Path. Impact(E): forward(r) Returns=0 I = {E} 40
Path. Impact(E): Returns++ Returns=0 I = {E} 41
Path. Impact(E): forward(r) Returns=1 I = {E} 42
Path. Impact(E): Returns++ Returns=1 I = {E} 43
Path. Impact(E): after forward(1) Returns=4 I = {E} 44
Path. Impact(E): forward(3) -> x Returns=4 I = {E} 45
Path. Impact(E): backward(r) Returns=4 Skip=0 I = {E} 46
Path. Impact(E): Skip++ Returns=4 Skip=0 I = {E} 47
Path. Impact(E): backward(D)->Skip-- Returns=4 Skip=1 I = {E} 48
Path. Impact(E): backward(C)-> I : = I U {C}, Returns-- Returns=4 Skip=0 I = {E} 49
Path. Impact(E): backward(A)-> I : = I U {A}, Returns-- Returns=3 Skip=0 I = {E, C} 50
Path. Impact(E): backward(r)->Skip++ Returns=2 Skip=0 I = {E, C, A} 51
Path. Impact(E): after backward(2) Returns=1 Skip=0 I = {E, C, A, M} 52
Chianti: A Tool for Change Impact Analysis of Java Programs Ophelia Chesley Xiaoxia Ren Barbara G. Ryder Fenil Shah Frank Tip /96
Chianti: high-level concept Inputs: 1) test suite T 2) original version of code 3) edited version of code 54
Chianti: high-level concept 1) set of interdependent atomic changes A 55
Chianti: high-level concept 1) 2) set of interdependent atomic changes A call graph for each test in T 56
Chianti: high-level concept 1) 2) 3) set of interdependent atomic changes A call graph for each test in T T´ T – potentially affected by c A 57
Chianti: high-level concept 1) 2) 3) 4) set of interdependent atomic changes A call graph for each test in T T´ T – potentially affected by c A for ti T´ determine A´ A that may have affected ti 58
Chianti: high-level concept 1) 2) 3) 4) set of interdependent atomic changes A call graph for each test in T T´ T – potentially affected by c A for ti T´ 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 59
Chianti: architecture 60
Chianti: architecture 61
Chianti: architecture 62
Example: original version class A{ public A() {} public void foo (){} } class B extends A{ public B(){} public void foo(){} } class C extends A{ public C(){} } 63
Example: changed version 64
Example: tests class Tests { public static void test 1(){ A a = new A(); a. foo(); } public static void test 2(){ A a = new B(); a. foo(); } public static void test 3(){ A a = new C(); a. foo(); } } 65
Review: Atomic Changes Change AC DC AM DM CM LC AF DF Description Add an empty class Delete an empty class Add an empty method Delete an empty method Change body of a method Change virtual method lookup Add a field Delete a field 66
Review: Atomic Changes II Change CFI CSFI AI DI CI ASI DSI CSI Description Change definition of an instance field initializer Change definition of a static field initializer Add an empty instance initializer Delete an empty instance initializer Change definition of an instance initializer Add an empty static initializer Delete an empty static initializer Change definition of a static initializer 67
Example: Step 1 68
Example: Step 1 69
Example: Step 1 70
Example: Step 1 71
Example: atomic changes 72
Recall: high-level concept 1) 2) 3) 4) set of interdependent atomic changes A call graph for each test in T T´ T – potentially affected by c A for ti T´ determine A´ A that may have affected ti 73
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 74
Example: affected tests 75
Example: test 1 void test 1(){ A a = new A(); a. foo(); } 76
Example: test 2 void test 2(){ A a = new B(); a. foo(); } 77
Example: test 3 void test 3(){ A a = new C(); a. foo(); } 78
Recall: high-level concept 1) 2) 3) 4) set of interdependent atomic changes A call graph for each test in T T´ T – potentially affected by c A for ti T´ determine A´ A that may have affected ti 79
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 80
Example: affecting changes 81
Example: Affecting. Changes(test 2) 82
Example: Affecting. Changes(test 2) 83
Example Remember the atomic change: This atomic change does not affect any of the tests => additional tests are needed. 84
Snapshot 85
Chianti: Evaluation Number of atomic changes between each pair of Daikon versions. 86
Chianti: Evaluation Categorization of the atomic changes. 87
Chianti: Evaluation Percentage of affected tests for each of the Daikon versions. 88
Chianti: Evaluation Average percentage of affecting changes, per affected test. 89
Summary Path. Impact n dynamic – uses dynamic traces n online n works on binaries Chianti n uses dynamic call graphs n applicable for OOP (e. g. Java) n determines affecting changes for every test 90
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 19 th annual ACM SIGPLAN Conference on Object-oriented programming, systems, languages, and applications, pp. 432 448. [3] Law, J. , Rothermel, G. Whole program Path-Based dynamic impact analysis. In Proc. of the 25 th 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. 46 53, June 2001, Snowbird, Utah, United States. 91
Thanks for listening. Questions? 92
- Uni saarland kartenbüro
- Deutscland bundesländer
- Dej uni saarland
- Mice.cs.columbia
- Ucl computer science modules
- Electrical engineering northwestern
- Computer science department rutgers
- Vptl tutoring stanford
- Fsu cs faculty
- Trimentoring
- Bhargavi goswami
- My favourite subject english for class 6
- Phoenix online computer science university
- University of bridgeport computer science faculty
- Bridgeport engineering department
- Computer science yonsei university
- York university computer science
- Unc chapel hill cs
- Seoul national university computer science
- Osaka university computer science
- Computer science columbia university
- 7800 york road
- K-state computer science
- Brown university computer science
- Trinity university computer science
- Brandeis university cs
- Institute of computer science university of tartu
- Kotebe metropolitan university departments
- Mgd stellenbosch
- Human movement science impact factor
- Impact of computers in business
- Department of law university of jammu
- Department of geology university of dhaka
- University of padova psychology
- University of bridgeport it department
- Iowa state math department
- Department of physics university of tokyo
- Texas state university psychology department
- Department of information engineering university of padova
- Department of information engineering university of padova
- Manipal university chemistry department
- Syracuse university psychology department
- Jackson state university finance department
- Msu physics and astronomy
- Columbia university cs department
- University of sargodha engineering department
- Stanford university philosophy department
- Department of forensic science dc
- Ohio department of education science standards
- Material science iit delhi
- Tum
- Computer engineering department
- 沈榮麟
- University of science and technology of hanoi (usth)
- Ulsan national institute of science and technology (unist)
- Institute of industrial science the university of tokyo
- The university of science and technology yemen
- Jordan university of science and technology
- Jordan university of science and technology ranking
- Ryerson university data science
- Automotive engineering esslingen
- University of warsa
- Jordan university of science and technology
- The university of shanghai for science and technology
- Graduate school of engineering science osaka university
- Indiana university cognitive science
- University of science and technology of mazandaran
- Department of mathematics purdue
- Npust scholarship
- University of science and technology kumasi
- Shubahah
- East china university of political science and law
- Salahaddin university college of science
- Mongolian university of science and technology logo
- Student actuaries at michigan
- National yunlin university of science and technology
- Natural vs social science
- Mind map main branches of science
- Natural and physical science
- Applied science vs pure science
- Natural science and social science similarities
- Wwwk-6.thinkcentral
- Rule of 70 in population growth
- Windcube
- Hard science and soft science
- Hacettepe university computer engineering
- Wjec gcse computer science
- How many fields in computer science
- Procedural abstraction definition
- Unsolved computer problems
- Sequencing ap csp
- Ucl careers service
- Casting computer science