Partitioning of distributed object applications, and task assignment for classical distributed systems, addresses a fundamental
problem in client-server and n-tier systems: determining the machine (from high-end servers to tier-0 devices) on which each
object should be placed and executed for best overall performance of the application. Traditionally, techniques for automated
partitioning have employed a graph-based model of the application being partitioned. In order to remain realistic and effective,
these techniques must be extended to incorporate notions of object replication, caching, and synchronization protocols for
maintaining consistency.
We propose to extend the traditional graph-based model to include nodes representing “potential replicas”, and edges reflecting
the cost of synchronization.