When it comes down to it, the real point of software development is cutting code.
Diagrams are, after all just pretty pictures.
No user is going to thank you for pretty pictures, what they want is software that executes. So when you are considering using these techniques it is important to ask yourself why you are doing it, and how it will help you when it comes down to the code. There's no proper empirical evidence to prove that these techniques are good or bad, but here I discuss the reasons that I often come across for using them. A lot of people talk about the learning curve associated with OO, the infamous paradigm shift. In some ways the switch to OO is easy, in other ways there are a number of obstacles to working with objects, particularly in using them to their best advantage.