1. An electronic device, comprising: a memory; a processor coupled to the memory; one or more policies stored in the memory, including: a resource availability policy determining whether the processor should continue evaluating the software; and, job availability policy determining whether new jobs will be created for unexplored branches; wherein the processor is configured to: receive a job to be executed, the job comprising an indication of a portion of software to be evaluated; evaluate the software; if a branch in the software is encountered: select a branch to explore; and store an initialization sequence of one or more unexplored branches; evaluate the job availability policy; based on the job availability policy, decide whether to create a job for each of the unexplored branches; evaluate the resource availability policy; and based on the resource availability policy, decide whether to continue evaluating the software at the branch selected to explore.