1. A method of managing software in a datacenter comprising operating a computer to perform steps of: storing a data construct representative of at least a portion of a datacenter having a distributed computer architecture, the datacenter comprising a plurality of components including a physical server, a virtualization layer executing on the physical server and a plurality of virtual machines instantiated by the virtualization layer, the data construct comprising a representation of at least the virtualization layer and the plurality of virtual machines instantiated by the virtualization layer and dependency relationships between the virtualization layer and the plurality of virtual machines instantiated by the virtualization layer; changing a software component on a target component in the datacenter including operating the computer to perform steps of: receiving target information representative of the target component; receiving task information representative of the software to be installed on the target component; using at least the data construct and the target information to identify related components which have a dependency relationship with the target component; using at least the task information to identify any affected components from among the related components; when one or more affected components are identified, then outputting a representation of the one or more affected components; and when no affected components have been identified, then performing a change of the software component on the target component.