UML: ¿Útil en la práctica?

Phatality

Hola,

Vaya por delante que no soy Developer, sino Data Scientist, y que voy muy manco en temas de desarrollo de software (aunque me interesan poderosamente). Estos días estoy intentando aprender patrones de diseño en OOP y me he topado con una metodología llamada UML (Unified Modelling Language) de la que en un manual dicen que es muy utilizada por académicos al tratar temas de diseño de OOP pero muy despreciada por la industria.

Mi pregunta es: ¿Es el UML útil y merece la pena aprender a planificar arquitecturas de software mediante él? ¿Lo habéis utilizado alguna vez en la fase de diseño? ¿Pros? ¿Cons?

cabron

UML no es una metodologia, es un 'lenguaje' de diagramas. Su utilidad es que para comunicar diseños, en ligar de inventarte tus propios simbolos si usas uml puesas usas simbolos comunes que otra gente va a entender

2
Mujiwara

#1 A la hora de desarrollar un proyecto grande en equipo o en solitario se recomienda para que todos los miembros puedan conocer la estructura de operaciones y funciones con los objetos y las relaciones que pueden tener (heredadas,..), esto sirve para documentar y planificar el proyecto muy fácil y así dejar constancia de todo el sistema montado, al igual que también ayuda a la hora de heredar dicho proyecto a otro equipo de trabajo que cuando empiece no tendrá ni puta idea del código.

Para documentar es lo suyo, eso y los típicos comentarios para indicar los inputs/outputs y el funcionamiento de dicha función.

En el CFGS de desarrollo de multiplataforma que estoy haciendo si que nos han dado un poquito de UML (muy poco) tanto para programación como base de datos, y sin duda dependerá de la empresa y el equipo de trabajo decidir si utilizarlo o no, a mi parecer, si el proyecto no es muy grande y no muy complicado es bastante opcional ya que al menos en mi caso, voy programando sobre la marcha y siempre con un papel y boli para hacer anotaciones de como debería de ser el objeto (o directamente plasmarlo sobre el controlador)

¿Te estás leyendo el Object-oriented Design Heuristics :shutup: ?

2 1 respuesta
Merkury

#3 Creer que porque el proyecto no es grande, no se debe documentar es un gran error.

Documentar suele ser la parte que menos gusta, pero nadie puede negar que es util, sin importar el tamaño o alcance del proyecto.

2 1 respuesta
Nitamo

#4 Amén, yo estoy ahora con un proyecto con absolutamente NADA documentado, y para entender cualquier mierda tienes que hacer el Sherlock, pierdes una cantidad de tiempo increible.

La escalibilidad no depende solo de la arquitectura, si te montas un monstruo que no lo entiende ni su puta madre, vas a perder muchísimo tiempo, además, no puedes confiar en que el mismo equipo de desarrollo va a mantener dicha aplicación, habrá variaciones de personal, idas, venidas, a lo mejor hasta se delega el proyecto...

#1 En resumen, todo lo que sea darle sentido a tu aplicación es bien

1
wineMan

Cuando uno conoce el dominio del problema, la lógica de negocio, los casos de uso, etc. da mucha pereza modelar todo y dejarlo documentado. A mí el UML me parece en mucha ocasiones verboso, redundante e inútil. Para colmo, jamás en 15 años de profesión he recibido por parte de un cliente con el que he tenido que integrarme ninguna documentación en UML. No por ello creo que sea inútil hacerlo: HAY QUE DOCUMENTAR. Pero la relación beneficio-coste en este caso es bastante dudosa. El UML al final sirve para hacerte una idea del sistema en cuestión, pero para eso tienes que empaparte unos diagramas en muchos casos crípticos. Y para más inri, crípticos para exponer quizás un algoritmo o secuencia muy sencilla.

Ahora bien, atarse al UML por el hecho de ser un estándar, a veces me parece innecesario. Hay mil formas de representar procesos, algoritmos y arquitecturas sin necesidad del UML de forma más elegante y ante todo sencilla.

Por otro lado, el problema de la documentación detallada es que se queda obsoleta en poco tiempo. Ahora mismo ya no se estila el desarrollo en cascada sino los procesos iterativos donde hay multitud de cambios tanto en el código fuente como el la funcionalidad de un sistema. Todos esos cambios habría que reflejarlos en la documentación, y eso yo creo que no lo hace ni el tato (incluso por mucha empresa grande con un ejército de analistas).

De todas formas, para no tener que abrir paraguas por mi opinión, insisto, documentar está bien y lo veo un mal necesario.

1 respuesta
Merkury

#6 Lo ideal es mantener la documentacion actualizada con cada stable release.

bornex

Habláis como si siempre se hiciera documentación XD.

UML, documentación, test de prueba, etc... Están de puta madre, pero cuando tienes al cliente pegado al culo, tu jefe no tiene ni puta idea de nah, y hay que producir y entregar, no hay cojones a hacer nada de eso.

PD: luego lo lamentas

2 1 respuesta
GamA

#8 Amén. De la teoría a la práctica hay leguas

En cualquier caso, imagino que dependerá también del tipo de desarrollo que haga cada empresa

1 respuesta
bornex

#9 Hay de todo.

En mi empresa lo que más hacemos es integración de servicios web con nuestra aplicación. Y es impresionante la de poca documentación y la de poca idea/seriedad que tienen estos servicios.

charl1

Es algo que yo por lo menos no lo he visto demasiado, sin embargo, lo considero algo básico para pseudo programar bien. A veces no es necesario, pero en muchas situaciones, un diagrama de secuencia, por ejemplo, te ayuda a solucionar un problema, a explicarle a un compañero como ha de plantearlo, a ver si tu mismo has planteado las cosas bien, como dicen por aqui arriba a documentar lo que se ha/has hecho. Tiene innumerables ventajas, la desventaja es no ir rápido? No me vale.

En definitiva, aplícalo siempre que puedas.

PD: Existe un triangulo en el que se expone en cada vertice, RAPIDO, BARATO, CALIDAD. Ahora elige dos ( aunque rapido y calidad, bueno.. )

B

Creo que UML es, de mis estudios, lo que más me ha servido para el trabajo...

B

Un proyecto documentado a uno sin ello varia bastante en terminos de eficiencia y gestión del tiempo. Claro que aquí entra la parte del analista si sabe captar las necesidades y su experiencia. Un mal diseño va a afectar al resto del proceso.

No hay nada peor que empezar un lunes a realizar las tareas, que llegue el viernes y ver que lo que has hecho no ha servido para nada porque han cambiado el modulo en el que estabas trabajando.

RPV: Nunca está de más saberlo.

1 respuesta
Oscarvha

UML puede ser de gran ayuda también depende del tamaño del proyecto y de si es aconsejable para el producto a desarrollar.

Lo que es importante es como han dicho los compañeros documentar y llevar un control. Una de las quejas y principales focos de conflictos en mi empresa (trabajo de programador en proyectos de aplicaciones Web, C++ y Android) es el no documentar y no tener claro lo que tenemos que hacer. Lo que hace que muchas veces se diga que el proyecto va ser de una manera y a mitad del mismo las funcionales cambian y estas en un punto que no solo puedes parchear o incluso ser cosas que por el rumbo tomado en el desarrollo no se puede hacer.

Hace poco el equipo de desarrollo nos plantamos y sin como mínimo hacer un documento de análisis de requisitos no trabajamos para al menos tener claro que tiene que hacer la aplicación. Si ya hicieramos un UML ya me harías el hombre más féliz del mundo...

1 respuesta
Merkury

#13 y #14 pero vosotros lo que necesitais no es UML, son putos requisitos funcionales y especificaciones.

Y como me dijeron una vez "Caminar por encima de las aguas es tan facil como seguir la especificacion, siempre y cuando ambos esten congelados"

1 respuesta
Oscarvha

#15 Si justo eso necesito pero mis putos jefes son cabezones y no logran entender que es algo que para desarrollar software se necesita.

Por eso decia que con unos requisitos funcionales o un IEEE 802 yo ya me conformó pero con un UML facilita aún más el desarrollo , también depende del tipo de proyecto hay algunos que es una perdida de tiempo hacer UML.

1 respuesta
Merkury

#16 en teoria nunca es una perdida de tiempo, ese argumento lo podemos aplicar a las especificaciones y requisitos funcionales y voila! Tus jefes tienen razon!.

Kr4n3oK

En mi empresa se usa, pero quizás no todo lo estrictamente necesario. Y ojo, lo veo bastante necesario en general para documentar, que luego pasa el tiempo y ni tu mismo eres capaz de entender como coño funciona algo xD

1 respuesta
Oscarvha

#18 Si para eso viene perfecto, la mayoría de veces no entiendo a mi yo del pasado...miro algo que programe hace 2-3 meses y como no tenga documento o el código este bien documentado me odio muy fuerte y tardo un rato en entenderme a mi mismo jejej

B

UML es un must, siempre.

Usuarios habituales