A code-generator is of limited use if it cannot support the implementation consequences of changes to the analysis and design models. Many CASE tools seem to assume that code is only generated at the end of design. In real projects analysis, design and implementation evolve together. Effective interface generators need to provide close links between the CASE tool and the programming environment. Still these tools can be valuable providing they are used closely with the compiler.
Some tools support reverse engineering.
This allows final code, preferably including code not generated by the CASE tool, to be read back into the CASE tool. In this way the tool provides a greater degree of comprehensibility than the source code. Naturally such an approach demands a very implementation oriented technique for it is unreasonable to expect a tool to reverse-engineer analysis. Are you left in the programming environment with only mangled names to help you. If you are going to use a tool for its code generation make sure you try out the whole process.