Learn methods to improve software quality
-reliability, security, performance
-Become a better software developer
Security Vulnerabilities
-Exploits of errors in programs
Dynamic, static, hyprid
An invariant at the end of the program
int p(int x){ return x * x; }
void main(){
int z;
if(getc() == 'a')
z = p(6) + 6;
else
z = p(-7) -7;
if (z != 42)
disaster();
}
void main(){
z = 3;
while (true){
if(x == 1)
y = 7;
else
y = z + 4;
assert (y == 7);
}
}