UML Diagrams

If you don't know what they are, you should. They help for laying out an initial design for your project and help you better understand the relationships between classes and interfaces.

"An API should model the key objects for the problem domain" - Martin Reddy, Api Design for C++

http://en.wikipedia.org/wiki/Unified_Modeling_Language