A Component Based Architecture for Coupling Optimization and Simulation Software in a Distributed Environment