lunes, 27 de abril de 2015

UML Capítulo9: Vista estática IV

¡Hola de nuevo internauta!.

      Este es el último capítulo sobre la vista estática de UML, ¡pero no desesperéis que aún quedan muchas más entradas sobre ello!.

Imagen Cómica Willy Wonka
Willy deja de dar la murga y tómate una chocolatina que estás bajo de glucosa. ¡oh, wait!....

Resumiendo, lo que veremos en esta entrada es la explicación de dependencia, restricciones e instancia. ¡Y sin más dilación empezamos con la diversión!.

3. Dependencia

Nos indica una relación semántica entre dos o más elementos del modelo, es decir, nos informa sobre una situación en la cual un cambio sobre el elemento proveedor puede requerir un cambio o indicar un cambio en el significado cliente de la dependencia. En otras palabras, es una clase de uso, es decir la clase B usa a la clase A.

Querido raptor, a veces me pregunto el porqué de vuestra extinción...
Cómo bien nos recuerda raptor en la imagen de arriba, puede que la definición os indique una asociación , pero no lo es, y ahora vamos con ello. El concepto es sencillo y creo que lo explicamos aquí. La asociación es un concepto general que nos indica que dos clases están asociadas, y la dependencia es un caso específico de asociación debido a su especialización. En otras palabras usamos la asociación en la fase de diseño cuando no queremos indicar que tipo de relación hay entre las clases, en cambio, usamos la dependencia en otras fases para especificar más concretamente el tipo de relación y así poder implementarla.

Hay varias clases de dependencia como se muestra en la siguiente tabla:

Relación
Función
Palabra clave
Acceso
Importación privada de los contenidos de otro paquete
acces/accede
Creación
Establece que una clase crea instancia de otra clase
create/crea
Dependencia de traza
Indica que existe una conexión entre elementos en diferentes modelos. Menos preciso que una correspondencia
trace/traza
Derivación
Establece que una instancia puede ser calculada a partir de otra instancia
derive/deriva
Envío
Relación entre emisor de una señal y  el receptor de la misma
send/envía
Instanciación
Establece que un método de una clase creo instancias de otra clase
instantiatie/usa instancias
Ligadura
Asignación de valores a los parámetros de una plantilla para generar un nuevo elemento del modelo
bind/ligado
Llamada
Establece que un método de una clase llama a una operación de otra clase
call/llamada
Permiso
Permiso para que un elemento use los contenidos de otro elemento
permit/permite
Realización
Correspondencia entre una implementación y su especificación
realize/realiza
Refinamiento
Establece que existe una correspondencia entre elementos a dos niveles semánticos
refine/refina
Sustitución
Establece que la clase origen soporta interfaces y contratos de la clase destino y puede ser sustituida por esta
subsitute/sustituye
Uso
Establece que un elemento necesita de la presencia de otro elemento para su correcto funcionamiento(incluye llamada, creación, instanciación, envío)
use/usa

A continuación explicaremos un poco más algunos de los tipos de dependencia:

  • Dependencia de traza: Se usa normalmente para conocer donde están los requisitos del sistema en los modelos y saber los cambios que se han efectuado sobre los mismos.
  • Refinamiento: Relación entre dos versiones de un concepto en diferentes etapas del desarrollo o en diferentes niveles de abstracción. Normalmente uno de ellos es una versión finalizada mientras que el otro no (es un esbozo de dicha versión final o un concepto más abstracto o genérico). El elemento más detallado contendrá las decisiones de diseño tomadas. En otras palabras es un recordatorio para saber la interrelación entre múltiples modelos.
  • Dependencia de derivación: Indica que un elemento puede ser calculado a partir de otro elemento.
  • Dependencia de uso: El comportamiento o la implementación de un elemento afecta al comportamiento o implementación de otro. Un ejemplo de este tipo son los requisitos del compilador que necesitan la definición de una clase para compilar otra clase. Aunque es aconsejable especificar el tipo de dependencia de uso suele omitirse  porque su propósito es resaltar la dependencia solamente.
  • Dependencia de importación: Añade los nombres de los contenidos del espacio de nombres destino al espacio de nombres desde el que se importa.
Ejemplo Tipo de Dependencia


4. Restricción

UML incluye la definición de un lenguaje de restricción llamado OCL (Onject Constraint Language) del cual hablaremos en profundidad en otra entrada, para las restricciones de UML. Su uso está pensado para indicar propiedades de existencia y propiedades universales.

Se muestran como expresiones de texto entre llaves y se deben escribir en lenguaje natural o formal. Nos dan a entender que un atributo de la clase o relación tiene un límite impuesto.


5. Instancia

Como definición general una instancia es una entidad de tiempo de ejecución con identidad (o lo que es lo mismo, algo que puede distinguirse de otras entidades en tiempo de ejecución) con un valor en todo momento que puede cambiar en respuesta a operaciones realizadas sobre él.

En la vista estática una instancia hace referencia a una instantánea que es una configuración estática específica de un sistema en un instante. Consta de objetos y otras instancias, valores y enlaces:

  • Cada objeto es una instancia directa de una clase que lo describe completamente y una instancia indirecta de los antecesores de esa clase. 
  • Cada enlace es una instancia de una asociación.
  • Cada valor es una instancia a un tipo de datos.
  • El estado de un sistema es una instancia válida del sistema si cada instancia en él es una instancia de algún elemento de un modelo del sistema bien formado y si todas las restricciones impuestas por el modelo son satisfechas por las instancias.
Un diagrama de una instantánea es una imagen del sistema en un momento dado y se denomina diagrama de objetos y no está restringido a la especificación de objetos, ya que puede incluir especificaciones de los valores de objetos.

Las instantáneas son ejemplos de sistemas, no definiciones de sistemas.


Hasta aquí la entrada de hoy. Espero que os haya ayudado para entender, si no todos, al menos algunos conceptos.

¡Gracias por leerme!.

No hay comentarios:

Publicar un comentario