1. A computerized method for determining an allocation of software and data components in a distributed system, the method comprising: modeling, the distributed system, the described system having a plurality of computing resources, the computing resources including at least one resource from each of processor resources, memory resources and communications resources; determining a set of couplings in the distributed system, said couplings including at least one coupling from each of control couplings, data couplings and peripheral couplings; prepartitioning the set of couplings to produce data and control partitions; preallocating tasks in each coupling in the set of couplings to one of the at least one processor resource of the plurality of computing resources; interleaving the data and code partitions; defining a set of components according to the interleaved data and code partitions, each of the components having a data and a code segment; determining a modularity of the set of components; determining a coupling strength for each coupling in the set of couplings; and allocating the defined set of components to computer hardware resources having the computing resources according to the modularity and the coupling strength.