¿Está UML muerto? ¿y RUP? Pequeña encuesta

Cuando estudié UML en la universidad parecía la panacea. Un salto cualitativo en el desarrollo de software que iba a dejar a la programación clásica a la altura del betún. Sin embargo, rara es la vez que lo utilizo, aunque sea para hacer algunos esquemas. UML prometía varias cosas:

  • Convertirse en un lenguaje común por el que pasar especificaciones de programas entre programadores.
  • A partir de los diagramas generados, “pulsar un botón” y generar el código de tu aplicación.
  • A partir del código, “pulsar un botón” y generar la documentación de tu aplicación en UML.

Sin embargo, por mucho que indago me quedan las siguientes sensaciones:

  • No existen herramientas eficaces que permitan generar código útil a partir de diagramas.
  • Las que existen, se centran en el Modelo de dominio (que no es poco), pero desde luego no hay nada que coja un caso de uso, y lo convierta en código….
  • Especificar lo suficiente un diagrama UML para poder generar código medianamente definido es un infierno. Da la sensación de que se tarda menos en programarlo.
  • El UML puede servir para transmitir ideas informales entre programadores (esquemas rápidos) pero nunca servirán para transmitir esas ideas a un cliente profano en el tema. Y como la documentación para el cliente es totalmente inevitable, vale más la pena que los programadores se entiendan leyendo la documentación que también es para el cliente (SCRUM y su Product Backlog, por ejemplo).
  • ¿Por qué a la gente le gusta tan poco codificar y tanto hacer dibujitos?

Y, por último, una serie de preguntas, a ver quién me arroja algo de luz:

  • ¿En qué escenarios utilizáis UML? ¿Utilizáis UML?
  • ¿Es un UML totalmente especificado o sólo un esquema?
  • ¿Utilizáis alguna herramienta que genere código a partir de UML?
  • ¿Y alguna de reverse engineering que a partir del código genere documentación?
  • ¿Alguien utiliza RUP (Rationa Unified Process), que supuestamente es la metodología alrededor del UML, junto con UML?
  • ¿Alguien combina UML con alguna metodología ágil como SCRUM? ¿Se puede ser ágil diagramando con UML?

Gracias adelantadas a el lector que se anime a comentar un poco el tema…

Etiquetas:
, ,

9 Comentarios

  • 1. Andrés Panitsch  |  mayo 27th, 2009 at 11:49 am

    A mí también me la vendieron en la facultad (como a tantas otras cosas) como el futuro del desarrollo de software que iba a dejar sin trabajo a los programadores.

    Creo que UML es una buena herramienta para hacer diagramas de alto nivel de abstracción y punto. Cuando se abusa tratando de especificar TODO (para eso está el código, y así es de complicado) se vuelve ilegible.

    Punteando tu cuestionario:
    * sí lo uso aunque muy esporádicamente, por ejemplo para documentar un primer diseño o la interacción del usuario con el sistema. Siempre indicando qué sucede, no cómo va a implementarse. Si es para mostrar la estructura de objetos de negocio o clases del código tiene que ser muy muy acotado.
    * ¿Totalmente especificado? Puede ser, pero nadie se toma el trabajo de leer y respetar esa especificación. Es sólo un dibujito, lo importante es que se entienda.
    * Herramientas no, salvo para generar diagramas de clase (¡acotados!). Marcador, pizarra y borrador. Mucho más tarde, cuando el diseño está asentado tal vez valga la pena copiarlo a un documento.
    * Lo del reverse engineering no es muy útil si es que va a ser completo (es decir un diagrama de toda una aplicación). Una herramienta automática te va a hacer un diagrama tan complicado como el código que representa.
    * RUP… yo no conozco a nadie.
    * UML + ágil, sí por supuesto. De hecho es muy útil. Todo pasa por entender que no hay que exagerar, que la idea es comunicar grandes rasgos de un módulo o sistema o la interacción con el usuario u otros sistemas y punto. Cuando se pretende documentar TODO en UML (incluso las modificaciones más pequeñas) se deja de ser ágil.

  • 2. Joserra  |  mayo 27th, 2009 at 1:19 pm

    Coincidó bastante con Andrés. Veamos.
    UML está bien como estandar para entenderse, para eso me encanta, bno tengo que explicar que significan “mis” cajas ni “mis flechas”
    ¿conoces http://www.agilemodeling.com/ ? Tiene cosas muy interesantes respecto a este tema.

    Tu cuestionario:
    - Usamos UML sobre todo para especificar el modelo de dominio (y sí, lo generamos a código). Y para pintar en las pizarras para discusiones sobre cómo hacer las cosas.
    - solo un esuqema por Dios! Supongo que conoceré un 10% de la especificación UML.
    - Generamos el modelo con el ArgoUML
    - Reverse engineering no usamos… salvo que consideres a Hibernate que lo hace cuando te crea el modelo a partir de la BBDD :)
    - Agilidad y UML no tienen nada que ver, creo. Una cosa es un modelo de hacer el desarrollo, una filosofía, y la otra una herramientas, que tú verás como la usas.

    Salu2

  • 3. Martín  |  mayo 27th, 2009 at 2:39 pm

    En la línea de los anteriores comentarios, yo siempre he utilizado UML simplemente para describir ideas y diagramas. Y de UML, pues sólamente el 20%. Clases, entidades, interfaces, diagramas de despliegues, casos de uso. Pero siempre en su forma más simple.

    Y si en algún momento tocaba inventarse algún símbolo o improvisar, pues se hacía. Al fin y al cabo, una de las reglas de UML es que el lenguaje no está limitado.

  • 4. Luis Artola  |  mayo 27th, 2009 at 4:47 pm

    Gracias a los tres por confirmar mis sospechas… :-D

    Joserra! ¿no te veré en el Cadius de éste viernes? ¡Qué pena!

  • 5. juan  |  mayo 27th, 2009 at 4:52 pm

    Yo utilizo UML para hacer todos los esquemas funcionales y dar una idea de qué se debe hacer. El cómo se lo dejo al libre albedrío del programador.
    Las respuestas:
    - Usamos UML para casi todos los sistemas, en especial aquellos de gran envergadura
    - Yo lo prefiero usar solo para que hay que hacer y no como. Estuve en empresas que pedían muchos detalles (claro que eso lo podes hacer cuando ya tenes el sistema andando)
    - No utilizamos ninguna herramienta que genere código.
    - No utilizamos ninguna herramienta ed ingeniería inversa
    - No utilizamos RUP
    - UML no tiene que ser agil o no. Nosotros lo utilizamos para hacer la descripción funcional del sistema y eso te lleva un tiempo. De todas formas vale la pena porque es una buena forma de documentar.

  • 6. Joserra  |  mayo 27th, 2009 at 8:39 pm

    Cierto Luis, esta vez no podré asistir al CADIUS :( una pena…
    A ver si nos vemos en el próximo cocktail.

  • 7. josepzin  |  mayo 28th, 2009 at 7:36 am

    “!¿Por qué a la gente le gusta tan poco codificar y tanto hacer dibujitos?” JAJAJA!!

    Yo creo que por 2 motivos:
    - 1: no tengo idea de programar, ergo hago dibujitos
    - 2: tengo que comunicarme con gente que no entiende de programación, ergo lo hago a través de dibujitos.

    Cuando yo estudié creo que ni existía esto del UML, luego dejé la programación y hace pocos años he retomado el tema. Así que me salté esto de los UML.

  • 8. Alfredo Casado  |  mayo 29th, 2009 at 10:50 pm

    “¿Por qué a la gente le gusta tan poco codificar y tanto hacer dibujitos?”

    Yo creo que hay varios motivos por los que algunos prefieren “dibujar” que programar:

    - La metafora de la construcción, el que dibuja es arquitecto, el que escribe código albañil. Nada ha echo más daño al desarrollo de software que esta mala, malisima, metafora.
    - Los dibujos ni hay que compilarlos ni generan excepciones en runtime, así que ningún cliente te enviara un error por haber echo mal un dibujo.
    - Programar es dificil, programar bien es mucho más dificil. Dibujar un UML… seamos serios… si da igual que este mal o bien echo!, que luego no falla en runtime y si el programador protesta porque no entiende el diseño o esta bien pues que se apañe como pueda.

    Dicho esto, yo uso el UML para algunas cosas, por ejemplo para compartir ideas de diseño con otros compañeros o bien para dejar documentación de partes complejas de algún proyecto (diagramas de secuencia por ejemplo me resultan muy utiles).

    Yo más que decir que el UML este muerto lo que ocurre es que a través de la experiencia lo estamos poniendo en su verdadero lugar, es muy útil para algunas cosas, pero el software se hace escribiendo codigo, el UML es solo una ayuda no puede ser el centro del desarrollo, el centro es el código.

  • 9. Luis Artola  |  mayo 30th, 2009 at 8:29 am

    Que curioso que todos tengamos más o menos la misma opinión… :-D

    gracias a todos por los comentarios!

Comenta el articulo:

Requerido

Requerido,