Many scientific applications are currently structured as a series of computational steps, each of which is implemented by a separate program with files being used to transmit data between the steps. In this project, an alternative based on structuring applications as heterogeneous distributed programs is proposed. Among the potential benefits of this approach are improved access to remote high-performance machines, enhanced ability to interact with the application, and increased flexibility for the applications designer. These benefits can be achieved with little extra effort by using a system software infrastructure to handle communication and heterogeneity transparently to the user. The specific goal of this research is to develop new application programming techniques and software support systems to facilitate this type of structuring for scientific applications. The first part involves continuing work into adapting existing tools for this purpose using the Schooner RPC system, as well as investigating issues related to the construction of new application codes that can exploit these capabilities. The second part involves determining appropriate characteristics for a software system attuned to the needs of scientific applications, and then constructing such a system. All of this work builds on previous research involving heterogeneous computing.