1. A computer implemented method for managing a distributed software application, the computer implemented method comprising: identifying metadata describing a set of dependencies of a set of software components in the distributed software application from data associated with the set of software components, wherein the metadata is included in a template that includes a set of virtual machine images, each virtual machine image in the set of virtual machine images is a virtual machine that hosts a different software component in the set of software components; identifying a sequence for changing an operational state of the set of software components of the distributed software application from the metadata to form an identified sequence; and changing the operational state of the set of software components using the identified sequence, wherein the metadata further describes a set of temporal limitations that is one or more time-based conditions specifying a window of time when a software component in the set of software components is not available to change the operational state of the software component.