Existing practices in the software development life-cycle provide developers with the procedures needed for detecting defects, tracking security flaws and discovering vulnerabilities.
However, given the complexity of software products and the difficulty of finding vulnerabilities among millions of lines of code, discovering vulnerabilities has become an increasingly difficult task.