Once upon a time, there was a team leader that was going on holidays. Before leaving, (s)he made the last recommendation to his/her small team of three young engineers. For the ongoing project, do not start coding in Java before the UML model is completely finished and that you all agree on this model. On the Monday morning, as soon a s/he left, one of the engineers told the others of a wonderful discovery he made while twittering in the week end : a very powerful tool to generate UML diagrams from UML code. The decision was rapidly taken and all three of them started coding the problem in Java. Some days before the end of the holidays of their leader, all the Java code was used to generate UML diagrams and both the code and the UML diagrams were handled to the group leader. S/He was quite impressed at the level of detail of the UML model and the narrow correspondance between the code and the model.
There are many lessons that could be drawn from this (non completely) imaginary story.
Of course the first lesson is that the engineers confused the model of the problem with the model of the solution. They sold to their leader a supposed model of the problem and gave her/him a model of the solution. This story is more common that one mayb imagine. In many companies, the idea of roundtripping is very popular.