Sinceramente, eu não consigo ver essa definição de CODE MONKEYS e não ficar um pouco, digamos, revoltado.
Muita gente acha que se a UML estiver feita direitinho, tudo certinho, uma análise bem feita, etc, o código sai automaticamente.
Sou programador e isso é uma absoluta mentira. A programação é a alma do sistema, e NUNCA vai ficar igual à análise. Nunca mesmo!
De todas as vezes em que tive que pegar uma análise pronta e programar o sistema, tive que repensar muitas coisas do sistema, coisas que só são descobertas durante a programação. E muitos diagramas eu olhei, olhei, não entendi o que o analista quis dizer, fiz de outra forma, e funcionou muito melhor do que seria. E não foi só uma vez, e não foi com análise mal feita.
Podem me chamar de antiquado, atrasado, mas eu prefiro pegar um sistema pra fazer, levantar os requisitos de forma correta, rabiscar algumas coisas e discutir com a equipe de desenvolvimento, e começar a programação, do que ficar perdendo tempo desenhando diagramas que não ajudarão em nada na programação.
Não consigo ver um diagrama de caso de uso e pensar na sua aplicação na programação, é simplesmente perda de tempo.
Faça a melhor análise do mundo e passe para o programador, ele vai pensar 5 vezes mais do que você, fazer de forma melhor, e perder um precioso tempo lendo seus diagramas.
E digo mais: muitas características do sistema são definidas na hora da programação, então o final do sistema vai depender da habilidade do programador.
Resumindo a história, até acho que pode ser feita uma análise em UML, mas com diagramas úteis (leia-se diagrama de classes, no máximo sequência). E sem perder muito tempo com eles. Agora, dizer que depois da análise com UML é só partir pro abraço, já é incrivelmente errado.
Em tempo, ou o diagrama de estados consegue ser mais inútil do que o de caso de uso, ou então eu não entendi direito, e nunca vou entender!