Skip to main content

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