1. A method of managing software in a datacenter comprising operating a computer to perform steps of: storing a first data structure 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 first data structure comprising a representation of at least the virtualization layer and the plurality of virtual machines instantiated by the virtualization layer and dependency relationships for the plurality of components including the virtualization layer and the plurality of virtual machines instantiated by the virtualization layer; changing a software component on a target component from the plurality of components in the datacenter including operating the computer to perform steps of: receiving target information identifying the target component; receiving task information representative of a desired change for the target component for installing the software on the target component; using at least the first data structure and the target information to identify related components in the plurality of components that have a dependency relationship with the target component from the dependency relationships; using at least the task information to identify any affected components from among the related components in the plurality of components, wherein affected components reflect a set of possible conflicts that occur due to the installing of the software; when a first set of one or more affected components are identified and the set of possible conflicts cannot be resolved, then outputting information for the set of possible conflicts that cannot be resolved for the first set of one or more affected components; when a second set of one or more affected components have been identified and the set of possible conflicts are resolvable, then performing: adding the second set of one or more affected components to a second data structure including dependency relationships determined from the first data structure to allow the change of the software component to be performed on the target component; transforming the second data structure into a workflow to change the software component on the target component by retrieving obtaining a set of action scripts from a set of feature bundles associated with the second set of one or more affected components, wherein the set of action scripts is added to the workflow based on the dependency relationships in the second data structure; and remediating the second set of one or more affected components to resolve the set of possible conflicts by executing the action scripts in the workflow, each action script performing an action to resolve the possible conflicts.