martes, 26 de abril de 2016

Bits from UML

Uno de mis temas pendientes desde hace tiempo era dar una vuelta a UML e intentar entender no todos los diagramas o aspectos más complejos de UML sino más bien la base o sus principales conceptos para saber como usarlo en diferentes proyectos. Hace dos semanas cayó en mis manos el libro "UML Distilled" Third Edition y ha sido todo un acierto.

Los capítulos iniciales del libro son básicos para comprender como encaja UML en el diseño y desarrollo de software u otros proyectos. El resto de capítulos se centran en explicar los diagramas de UML sin entrar en excesivo detalle que haga que sea tedioso de seguir. Así que es ideal para tener un conocimiento general de los principales diagramas de UML.

De las ideas más importantes del libro me quedo con ¿como usar UML? Y mencionan básicamente 3. Primero, como "sketch" con diagramas no muy detallados para explicar una funcionalidad detallada. Segundo, como "blueprint" para detallar a un desarrollador como implementar el código, con lo que se el nivel de detalle y precisión debe aumentar considerablemente. Finalmente, para desarrollar código en base a modelos UML con lo que la complejidad y el nivel de exigencia de UML debe ser mayor. Ni que decir, que para mi uso habitual de UML como sketch o blueprint me es más que suficiente.

Otra idea interesante del libro es como utilizar UML en las diferentes fases de un proyecto independientemente del modelo de desarrollo de software seguido (waterfall, agile, ...). Me quedo con las siguientes ideas:

  • En la fase de captura de requerimientos se trabaja más con conceptos:
    • Utilizar un diagrama de Use Cases para detallar los requerimientos del sistema 
    • Utilizar Activity Diagrams o directamente en texto/prosa para describir cada Use Case con el Main Success Scenario (MSS) y el resto de escenarios secundarios de cada Use Case.
    • Utilizar un Class Diagram desde el punto de vista conceptual para construir un vocabulario del sistema.
    • Utilizar State Diagrams para conceptos que puedan ser complejos o con diferentes estados durante su tiempo de vida.
  • En la fase de diseño ya se baja al nivel del software:
  • En la fase de documentación también se pueden usar diagramas UML para explicar parte del código implementado. Normalmente no se explica todo el sistema, sino las partes más significativas para evitar mostrar excesivamente complejos. También existen herramientas automáticas que generar diagramas UML analizando el código.
En resumen un libro que merece la pena para darte una buena perspectiva de UML.

Ahora estoy esperando un libro sobre SysML..... :-D