What are the goals of OO software design?
Who needs it?
How does OO design try to achieve its goals?
How well could anyone achieve those goals?