- Use case diagram for the definition of the scope.
- State machine/chart for defining the logic of use
- package diagram for start the planning the placement of classes and sources
- Class diagrams for classes supporting the logic
- Sequence diagrams for algorithms used
- Composite structure diagrams for planning the complex classes.
If some diagram is absolutely obvious, you needn't do it.
But! AFTER the coding you don't need diagrams already, rather good javadocs.
If it is not your code and you want to understand it, diagrams can help. Start from drawing the more simple ones, and continue to these you understand the worst.
For the case when it IS your code and you want to change it, draw diagrams on the conceptions that you want to refactor.