At Sumo Software the greatest tool that I have learned is UML. I was first introduced to UML by my object Oriented Design professor. The only thing he touched on was a class diagram representation. He stressed the importance of this skill but never got the point across. OOD is a hard class to teach because the need for OOD is not inherently present on small projects. The same fault happened to my introduction to UML.
The exposure of very large projects at my internship at Sumo has granted me understanding. UML for design is a tool I will never go without. No matter how small the project I am on. Code happens on whiteboards abstracted from a language. “If I had an hour to solve a problem I’d spend 55 minutes thinking about the problem and 5 minutes thinking about solutions.” – Einstein

Here is a good introductory resource to UML use case and actor diagrams. Remember, that when building a use case/actor diagram your building a story of your application. Once you understand the story it’s very easy to have the application drop out the back end. It’s sort of like masonry. Just cut away the excess marble until only the statue remains.