For simple problems Maximize and Minimize can symbolically handle problems with parameters. Here's an example from the documentation
In[1]:= Maximize[a x^2 + b x + c, x]
Out[1]= {\[Piecewise] {
{c, (b == 0 && a == 0) || (b == 0 && a < 0)},
{-((b^2 - 4 a c)/(4 a)), (b > 0 && a < 0) || (b < 0 && a < 0)},
{\[Infinity], \!\(
TagBox["True",
"PiecewiseDefault",
AutoDelete->False,
DeletionWarning->True]\)}
}, {x -> \[Piecewise] {
{0, (b == 0 && a == 0) || (b == 0 && a < 0)},
{-(b/(2 a)), (b > 0 && a < 0) || (b < 0 && a < 0)},
{Indeterminate, \!\(
TagBox["True",
"PiecewiseDefault",
AutoDelete->False,
DeletionWarning->True]\)}
}}}