An Adjoint-Based Design Methodology for CFD Optimization Problems