Instructor: Gary T. Leavens HEC 329 Leavens@ucf.edu 407-823-4758 handouts: course policies and HW 0 COP 5021 PROGRAM ANALYSIS WHAT IS PROGRAM ANALYSIS? Def: *program analysis* is WHY PROGRAM ANALYSIS? Automatic understanding of programs is - important for: + optimizing compilers + program development tools + formal verification: - safety critical systems - business critical systems + computer security - finding vulnerabilities - assurance for critical systems + research in programming languages - impossible, in general + safe approximations e.g., read(x); (if x > 0 then y:= 1 else {y:= 2; f()}); z:=y -- can we say that z is 1 at the end? Basic ideas: - compute abstractions - use in transformations Goals: - little or no input from programmers - correctness - efficient (at compile time): - time - space MAIN IDEAS OR THEMES - conservatism: "Err on the safe side!" - efficiency from approximation: "Trade precision for efficiency!" PRECISION AND RECALL def: the *precision* of an analysis is the fraction of def: the *recall* of an analysis is the fraction of Example: Suppose a program has 10 vulnerabilities and a tool identifies 8 places but only 6 of those are actual ones The precision is recall is OBJECTIVES - [Ideas] Correctly understand and use terms for reading/writing papers when designing software tools - [ImproveTools] Effectively apply the concepts to design better software tools, programming languages and tools. YOUR TASK READ THE BOOK! See the readings in the syllabus Goal: understand the material, so ask questions!