Villains are usually portrayed as all evil. No redeeming qualities. However, C.S. Lewis said that evil by itself with nothing good is weak. Therefore, you should make your villain evil, but also good in some ways. Honestly, nobody is truly, 100% evil. If there is, I will stab myself in the stomach with a banana.
You need to remember that villains are human. They have reasons for what they do. They need to justify things to themselves or they'd go insane with guilt (I think.)
The best villain I've ever designed was Oriana Jansen. She's the aunt of the heroine, pretty, smart, kind, and everything you could want in anyone, but after dark, she becomes another person that rarely shows her face. She is no longer the person she is during the day. She is helping evil things from another world top build a bridge into hers. I haven't quite figures out how she justifies her actions to herself, as I'm not very far into the story. But her story might explain part of it to me.
My villain is a member of a group that can see things that travel between our world and theirs. As a young girl, her parents feared that she and her twin sister would endanger them and their other daughter, who is not like them. Out of fear for he life, Oriana ran away when she was old enough. her twin sister didn't and was killed. Oriana came across a school that trained her and people like her, almost most didn't live to be adults. They are identified by their large eyes. Oriana spent the school year at school and her summer sleeping in alleys, trying to survive attacks from evil creatures and find food. When she grew up, Oriana took over the school and revealed herself to her parents, though she never could quite forgive them.
Don't you feel a little sympathetic? That's no excuse for what she does, but you might understand why she started doing what she does. She still isn't too hugely bad, though, I don't think. She protects her niece even thogh they're on opposite sides and the way she does it angers her niece. She still cares.
Well, that's all for now! Hope it helps someone!