Historically I have used Balsamiq Mockups for wireframing, UML diagrams for classes etc and just simple written tables for designing the databases.
Balsamiq wireframes, but we run it *inside* a Confluence wiki so that we can collaborate and it doesn't require additional tools (like acrobat reader or word or visio) to access the documentation.
Probably should use UML, but I've personally never found something that takes me far enough to code from a UML model, so might use a UML style diagram (in Balsamiq) to illustrate the structure but not generate any code.
The other thing that's been useful for diagramming etc is Gravit Designer.
Thanks Michael, Gravit Designer looks like its worth an investigation.
As for UML: I have build quite a few plugins that require either extensive class hierarchy, or require sub plugins, (im a former JAVA software engineer and so may well over engineer things) and so I have used UML to model them out.