2010-01-14 7 views
5

En mi experiencia, la mayoría de la documentación arquitectónica ha sido ad-hoc en el mejor de los casos, y, aparte de tipos de escritura de árbol muerto más estructurados, aún no he visto el UML formal en uso real, y he trabajado con pocos desarrolladores, si es que hay alguno que sea capaz de construir de forma clara o correcta diagramas UML, parece que se usa más como una especie de "psuedocode gráfico".Uso común de UML

Dado que, tengo curiosidad acerca de si alguien tiene experiencia en el uso de UML en la documentación interna y en la comunicación del funcionamiento del sistema entre los miembros del equipo. ¿Es esta una herramienta/modo de comunicación que la gente realmente usa en el día a día? ¿Es útil, sobreespecificado? ¿Has trabajado en entornos donde el UML preciso importaba o era útil?

Respuesta

1

En mi lugar de trabajo, hemos utilizado diagramas de clase UML extensamente a medida que escribimos grandes aplicaciones web de escala empresarial. En algunas ocasiones usamos diagramas de secuencia. Pero de ninguna manera utilizamos el conjunto completo de diagramas UML o incluso nos acercamos. UML solo puede ser efectivo masticando la carne y escupiendo los huesos. Es una gran herramienta de comunicación, pero usar demasiada funcionalidad puede confundir a las personas.

3

El UML (The Unified Modeling Language) es flexible. No es necesario usar UML "completo" todo el tiempo.

Sí, he usado UML para comunicar diseño. He utilizado diagramas de Dominio, Clase, Actividad, Caso de uso, Secuencia y Despliegue para diversos fines.

Algunos de estos propósitos fueron más allá del uso "obvio" del diagrama. Por ejemplo, he usado diagramas de implementación para documentar conjuntos de máquinas virtuales. Como el elemento Nodo es un "clasificador" UML, se puede usar con herencia. Lo he usado para mostrar cómo una máquina virtual base está especializada. Por ejemplo, la base es solo Windows Server 2008, pero una especialización de eso tiene SQL Server instalado, y se está utilizando una especialización de ese como servidor de la base de datos.

0

En mi experiencia, he encontrado que los diagramas de Secuencia UML son los más útiles para las personas que intentan comprender un sistema o un proceso particular del sistema.

La razón más probable es que muestra cómo varios componentes cooperan e indirectamente cuál es la responsabilidad de cada uno de ellos. La dimensión vertical muestra el tiempo y el diagrama es muy intuitivo de entender, incluso para personas que no conocen UML.

1

He visto el uso de diagramas de clase UML para la generación automática de código. El flujo fue algo así, se usó Enterprise Architect para generar un esquema XML fuera del diagrama de clases. Este esquema se utilizó luego como una entrada para JAXB para generar clases Java que proporcionan acceso programático a los datos representados en el modelo UML.

+0

+1 por mencionar Enterprise Architect, una gran herramienta, aunque una con una "interfaz única". –

0

He encontrado que el diagrama de clases UML es mucho más útil para hacer un modelo de datos lógicos o un modelo de dominio que un Diagrama de relaciones entre entidades. Es más expresivo, tiene generalización (es decir, herencia) y relaciones n-to-n específicas. Intentar modelar esto en un diagrama ER :)

alt text

1

diagramas UML son útiles para capturar y comunicar los requisitos y asegurar que el sistema cumple con esos requisitos. Se pueden usar de forma iterativa y durante varias etapas de planificación, diseño, desarrollo y prueba.

Desde el tema: El uso de modelos dentro del proceso de desarrollo de en http://msdn.microsoft.com/en-us/library/dd409423%28VS.100%29.aspx

un modelo puede ayudar a visualizar el mundo en que funciona el sistema, aclarar las necesidades de los usuarios, definir la arquitectura de su sistema de , analice el código y asegúrese de que su código cumpla con los requisitos.

Si no desea crear diagramas UML a partir de cero, puede crear diagramas de secuencia, gráficos de dependencia, y los diagramas de capas de código, y utilizar la validación de capa para asegurar que los cambios en el código no entren en conflicto con la especificada diseño. Lo describo con más detalle en la siguiente publicación:

¿Cómo aprender "buen diseño/arquitectura de software"? en https://stackoverflow.com/questions/268231/how-to-learn-good-software-design-architecture/2293489#2293489