Source: https://research.cs.wisc.edu/mist/presentations/vuln_assess_coding_tutorial_part2.pdf