Abstract
Today, one might look at how most systems are produced and described the process as “designed insecurity”. But in fact, advances in static and dynamic analysis, model checking, proof-carrying code, correct-by-construction development and other techniques in the past decade provide some cause of optimism that software with significantly fewer vulnerabilities and better understood properties may be within reach.