1. A method comprising: envisioning a software application and attributes, objectives and functionality of the software application are identified; designing the software application, wherein a threat model is designed based on the attributes, objectives and functionality of the software application; and developing code of the software application based on the threat model.