1. A method implemented by executing instructions stored in a memory of a computer, the method comprising: identifying a global set of hosts, comprising computers, to which it is desired to apply a software modification; segmenting the hosts based on a semantic analysis of attributes selected from an attribute group including operating system name, operating system version, operating system patch-sets, and installed software applications, such that hosts in each segment share at least one attribute; selecting a segment to syntactically analyze; grouping the hosts of the selected segment into a plurality of clusters, wherein grouping the hosts into a plurality of clusters includes processing syntactic information about the hosts in the selected segment to identify the plurality of clusters, wherein the syntactic information is obtained from an inventory of information about files accessible by each host, and wherein the syntactic information is different from the attributes; repeating the selecting the segment and the grouping until substantially all hosts in the global set of hosts have been grouped; selecting a cluster of hosts; and applying the software modification to the selected cluster of hosts using a baseline software modification procedure, wherein the applying comprises: selecting a subset of hosts in the selected cluster of hosts; attempting to modify the hosts in the subset using the baseline software modification procedure; if the attempt is not successful, adjusting the baseline software modification procedure until the modification is successful, wherein the adjusting includes: modifying at least one host of the selected cluster with an adjustment to the baseline software modification procedure, wherein the adjustment is determined by: applying a nominal version of the software modification to the at least one host according to the baseline software modification procedure; testing to determine whether the software modification is successful; adjusting the baseline software modification procedure; and repeating the testing and adjusting step until it is determined that the software modification is successfully applied on the at least one host; determining whether the modified host operates according to desired characteristics; based on determining that the modified host does not operate according to the desired characteristics, updating the adjustment; and repeating the modifying, determining and adjustment updating step on the at least one host; and repeating the selecting, attempting, and adjusting, until all hosts in the selected cluster of hosts have been modified with the software modification.