Vitri is an object-oriented framework implemented in Java for high-performance distributed computing. Using Vitri, applications can engage in cooperative problem solving by dividing their tasks among heterogeneous clusters of workstations and PCs. Vitri’s features include basic support for distributed computing and communication, as well as visual tools for evaluating run-time performance, and modules for heuristic optimization. It balances loads dynamically using a client-side task pool, allows the addition or removal of servers during a run, and provides fault tolerance transparently for servers and networks. Among its more powerful features are modules for heuristic optimization and decision support tools such as modeling to generate alternatives (MGA). Vitri also provides an asynchronous globalparallel genetic algorithm that is particularly suited for coarse-grained tasks executing on processors with large variations in processor speeds. By using dataflow techniques, in which computations are explicitly based on the availability and forwarding of data, the usual endof- generation synchronization points are removed from the algorithm. The tools in Vitri are applied to a number of different applications from the civil engineering domain. The results indicate the adaptability of Vitri to various problems and its utility as a tool for managing engineering decision support systems.