CS510 Software Engineering
Static Program Analysis
- Asst. Prof. Mathias Payer
Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-CS510-SE
CS510 Software Engineering Static Program Analysis Asst. Prof. - - PowerPoint PPT Presentation
CS510 Software Engineering Static Program Analysis Asst. Prof. Mathias Payer Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-CS510-SE Spring 2015 Static
Department of Computer Science Purdue University TA: Scott A. Carr Slides inspired by Xiangyu Zhang http://nebelwelt.net/teaching/15-CS510-SE
Static Analysis
1
2
Mathias Payer (Purdue University) CS510 Software Engineering 2015 2 / 24
Static Analysis
1Reading material: Al Bessey et al., A Few Billion Lines of Code Later: Using
Mathias Payer (Purdue University) CS510 Software Engineering 2015 3 / 24
Static Analysis
Mathias Payer (Purdue University) CS510 Software Engineering 2015 4 / 24
Static Analysis
Mathias Payer (Purdue University) CS510 Software Engineering 2015 5 / 24
Static Analysis
1 z = val1 ; 2 x = val2 ; 3 i f
4
5 e l s e 6
7 z = val4 ; 8 i f
9
10 e l s e 11
Mathias Payer (Purdue University) CS510 Software Engineering 2015 6 / 24
Static Analysis
1 p = F1 ; 2 q = F2 ; 3 i f
4
5 e l s e 6
7 i f
8
9 e l s e 10
11 (∗p) ()
Mathias Payer (Purdue University) CS510 Software Engineering 2015 7 / 24
Static Analysis
1 x = 10; 2 y = input () ; 3 i = x+y ; 4 i f
5
6 e l s e 7
8
9
10 p r i n t
Mathias Payer (Purdue University) CS510 Software Engineering 2015 8 / 24
Static Analysis
Mathias Payer (Purdue University) CS510 Software Engineering 2015 9 / 24
Static Analysis
1 x = F1 ;
2 i f
3
4 e l s e 5
6 i f
7
8 e l s e 9
10 ∗(∗p) () ;
Mathias Payer (Purdue University) CS510 Software Engineering 2015 10 / 24
Static Analysis
Mathias Payer (Purdue University) CS510 Software Engineering 2015 11 / 24
Static Analysis
Mathias Payer (Purdue University) CS510 Software Engineering 2015 12 / 24
Data-Flow Analysis
1
2
Mathias Payer (Purdue University) CS510 Software Engineering 2015 13 / 24
Data-Flow Analysis
Mathias Payer (Purdue University) CS510 Software Engineering 2015 14 / 24
Data-Flow Analysis Motivating Example: Reaching Definitions
Mathias Payer (Purdue University) CS510 Software Engineering 2015 15 / 24
Data-Flow Analysis Motivating Example: Reaching Definitions
Mathias Payer (Purdue University) CS510 Software Engineering 2015 16 / 24
Data-Flow Analysis Motivating Example: Reaching Definitions
1 i = m
2 j = n 3 a = u1 4 do { 5
6
7
8
9
10 } while
Mathias Payer (Purdue University) CS510 Software Engineering 2015 17 / 24
Data-Flow Analysis Motivating Example: Reaching Definitions
Mathias Payer (Purdue University) CS510 Software Engineering 2015 18 / 24
Data-Flow Analysis Common Analysis Framework
1
2
3
Mathias Payer (Purdue University) CS510 Software Engineering 2015 19 / 24
Data-Flow Analysis Common Analysis Framework
Mathias Payer (Purdue University) CS510 Software Engineering 2015 20 / 24
Data-Flow Analysis Common Analysis Framework
{} {d1} {d2} {d3} {d1, d2} {d1, d3} {d2, d3} {d1, d2, d3}
Mathias Payer (Purdue University) CS510 Software Engineering 2015 21 / 24
Data-Flow Analysis Common Analysis Framework
Mathias Payer (Purdue University) CS510 Software Engineering 2015 22 / 24
Data-Flow Analysis Common Analysis Framework
Mathias Payer (Purdue University) CS510 Software Engineering 2015 23 / 24
Data-Flow Analysis Common Analysis Framework
Mathias Payer (Purdue University) CS510 Software Engineering 2015 24 / 24