A method for using streaming software, the method executed on a computer on which a software is to be used, the method comprising: receiving a table that indicates, for given usage histories, which units of said software are likely to be requested next, wherein said software is divided into blocks and said blocks are grouped into said units, wherein each unit is a set of one or more blocks whose likelihood of occurring in sequence exceeds a threshold, wherein next blocks of said software are added to a unit as long as the probability of reaching the next block is greater than or equal to the threshold; determining that resources used to transmit said software to said computer from a remote location are not in use; using said table to select a first unit of the software to be requested, said first unit having a highest value of downloading said first unit, wherein the value of downloading a particular unit of the software is determined (no) based on one or more factors, including an amount of data in the particular unit, a likelihood of use of the particular unit, and whether to download units in a depth-first traversal or a breadth-first traversal, wherein in a breadth-first traversal a next-most-likely unit is selected, and in a depth-first traversal the unit that is most likely to follow the unit that has just been downloaded is selected; requesting said first unit of software from said remote location; receiving said first unit of software; storing said first unit of software on the computer before a request to use said first unit of software is received; receiving a request for a second unit of software while said first unit of software is being received; interrupting a download of said first unit of software; and using said resources to download said second unit of software, wherein a probability that a use of a given unit of said software will follow another unit of said software is defined based on a conditional probability distribution function f X | h ( x), which, for any unit x, is the probability that x will follow a history h of units that have been requested, wherein the history has a fixed size of one or more units. receiving a table that indicates, for given usage histories, which units of said software are likely to be requested next, wherein said software is divided into blocks and said blocks are grouped into said units, wherein each unit is a set of one or more blocks whose likelihood of occurring in sequence exceeds a threshold, wherein next blocks of said software are added to a unit as long as the probability of reaching the next block is greater than or equal to the threshold; determining that resources used to transmit said software to said computer from a remote location are not in use; using said table to select a first unit of the software to be requested, said first unit having a highest value of downloading said first unit, wherein the value of downloading a particular unit of the software is determined (no) based on one or more factors, including an amount of data in the particular unit, a likelihood of use of the particular unit, and whether to download units in a depth-first traversal or a breadth-first traversal, wherein in a breadth-first traversal a next-most-likely unit is selected, and in a depth-first traversal the unit that is most likely to follow the unit that has just been downloaded is selected; requesting said first unit of software from said remote location; receiving said first unit of software; storing said first unit of software on the computer before a request to use said first unit of software is received; receiving a request for a second unit of software while said first unit of software is being received; interrupting a download of said first unit of software; and using said resources to download said second unit of software, wherein a probability that a use of a given unit of said software will follow another unit of said software is defined based on a conditional probability distribution function f X | h ( x), which, for any unit x, is the probability that x will follow a history h of units that have been requested, wherein the history has a fixed size of one or more units.