La necesidad de modelar el software antes de programar no se discute. Otro tema es qué lenguaje utilizamos para modelar. Hasta ahora el estándar de modelado por excelencia ha sido el lenguaje UML, para el que, además, hay multitud de herramientas disponibles (incluyendo muchas que te permiten modelar sin salir de tu navegador).

Que sea el lenguaje más usado no quiere decir que UML sea un lenguaje perfecto. Ni que, ahora que UML cumple 20 años, haya envejecido bien. Es por eso que veo muy interesante recopilar algunas de las opiniones sobre el lenguaje UML que tienen sus propios creadores. Su perspectiva nos ayudará a entender mejor los aspectos positivos y negativos de UML.

Aviso que algunos de sus comentarios son controvertidos (y no siempre estoy de acuerdo con ellos).

La opinión de Grady Booch

UML debería usarse para razonar y discutir sobre alternativas. Crea algunos diagramas del sistema. Comprueba como de bien responden a los casos de uso que deberían cumplir. Después tira los diagramas y escribe el código que corresponde al mejor diseño

Cuando empezamos con el UML, nunca tuvimos la intención de usarlo como un lenguaje de programación

No conseguimos solucionar bien la parte de modelar colaboraciones. Los diagramas de componentes y despliegue necesitan madurar más. El metamodelo de UML ha crecido demasiado, esta complejidad es un error innecesario.

Aún me gusta el UML 🙂. De verdad, sólo necesitas un 20% del UML para modelar el 80% del diseño que necesitarás en un proyecto – ágil o no. Utiliza UML con medida: utiliza la notación para razonar sore el sistema, para comunicar tus intenciones a los demás y olvídate después de los diagramas.

Deberías usar una notación gráfica para aquellos aspectos sobre los que no se puede discutir fácilmente mirando el código

algunas opiniones más las ha expresado en tweets, siguiendo en su visión de no usar UML para todo.

para acabar de un modo un poco más optimista y positivo

Podéis leer más opiniones de Grady Booch sobre el futuro de la ingeniería de software.

Las opiniones de Ivar Jacboson

UML no es la solución mágica (la “silver bullet”) que nos vendieron hace más de diez años. Tampoco es tan malo como algunos académicos, agilistas y competidores intentaron convencernos hace cinco.

Hay dos grandes problemas a arreglar: la complejidad de la especificación UML misma y un mecanismo que permita partir UML en subconjuntos coherentes que puedan usarse independientemente para solucionar las necesidades de modelado de dominios concretos.

UML se ha convertido en algo complejo y torpe de usar. El 80% del software sólo necesita el 20% del lenguaje UML

Más opiniones de Ivar Jacobon en esta columna de opinión y este post.

Bran Selic acerca de la complejidad de UML

Bran defiende que, de hecho, UML no es tan complejo como la gente se piensa. Como mínimo si lo comparas con otros lenguajes como Java:

The complexity of UML is often cited as one of its primary drawbacks. In arguing this, many people will point to the apparent simplicity of programming languages such as Java. However, while Java is relatively simple on its own, you have to consider how much of the necessary complexity has been swept under the rug of class libraries? As far as I can tell, you cannot write anything remotely useful in Java unless you are also proficient with at least some of the core Java libraries. In environments such as J2EE or Eclipse, the minimum level of proficiency goes up even further — exceeding in complexity anything that UML requires.

Fijaros que difiere de las opiniones anteriores. Sigue diciendo que tampoco crea que la especificación del lenguaje esté hinchada innecesariamente. La complejidad de UML es, en su opinión, consecuencia de la necesidad de solucionar problemas complejos. Problemas complejos requieren herramientas complejas.

UML no es demasiado grande. ¿Demasiado grande para qué?

UML es el peor lenguaje de modelado, si no fuera por todos los demás.

El peor libro UML que puedes comprar es “UML Distilled”. Sólo cubre la sintaxis del lenguaje.

Más acerca de la visión de Bran sobre el lenguaje UML

¿Y vosotros, qué opináis del lenguaje UML?