1997 para ser exactos: el Object Management Group (OMG) lanzó el lenguaje de modelado unificado (UML). Uno de los propósitos de UML era proporcionar a la comunidad de desarrollo un lenguaje de diseño estable y común que pudiera usarse para desarrollar y construir aplicaciones informáticas. UML presentó una notación de modelado estándar unificado que los profesionales de TI habían estado esperando durante años. Con UML, los profesionales de TI ahora podían leer y difundir la estructura del sistema y los planes de diseño, tal como lo han estado haciendo los trabajadores de la construcción durante años con planos de edificios.
Ahora es el siglo XXI, 2003 para ser precisos, y UML ha ganado fuerza en nuestra profesión. En el 75 por ciento de los currículums que veo, hay una viñeta que dice tener conocimiento de UML. Sin embargo, después de hablar con la mayoría de estos candidatos, queda claro que realmente no conocen UML. Por lo general, lo están utilizando como una palabra de moda, o han tenido una pequeña exposición a UML. Esta falta de comprensión me inspiró a escribir esta introducción rápida a UML, centrada en los diagramas básicos utilizados en el modelado visual. Cuando termine de leer, no tendrá suficiente conocimiento para incluir UML en su currículum, pero tendrá un punto de partida para profundizar en el idioma.
Fondo
Como mencioné, UML estaba destinado a ser un lenguaje unificador que permitiera a los profesionales de TI modelar aplicaciones informáticas. Los autores principales fueron Jim Rumbaugh, Ivar Jacobson y Grady Booch, quienes originalmente tenían sus propios métodos competitivos (OMT, OOSE y Booch). Finalmente, unieron fuerzas y lograron un estándar abierto. (¿Suena familiar? Un fenómeno similar generó J2EE, SOAP y Linux.) Una razón por la que UML se ha convertido en un lenguaje de modelado estándar es que es independiente del lenguaje de programación. (Las herramientas de modelado UML de IBM Rational se utilizan ampliamente en tiendas J2EE y en tiendas .NET). Además, el conjunto de notación UML es un lenguaje y no una metodología. Esto es importante porque un lenguaje, a diferencia de una metodología, puede encajar fácilmente en la forma de hacer negocios de cualquier empresa sin requerir cambios.
- ¿Cuáles son los mejores lugares de reunión en Dehradun?
- ¿Cuál es la mejor discoteca en Connaught Place, Nueva Delhi?
- ¿Cuáles son los 10 mejores presupuestos de defensa entre todos los países?
- ¿Cuáles son los mejores programas de televisión británicos que valen la pena?
- ¿Cuál es el mejor teléfono móvil por un precio por debajo de las rupias 7k?
Como UML no es una metodología, no requiere ningún producto de trabajo formal (es decir, “artefactos” en la jerga de IBM Rational Unified Process®). Sin embargo, proporciona varios tipos de diagramas que, cuando se usan dentro de una metodología dada, aumentan la facilidad de comprender una aplicación en desarrollo. Hay más en UML que estos diagramas, pero para mis propósitos aquí, los diagramas ofrecen una buena introducción al lenguaje y los principios detrás de su uso. Al colocar diagramas UML estándar en los productos de trabajo de su metodología, facilita que las personas con dominio de UML se unan a su proyecto y rápidamente se vuelvan productivos. Los diagramas UML estándar más útiles son: diagrama de caso de uso, diagrama de clase, diagrama de secuencia, diagrama de diagrama de estado, diagrama de actividad, diagrama de componentes y diagrama de implementación.
Está más allá del alcance de este artículo introductorio entrar en gran detalle sobre cada tipo de diagrama. En cambio, le proporcionaré suficiente información para una comprensión general de cada uno y luego proporcionaré más detalles en artículos posteriores.
Use el diagrama del caso
Un caso de uso ilustra una unidad de funcionalidad proporcionada por el sistema. El objetivo principal del diagrama de casos de uso es ayudar a los equipos de desarrollo a visualizar los requisitos funcionales de un sistema, incluida la relación de “actores” (seres humanos que interactuarán con el sistema) con procesos esenciales, así como las relaciones entre diferentes casos de uso Los diagramas de casos de uso generalmente muestran grupos de casos de uso, ya sea todos los casos de uso para el sistema completo o un desglose de un grupo particular de casos de uso con funcionalidad relacionada (por ejemplo, todos los casos de uso relacionados con la administración de seguridad). Para mostrar un caso de uso en un diagrama de casos de uso, dibuje un óvalo en el medio del diagrama y coloque el nombre del caso de uso en el centro o debajo del óvalo. Para dibujar un actor (que indica un usuario del sistema) en un diagrama de caso de uso, dibuja una persona stick a la izquierda o derecha de su diagrama (y en caso de que se lo pregunte, algunas personas dibujan personas stick más bonitas que otras). Use líneas simples para representar las relaciones entre los actores y los casos de uso, como se muestra en la Figura 1 (Hecho por Edraw Max).
Diagrama de clase
El diagrama de clase muestra cómo las diferentes entidades (personas, cosas y datos) se relacionan entre sí; en otras palabras, muestra las estructuras estáticas del sistema. Se puede usar un diagrama de clase para mostrar las clases lógicas, que suelen ser el tipo de cosas de las que hablan los empresarios de una organización: bandas de rock, CD, reproducción de radio; o préstamos, hipotecas, préstamos para automóviles y tasas de interés. Los diagramas de clases también se pueden usar para mostrar las clases de implementación, que son las cosas que los programadores suelen tratar. Un diagrama de clase de implementación probablemente mostrará algunas de las mismas clases que el diagrama de clases lógicas. Sin embargo, el diagrama de clase de implementación no se dibujará con los mismos atributos, porque probablemente tendrá referencias a cosas como Vectores y HashMaps.
Diagrama de secuencia
Los diagramas de secuencia muestran un flujo detallado para un caso de uso específico o incluso solo una parte de un caso de uso específico. Son casi autoexplicativos; muestran las llamadas entre los diferentes objetos en su secuencia y pueden mostrar, en un nivel detallado, diferentes llamadas a diferentes objetos.
Un diagrama de secuencia tiene dos dimensiones: la dimensión vertical muestra la secuencia de mensajes / llamadas en el orden de tiempo en que ocurren; La dimensión horizontal muestra las instancias de objeto a las que se envían los mensajes.
Un diagrama de secuencia es muy simple de dibujar. En la parte superior de su diagrama, identifique las instancias de clase (objetos) colocando cada instancia de clase dentro de un cuadro (consulte la Figura 4). En el cuadro, coloque el nombre de instancia de clase y el nombre de clase separados por un espacio / dos puntos / espacio “:” (por ejemplo, myReportGenerator: ReportGenerator). Si una instancia de clase envía un mensaje a otra instancia de clase, dibuje una línea con una punta de flecha abierta que apunte a la instancia de clase receptora; coloque el nombre del mensaje / método sobre la línea. Opcionalmente, para mensajes importantes, puede dibujar una línea punteada con una punta de flecha apuntando hacia la instancia de clase de origen; etiquete el valor de retorno sobre la línea punteada. Personalmente, siempre me gusta incluir las líneas de valor de retorno porque encuentro que los detalles adicionales hacen que sea más fácil de leer.
Leer un diagrama de secuencia es muy simple. Comience en la esquina superior izquierda con la instancia de clase “driver” que inicia la secuencia. Luego siga cada mensaje en el diagrama. Recuerde: aunque el diagrama de secuencia de ejemplo en la Figura 4 muestra un mensaje de respuesta para cada mensaje enviado, esto es opcional.
Un diagrama de secuencia de muestra
“
Diagrama de estado
El diagrama de diagrama de estado modela los diferentes estados en los que puede estar una clase y cómo esa clase pasa de un estado a otro. Se puede argumentar que cada clase tiene un estado, pero que cada clase no debería tener un diagrama de diagrama de estado. Solo las clases con estados “interesantes”, es decir, clases con tres o más estados potenciales durante la actividad del sistema, deben modelarse.
Como se muestra en la Figura 5, el conjunto de notación del diagrama de diagrama de estado tiene cinco elementos básicos: el punto de partida inicial, que se dibuja usando un círculo sólido; una transición entre estados, que se dibuja usando una línea con una punta de flecha abierta; un estado, que se dibuja usando un rectángulo con esquinas redondeadas; un punto de decisión, que se dibuja como un círculo abierto; y uno o más puntos de terminación, que se dibujan usando un círculo con un círculo sólido dentro de él. Para dibujar un diagrama de diagrama de estado, comience con un punto de partida y una línea de transición que apunte al estado inicial de la clase. Dibuje los estados en cualquier lugar del diagrama y luego simplemente conéctelos usando las líneas de transición de estado.
Diagrama de estado que muestra los diversos estados por los que pasan las clases en un sistema en funcionamiento
Diagrama de actividad
Los diagramas de actividad muestran el flujo de control procesal entre dos o más objetos de clase mientras se procesa una actividad. Los diagramas de actividad se pueden usar para modelar procesos de negocios de nivel superior en el nivel de unidad de negocios, o para modelar acciones de clase internas de bajo nivel. En mi experiencia, los diagramas de actividad se utilizan mejor para modelar procesos de nivel superior, como la forma en que la empresa está haciendo negocios actualmente o cómo le gustaría hacer negocios. Esto se debe a que los diagramas de actividad son “menos técnicos” en apariencia, en comparación con los diagramas de secuencia, y las personas con mentalidad empresarial tienden a comprenderlos más rápidamente.
El conjunto de notación de un diagrama de actividad es similar al utilizado en un diagrama de diagrama de estado. Al igual que un diagrama de diagrama de estado, el diagrama de actividad comienza con un círculo sólido conectado a la actividad inicial. La actividad se modela dibujando un rectángulo con bordes redondeados, que encierra el nombre de la actividad. Las actividades se pueden conectar a otras actividades a través de líneas de transición, o a puntos de decisión que se conectan a diferentes actividades protegidas por las condiciones del punto de decisión. Las actividades que terminan el proceso modelado están conectadas a un punto de terminación (como en un diagrama de diagrama de estado). Opcionalmente, las actividades se pueden agrupar en carriles, que se utilizan para indicar el objeto que realmente realiza la actividad, como se muestra en la Figura 6.
Diagrama de componentes
Un diagrama de componentes proporciona una vista física del sistema. Su propósito es mostrar las dependencias que el software tiene de los otros componentes del software (por ejemplo, bibliotecas de software) en el sistema. El diagrama se puede mostrar a un nivel muy alto, con solo los componentes de grano grande, o se puede mostrar a nivel del paquete de componentes. [Nota: El nivel de paquete de componente de frase es una forma neutral de lenguaje de programación de referirse a niveles de contenedor de clase como espacios de nombres de .NET (por ejemplo, System.Web.UI) o paquetes de Java (por ejemplo, java.util).]
Modelar un diagrama de componentes se describe mejor a través de un ejemplo. La Figura 7 muestra cuatro componentes: Herramienta de informes, Servicio de cartelera, Servlet 2.2 API y API JDBC. Las líneas de flecha del componente de la herramienta de informes al servicio de Billboard, la API de Servlet 2.2 y los componentes de la API de JDBC significan que la herramienta de informes depende de esos tres componentes.
Diagrama de implementación
El diagrama de implementación muestra cómo se implementará físicamente un sistema en el entorno de hardware. Su propósito es mostrar dónde se ejecutarán físicamente los diferentes componentes del sistema y cómo se comunicarán entre sí. Dado que el diagrama modela el tiempo de ejecución físico, el personal de producción de un sistema hará un uso considerable de este diagrama.
La notación en un diagrama de implementación incluye los elementos de notación utilizados en un diagrama de componentes, con un par de adiciones, incluido el concepto de nodo. Un nodo representa una máquina física o un nodo de máquina virtual (por ejemplo, un nodo de mainframe). Para modelar un nodo, simplemente dibuje un cubo tridimensional con el nombre del nodo en la parte superior del cubo. Use la convención de nomenclatura utilizada en los diagramas de secuencia: [nombre de instancia]