No gastes demasiado tiempo en UML. En mi equipo, soy el único que conoce muy bien UML y, por lo tanto, creo casos de uso, componentes, estados, despliegues y otros diagramas. Los otros miembros del equipo son mejores que yo para la codificación, pero no tan buenos para la diagramación UML.
El truco que utilizamos es centrarnos en el diagrama de clase a nivel de modelado para definir la estructura de la aplicación y también dejar que el desarrollador / arquitecto codifique como quiera. Luego fusionamos el modelo con el nuevo código y actualizamos el modelo en cada iteración. Realmente fácil y muy eficiente. Desarrollamos en Java con Omondo EclipseUML.
¡Recomendaría no usar ningún MDD que es para mí una verdadera mierda! Modeler intentará tomar más poder dentro del proceso de desarrollo, pero esto no creará ningún valor si intentan generar todo el código del modelo. El código pertenece al desarrollador / arquitecto pero no al modelador. UML solo debe ser una vista de los requisitos del proyecto (por ejemplo, caso de uso, secuencia, etc.) del proceso (por ejemplo, diagrama de estado o actividad), implementación (implementación, diagramas de componentes). El diagrama de clase debe tener una vista del código y el diagrama de clase UML solo debe usarse como un visor del código. La codificación Java debe respetar el enfoque de objetos y UML, que también es un lenguaje de objetos, es realmente útil para evitar la codificación basura y estúpida.
Lo más importante son las iteraciones del diagrama de clase entre modelo a código y código a modelo. Realmente no quiero decir sincronización en vivo, sino poder fusionar código y modelo en cada iteración. Uso Omondo EclipseUML y creo que son los únicos que combinan Java, entidades de bases de datos e ID de modelo. La fusión de ID es realmente un concepto poderoso y es perfecto para nuestros proyectos ágiles.
Mi recomendación es no comprar ningún libro. Debe tener un enfoque de objeto y usar lenguaje de diagrama de clase para visualizar sus objetos con el fin de crear mejores arquitecturas. Si uno de los miembros del equipo conoce UML, use los otros diagramas, de lo contrario el diagrama de clase sería suficiente.