1. A method comprising: (i) providing access to the results of a static analysis of a software program the static analysis results comprising data flow information; (ii) forming data-flow tracking instructions in order to track data flow within the software; and (iii) forming checking instructions in order to check the tracked data flow against the static analysis results and thereby identify potential flaws in the software program.