The de-facto standard for programming distributed memory parallel architectures are the PVM and MPI message passing libraries. Their low level of abstraction makes the programmer s task error-prone and reduces application portability. SODA is a novel programming model that presents a much higher level of abstraction and manages most low-level distribution and parallelism details implicitly. SODA is based on an extension of the active objects paradigm. This work is structured into two main parts. In the first part we present a novel data-flow synchronisation mechanism for active objects that increases ease-of-use, efficiency, liveliness and correctness compared to previous approaches. SODA active objects are the units of concurrency and distribution and they make the underlying parallelism largely implicit. Details, such as mapping, communication and decomposition are transparent. The second part is a demonstration of SODA s benefits in the light of a complex, real-world application. It shows how SODA s active object concept can support object-oriented programming paradigms and therefore becomes a viable solution to large-scale real-world programs.