2008-09-29 5 views
6

Me enseñaron a dibujar diagramas en UML para ver las interacciones entre clases, objetos y participantes/el sistema y demás. Sin embargo, he visto varias respuestas aquí que indican que el UML es una herramienta de documentación y no una herramienta de diseño.Si no diseñas en UML, ¿en qué diseñas?

¿Cómo se representan los diseños gráficamente si no se usa UML?

+0

¿Por qué no hacer como la mayoría de las personas, codificar primero, diseñar después? : P – davr

+2

Porque soy un ingeniero de software y prefiero seguir algunos procesos de ingeniería. Aunque me gustan los enfoques ágiles con un diseño mínimo en la delantera. No soy fanático de BDUF. Por lo general, termina explotando en tu cara. –

+0

Bah, ¿no has oído hablar de 'una semana de codificación vale la pena ahorrarte horas de diseño' como la justificación para 'codificar primero, diseñar después'? :) – workmad3

Respuesta

8

Scott Ambler tiene un great table on his website que enumera todos los diagramas utilizados normalmente en proyectos de software, con enlaces a ejemplos.

Los diagramas UML me resultan útiles, pero estoy continuamente molesto por la mentalidad de "todo una caja".

EDITAR: Tiendo a estar lejos de las herramientas de modelado UML tanto como sea posible, porque el acto de crear un diagrama formal inevitablemente crea presión para 'pulirlo' hasta que se vea como un producto de calidad (sin importar cuánto valor en el diagrama en sí)

No ayuda que hasta hace poco la mayoría de los editores de UML proporcionaran poca ayuda en la preparación de diagramas, p. dibuja una línea recta entre dos cajas y aparece un 'doblez' en el medio porque los elementos no son absolutamente horizontales. He visto a los desarrolladores perder horas tratando de hacer que todas las líneas estén horizontales o a 45 grados. Mi editor favorito personal es MagicDraw, pero Enterprise Architect parece ser muy popular, así que también lo uso mucho.

Cuando hago modelado dentro del equipo utilizo bocetos UML + DFD + interfaz de usuario hasta que todos estén contentos, luego tomo una foto digital y la publico en el sitio web del proyecto. Si resulta muy útil, puede durar lo suficiente como para ser 'formalizado', pero la mayoría no lo hace.

+0

Me gustaría que las personas (quizás usted) amplíen esto. ¿Qué herramientas están disponibles para capturar estos diagramas? Actualmente uso StarUML, así que lo estoy buscando para ver si puede capturar otros tipos de documentos, pero me gustaría saber cómo tú u otros capturan los diagramas que no son UML. –

+0

La tabla incluye el software que se usa. Sin embargo, veo muy poco en la lista que compite directamente con UML; la mayoría de los formatos parecen ser parte de UML o tienen analogías directas en UML. –

+0

Odiaba usar herramientas UML hasta que encontré http://yuml.me/ que ofrece algún tipo de DSL para describir diagramas UML. Ya no se juega el ratón :-). – helpermethod

3

Uso bocetos UML-esque rápidos como herramienta de diseño, y luego diagramas UML completos generados a partir del código como documentación. Un diagrama UML completo y preciso como diseño no es realmente posible (al menos no hasta que UML sea un lenguaje de programación completo), así que este me parece el mejor método.

+0

Así que tienes algún tipo de diagrama UML (aunque tal vez incompleto) cuando comienzas mostrando las principales clases/actores/sistemas/subsistemas y así sucesivamente? –

9

Tiendo a usar Pen (cil) y Papel. O posiblemente Sticky Notes y Whiteboard, según la complejidad.


ejemplos amplia de lo que me estoy haciendo ahora:

  • Mi diseño actual proyecto de trabajo se implementa como un diagrama de flujo de trabajo de tipo en mi pizarra, con adherencias. Las notas adhesivas representan en qué parte del flujo de trabajo tienen lugar ciertas operaciones y qué interfaces deberían estar involucradas. El sistema comienza en un lado, sigue varios caminos de izquierda a derecha y sale por el otro lado.
  • Mi proyecto de juego se ejecuta en GAE, que tiende a empujar uno hacia objetos de datos más interesantes, con algunas duplicaciones dentro de su modelo por motivos de rendimiento (falta de JOIN). Mis diseños para este proyecto suelen incluir un boceto básico de una vista y un esquema de los objetos modelo que se usarán, incluidas sus propiedades, para garantizar que tenga todo lo que necesito. No suelen existir enlaces entre clases, porque no quiero tener que atravesar algunos objetos en ninguna vista, por temor a ser aplastado por el guardián de la cuota de Google.
+0

¿Qué pones en estos medios? Supongo que es un poco UML (aunque puede no seguir todas las reglas en el libro de leyes UML). –

+0

Espero que las aclaraciones ayuden. –

+0

Sí, lo hace. Gracias. –

11

Cajas y flechas en papel o pizarra. Todas las cargas de UML sobre ti son exageradas en muchas situaciones, especialmente en las primeras etapas de un diseño.

Por supuesto, hay un nivel, después de algunas iteraciones, cuando comienza a ser útil (e incluso necesario) para documento las decisiones anteriores en detalle con un formato estándar.

1

UML es una herramienta de documentación y no una herramienta de diseño.

I'd call crap on that statement. UML es una notación de diseño comprobada, proporciona una gran cantidad de profundidad en sus diversos diagramas y está estandarizada. Es genial si tienes un gran equipo y necesitas asegurarte de que todos estén en sintonía con las decisiones arquitectónicas.

Supongo que quien hizo esa declaración simplemente está cansado de UML, no entiende cómo usarlo, o ambos.

+0

A cualquiera que esté dando votos negativos a mi respuesta, defiéndase agregando un comentario. – Huuuze

+1

No lo he rechazado, pero me gustaría saber de qué manera UML es una "metodología de diseño". Es solo una notación. –

+0

Tiene razón. Mi celo por publicar me llevó a usar el término equivocado. – Huuuze

3

UML es un lenguaje de comunicaciones. Cuando las personas dicen que usan recuadros y flechas en el papel, están usando UML o están usando algo que tienen que explicar a la persona con la que están hablando.

Si están hablando solo, entonces probablemente no deberían estar haciendo diseño - el diseño necesita variedad genética si no va a salir dañado, no me importa lo bueno que sea el arquitecto .

2

Algunas palabras de bueno en la ingeniería de software, por Richard Feynman, se puede encontrar here. Realmente una lección para tomar de memoria ...

EDITAR: moví mis divagaciones a continuación ... mejor escuchar a Feynman! :)

En mi humilde opinión, hay muchas opciones de diseño a las que UML presta muy poca atención.

¡UML está bien cuando no es excesivo! Tal vez algunos bocetos rápidos son el primer paso, refinado más tarde para convertirse en UML completo.

Por favor, no lea detenidamente la metodología de arriba hacia abajo que UML (tiende a) fomentar demasiado (de nuevo en mi humilde opinión).

1

Empiezo con la pizarra, luego me muevo al GraphViz una vez que el diseño se ha estabilizado. Es fácil compartir la fuente con otros para examinar ideas alternativas o aclarar roles.

Luego puede mantener una copia de la fuente graphviz abierta en su editor y ajustar el diagrama a medida que avanza para mantener los detalles actualizados con su código.

0

He encontrado que es útil pensar en términos de estilos arquitectónicos descritos en libros como this cuando he diseñado proyectos.

2

Creo que la mayoría de la gente comienza por dibujar diagramas de forma libre que son básicamente UML, pero no tan rígidos ni bien definidos.

Si los diagramas deben progresar más allá de esta etapa, se pueden convertir en diagramas UML adecuados que cumplan con todas las reglas.

He visto muy pocas alternativas a los diagramas UML. La mayoría de ellos parecen ser formatos más antiguos, que tienen sucesores directos en UML.

(Por cierto me niego a escribir siempre "UML" en formas de oraciones mangling!)

+0

Llamaría a los diagramas de forma libre 'mapas mentales'. – slashmais

0

por lo general trato de comenzar con un esquema simplista en un pedazo de papel, porque A medida que construyo el diseño, descubro que las cosas a menudo están mejor adaptadas en otros lugares y escribirlas me ayudará a recordarlas mejor más adelante.

No siempre llené los tipos al principio porque no siempre sé lo que necesito (por ejemplo, un booleano para una casilla de verificación o una enum para una casilla de verificación de tres estados).

Después de mi diseño básico que tienden a poner en práctica las clases y las conexiones a continuación, profundizar en detalles sobre una clase de tarjeta de índice por clase antes de realizar cualquier implementación real

+0

Lo que está describiendo es una fase aproximada de análisis y diseño. Estoy buscando herramientas que ayuden precisamente con eso, vea mi pregunta y tal vez algún gurú salga y nos señale las herramientas. – slashmais

1

leí en alguna parte que la gente delinear con post-it, pero no se les permitió escribir nada sobre ellos, y cuando el diseño se volvió tan complejo que no se podía recordar qué post-it no era qué clase/módulo/característica arquitectónica, entonces tenía que simplificarse.

Pensé que estaba limpio. Yo personalmente uso la clase UML-esque y diagramas de secuencia. Real UML es demasiado trabajo, en mi opinión.

+0

En mi experiencia personal, el código con pocas clases es un código mal encapsulado. –

+0

¡Eso suena loco! Creo que me quedaría con un sistema que tiene solo 5 clases si lo utilicé;) – UpTheCreek

+0

El punto era encapsular la funcionalidad en uno de esos "módulos" post-it. No asignan 1-a-1 con clases, solo son encapsulaciones lógicas de la funcionalidad. El principio básico del diseño es dividir el sistema en 3-5 partes y modelar sus interacciones, luego sumergirse en cada una de ellas y al mismo tiempo. Usted recursivamente hace esto hasta que termine. Esta es la práctica UML estándar también (diagramas de paquetes y otras cosas). Es una tontería pensar que todo un sistema puede caber en un solo diagrama de clases, ¡incluso con nombres/etiquetas! –

0

Mi propia notación peculiar peculiar. cajas de información, ya sean matrices, archivos, etc. Las ideas incompletas para las clases son solo el nombre de la clase con los miembros y los métodos escritos debajo. Trato el hardware a menudo, por lo que el sistema de adquisición de datos que se encuentra en un automóvil sometido a una prueba es solo un lindo dibujo de un automóvil. Duh, simple!

Hay algo parecido a un tenedor de pitch - una vara prod - que indica cuando una cosa provoca a otra en acción o controla su actividad. Las flechas para los flujos de datos, que a veces pasan a través de aros, indican regulación, orientación y redirección de esos datos.

Uso flechas del tipo utilizado en UML para indicar la herencia de clase. Eso es lo único que le robé a UML. (¿Qué usé antes de encontrarme con UML?) Mi experiencia es la electrónica, por lo que mi notación personal probablemente se basa en ver diagramas de bloques de radios y televisores cuando era niño.

Tengo la suerte de que aproximadamente el 90% de mi trabajo es solo, código fuente completamente bajo mi comando, solo dando versiones terminadas o de prueba de ejecutables a otros. Si estuviera en una gran corporación, tendría muchas miradas extrañas, ¡como un monstruo de circo!

0

Antes, utilizaba Excel simple para hacer mis diagramas y flujos de procesos. Muy fácil y sin tonterías. Ahora, usualmente uso herramientas más confiables como Visio, StarUML, Creately y Lucidchart para hacer mis diagramas.