||The rapid advance in various technologies like communication networks, work-station and compression algorithms triggers the popularity of multimedia applications. Supporting different media streams in multimedia applications imposes new requirements on the design of multimedia software. This thesis presents a programming model and a software architecture designed for supporting distributed multimedia applications. The main contribution of the model and the architecture is to alleviate the burden of the multimedia application programmers by abstracting the details on communication and synchronization from the programmers. The Object-oriented approach is employed in the design of the model and the architecture. In the model, there are two major categories of multimedia objects, primitive object and composite object. Each primitive object represents a multimedia stream such as an audio stream, a video stream or a text data stream. On the other hand, a composite object does not represent any multimedia stream but is used to represent a group of temporulIy related primitive objects and/or other composite objects. The model supports the specification of temporal synchronization between data objects declaratively. A novel algorithm is devised to transform the declarative specification into operational realization. The implementation of the architecture can thus automatically realize the synchronization specificatious. At run-time, the composite object will make use of the specifications to orchestrate the contained objects when they are being played back. Thus the synchronization properties of multimedia objects cau be accomplished easily via the use of composite objects. From the communication perspective, if a multimedia object wants to send its data to another host, it just needs to create a destination endpoint, which is an abstraction of the destination host. A peer multimedia object will be created in the destination host automatically by the supporting run-time system. Then, the two peer objects can send the media data through the endpoints. This abstraction makes the underlying communication issue transparent to the applications. Besides the abstraction of communication and synchronization, the architecture also provides the user a set of application programming interface to manipulate the multimedia objects easily and effectively. An implementation of the architecture is completed and several sample applications are built to demonstrate the ease of programming distributed multimedia applications without the concern of the communication and synchronization details.