Shared objects are used in the distributed environment for synchronization,
date sharing and service provision. They are usually replicated in a distr
ibuted system for higher availability and fault tolerance. Coherent or stro
ngly consistent implementation of replicated objects has been studied exten
sively in the literature. This paper concentrates on a general method for s
pecifying and implementing replicated objects that may require weaker consi
stency conditions. The weakness of the objects is left open and users are a
llowed to specify their objects by defining how concurrent sets of operatio
ns should be performed. The implementation of a replicated object consists
of two modules: one module is an algorithm to identify concurrent sets from
a distributed computation and the other module is a user-defined procedure
to process the concurrent sets. We show examples of weaker objects that ca
n be defined and implemented more efficiently because of the less stringent
requirements imposed on these objects. Several objects, including a shared
dictionary, are used to demonstrate our scheme and we show that non-blocki
ng implementations of some of these objects are possible.