1. A method for agile software development, comprising: receiving a command by a first version of a software component running on a first virtual machine, wherein the command is received via the first virtual machine and executed by the first version of the software component, passing the command from the first virtual machine to a hypervisor, executing on a computer system, along with an output file comprising a functionality identifier corresponding to the command and identifiers for versions of the software component to which the command is applicable, transferring the command by the hypervisor, through an infrastructure layer of the computer system, to a second virtual machine for an execution of the functionality corresponding to the command by a second version of the software component if the identifier of the second version of the software component was present in the output file, and sending a freeze command by the hypervisor to the second virtual machine if the identifier of the second version of the software component is not comprised in the output file.