Shape optimization using feature-based CAD systems and adjoint methods