¿Por qué necesitamos UML? O cómo salvar tus nervios y tu tiempo

Muchos programadores, enfrentados a una tarea difícil, descuidan la fase de diseño, refiriéndose al hecho de que el diseño es una pérdida de tiempo, y en este caso solo me molestará.


A menudo, esta afirmación resulta ser cierta si la tarea es realmente pequeña y las calificaciones del programador son suficientes para determinar la solución más óptima.

Los programadores que no usan UML se dividen en varios grupos:

  • Comenzaré a escribir código, y en el proceso entenderé qué y cómo;
  • Leí foros, Habr, medio, desbordamiento de pila, un libro, notas en las paredes, carteles ...;
  • Les pregunto a mis colegas, tal vez alguien sepa cómo resolver un problema similar;
  • Comenzaré a dibujar cuadrados pequeños y mostraré esquemáticamente qué visión del problema se ha formado en mi mente.

Pero al resolver problemas más complejos, la planificación y el modelado anticipados simplifican enormemente la programación. Además, hacer cambios en el diagrama de clases es más fácil que hacer el código fuente.

Puedes hacer una analogía con construir una casa. Cuando alguien quiere construir una casa, no solo golpea con un martillo y se pone a trabajar. Necesita tener un plan, un plan de diseño, para poder analizar y modificar su sistema.

Si ya ha comenzado a describir su tarea en papel, esto ya es una gran ventaja.

¿Qué es el UML?


La definición oficial de Wikipedia.
UML (Lenguaje de modelado unificado) es un sistema de notación que se puede usar para análisis y diseño orientado a objetos. Se puede utilizar para visualización, especificación, diseño y documentación de sistemas de software.
En pocas palabras, si observa las imágenes en los motores de búsqueda, quedará claro que UML es algo sobre esquemas, flechas y cuadrados.

Es importante que UML se traduzca como lenguaje de modelado unificado. La palabra principal aquí es unificada. Es decir, nuestras imágenes serán entendidas no solo por nosotros, sino también por otros que conocen UML. Resulta que este es un idioma tan internacional para dibujar circuitos.

Pros y contras del diseño UML


Contras:

  • pérdida de tiempo
  • La necesidad de conocer varios diagramas y sus anotaciones.

Pros:

  • una oportunidad para ver una tarea desde diferentes puntos de vista;
  • otros programadores encuentran más fácil comprender la esencia de la tarea y cómo implementarla;
  • Los diagramas son relativamente fáciles de leer después de familiarizarse rápidamente con su sintaxis.

Para saber si necesita usar UML, debe considerar los diagramas principales. Gracias a ellos, se forma la imagen general, dando una idea de las posibilidades de expresar ideas arquitectónicas en el marco de las tareas comerciales.

Todos los diagramas a continuación están interconectados. Al combinarlos, podemos lograr el nivel requerido de descomposición de las tareas individuales.

Propongo familiarizarme con algunos de los gráficos más útiles y de uso más frecuente.
Hablaremos de diagramas de secuencias, estados, actividades y los más complejos de ellos: diagramas de clases.

Primero I <...>, y luego <...>, y luego ... Diagrama de secuencia


Imagine que necesita describir la secuencia de acciones para ordenar productos en una tienda en línea. ¿Quién debería participar en el proceso? ¿Qué fases atraviesa un pedido antes de realizarlo?

Por lo general, escribimos una larga lista de etapas por las que debe pasar la aplicación para recibir el orgulloso estado de "Decorado". Luego describimos quién realizará exactamente la acción específica. Y solo después de eso comenzamos a programar.

¿Cuál es la desventaja de este enfoque? El no es visual.

Imagine, antes de que mienta una larga lista de los pasos descritos anteriormente y comentarios sobre ellos. ¿Qué tan fácil será para ti descubrirlo? Cuanto tiempo puede tomar? Supongo que es suficiente.

Una alternativa a este enfoque es utilizar el diagrama de secuencia que se muestra en la figura a continuación.


Diagrama de secuencia

Los actores se muestran en la parte superior, y cada flecha es una acción específica asociada con ellos. Obtenga más información sobre este cuadro aquí.

Diagrama de estado. Configuramos viejos relojes electrónicos


El diagrama de estado le permite describir el comportamiento de un objeto individual bajo ciertas condiciones. También nos mostrará todos los estados posibles en los que puede estar el objeto, así como el proceso de cambio de estados como resultado de la influencia externa.

Supongamos que programamos un reloj electrónico soviético.


Para configurar, solo tenemos unos pocos botones. Bastante escaso. Al mismo tiempo, sabemos que uno de los botones cambia el modo de configuración del reloj. Otro botón en el primer modo cambia los minutos y en las segundas horas.

La instrucción de configuración ya es bastante pequeña, pero gracias al diagrama de estado, se percibe visualmente mucho más fácil.


Diagrama de estado

Lea más sobre el diagrama de estado aquí .

Diagrama de clases o cómo hablar sobre su código sin código


Los diagramas de clase se utilizan con mayor frecuencia en el modelado de PS. Son una forma de descripción estática del sistema desde el punto de vista de su diseño. El diagrama de clases no muestra el comportamiento dinámico de los objetos de las clases representadas en él. Los diagramas de clases muestran clases, interfaces y las relaciones entre ellos.
En varios documentos, la descripción de los patrones de diseño, así como la lectura del Habr, a menudo nos encontramos con un diagrama de clase. ¿Por qué se usa con tanta frecuencia?


Suponga que necesita diseñar un sistema. Antes de embarcarse en la implementación de varias clases, querrá tener una comprensión conceptual del sistema: ¿qué clases necesito? ¿Qué funcionalidad e información tendrán estas clases? ¿Cómo interactúan entre ellos? ¿Quién puede ver estas clases? Y así sucesivamente.

Aquí es donde aparecen los diagramas de clase. Los diagramas de clases son una excelente manera de visualizar clases en su sistema antes de comenzar a codificarlas. Son una representación estática de la estructura de su sistema.

Es el diagrama de clase que nos da la idea más completa y detallada de la estructura y las relaciones en el código del programa. Comprender los principios de la construcción de este diagrama le permite expresar sus pensamientos e ideas de manera breve y transparente.

Consideremos cómo describir el conocido patrón de diseño "Visitante" utilizando el diagrama de clase.
"Visitante" es un patrón de diseño de comportamiento que le permite agregar nuevas operaciones al programa sin cambiar las clases de objetos en los que se pueden realizar estas operaciones.

Diagrama de clase

Las ventajas más significativas de este cuadro son:

  • ahorro de tiempo al explicar la tarea a otros programadores;
  • Representación más precisa y visual de la estructura de los elementos principales del sistema.

Las desventajas incluyen costos de tiempo significativos, siempre que haya una falta de experiencia con este diagrama.

Puede leer más sobre el diagrama de clase aquí , y sobre el patrón Visitante aquí .

Tabla de actividades


Un diagrama de actividad es una tecnología que le permite describir la lógica de los procedimientos, los procesos comerciales y los flujos de trabajo. En muchos casos, se parecen a los diagramas de flujo, pero la diferencia fundamental entre los diagramas de actividad y la notación de los diagramas de flujo es que los primeros admiten procesos paralelos.
En resumen, el diagrama de actividad nos ayuda a describir la lógica del comportamiento del sistema. Es posible construir varios diagramas de actividades para un mismo sistema, cada uno de los cuales se enfocará en diferentes aspectos del sistema, mostrando varias acciones que se llevan a cabo dentro de él.

Está en el diagrama de actividad que muestra las transiciones de una actividad a otra. Esto, de hecho, es una especie de diagrama de estado, donde todos o la mayoría de los estados son algunas actividades, y todas o la mayoría de las transiciones funcionan cuando se completa una determinada actividad y le permiten pasar a la siguiente.


Tabla de actividades

El significado del diagrama es comprensible. Muestra cómo trabajar con una aplicación web que resuelve un problema determinado en una base de datos remota. Preste atención a la disposición de las actividades en este diagrama: están, por así decirlo, dispersas en tres columnas, cada una de las cuales corresponde al comportamiento de uno de los tres objetos: el cliente, el servidor web y el servidor de la base de datos. Gracias a esto, es fácil determinar cuál de los objetos realiza cada una de las actividades.

Puede leer más sobre el diagrama de actividad aquí .

Conclusión


Esperemos que después de este artículo le eches un vistazo diferente a UML. Ahora, al leer literatura o sitios dedicados a este tema, le será más fácil comprender cuál es el propósito de UML y encontrar oportunidades para su aplicación. Intenta comenzar a aplicarlo y sentirás toda la fuerza y ​​el poder ocultos detrás de un conjunto de flechas y cuadrados.

Deja un comentario si crees (o sabes) que algo está mal o podría describirse mejor.

Source: https://habr.com/ru/post/458680/


All Articles