¿Deberías usar UML? Depende de la complejidad y de lo que esperas de UML.
Aquí hay un método totalmente no científico, pero lo usaré de todos modos: una búsqueda hoy para puestos de “Ingeniero de Software” en un sitio web de reclutamiento popular reveló más de 1000 en Silicon Valley. Sin embargo, si filtra esa búsqueda con las palabras “UML” en la oferta, ¡el mercado se reduce a solo 20 empleos! A partir de las descripciones, tienden a ser puestos más altos. Conclusión: no necesitará aprender UML para encontrar un trabajo. Es posible que lo necesite en un puesto superior en Amazon o Google Android (según algunas de las empresas que vi en las ofertas).
¿Es útil si te importa la calidad del código? Creo que UML te ayudará a mejorar tu diseño en el nivel modular (clase) o superior, no porque UML tenga algún poder mágico, sino porque te ayuda a abstraer las cosas importantes en este nivel, dejando de lado los tediosos detalles que ‘ Lo encontrarás en todo el código. Los modelos tratan de abstraer lo esencial.
- ¿Cuál es el punto de obtener un título en informática hoy en día?
- ¿Quién ofrece capacitación en pruebas de software en Bangalore?
- ¿Cómo podemos actualizar la metáfora Catedral contra Bazar para reflejar la Campaña de Steve Yegge?
- ¿Cuál es la historia más interesante que has escuchado al alojar un podcast de ingeniería de software?
- ¿Es cierto que no hay o menos crecimiento en las pruebas de software?
Los diagramas de clase UML muestran fácilmente cómo se reduce el acoplamiento en un diseño después de aplicar un patrón de diseño (que generalmente se documenta con UML). Supongo que será más difícil usar patrones de diseño OO en un equipo si no conoce UML. Pero todavía es solo un modelo. “Las burbujas no se estrellan” es una frase famosa de Bertrand Meyer, lo que significa que aún tendrá que ser bueno para codificar su diseño. MDA / MDD aún no está listo para la mayoría del mercado.
¿Hay algún otro software ligero …? UML en su conjunto no es liviano, pero puede usarlo de manera liviana. El boceto de la pizarra es muy liviano y creo que permite una creatividad diferente que con mi mano en el mouse mirando una pantalla. Un par de herramientas que me gustan para hacer UML ligero son UMLet y PlantUML. Este último incluso tiene un complemento para Google Docs llamado PlantUML Gizmo (descargo de responsabilidad: soy el desarrollador, pero es un software gratuito que desarrollé como un “servicio comunitario” en mi papel de profesor universitario).
Aquí hay un ejemplo de UML producido por PlantUML: Puede ver el código fuente en PlantUMLServer.
Un par de comentarios finales:
- Como señaló otra respuesta, la industria anhela muchos más desarrolladores concretos (que fabrican software como un producto básico ) que ingenieros de software con capacitación clásica (?) (Como lo enseñamos en una universidad). La verdad es que si una compañía de software no obtiene alguna versión 1.0 de su producto, no importará si el código se puede mantener, está bien diseñado, etc. La comercialización cambia mucho el juego y la educación en ingeniería de software no reacciona tan rápido a las tendencias (lo cual no es necesariamente algo malo, ya que algunas tendencias se desvanecen). El estándar para los ingenieros de software “competentes” se ha reducido porque la demanda es alta. Esta no es una razón para descartar UML en mi opinión. Vuelvo a mi anécdota de búsqueda de empleo. ¿Desea obtener un trabajo de programación en cualquier lugar de Silicon Valley o trabajar para Google en el equipo de Android?
- UML pone las abstracciones en foco (lo cual es bueno para el diseño y la arquitectura) pero a veces hay que “simplemente codificarlo” (porque el demonio está en los detalles). Muchos desarrolladores que aprenden a usar UML tienen problemas para cambiar de un lado a otro, o para equilibrar la atención que ponen en varios niveles. Trabajar en varios niveles de abstracción es bastante difícil. Gastar demasiada energía en las abstracciones (descuidar el código) no ayudará a la compañía a sacar esa versión 1.0 (piense en “parálisis de análisis”). Es posible que pierda su trabajo si no produce suficiente código que realmente se ejecute. Por lo tanto, debido a las presiones del mercado, la dificultad de la tarea y la falta de herramientas fáciles de usar (y asequibles), el modelado y el diseño pasan por alto. Por lo tanto, la apariencia de que UML no es necesaria.