In the traditional Software Development Cycle, measures to raise the security level are usually implemented shortly before or in some cases even after software delivery. Since approximately half of the bugs are caused by errors in design, the security measures should be implemented as early as before (requirements phase) or during the design phase.
At each stage of the process, the relevant actions are carried out; the aim of this is to specify the threat model in greater detail and to advance its further development.
Apart from that, already existing system drafts and architectures can be verified in order to identify, assess and fix vulnerabilities.
After the components worth protecting (assets) and the relevant threats have been fully identified, the phase of identifying vulnerabilities starts with the analysis of the documentation (i.e. of the security design in particular) and the analysis of the program flow charts.
By analyzing the data flow charts, the system can be broken down into manageable parts for a vulnerability check. These trust boundaries are marked to be recognized as trustworthy or non-trustworthy components.
The aims include: understanding the security architecture, identifying the design flaws and minimizing the number of potential attack surfaces.