I think about it as "Who does what?" The Who, usualy nouns, became the the classes and the what turned into methods. Pretty general but it helps me.
I appreciated the UML diagrams when the projects got larger but the amount of detail is important here. Overly detailed and complex sets of diagrams are not really helpful. At one point there were tools and probably still are that will take the UML diagrams and write code directly. The class diagrams are the easiest to visualize in that way. But as a famous speaker once said, elaborate diagrams just become another way of writing code.
I think that was the precursor to Model driven development, an idea I have not heard much lately.
I like lots of unit tests and really appreciate TDD but it does require a lot of discipline to use efficiently. One thing about unit tests that is often underappreciated is the ability to show how something works. and again it takes a lot of discipline to insure all the tests run all the time.
I recently went back to an incomplete project and was really glad the unit tests all seemed to be working just fne which gave me more confidence in the work. With good test coverage one can refactor fearlessly. I believe that was something Uncle Bob mentioned one time.