1. A method of testing software having logic, the method comprising: storing a model of the software in one or more objects, wherein the model comprises modeled logic modeling at least a subset of the logic of the software, the model comprises a current state of the software model modeling a possible state of the software, and the one or more objects are instantiated from one or more object classes; receiving, in at least one of the objects, a method call initiating a software modeling function; and responsive to receiving the method call, initiating the software modeling function.