1. A method for minimizing total cost of interaction among components of a computer program, each of said components being characterized by at least one implementation property, said method comprising the steps of: a) carrying out at least a partial run of said program; b) monitoring said at least partial run of the program to measure an amount of interaction between each pair of components; c) determining a cost of interaction between each pair of interacting components; d) determining a choice of implementation properties which minimizes total cost of said at least partial run; e) assigning said choice of said implementation properties to said components for a subsequent at least partial run of said program.