jueves, 1 de mayo de 2014

UML Diagrama de Clases

DEFINICIÓN.
Un diagrama de clases es un gráfico que ilustra clases conectadas por medio de relaciones estáticas. 
OMG Unified Modeling Language Specification, 2000.

En la siguiente sección se abordaran las relaciones entre clases, la creación de clases se explicó en la entrada Programación OO - Clases de este mismo blog. Las clases se relacionan entre sí de varias maneras diferentes, en este apartado se destacan, la asociación, agregación, composición y especialización / generalización, estas relaciones serán explicadas con mayor profundidad a continuación.

Asociación.

Una asociación representa una relación entre clases, y aporta la semántica común y la estructura de muchos tipos de «conexiones» entre objetos.

Las asociaciones son los mecanismos que permite a los objetos comunicarse entre sí. Describe la conexión entre diferentes clases (la conexión entre los objetos reales se denomina conexión de objetos o enlace). Las asociaciones pueden tener un papel que especifica el propósito de la asociación y pueden ser unidireccionales o bidireccionales (indicando si los dos objetos participantes en la relación pueden intercambiar mensajes entre sí, o es únicamente uno de ellos el que recibe información del otro). Cada extremo de la asociación también tiene un valor de multiplicidad, que indica cuántos objetos de ese lado de la asociación están relacionados con un objeto del extremo contrario.

En UML, las asociaciones se representan por medio de líneas que conectan las clases participantes en la relación, y también pueden mostrar el papel y la multiplicidad de cada uno de los participantes. La multiplicidad se muestra como un rango [mín...máx] de valores no negativos, con un asterisco (*) representando el infinito en el lado máximo.

Fuente: http://docs.kde.org/stable/es/kdesdk/umbrello/uml-elements.html

La multiplicidad por su parte fija el número de instancias que participan en la relación, a continuación se muestra la tabla que muestra la cardinalidad en una asociación.

1
uno y solo uno
0..1
cero o uno
*
muchos
0..*
cero o muchos
1..*
uno o muchos


Ejemplo de asociación

 


Agregación.

Las composiciones son tipos especiales de asociaciones que representan un nivel de acoplamiento más fuerte, las relaciones que se tratan de modelar son del tipo “tiene un” o “es parte de” donde una de las clases juega el rol de "completa" y las otras son las "partes".

La notación para representar las agregaciones es una línea con un rombo vació en el extremo apuntando a la clase completa. En la agregación las partes puedes existir aun cuando la clase completa haya dejado de hacerlo.                     





Composición.

Las composiciones, son tipos especiales de asociaciones que representan un nivel de acoplamiento más fuerte que las agregaciones, las relaciones que se tratan de modelar son del tipo “se compone de”, con la composición solo se puede pertenecer a un todo en consecuencia si se elimina el todo se eliminan las partes.

La notación para representar las composiciones, es una línea con un rombo lleno en el extremo apuntando a la clase todo. En la composición la clase todo maneja el ciclo de vida de los objetos que la componen, de esta manera se asegura que cuando el todo se destruye también sus partes.  
                



Si se observa detenidamente, el numero 54 no hace parte de las opciones de cardinalidad, sin embargo es valido poner un valor numérico si se sabe de ante mano que es estático por ejemplo el mazo de cartas americano tiene 54 figuras compuestas por 13 cartas por cada símbolo y 2 comodines, dicha configuración no cambia entonces es posible poner el numero de cartas como valor de la multiplicidad de la clase carta.


Herencia.

La herencia consiste en crear clases genéricas llamadas súper clases o clases padre, con los elementos comunes a un conjunto de subclases. Las subclases heredan (recogen) los atributos y comportamiento de la clase padre pudiendo agregar atributos y comportamiento propios, y modificar los atributos y comportamiento que vienen del padre.

La herencia cumple con el principio de sustitución de Liskov que afirma que: si S es un subtipo de T, entonces los objetos de tipo T en un programa de computadora pueden ser sustituidos por objetos de tipo S.


A pesar de que la herencia es una herramienta poderosa justificada por el re-uso de componentes comunes presentes en súper clases, también presenta problemas en el control de tipos como la covariación y el ocultamiento en los descendientes, temas que no se trataran en esta sección.                  







sábado, 26 de abril de 2014

UML Elementos del Diagrama de Casos de Uso

INTRODUCCIÓN.

Los casos de uso se componen de un documento literal y un diagrama, el componente de documento se encuentra en la sección UML casos de uso de este blog, esta entrada se centra en los elementos del diagrama. A continuación se muestran y describen dichos elementos.


Elemento
Función en el diagrama


Actor
El termino ACTOR, se refiere a un tipo de estereotipo que representa una entidad (persona, grupo de personas, sistema informático), externa al sistema que será modelado y que interactúa con uno o más casos de uso. Se representa por una figura humana, independientemente de que sea una persona o un sistema.


Caso de Uso
Dentro del diagrama los casos de uso son representados por óvalos, en el interior de ellos se ubica el nombre del caso de uso por ejemplo “registrar datos”.


Sistema
En el diagrama el sistema es representado con un rectángulo, dentro del rectángulo deben estar los casos de uso y fuera de él los actores, actores y casos de uso se relacionan por medio de asociaciones, casos de uso con casos de uso pueden relacionarse con asociaciones simples, extensiones, inclusiones o generalizaciones.


Asociación
Asociación es la relación entre un actor un caso de uso.

La Asociación es representada por una línea solida que va desde el actor hasta el caso de uso, en muchas herramientas de modelado la flecha no tiene dirección ya que se asume que parte desde el actor.


<< Extends >>
Un Caso de Uso puede extender el comportamiento de otro, por lo general cuando se consideran circunstancias particulares   por ejemplo  en una empresa de alimentos el caso de uso (clasificar tomates) puede extender a (descartar tomates), siempre y cuando el tomate en cuestión no pase cierta validación.

La Extensión se representa con el estereotipo << Extend >> y una flecha que va desde el caso de uso extendido hasta el principal. En este caso la flecha es punteada aunque algunas herramientas de modelado usan la flecha de generalización con el estereotipo << Extend >>.


<< Include >> o
 << Uses >>
Un caso de uso puede incluir la funcionalidad de otro como parte de su proceso normal, en general se asume que el caso de uso incluido se llama cada vez que el caso de uso base se ejecuta.

Un Caso de Uso puede ser incluido por uno o más casos de uso, por lo que ayuda a reducir la duplicación de funcionalidad al factorizar el comportamiento común en los casos de uso que son muchas veces utilizados de nuevo.

La Inclusión se representa con el estereotipo << include >> y una flecha que va desde el caso de uso principal hasta el que incluye. En este caso la flecha es punteada aunque algunas herramientas de modelado usan la flecha de generalización con el estereotipo << Include >>.


Generalización
La generalización es una relación entre casos de uso que implica que el caso de uso hijo contiene todos los atributos, comportamiento y puntos de extensión definidos en el caso de uso padre y además participa en todas las relaciones de los casos de uso padres.
Cockburn, Alistair. 2000. Writing Effective Use Cases
También es posible utilizar la generalización con los actores, sin embargo es una práctica poco utilizada
La generalizacion es representada en el diagrama con una flecha con punta triangular vacia, que va desde el caso de uso hijo hasta el caso de uso principal.

  
En los videos que se encuentra a continuación se muestra como realizar diagramas de casos de uso en las herramientas de modelado, ArgoUML y StarUML.

1. Diagramas de caso de uso utilizando ArgoUML.


2. Diagramas de caso de uso utilizando StarUML.