Introduction to Software Analysis
- https://cis547.github.io/
- Study the theory and practice of software analysis.
- Used in diagnosing bugs, testing, debugging etc.
- Learn Program Invariants and to check them with static/dynamic analysis.
- Tradeoffs in program analysis characterized by soundness and completeness.
- Calculate precision, recall and f-measure to measure accuracy.
- Use tradeoffs to remedy undecidability of program correctness properties.
Why Take This Course?
- Have as many testers as developers.
- Testers spend all time testing, developers spend half the time testing.
- Need methods to improve software quality, reliabilty, security, performance.
- Testing/debugging accounts for more that 50% of the cost of software development.
- Ariane Rocket Disaster:
- Post Mortem:
- Caused by numeric overlow.
- Fit 64-bit format to 16-bit, side ways velocity
- Computer misinterpreted path
- $100M for loss, multi-year setback
- Security Vulnerabilities:
- Exploitation
- Moonlight Maze, Code Red, Titan Rain, Stuxnet, Heartbleed