2010-04-23 29 views
11

Puedo ver claramente los beneficios de tener diagramas UML que muestran su infraestructura de la aplicación (nombres de clase, sus miembros, cómo se comunican entre sí, etc.).Crear diagramas UML después o antes de la codificación?

Estoy comenzando un nuevo proyecto en este momento y ya he estructurado la base de datos (con paradigma visual). Quiero utilizar algunos patrones de diseño para guiarme a cómo codificar las clases.

Me pregunto, ¿debería codificar las clases primero antes de crear un diagrama UML (tal vez fuera del código ... parece posible) o debería crear primero el diagrama UML y luego el código (o generar código desde el UML, parece posible eso también).

¿Qué experiencias te dicen que es la mejor manera?

+3

Vale la pena señalar que la mayoría de los IDE tienen algún generador de diagramas UML. Por ejemplo, Visual Studio le permite seleccionar archivos de origen y generar diagramas de clase UML al instante. Obviamente, primero necesitas el código. VS en contraste (no estoy seguro acerca de otras herramientas) también le permite producir código de UML, aunque las funciones/clases de plantilla. – Finglas

Respuesta

11

Lo importante es que piense, antes, durante y después del código. Si UML te ayuda a hacer esto, debes usarlo. Dependiendo del programa que está escribiendo, es posible que desee centrarse en los algoritmos, la arquitectura o la interfaz de usuario antes de escribir el código.

Incluso antes de empezar a pensar acerca de cómo debe escribir el programa, usted también debe pensar en lo que se debe programar. Una vez más, el tipo de programa que estás escribiendo dicta exactamente lo que debes pensar.

5

Siempre los creo durante el desarrollo. Este es un sesgo personal sin embargo.

El siguiente desarrollo iterativo, por ejemplo, significa que su código evolucionará a medida que avance el proyecto. Crear diagramas UML por adelantado es, por lo tanto, una pérdida de tiempo, ya que después de un tiempo el resultado final no se parecerá en nada a los diagramas con los que comenzó. Incluso con el desarrollo iterativo, cosas como el desarrollo basado en pruebas no desalientan los diagramas UML. Durante el proceso de planificación/diseño de una historia/tarea, los diagramas UML pueden ser muy útiles. Sin embargo, eso no significa que deba escribir a ciegas UML para cada fragmento de código que escriba.

Por el contrario, los diagramas UML le permiten expresar grandes ideas a otros desarrolladores en unas pocas imágenes simples. A partir de los diagramas, otros desarrolladores pueden comprender cómo se vinculan las aplicaciones/componentes.

Lo mejor es usar diagramas UML como una herramienta, en lugar de un medio en mi opinión. Al tener experiencia en la industria, puedo asegurarle que el hecho de que los libros le digan que escriba UML/lleve a cabo un diseño extenso antes de escribir cualquier código, muy raramente, si es que lo hace, funciona de esa manera.

2

Siempre es una buena práctica tener un diseño antes de comenzar. Si ese diseño se define como diagramas UML o en otro lugar no importa. La pregunta es: ¿qué nivel de detalle necesitas?

Si en el entorno donde trabaja necesita una revisión de diseño antes de comenzar, entonces necesitará diagramas UML. Solo necesitan ser lo suficientemente completos como para transmitir qué es lo que vas a hacer.

Cada lugar que he trabajado recientemente requiere diagramas UML como un entregable. Lo que hago es crear algunos básicos por adelantado y luego modificarlos al final, generalmente mediante ingeniería inversa del código.

+0

¿qué software está utilizando para aplicar ingeniería inversa UML en el código? –

+0

@ajsie - Enterprise Architect –

1
what are you experiences telling you is the best way? 

estoy modelado en UML y si se trata de interfaces y clases y la secuencia diagramms es más cómodo de usar IDE, lo cuenten y hacer una ingeniería de ida y vuelta y ver todos estos métodos y atributos aparecen en Diagramas UML.

Es demasiado tedioso declarar todo en una herramienta UML.

Solo mi opinión.

4

Creo que para fines de documentación los diagramas UML son prácticamente inútiles, ya que mantenerlos actualizados es casi imposible. Sin embargo, creo que son buenas herramientas antes y en las etapas iniciales de desarrollo para pensar sobre el diseño y también revisarlo con otros miembros del equipo. Así que mi respuesta sería un poco antes un poco en las etapas iniciales y no tanto después de eso.

3

Hago modelo (cuando lo hago) antes de codificar, con lápiz y papel, pero no hago 3 semanas de diagrama ni nada de eso. Solo, 1 día o cada inicio de iteración.

Pasar tiempo en una herramienta de diagramación es una de las formas más ridículas de perder valioso tiempo de codificación (en mi humilde opinión).

El uso de una cámara con lápiz/papel y teléfono celular ha demostrado ser útil en el pasado.

0

Lo mejor es dejar que los usuarios hagan lo que quieran. Quiero decir si quieren modelar primero la base de datos y luego modelar la aplicación, necesitas transformar tu base de datos en código y luego revertir tu código en UML. Si quiere modelar primero y luego generar código y base de datos, entonces necesita crear diagramas y luego usar generadores de código. Si desea modelar y codificar al mismo tiempo el código de amor y la sincronización del modelo, puede utilizar las herramientas de Hibernate para asignar su diseño a la base de datos una vez que la concepción haya finalizado.

El ciclo UML habitual consiste en modelar y luego generar código utilizando tecnologías MDD. Prefiero el enfoque iterativo pero, salvo Omondo UML, las otras herramientas prefieren usar MDD y ciclos de iteración UML no cortos. No sé por qué, pero ....

2

No soy un profesional, y solo he usado UML con capacidad limitada en mis proyectos personales. Mi experiencia al tratar de usar UML estrictamente antes de la codificación tiende a enviar mis proyectos personales a un pozo de desesperación. Creo que esto se debe a tratar de diagramar ideas que aún no existen o que no se exploran adecuadamente.

They dicen "una imagen vale más que mil palabras". Mi interpretación de esto es que debes tener una idea en mente (o en palabras) antes de dibujarla. Un artista no dibuja un atardecer y luego decide dibujar un atardecer. Es al revés.

Los diagramas son una herramienta de documentación . La documentación es siempre tiempo pasado, lo que significa que cualquier documentación se refiere a las decisiones que ha tomado en el pasado. En mi experiencia, me pareció mejor documentar mis ideas por escrito y dibujar diagramas después. Al igual que el artista, debes decidir qué estás dibujando antes de poder diagramarlo. Si no sabes qué idea estás expresando, ¿cómo dibujas?

Los diagramas de casos de uso, por ejemplo, son un ejemplo de su decisión sobre qué funcionalidad debe esperar un usuario de su sistema. Los diagramas de clase son una representación gráfica de su decisión sobre la estructura de las clases de su programa y sus relaciones entre sí.

En el caso de los diagramas de clases, la elección de los nombres de los requisitos y la elaboración de un diagrama no es efectiva. ¿Cómo sabe si esas clases realmente admiten la funcionalidad necesaria para respaldar los casos de uso?Estudiar el sistema, separar las ideas en módulos, anotar las decisiones sobre las interacciones de los módulos y escribir algunas clases iniciales (o al menos sus interfaces) solidifica sus ideas. Documentar esas ideas en un diagrama simplemente facilita que las personas capten rápidamente las decisiones que usted tomó.

Si comete un diagrama de base de datos, digamos que para un sistema de compra, debe tomar la decisión de que una orden tiene muchos elementos de línea antes de crear un diagrama que muestra eso.

En efecto, lo que estoy tratando de decir es que creo que los diagramas son del pasado como toda la documentación. Tienes una idea; lo anotas y eso es documentación. Usted tiene documentación; dibuja una imagen para que sea más fácil de entender. Creo que es mejor crear diagramas después de analizar el problema y crear un modelo mental y escrito. Ya sea que usted agregue incrementos al diagrama después de tomar cada decisión, o construya un diagrama completo después de haber tomado varias decisiones, depende de usted. Hacer diagramas de ideas antes de tenerlas, o antes de que las entiendas, creo que solo te llevan a la angustia.

Cuestiones relacionadas