Por qué no me gusta UML

UML es una herramienta que casi todos los proyectos utilizan mal y que tiene tendencia al mal uso. Siempre que se plantea utilizar UML en un proyecto, se pone el enfasis en generar documentación, en realizar tal o cual diagrama, en seleccionar aquellos diagramas de UML que nos serán de utilidad.

El error en este caso es que se nos olvida que significa la L de UML, Lenguage. Y un lenguaje tiene como único cometido permitir la comunicación. Seleccionar una serie de diagramas es como arrancar las paginas a partir de la J del diccionario de la RAE y obligar a que la gente solo use las palabras que quedan. Seleccionar diagramas concretos es limitar la capacidad de comunicación usando UML.

La comunicación es algo que ocurre en un cotexto en un momento dado en el tiempo, y el motivo de la comunicación cambia continuamente, pensar que la documentación generada en un momento dado del tiempo será útil meses más tarde es pecar de ingenuo. A no ser que realmente pongamos más peso en la documentación que en el desarrollo de software, y la documentación tiene el problema de que no es ejecutable. La documentación ejecutable ya nos la vendieron las herramientas CASE y ¿alguien recuerda el nombre de una de esas herramientas? ¿Quien no ha estado un proyecto que despues de 10 meses solo tenia una cantidad infumable de documentación?

Que nadie piense que la postura que defiendo es que la documentación es innecesaria, solo defiendo que la documentación no asociada al código fuente o directamente generada desde el, pierde su validez tan rápido que no merece la pena generarla y mantenerla. Este tipo de documentación solo sirve para transmitir información en un momento del tiempo, comprender problemas y pensar sobre cuestiones y pierde su validez en cuanto a realizado su comentido, por tanto no merece la pena poner mucho enfasis en que sea correcta, siga estandares o plantillas, debemos poner el enfasis en que nos sirva para comunicar y sea flexible y facil de modificar, una pizarra es el elemento de comunicación ideal: lo escrito se modifica fácilmente, permite la colaboración de múltiples personas y puede mantenerse la información mientras es relevante y luego borrarse.

Tampoco defiendo que UML no tenga valor, pero solo como herramienta de comunicación, no como paradigma o método de documentación, que es como se tiende a utilizar. Aunque si cuestiono que sea mejor como herramienta de comunicación que cualquier otra herramienta, creo que es peor. Exige que todo el equipo conozca un lenguaje impuesto, que puede no ser natural al dominio de aplicación que nos ocupa, quiza DSL resuelva este problema, pero tiene mucho que demostrar aún.

Además UML no promueve de por si ninguna buena práctica de desarrolo de sofware. Solo es un lenguaje, uno que es facil de utilizar mal, que exige mucho esfuerzo de aprendizaje, demasiado para lo que proporciona y que es dificil de leer por alguien no iniciado. Ya todos contamos ya con un lenguaje y la capacidad de dibujar diagramas, de manera casi innata, creo que es mucho mejor ejercicio aprender a usar las herramientas con las que contamos en nuevos dominios. Si que es cierto que en ciertos contextos, facilita la comunicación, por ejemplo cuando se habla de patrones, pero solo es por un motivo cultural: los patrones tradicionalmente se han explicado usando UML.

La única documentación útil es la que emerge del código fuente y el código fuente de calidad es la principal documentación de cualquier proyecto.

Published 18/6/2006 19:50 por Rodrigo Corral
Archivado en:
Comparte este post:
http://geeks.ms/blogs/rcorral/archive/2006/06/18/Por-qu_E900_-no-me-gusta-UML.aspx

Comentarios

# re: Porque no me gusta UML

Palabra de Dios. Totalmente de de acuerdo con tu postura pero, ¿que pasa si el proyecto que has desarrollado pasa a manos de otro equipo de desarrollo? ¿Deberian de leerse el código para entender lo que se está haciendo? Eso me suena a inviable. Quizas yo propondía la creación y almacenaje de pequeñas historias (como propone la XP) que expliquen el objetivo del programador aunque no siempre encaje con la version final. Esto ahorraría cientos de horas de mirar código. ¿No te parece?

Saludos

Monday, June 19, 2006 7:02 PM por Miguel Angel Ramos

# re: Porque no me gusta UML

He empezado a contestar y me ha salido algo tan extenso... que lo he publicado como post...

Documentando software y... más motivos por los que UML no es la solución

 

Monday, June 19, 2006 7:45 PM por Rodrigo Corral

# Documentando software y... más motivos por los que UML no es la solución

En mi opinión, el código es la única fuente de verdad sobre un proyecto de software a nivel de detalle....

Monday, June 19, 2006 7:59 PM por La masa, el ladrilo, la bota, el bocadillo...

# A mi tampoco me gusta el UML aunque sea necesario… y deba usarlo.

(Esto empezó siendo un comentario a un post de Rodrigo)
En eso estamos…. Vamos que no me gusta el UML,...

Tuesday, June 20, 2006 11:15 PM por csegura

# Diagramas UML, Casos de Uso (Use Case), muñecos y pelotas

"Los diagramas no son lo importante", es la frase que tengo en la mente después de leer UML: Casos de...

Saturday, July 29, 2006 8:35 PM por Sergio Tarrillo's Blog -> enhancements

# Diagramas UML, Casos de Uso (Use Case), muñecos y pelotas

"Los diagramas no son lo importante", es la frase que tengo en la mente después de leer UML: Casos de...

Saturday, July 29, 2006 8:35 PM por SergioTarrillo's Blog

# Diagramas UML, Casos de Uso (Use Case), muñecos y pelotas

" Los diagramas no son lo importante ", es la frase que tengo en la mente después de leer UML: Casos

Saturday, August 12, 2006 12:57 AM por SergioTarrillo's Blog

# ¿Nos podemos caer de maduros?

Leo en el numero 29 de la excelente revista dotNetMania , un artículo de opinión Antonio

Friday, September 15, 2006 9:31 AM por La masa, el ladrillo, la bota, el bocadillo...

# Desde el Tech Ed: Día 2

Empezaba mi segundo día de Tech Ed con el afán de acudir a una sesión de discusión

Thursday, November 09, 2006 11:12 AM por La masa, el ladrillo, la bota, el bocadillo...

# Gestión de proyectos y paellas

Este post comenzaba su vida como un comentario en respuesta a otro comentario de Antonio Quiros en un

Saturday, March 17, 2007 10:58 PM por La masa, el ladrillo, la bota, el bocadillo...

# Gestión de proyectos y paellas

Este post comenzaba su vida como un comentario en respuesta a otro comentario de Antonio Quiros en un

Sunday, March 18, 2007 9:19 PM por La masa, el ladrillo, la bota, el bocadillo...

# re: Por qué no me gusta UML

Ciertamente los Documentos requeridos por UML en su totalidad son muy tediosos de realizar y muchas veces toman mas tiempo realizarlos que desarrollarlos, pero yo pienso que es muy necesario, porque es nuestro sustento del trabajo o el desarrollo que se ah realizado. Porque luego viene los nuevos requerimientos y si no tenemos un sustento de lo que se acordó no tendríamos fecha de termino de desarrollo. En resumen se desarrolla solo que este especificado.

Si la gente del proyecto no entiende UML se capacita y si no aprende, se cambia de personas por unas que si entiendan.

Dario Qquecho Quispe

Thursday, May 03, 2007 11:41 PM por dqquecho

# MSF vs RUP, DSL vs UML, Microsoft vs IBM

Indiscutiblemente, IBM y Microsoft son las dos grandes en lo que a desarrollo de software se refiere.

Monday, May 21, 2007 8:26 PM por La masa, el ladrillo, la bota, el bocadillo...

# re: Por qué no me gusta UML

Yo me he topado con que UML y en especial casos de uso son tomados como interpretativos, cada quien tiene un estilo para diseñar los diagramas, eso es basura por que al final no se determina como algo que siempre es exacto  si Juan dice que son 3 bolitas pedro dice que es una y en realidad son 3 acciones del usuario ejem ALTA, BAJA, MODIFICACION, inclusive hay quienes no los toman en cuenta y prefieren poner algo como Transaccion cuando no determinaron que hay que llenar primeramente datos antes de hacer las transacciones,

la verdad esto un rollo esto y la neta hoy odio mas esas metodologias por que se supone que en UML esta es la base para los diagramas siguientes.

Creo que lo que debemos entender es que los casos de uso son las interacciones de los usuarios con el sistema y sobre esto enfocar nuestros desarrollos. pero por favor ponganse de acuerdo al sacar estandares.

Tuesday, October 30, 2007 7:52 PM por Miguel Soto

# re: Por qué no me gusta UML

Creo que esto no es una discusion sobre si te gusta o no el UML.

Es mas bien la justificacion para el desconocimiento que tienes de UML y las pocas ganas de aprender algo que realmente es valioso cuando se usa a conciencia (no con toda su pureza, no aplica para todos los proyectos) y poder aprender de los proyectos anteriores. Al parecer consideras que todos los proyectos son diferentes... acaso aun crees que un programa es diferente a otro?

No te das cuenta que siempre escribes las mismas sentencias?

Y que tal si desde el modelamiento te das cuenta que algo ya lo hiciste antes o alguien en otro proyecto ya lo tiene?

No piense en UML como un poco de documentacion que no sirve para nada... imaginate que desde una diagrama en blanco estas pudiendo armar un rompecabezas de cosas y creando nuevas que mas adelante vas a poder reutilizar.

Monday, January 21, 2008 9:28 PM por Ryan

# re: Por qué no me gusta UML

Hola Ryan:

No se que te lleva a prejuzgar mi conocimiento de UML. Te puedo asegurar que lo he conocido a fondo, durante un tiempo pense que era la solución a algunos problemas y lo estudie y aplique con interés... luego descubrí que no sirve y esto es lo que me llevo a "repertir las mismas sentencias" sobre este tema. No quiero que otros pierdan su tiempo como yo hice.

Ahora, UML, ha ido al desván de mi cerebro donde guardo las cosas que aprendo, uso y no me sirven.

Creo que confundes modelado con reutilización. ¿Necesitas UML para rehutilizar los componentes de terceros, el framawork de .Net o la clases de J2EE? La rehutilización es algo que detecta durante el proceso de diseño... usar UML para modelar durante el proceso de diseño no implica más o facilita la reutilización. Modelar es importante pero no nos da sistemas que podemos comenzar a usar, eso solo surge del código: geeks.ms/.../no-persigas-tu-cola.aspx

El problema es que no ves que lo que tu afirmas "desde una diagrama en blanco estas pudiendo armar un rompecabezas de cosas y creando nuevas que mas adelante vas a poder reutilizar" no es cierto. Se reutilizan clases, librerías, componentes, servicios... no cajitas y flechitas...

Gracias por tus comentarios!!

Thursday, January 24, 2008 2:42 PM por Rodrigo Corral

# re: Por qué no me gusta UML

Hola Rodrigo,

Considero que UML es mucho mas que una herramienta de documentación (y creo que en el fondo tu lo sabes). Acaso no conoces o has oído acerca de MDA y sobre todo MDD? teconolgías en donde el modelo (creado en UML) es el artefacto de primera categoría en el desarrollo de software, porque a partir de transformaciones del modelo conceptual, puedes llegar a generar código fuente en forma automática (y vaya que si yo lo he realizado).

Saludos.

Wednesday, October 15, 2008 1:03 AM por Sashir

# re: Por qué no me gusta UML

Yo no digo para nada que UML sea una herramienta solo de documentación... digo que desgraciadamente es como mayoritariamente se usar... UML es una herramienta de modelado sobre todo o eso debería ser...

Sobre la generación de código son muchos los riesgos que entraña... pero eso es otra historia...

Wednesday, October 15, 2008 10:27 AM por Rodrigo Corral

# re: Por qué no me gusta UML

Hola de nuevo Rodrigo,

El riesgo es algo que siempre estará presente en el mundo del desarrollo de software.

Personalmente considero que en MDA/MDD la generación automática de artefactos (no solo código, sino documentación, archivos de configuración, casos de prueba, etc.) ha llegado a un nivel tal que podemos estar hablando que estamos ingresando verdaderamente a la era de la industrialización del desarrollo de software.

No significa que se acabó el trabajo para los profesionales de la programación, sino por el contrario, ahora se requiere que se especializen para programar ya no en el dominio de las aplicaciones, sino en el dominio de los modelos (o inclusive meta-modelos) para implementar las transformaciones entre modelos. Es decir, se eleva su nivel de abstracción sin dejar de lado el profundo conocimiento que deben tener de la plataforma tecnológica.

Sería muy bueno que abras una entrada sobre el tema MDA/MDD para que la comunidad pueda vertir sus comnetarios.

Un gran saludo

Sashir (desde Perú)

Wednesday, October 15, 2008 5:09 PM por Sashir

# re: Por qué no me gusta UML

Saludos, muy interesante y bastante acertada su apreciación, pero una pregunta: a pesar de que usted dice que la documentación mas efectiva es la del código, pero si el éxito de un sistema esta basado en su diseño en gran parte ¿que otra opción propone para documentar, modelar y avanzar dentro de las diferentes etapas de un proyecto?

Tuesday, November 11, 2008 3:28 PM por proyecto_nx

# re: Por qué no me gusta UML

hola, pues creo que estas en tu postura y la respeto, el 60% del intelecto esta en el analisis del proyecto, por eso el documentarlo bien y el uso de UML, y utilizar un lenguaje como UML.

Tuesday, December 02, 2008 11:35 PM por eric

# De vuelta del MVP Summit 2009: fué en Oslo no en Redmon

Por fin me he recuperado del jetlag… y soy capaz de postear algo. La verdad es que este año no tenía

Saturday, March 07, 2009 7:46 PM por La masa, el ladrillo, la bota, el bocadillo...

# De vuelta del MVP Summit 2009: fué en Oslo no en Redmond

Por fin me he recuperado del jetlag… y soy capaz de postear algo. La verdad es que este año

Saturday, March 07, 2009 7:49 PM por La masa, el ladrillo, la bota, el bocadillo...

# re: Por qué no me gusta UML

No coincido:

Sin leer la totalidad del artículo, solo escudriñé algunas partes y no coincido con ninguna, sobre todo la última; donde decís:

"La única documentación útil es la que emerge del código fuente y el código fuente de calidad es la principal documentación de cualquier proyecto."

El código fuente de calidad nace de un cuidadoso diseño y no al revés.

Vos querés hacer las cosas al revés; o sea, generar documentación a partir del código y eso no tiene pies ni cabeza. Muchos ingenieros en esta disciplina pecan de esto, justamente es al revés, el código se genera a partir de la documentación y no a la inversa; de lo contrario es documentar por documentar y eso no sirve, más de un tonto me dijo: "Después del código hacemos el diseño", le daba la razón; armaba el diseño en papel, codificaba y después le daba como documentación lo que había escrito en papel al principio, así he tenido que lidiar con aprendices de ingenieros, lamentablemente.

Sunday, February 14, 2010 10:31 PM por Lautaro