domingo, 11 de octubre de 2015





LENGUAJE DE MODELADO UNIFICADO  UML.

Resumido por Agustín Góndola.

CONCEPTO
UML es un lenguaje para modelar. Su vocabulario y sintaxis están ideados para la representación conceptual y física de un sistema.
Sus modelos son precisos, no ambiguos y se pueden trasladar a una gran variedad de lenguajes de programación, como Java,  C++, visual Basic, pero también a tablas de bases de datos relacionales y orientadas a objetos.
ELEMENTOS.
UML tiene tres bloques básicos de construcción, elementos, relaciones y diagramas.
Existen cuatro tipos de unidades básicas de construcción.
·         Estructurales: Partes estáticas de los modelos, representan aspectos conceptuales o materiales.
·         De comportamiento: Partes dinámicas de los modelos, representan comportamientos en el tiempo y espacio.
·         De agrupación: Partes organizativas de los modelos.
·         De Notación: Partes explicativas de los modelos.
DIAGRAMAS.
Disponen un conjunto de elementos, que representan el modelo desde distintas perspectivas. UML tiene un conjunto de diagramas fundamentales, clasificados en dos grupos, uno para modelar la estructura estática del sistema y otro para modelar el comportamiento dinámico.
·         Diagramas estáticos: Clases, Objetos, componentes y despliegue.
·         Diagramas dinámicos: Casos de Uso, secuencia, colaboración, estados y actividades.

DIAGRAMAS ESTÁTICOS O ESTRUCTURALES.
Diagrama de clases.



Muestran un resumen del sistema en términos de sus clases y las relaciones entre ellas. Las relaciones pueden traer asociada una multiplicidad o cardinalidad, expresada “en el lado opuesto” de la relación. Resume el número de posibles instancias de una clase asociadas a una única instancia de la clase en el otro extremo.



En las relaciones de dependencia un cambio en la clase dependida afectará la clase dependiente.




Compartimentos de la clase:
Acceso de atributos y métodos
primero à nombre
“+” público
segundo à atributos
“-“ privado
tercero à métodos
“#” protegido

DIAGRAMA DE OBJETOS
Los diagramas de objetos son análogos a los de clases, con la particularidad de que en lugar de encontrar clases, encontramos instancias de éstas. Son útiles para explicar partes pequeñas del modelo en las que hay relaciones complejas



DIAGRAMA DE COMPONENTES.
Un componente es un módulo de código, de modo que los diagramas de componentes son los análogos físicos a los diagramas de clases. Muestran la organización y dependencias de un conjunto de componentes. Cubren la vista de implementación estática de un sistema. 


DIAGRAMAS DE DESPLIEGUE
Los diagramas de despliegue sirven para modelar la configuración hardware del sistema, mostrando qué nodos lo componen





DIAGRAMAS DINÁMICOS O DE COMPORTAMIENTO.
DIAGRAMAS DE CASO DE USO.
En las últimas versiones de UML el  diagrama de Caso de Uso está considerado como un diagrama dinámico porque a pesar de no describir actuaciones en el tiempo describe funciones y comportamiento.
Describen lo que hace el sistema desde el punto de vista de un observador externo. Enfatizan el qué en lugar del cómo.
Plantean escenarios, lo que pasa cuando alguien interactúa con el sistema. Proporcionan un resumen para una objetivo.
Los actores son papeles que determinadas personas u objetos desempeñan.
Las líneas que unen los Actores con los Casos de Uso (óvalos) representan una asociación de comunicación
Los Casos de Uso pueden explosionarse para describir en mayor profundidad.
Los Casos de Uso pueden acompañarse de texto que enriquezca el lenguaje gráfico.








DIAGRAMA DE SECUENCIAS.
Describen cómo los objetos del sistema colaboran.
Detalla cómo las operaciones se llevan a cabo en términos de qué mensajes son enviados y cuando (en torno al tiempo).


DIAGRAMA DE COLABORACIÓN.
Son otro tipo de diagramas de interacción. Contienen la misma información que los  diagramas de secuencia, pero se centran en la responsabilidad de cada objeto en lugar  de en el tiempo en que los mensajes son enviados.


Cada mensaje tiene un número de secuencia. El primer nivel comienza en 1, los mensajes que son enviados durante la misma llamada a un método se numeran 1.11.2 ... 1.i, tantos niveles como sea necesario.
DIAGRAMAS DE ESTADOS.
Muestran los posibles estados en que puede encontrarse un objeto y las transiciones que pueden causar un cambio de estado. El estado de un objeto depende de la actividad que esté llevando a cabo o de alguna condición.



COMO UTILIZAR UML.
UML es simplemente un lenguaje. Define un conjunto de elementos y las relaciones entre ellos y esto se emplea para definir modelos.
UML se usa típicamente como parte de un proceso de desarrollo, con ayuda de una herramienta CASE.
UML es independiente de cualquier proceso particular, no Está ligado a ningún ciclo de vida de desarrollo de software concreto.
UML proporciona mayores beneficios si se selecciona un proceso dirigido por Casos de Usocentrado en la arquitectura y sea incremental.
Lo primero que se debe hacer para comenzar a desarrollar un proyecto con UML, es seleccionar una metodología de desarrollo que defina la naturaleza concreta del proceso a seguir.
El modelo a definir en base al proceso elegido, se divide en realidad en varios tipos de modelo o vistas, cada una centrada en un aspecto o punto de vista del sistema. En general, independientemente del proceso que se emplee, se puede encontrar las siguientes vistas









Herramientas para UML


Resumido por Elvia Reyes.

Hoy en día existen cientos de herramientas CASE que soportan el lenguaje UML y por lo tanto es imposible compararlas todas en esta entrada. Intentaremos proporcionar algunas listas clasificadas de herramientas UML
Una buena herramienta cuando el objetivo es generar código no funcionará bien si el objetivo es simplemente utilizar la herramienta para dibujar modelos informales como parte de las discusiones de diseño.

Listas de herramientas según su categoría:

Herramientas CASE gráficas
Listas de herramientas:
o  Objects by design list of tools: Una de las mejores listas, en su momento… ahora ha quedado ya desactualizada
o Mario Jeckle’s list of tools: Lista de más de 100 herramientas. Lástima que la comparación esté también desactualizada.
o    UML Forum – tools: Comparación bastante simple de algunas de las herramientas más conocidas
o  Lista de herramientas UML en freebase comparando el soporte para OCL, para generación de código, ingeniería inversa, modelado colaborativo,… El usuario puede personalizar la comparación seleccionando y filtrando las categorías que le interesan

Herramientas UML textuales
También podemos encontrar diversas herramientas que permiten la especificación textual de modelos UML (y que automáticamente dibujan el diagrama UML correspondiente). Pueden ser una solución útil en algunos casos. Lista de herramientas de este tipo:
o    Nomnoml Crea diagramas de clase con una sintaxis textual para UML fácil de usar. Lee el cómo y el porqué de esta herramienta.
o    yUML es un servicio online para crear diagramas de clase y de casos de uso. Este servicio puede llamarse desde un blog o página web (pasando la descripción textual del modelo a mostrar como parte de la URL) para visualizar automáticamente el modelo indicado.Ahora podemos también generar modelos UML desde otras herramientas UML.
o    UML Graph dibuja automáticamente diagramas de clase y de secuencia. Para los de clase utiliza la sintaxis Java con anotaciones que después la herramienta convierte a specifications Graphviz. Para los diagramas de secuencia se utiliza un enfoque diferente (y esto es lo que no me gusta de la herramienta, en el fondo son dos distintas): se usan pic macros para definir el diagrama y después el programa pic2plot convierte las macros en archivos gráficos.
o    TextUML Toolkit es otra herramienta reciente. Es un editor open-source que utiliza com visor de UML el proyecto EclipseGraphviz. Soporta básicamente diagramas de clase y un subconjunto de los diagramas de actividades.
o    MetaUML es una librería para visualizar diagramas UML en archivos LaTeX, definidos utilizando una notación textual simple. Soporta diagramas de clase, de actividad y de casos de uso y máquinas de estado.
o    USE también utiliza una notación textual pero en este caso su objetivo es animar el modelo permitiendo la creación de snapshots que sirvan para validar las restricciones OCL que se hayan definido.
o    PlantUML soporta diagramas de clase, de casos de uso y de actividad, aunque no tengo claro si es un proyecto aún activo. Ver también esta descripción más detallada en el blog
o    Simple DSL for sequence diagrams basado en UMLGraph . Utiliza el TXL Programming Language para pasar del DSL a UMLGraph
o  (sólo para fans acérrimos de Latex) Macros de Latex macros para dibujar UML Sequence diagrams , el nombre lo dice todo
o    metaDepth : Herramienta para la definición textual de modelos multi-nivel (es decir, la herramienta no se limita a modelos UML ni está restringida a la arquitectura modelo/metamodelo/metametamodelo típica. Mi resumen aquí ).
o  EasyUML Editor : soporta casi todos los tipos de diagramas UML. Los diagramas se pueden exportar a PDF, PNG o SVG. Se ejecuta como una aplicación web
o    Umple puede también usarse como herramienta de modelado textual para UML
o Microsoft ha publicado un código de ejemplo para Visual Studio que permite la descripción textual de diagramas de clase, casos de uso y actividades
o    Finite State Machine Diagram Generator: una sintaxis XML muy simple para la definición textual de UML state machines. La herramienta de dibujo está implementada como un servicio web gratuito. La herramienta también permite la generación de código  (Java, C++ and C#) a partir de esos mismos diagramas.
o    seqdiag – generador the imágenes representando diagramas de secuencia a partir de archivos .diag, similares a los .dot (graphviz’s)).
o    PlantText UML Editor y SeedUML: dos editores online textuales basados en PlantUML .

Herramientas UML libres y/o Open source.
o    Free Open Source UML tools desde DevCurry
o    Top 5 open source UML tools por Open Tube.
o    Best Open Source UML tools por Open Source Applications

Herramientas UML específicas para MAC:
o    MacA&D con soporte para los principales diagramas de UML 2.2. y funcionalidades de generación de código para SQL, C++, Objective-C, Java, PHP and REALbasic
o    CanvasUML : para dibujar diagramas de clase
o    Otras herramientas como MagicDraw, VisualParadigm and QuickUML tienen también versión para MAC
Herramientas para dispositivos móbiles:
o    Lucidchart tiene una versión para iPad capaz de reconozer figuras hechas a mano.
o    Draw UML: una herramienta de dibujo UML para el iPad.
o  MagicDraw Reader iPhone Edition . Permite a los usuarios visualizar modelos hechos con MagicDraw desde su iPhone o iPod Touch.
o    Mock4U UML : Como usar Balsamiq para crear mock-ups de modelos UML en el iPhone usando sus templates para iPhone –>
o    iUML : NO es realmente una herramienta de modelado sinó una guía de referencia para llevar en el iPhone y consultar la documentación mientras dibujamos modelos UML.
o  UML Process Aid es otra herramienta para consultar documentación sobre UML en el iPhone.
o    AndyUML: una herramienta Android para el dibujo de diagramas UML
o  astah* UML pad permite la creación de diagramas de clase UML en vuestro iPad.
     Además, se pueden exportar los modelos para completarlos más tarde utilizando otras de las herramientas de modelado de la misma marca.