An optimizer using the software component paradigm for the optimization of engineering systems