This is a straight brain dump so a couple details may not be perfect, however, this should provide a general map to the questions and solutions to looking into. Watch out for closed or product specific code generation processes or frameworks as you could end up stuck with that product. Sparx and Visual Paradigm do UML really well and generate code well, however, hooking into project lifecycles and other process is where RSM/RSA is strong. Ok, that was way too detailed, so a simpler example would be ArgoUML, which has no code generation features and focuses on drawing more than the modeling aspect of UML.