Não gaste muito tempo com UML. Na minha equipe, sou o único a conhecer muito bem a UML e, portanto, criar casos de uso, componente, estado, implantação e outros diagramas. Os outros membros da equipe são melhores que eu na codificação, mas não tão bons no diagrama UML.
O truque que usamos é focar no diagrama de classes no nível de modelagem para definir a estrutura do aplicativo e também permitir que o desenvolvedor / arquiteto codifique como quiser. Em seguida, mesclamos o modelo com o novo código e atualizamos o modelo a cada iteração. Realmente fácil e muito eficiente. Desenvolvemos em Java com Omondo EclipseUML.
Eu recomendaria não usar nenhum MDD que seja para mim uma verdadeira porcaria !! O Modeler tentará ocupar mais energia dentro do processo de desenvolvimento, mas isso não criará nenhum valor se eles tentarem gerar todo o código do modelo. O código pertence ao desenvolvedor / arquiteto, mas não ao modelador. A UML deve ser apenas uma visão dos requisitos do projeto (por exemplo, caso de usuário, sequência, etc.) do processo (por exemplo, diagrama de estado ou de atividade), implantação (implantação, diagramas de componentes). O diagrama de classes deve exibir o código e o diagrama de classes UML deve ser usado apenas como visualizador do código. A codificação Java deve respeitar a abordagem de objetos e a UML, que também é uma linguagem de objetos, é realmente útil para evitar codificações ruins e estúpidas.
O mais importante são as iterações do diagrama de classes entre modelo para código e código para modelo. Não quero dizer realmente sincronização ao vivo, mas ser capaz de mesclar código e modelo a cada iteração. Eu uso o Omondo EclipseUML e acho que eles são os únicos a mesclar java, entidades de banco de dados e IDs de modelo. A mesclagem de ID é realmente um conceito poderoso e é perfeita para nossos projetos ágeis.
Minha recomendação é não comprar nenhum livro. Você deve ter uma abordagem de objetos e usar a linguagem do diagrama de classes para visualizar seus objetos, a fim de criar arquiteturas melhores. Se um membro da equipe conhece a UML, use os outros diagramas, se não o diagrama de classes seria suficiente.