1. A method for allocating a plurality of programming objects of a control program configured to control a distributed control system, wherein the control system includes a plurality of controller nodes connected to a communications link, and the control program includes program code corresponding to the plurality of programming objects, the plurality of programming objects including virtual objects and non-virtual objects, the method comprising: identifying logical relationships among the plurality of programming objects; identifying a processing resource associated with each controller node; determining possible allocations of the virtual objects to the controller nodes based on at least the identified processing resources and the logical relationships among the plurality of programming objects; constructing a graph model representing at least a portion of the possible allocations, the graph model including a first set of vertices representing at least a first portion of the virtual objects, a second set of vertices representing the processing resources compatible with the at least first portion of virtual objects, and a set of edges interconnecting the first and second set of vertices; and applying a maximum matching algorithm to the graph model to determine an allocation of the at least first portion of virtual objects to the controller nodes.