Compared with programming sequential computers, programming distributed parallel computing systems has additional complexity due to the considerations of parallelism, synchronization, the network configuration of the distributed computing system, and the topology of the parallel processors. Current programming practices, however, are not sufficient to make effective use of such computing systems. In this paper, an approach to software development for distributed parallel processing systems which is architecture transparent is presented. This approach is based on the object-oriented concept, and facilitates the design and coding of software by separating the architecture-dependent issues from the semantics of the software. This makes the software system independent of the target machine or the network configuration. and easily portable to other machines. In our approach, the parallelism is implicit in the program, and the programmer does not need to be concerned with issues such as synchronization, network configuration or the topology of the parallel processors. Our approach can reduce the communication and synchronization errors caused by the programmer by automatically embedding the proper codes during the translation and allocation phases of the software development cycle.