Roughly, it seems like a shield is enough when your shield user skill is equal to the attacker's skill stat going by Zivilin's
Dwarven Research: A Study on Shielding. For example, you would want to have a level 6 shield user skill versus say a night troll who has all level 6 skills.
But you can refine the process by knowing Toady had mentioned in
DF Talk 21 that an
active specific choice in manual defense will receive a boost to the defensive roll, while a
passive auto defense will not (search for "roll" in the DF Talk link).
Given
Hans Lemurson's post in the Zivilin shield thread, the important factor to be concerned with then, is chance of defensive failure. This applies for dodging as well. If the shield (or dodge) is meant to be the only defense, then it's important to shore up against defensive failure.
From a defensive perspective, your choice to manually defend is amplified, so stat parity seems like it's enough (even more so if
focused or
focused!),
but only as a single action response to a single melee attack. The real concern for attacks that could spider through your shield block and your dodge is passive auto defense and the things that modify its roll for the worse.
Passive auto is a factor during the mutual exchange of blows (you'll auto defend their attack), when facing multiples (you can only manually defend against one attack) or versus ranged attacks (which can only be defended against passively).
What affects passive auto defense would be the height of your defensive stat level for shield and dodge, your position relative to the attack (side and back attacks won't help your cause), and that all important interplay in regard to how your choice of attack might leave you open. This you can see when experimenting with attacks of opportunity signified in your attack menu by
-/+/!.
So you generally want to come in one level above, or more statistically. If you juggle all of this, you should eventually be able to have a run where you never/almost never get hit.
Also, anything grown is awesome.