In this case we are concerned to map our required functionality onto the available system resources, and in a distributed system, these resources are likely to be remote. In this case we are partitioning our system to match the resources. In contrast, the more common case is that distribution arises from the amalgamation of previously existing systems, which might be from several different enterprises, implemented using different application systems and different vendors products. This approach which results in distributed systems is known as federation . How to federate can present very complex problems, as different domains can have different policies and protocols for handling different issues.
Federation is concerned with crossing both administrative and technological boundaries.
Interceptors may be necessary to enable federation. Between technological domains, you may need an interceptor to translate protocols and data formats. Between administrative domains, you may need interceptors to enforce security and thus act as a guard against invalid access. You might have noticed that the design of distributed systems has a lot in common with the design of object-oriented systems. One of the major tasks in object-oriented design is to partition a system into objects defined by classes.