4.4 SEMÁNTICA 4.4.1 Propósito El documento presenta la

Anuncio
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
4.4 SEMÁNTICA
4.4.1 Propósito
El documento presenta la especificación de la semántica del UML. Utilizando lenguaje
natural y formal para hacerlo fácil de entender.
4.4.2 Alcance
Este documento especifica la semántica para 2 modelos:
!
!
Modelo estático
Modelo dinámico
El modelo estático hace referencia a la estructura de los objetos dentro del sistema (clases,
interfaces y relaciones).
El modelo dinámico hace referencia al comportamiento de los objetos dentro del sistema
(métodos, interacciones, colaboraciones, estados).
La especificación de la semántica abarca todas las notaciones del modelado descritas en
el documento de notación del UML.
4.4.3 Enfoque
La especificación hace hincapié en la arquitectura y formalismo del lenguaje.
La arquitectura del lenguaje del UML esta basado en 4 capas las cuales son: objetos del
usuario, modelo, metamodelo y meta-metamodelo.
Haciendo mayor referencia a la capa del metamodelo, la cual es una instancia de la capa
del meta-metamodelo. Por ejemplo: un atributo en el metamodelo es una instancia del metaatributo en el meta-metamodelo.
La arquitectura del metamodelo del UML se discute en la sección arquitectura del lenguaje
en el documento del UML. El metamodelo es un modelo lógico y no físico, la ventaja de un
metamodelo lógico es que hace énfasis en la semántica declarativa suprimiendo los detalles de
implementación.
El lenguaje esta fundamentado en varios paquetes lógicos; fundamento, elementos del
comportamiento y mecanismos generales. Estos paquetes también contienen subpaquetes.
Por ejemplo el paquete fundamento consiste de los siguientes subpaquetes: núcleo,
elementos auxiliares, mecanismos de extensión y tipos de datos. La estructura del lenguaje esta
descrita en la sección arquitectura de lenguaje en el documento del UML.
El metamodelo esta descrito de una manera semiformal usando tres vistas:
•
•
•
Sintaxis abstracta: Es documentada como un modelo descrito en un subconjunto del
UML, y consiste en un diagrama de clases y una descripción en lenguaje natural.
Formalización de reglas: Son documentadas usando un lenguaje formal (OCL) y un
lenguaje natural.
Semántica: Esta especificada en lenguaje natural, pero puede incluir alguna notación
adicional dependiendo de la parte del modelo que esta siendo descrita. La adaptación de
Paola Romero Guillén
104
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
técnicas formales para especificar el lenguaje esta descrita en la sección Formalismo del
Lenguaje en el documento del UML.
4.4.4 Organización del documento del UML
El documento se describe en varias partes:
Parte 1: Antecedentes
Parte 2: Fundamento
Parte 3: Elementos de comportamiento
Parte 4: Mecanismo general
Parte 1: Explica como el UML es estructurado y especificado y cuenta con los siguientes
subpaquetes. La sección arquitectura del lenguaje describe la estructura del lenguaje y explica la
arquitectura del metamodelo. La sección de especificación del lenguaje describe como el lenguaje
es definido usando múltiples vistas.
Parte 2: El paquete fundamento describe la infraestructura del UML. Este paquete esta
descompuesto en varios subpaquetes:
!
Núcleo: especifica los conceptos básicos requeridos para un metamodelo elemental y
define una arquitectura para ligar constructores adicionales del lenguaje, como metaclases, meta-asociaciones y meta-atributos.
!
Elementos auxiliares: definen constructores adicionales que extienden el núcleo para
soportar conceptos avanzados como dependencias, plantillas, estructuras físicas,
elementos tipos vista.
!
Mecanismo de extensión: especifica como los elementos del modelo son separados y
extendidos con nuevas semánticas.
!
Tipos de datos: define las estructuras de los datos básicos del lenguajes.
Elemento
Auxiliar
Núcleo
Mecanismos de
Extensión
Tipos de Datos
Figura # 3 Paquetes de Fundamento
Parte 3: El paquete elementos del comportamiento define la superestructura para modelar el
comportamiento del UML. Este paquete consiste en 4 paquetes de bajo nivel:
!
Comportamiento común: especifica conceptos del núcleo requeridos por los elementos
dinámicos.
Paola Romero Guillén
105
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
!
Colaboraciones: especifica un contexto del comportamiento para los elementos del modelo
que cumplen una tarea en particular.
!
Casos de uso: especifica el comportamiento usando actores y casos de uso.
!
Maquina de estados: define el comportamiento usando sistemas de transición de estados
finitos.
Colaboración
Casos de Uso
Máquinas de
Estado
Comportamiento
Común
Figura # 4 Paquetes de elementos de comportamiento
Parte 4: En esta versión del UML se maneja un paquete de mecanismos generales que define
mecanismos de aplicación general a los modelos, llamado administrador del modelo, que
especifica como los elementos del modelo son organizados en modelos, paquetes y sistemas.
Elementos de
comportamiento
Administrador del
modelo
Fundamento
Figura # 5 Paquete de nivel superior
4.4.5 Documentos relacionados al metamodelo
Los siguientes documentos son importantes para extender el metamodelo del UML.
! El resumen del UML provee una introducción al UML discutiendo sus objetivos e historia.
! La guía de notación del UML, define la sintaxis grafica para expresar la semántica descrita
por el metamodelo del UML. Por lo tanto, la Guía Notación del UML deberá ser leída en
conjunto con el documento Semántica del UML.
! El lenguaje de especificación de objetos describe la sintaxis, semántica y gramática del
OCL. Todas las características del OCL están descritas en términos de conceptos a partir
del documento semántica del UML.
Paola Romero Guillén
106
Instituto Tecnológico
de la Laguna
!
!
Análisis y Diseño Orientado
a Objetos
El UML CORBAfacility especifica una herramienta para una interfase usando CORBAL IDL.
Un resumen de propuesta que sintetiza la propuesta del UML y discute la relación del UML
con otras tecnologías.
4.4.6 Antecedentes
Profundizando en la parte 1 del documento del UML con la finalidad de facilitar la lectura
de cómo esta estructurado y especificado éste. La arquitectura del lenguaje describe la estructura
del lenguaje y explica la arquitectura del metamodelo de 4 capas.
Arquitectura del lenguaje
El metamodelo del UML define la semántica de una forma circular para representar
modelos de objetos usando el UML. El metamodelo del UML es una de las capas, de las 4 capas
que conforman la arquitectura del metamodelo. Como la capa del metamodelo es relativamente
compleja esta es descompuesta en paquetes lógicos. Las siguientes secciones proporcionan una
revisión a la arquitectura del metamodelo y describe la estructura de sus paquetes.
Arquitectura del metamodelo (4 capas)
Esta arquitectura proporciona una infraestructura para definir la semántica exacta
requerida para modelos complejos. Las ventajas de esta sección son las siguientes:
! Valida constructores del núcleo que mediante recursividad se aplican a ellos mismos en
metacapas sucesivas.
! Proporciona una estructura básica para definir futuras extensiones del metamodelo del
UML.
! Proporciona una arquitectura base para relacionar el metamodelo del UML con otros
estándares basados en la misma arquitectura.
La arquitectura esta basada en las siguientes 4 capas:
!
!
!
!
Meta-metamodelo
Metamodelo
Modelo
Objetos de usuario
Las funciones de estas capas están suministradas en la siguiente tabla:
ETAPA
META-METAMODELO
METAMODELO
MODELO
OBJETOS DEL
USUARIO
DESCRIPCIÓN
La
infraestructura
para
la
arquitectura
del
metamodelo.
Define el lenguaje para especificar
metamodelos.
Una instancia de un metamodelo.
Define el lenguaje para especificar
un modelo.
Una instancia de un metamodelo.
Define un lenguaje para describir
la información del dominio.
Una instancia de un modelo.
Define una información especifica
del dominio.
EJEMPLO
Metaclase,
Metaatributo,
Metaoperación
Clase, Atributo,
Componente.
Operación,
Fruta, velocidad
Fresa, 100
Tabla # 14
Paola Romero Guillén
107
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
La capa del meta-metamodelo es la capa fundamental de la arquitectura para el
metamodelo. La principal responsabilidad de esta etapa es definir el lenguaje para especificar
un metamodelo. Un meta-metamodelo define un modelo en un alto nivel de abstracción mayor
que un metamodelo. Un meta-metamodelo puede definir múltiples metamodelos y pueden ser
asociados múltiples meta-metamodelos con cada metamodelo. Ejemplo: meta-metaobjetos en
la capa del metamodelado son: meta-clase, meta-atributo, meta-operación.
Un metamodelo es una instancia de un meta-metamodelo. La principal
responsabilidad de la capa del metamodelo es definir un lenguaje para especificar modelos.
Ejemplo: de meta objetos en la capa del metamodelo son: clases, atributos, operaciones,
componentes.
Modelo es una instancia de un metamodelo. La principal responsabilidad de la capa
del modelo es definir un lenguaje que describe la información del dominio.
Objetos de usuario son una instancia de un modelo. Su primera responsabilidad es
describir la información del dominio.
Formalismo del lenguaje
La sección contiene técnicas para describir el UML. Las técnicas formales son usadas por
la especificación para incrementar la precisión mientras se mantiene la legibilidad.
La técnica describe el metamodelo del UML en 3 vistas usando presentación textual y
grafica.
Ventajas de usar técnicas formales:
! La exactitud de la descripción es mejorada
! La ambigüedad y las inconsistencias se reducen
! La arquitectura del metamodelo esta validada por una técnica complementaria,
! La legibilidad de la descripción es incrementada.
Niveles del formalismo
La técnica más común para la especificación de lenguajes consiste en definir primero
la sintaxis del lenguaje y luego describir la semántica estática y dinámica. La sintaxis define
que estructuras existen en el lenguaje y como las estructuras están construidas en términos
de otras estructuras. Algunas veces, especialmente si el lenguaje tiene una sintaxis gráfica, es
importante definir la sintaxis en una notación de manera independiente (sintaxis abstracta). La
sintaxis concreta es definida mapeando la notación sobre la sintaxis abstracta. La sintaxis esta
descrita en secciones con el encabezado sintaxis abstracta en el documento del UML..
La semántica estática de un lenguaje define como una instancia de una estructura
debe ser conectada a otras instancias para ser significativa. Y la semántica dinámica define el
significado de una estructura bien formada.
El significado de una descripción escrita en un cierto lenguaje esta definido solamente
si la descripción esta bien formada (si cumple reglas definidas en la semántica estática). La
semántica estática se encuentra en las secciones bajo el encabezado Formalización de reglas.
La semántica dinámica esta descrita bajo el encabezado semántica. En algunos casos partes
de la semántica estática esta también explicada en la sección semántica.
La especificación usa una combinación de lenguajes para describir la sintaxis abstracta
y la semántica del UML, como sigue:
!
Un subconjunto del UML
Paola Romero Guillén
108
Instituto Tecnológico
de la Laguna
!
!
Análisis y Diseño Orientado
a Objetos
El Lenguaje OCL
Un Lenguaje natural
En la construcción del metamodelo del UML han sido usadas diferentes técnicas para
especificar las estructuras del lenguaje usando algunas de las capacidades del UML. Las
estructuras principales están dentro de las meta-clases en el metamodelo. Otras estructuras,
en esencia son variantes de otras y son definidas como estereotipos de meta-clases en el
metamodelo. Este mecanismo permite que la semántica de la estructura variante sea
significativamente diferente a la meta-clase base. Otra forma mas sencilla de definir variante es
usar los meta-atributos. Un ejemplo, la estructura agregación esta especificada por un atributo
de la meta-clase AssociationEnd, la cual es usada para indicar si una asociación es una
agregación ordinaria, un agregado compuesto o una simple asociación.
Especificación de la estructura de los paquetes
El documento tiene una sección para cada paquete del metamodelo del UML. Cada
una de estas secciones tiene las siguientes subsecciones.
Sintaxis Abstracta
La sintaxis abstracta se presenta en un diagrama mostrando las meta-clases,
definiendo los constructores y sus relaciones. El diagrama también presenta algunas de las
reglas formadas, principalmente los requerimientos de multiplicidad de las relaciones y
quizás algunas instancias de un sub-constructor, en particular deberán ser ordenadas. Se
proporciona, una descripción informal en lenguaje natural para definir cada constructor. El
primer párrafo de cada una de estas descripciones es una presentación general del
constructor para situarse en el contexto, mientras los siguientes párrafos ofrecen una
definición informal de las meta-clases especificando el constructor usando el UML. Para
cada meta-clase, sus atributos son enumerados juntos con una pequeña explicación. Por
otra parte, el nombre del rol contrario de las asociaciones conectado a la meta-clase es
también listado de la misma forma.
Formalización de reglas
La semántica estática de cada constructor en el lenguaje UML, excepto para la
multiplicidad y restricciones, es definida como un conjunto de invariantes de una instancia
de la meta-clase. Esas invariantes tienen que ser satisfechas por el constructor para que
tenga sentido. De esta manera las reglas especifican restricciones sobre atributos y
asociaciones definidas en el metamodelo.
Cada invariante es definida por una expresión OCL junto con una explicación
informal de la expresión. En muchos casos, operaciones adicionales sobre las meta-clases
son necesarias para explicar las expresiones OCL. Estas están definidas en una
subseccion aparte, después de la sección Formalización de reglas, para la estructura se
usa el mismo enfoque como en la sección de sintaxis abstracta: una explicación informal
seguida por la expresión OCL definiendo la operación.
El enunciado “No extra Formalización de reglas” significa que todas las
descripciones de la semántica estática actual son expresadas en la superclase junto con la
multiplicidad y el tipo expresado en los diagramas.
Semántica
El lenguaje natural es usado para definir el significado de las estructuras. Las
estructuras son agrupadas en partes lógicas y definidas en conjunto.
Paola Romero Guillén
109
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
Elementos estándares
Estereotipos de las meta-clases definidos previamente en la sección son listados
con una definición informal en lenguaje natural. Los estereotipos también son definidos de
la misma forma como en la subseccion de Formalización de reglas. Otros tipos de
elementos estándar son listados y están definidos en el apéndice; Estándar de Elementos
del documento del UML.
Notas
Esta subsección puede contener decisiones razonables para el metamodelo, pragmática
para el uso de la estructura y ejemplos escritos en lenguaje natural.
Uso de OCL
Se usa el OCL para expresar la Formalización de reglas. Las siguientes convenciones
son usadas para garantizar su legibilidad:
Self, el cual puede ser omitido como una referencia a la meta-clase definiendo el
contexto de la invariante, ha sido puesto para mayor claridad.
En expresiones donde una colección es iterada, un iterador es usado para dar claridad.
El tipo del iterados es omitido, pero puede incluirse cuando facilita el entendimiento.
La operación collect es implícita en esta práctica.
Uso del lenguaje natural
El lenguaje natural es usado para dar explicaciones de los constructores, el mas usado
es el Inglés, pero para nuestro caso será el Español.
4.4.7 Ejemplo de la especificación anterior: casos de uso.
(Paquete Elementos de Comportamiento)
El paquete CASOS DE USO es un subpaquete del paquete Elementos de
Comportamiento. Este especifica los conceptos usados para la definición de la funcionalidad de
una entidad como un sistema. El subpaquete usa constructores definidos en el paquete
Fundamento del UML, así como en el paquete Comportamiento Común.
Los elementos en el subpaquete CASOS DE USO son empleados principalmente para
definir el comportamiento de una entidad, como un sistema o subsistema, sin especificar su
estructura interna. Los principales elementos en este subpaquete son:
Casos de usos y Actores: Instancias de casos de uso e instancias de actores interactúan
cuando los servicios de una entidad son usados. Como un caso de uso es manejado en términos
de cooperación de objetos, definidos por clases encerradas en la entidad, pueden ser
especificados con una Colaboración. Un caso de uso de una entidad puede ser definido como un
conjunto de casos de uso de los elementos contenidos en la entidad. Como esos casos de uso
subordinados interactúan también pueden ser expresados en una Colaboración. La especificación
de la funcionalidad del sistema en si mismo esta usualmente expresada en un modelo de casos de
uso separado. Un modelo estereotipado <<use case model>>. Los casos de uso y los actores en el
modelo de casos de uso son equivalentes a los paquetes del sistema.
Paola Romero Guillén
110
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
Sintaxis abstracta
La sintaxis abstracta para el paquete de casos de uso es expresado en la siguiente
notación gráfica
*
Realización
*
Especificación
Actor
Clasificador
(de Núcleo)
Clasificador
1..*
Instancia
(de Comportamiento Común)
*
Caso de Uso
PuntoExtension:lista de String
Instancia de Caso de
Uso
Figura # 6, Subpaquete de Casos de Uso.
Las siguientes metaclases están contenidas en el paquete casos de uso.
Actor
Un actor define un conjunto coherente de roles que los usuarios de una entidad pueden
jugar cuando interactúan con la entidad. Un actor tiene un rol para cada caso de uso con el cual se
comunica. El metamodelo actor es una subclase de Classifier, un actor tiene un nombre y puede
comunicarse con un conjunto de casos de uso, y en un nivel de realización, con Classifiers
tomando parte en la realización de esos casos de uso. Un actor puede también tener un conjunto
de interfaces, las cuales describen como otros elementos pueden comunicarse con el actor. Un
actor puede heredar a otros actores. Esto significa que la herencia de un actor será capaz de jugar
los mismos roles como el actor heredado, comunicarse con el mismo conjunto de casos de uso.
Caso de uso
El constructor del caso de uso es empleado para definir el comportamiento de un sistema u
otra entidad semántica sin revelar su parte interna, cada caso de uso especifica una secuencia de
acciones, incluyendo variantes que la entidad puede hacer interactuando con actores de la entidad.
En el metamodelo, caso de uso es una subclase de Classifier, contiene un conjunto de
operaciones y atributos especificando las secuencias de acciones hechas por una instancia de un
caso de uso. Las acciones incluyen cambios del estado y comunicaciones con el ambiente del
caso de uso.
Pueden existir asociaciones entre caso de usos y los actores de los casos de uso. Como
una asociación sitúa (declara) que instancias del caso de uso y un usuario jugando uno de los roles
del actor comunicando con otros. Los casos de uso pueden ser relacionado a otros casos de uso
solamente por relaciones Extends y Uses, estas son relaciones de generalización estereotipadas
<<extends>> o <<uses>>. Una relación Extends denota la extensión de la secuencia de un caso
Paola Romero Guillén
111
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
de uso con la secuencia de otro, mientras que la relación uses denota que el caso de uso
comparte un comportamiento común.
La realización de un caso de uso puede ser especificada por un conjunto de
colaboraciones, las colaboraciones se definen como instancias en el sistema, que interactúan para
realizar la secuencia del caso de uso.
Atributos:
ExtenssionPoint: Es una lista de cadenas representando puntos de extensión definidos dentro del
caso de uso. Un punto de extensión es una situación a la cual el caso de uso puede ser extendido
con comportamiento adicional.
Instancia de caso de uso
Una instancia de caso de uso es la representación de una secuencia de acciones
especificadas en un caso de uso.
En el metamodelo Instancia Caso de Uso es una subclase de Instance. Cada método
ejecutado por una instancia de caso de uso es llevado a cabo en una transacción atómica y no es
interrumpida por otra instancia de caso de uso.
Formalización de reglas
Las siguientes reglas se aplican solamente en el paquete de casos de uso.
Actor
Actores solamente pueden tener Asociaciones a Casos de Uso y Clases, dichas Asociaciones
son binarias:
self.associations->forAll(a|a.connection->size = 2 and a.allConnections>exists(r |r.type.oclIsKindOf(Actor)) and a.allConnections>exists(r|r.type.oclIsKindOf(UseCase) or r.type.oclIsKindOf(Class))
Actores no pueden contener cualquier clasificadores
self.contents->isEmpty
Para cada operación en una interfase el actor debe tener su correspondiente operación
self.specification.allOperations->forAll (interOp) | self.allOperations>exists(op|op.hasSameSignature (interOp)))
Caso de uso
Los Casos de uso solo pueden tener asociaciones binarias
self.associations->forAll(a|a.connection->size=2)
Casos de uso no pueden tener asociaciones a casos de uso que especifican la misma entidad
self.associations->forAll(a|a.allConnections->forAll(s,
o|s.type.specificationPath->isEmpty and o type.specificacionPath->isEmpty
or (not s.type.specificationPath->includesAll(o.type.specificationPath)
Paola Romero Guillén
112
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
and not o type.specificationPath>includesAll(s.type.specificationsPath))))
Un caso de uso solamente puede tener Generalizaciones <<uses>> o <<extends>>
self.generalization->forAll(g|g.stereotype.name=’Uses’ or
g.stereotype.name=’Extends’)
Un caso de uso no puede contener ningún clasificador
self.contents->isEmpty
Para cada operación en una interfase el caso de uso debe tener una operación correspondiente
self.specification.allOperations->forAll (interOp|self.alloperations>exists(op|op.hasSameSignature (interOp)))
Operaciones adicionales
La operación specificationPath resulta en un conjunto conteniendo todos los Namespaces que no
son instancias de Package.
SpecificationPath:Set(Namespace)specificationPath=self.allSurroundingName
spaces->selext(n|n.oclIsKindOf(subsytem) or n.oclIsKindOf(Class)
Instancia de Caso de Uso
No hay Formalización de reglas.
Semántica
Esta sección proporciona una descripción de la semántica de los elementos en el paquete
casos de uso y sus relaciones con otros elementos del paquete, elementos del comportamiento.
Actor
Asociación
Namespace
Interfase
*
1
2..*
*
Asociación End
Actor
*
1
1
1
*
*
Generalizaciòn
Figura # 7, Actor
Los actores modelan partes fuera de la entidad, como un sistema, subsistema o una clase,
las cuales interactúan con la entidad. Cada actor modela un conjunto coherente de roles que los
usuarios de la entidad pueden jugar cuando interactúan con la entidad. En cada momento un
usuario especifico interactúa con la entidad jugando uno de sus roles. Una instancia de un actor es
un usuario específico que interactúa con la entidad. Cualquier instancia que se ajusta conforma a
Paola Romero Guillén
113
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
un actor puede actuar como una instancia del actor. Si la entidad es un sistema, los actores
representan a usuarios u otros sistemas.
Algunos de los actores de un subsistema de bajo nivel o una clase pueden coincidir con
actores del sistema, mientras otros actúan dentro del sistema. Los roles definidos por el último tipo
de actores son jugados por instancias de clasificadores en otros paquetes o subsistemas, cuando
en el ultimo caso el clasificador puede corresponder a uno u otro la especificación parte de un
contenido del subsistema. Cuando un actor esta fuera de la entidad, su estructura interna no esta
definida pero solo su vista externa se define como se ve desde la entidad. Instancias de actores se
comunican con la entidad enviando y recibiendo instancias de mensajes a instancias de casos de
uso. Esto es expresado por asociaciones entre el actor y el caso de uso o clase.
Además, las interfaces pueden ser conectadas a un actor definiendo como otros elementos
pueden interactuar con el actor.
Dos o mas actores pueden tener casos de uso en común, se comunican con el mismo
conjunto de casos de uso de la misma forma. Esta semejanza es expresada con generalización a
otro actor, el cual modela el rol común. Una instancia de un heredero puede siempre ser usada
donde una instancia del ancestro es esperada.
Casos de uso
En el siguiente texto el término entidad es usado cuando se refiere a un sistema, un subsistema o
una clase y el término elemento del modelo o elemento denota un subsistema o una clase.
Atributo
Namespace
Interface
1
*
*
*
Operación
Caso de Uso
Generalización
*
*
*
<<Uses>> o <<Extends>>
*
InstanciaCasodeUso
*
FinalAsociación
Asociación
2..*
Figura # 8, Casos de Uso.
El propósito de un caso de uso es definir una pieza del comportamiento de una entidad sin
revelar la estructura interna de la entidad. La entidad especificada en esta forma puede ser un
sistema o cualquier elemento del modelo que contiene comportamiento, como un subsistema o una
clase en un modelo de un sistema. Cada caso de uso especifica un servicio que la entidad provee
a los usuarios (una forma especifica de usar la entidad). Esto especifica una secuencia completa
iniciada por un usuario, las interacciones entre los usuarios y la entidad, así como las respuestas
hechas por la entidad. Un caso de uso también incluye posibles variantes de su secuencia,
(secuencias alternativas, comportamiento excepcional, manejo de errores, etc.).
Paola Romero Guillén
114
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
El conjunto completo de casos de uso especifica todas las formas de usar la entidad (todo
el comportamiento de la entidad es expresado por sus casos de uso). Los casos de uso pueden
ser agrupados en paquetes según convenga.
Desde un punto de vista pragmático, lo casos de uso pueden ser usados para la
especificación de los requerimientos en una entidad y para la especificación de la funcionalidad
proporcionada por una entidad. Además los casos de uso también declaran indirectamente los
requerimientos, la entidad especificada indica a sus usuarios como deben interactuar, así la
entidad será capaz de proporcionar sus servicios.
Los usuarios de casos de uso siempre son externos a la entidad especifica, ellos están
representados por actores de la entidad. Así, si la entidad especificada es un sistema o un
subsistema en el mas alto nivel (el paquete de mayor nivel), los usuarios de este caso de uso están
modelados por los actores del sistema.
Los actores de un subsistema de bajo nivel o una clase que son internos a el sistema son
definidos no explícitamente, en cambio los casos de uso relacionados directamente a los
elementos del modelo se ajustan a actores implícitos (cuyas instancias juegan esos roles en
interacción con los casos de uso). Esos elementos están contenidos en otros paquetes o
subsistemas, donde los casos de uso en el subsistema pueden estar contenidos en la parte de
especificación o en la parte de contenido. No hay distinción entre actor y elemento, ambos se
refieren al mismo término Actor.
Pueden existir asociaciones entre casos de uso y actores, principalmente si las instancias
del caso de uso y del actor se comunican. Un actor puede comunicarse con varios casos de uso de
una entidad (el actor puede requerir varios servicios de la entidad) y un caso de uso puede
comunicarse con uno o varios actores cuando proveen este servicio. Note que dos casos de uso
que especifican la misma entidad no pueden comunicarse con otros debido a que cada uno de
ellos describe individualmente un uso completo de la entidad. Además, los casos de uso siempre
usan señales cuando se comunican con los actores fuera del sistema, mientras este puede usar
otra semántica de comunicación cuando se comunica con elementos dentro del sistema.
La interacción entre actores y casos de uso puede estar definida con interfases. La
interfase entonces define un subconjunto de la interacción entera definida en el caso de uso.
Una instancia de un caso de uso es un objeto de un caso de uso, iniciado por un mensaje
desde una instancia de un actor. Como una respuesta a el mensaje, la instancia del caso de uso
hace una secuencia de acciones especificadas por el mismo caso de uso, enviando mensajes a
instancias de actores. La instancia del actor puede enviar nuevos mensajes a la instancia del caso
de uso y la interacción continua hasta que la instancia ha respondido a todas las entradas y
cuando no espera mas, termina. Cada método hecho por una instancia de caso de uso esta hecho
como una transacción atómica (no es ejecutada por ninguna otra instancia de caso de uso).
Un caso de uso puede estar descrito en texto, usando operaciones, en diagramas de
actividad, por una máquina de estados, o por otras técnicas de descripción del comportamiento y
como pre y post-condiciones. La interacción entre el caso de uso y los actores pueden también
estar presentada en diagramas de colaboración.
En el caso donde son usados subsistemas para modelar el paquete heredado, el sistema
puede estar especificado con casos de uso de todos los niveles, un caso de uso puede emplearse
para especificar cada subsistema y cada clase. Un caso de uso que especifica un elemento del
modelo es entonces remitido dentro de un conjunto pequeño de casos de uso.
Las semejanzas entre casos de uso son expresadas con relaciones “uses” (generalización
con el estereotipo <<uses>>). La relación significa que la secuencia de comportamiento descrito en
un caso de uso es incluido en la secuencia de otro caso de uso. El último caso de uso puede
introducir nuevas piezas de comportamiento en cualquier lugar de la secuencia, haciéndola mas
Paola Romero Guillén
115
Instituto Tecnológico
de la Laguna
Análisis y Diseño Orientado
a Objetos
grande pero sin cambiar el orden de la secuencia original. Además, si un caso de uso tiene varias
relaciones, esta secuencia será el resultado de las salidas de las secuencias usadas junto con
nuevas piezas de comportamiento. Estas partes están combinadas para formar la nueva secuencia
que esta defina usando un caso de uso.
Una relación “extends” (generalización con el estereotipo <<extends>>), define que el caso
de uso puede ser expandido con algún comportamiento adicional definido en otro caso de uso. Las
relaciones extends incluyen una condición para la extensión y una referencia a un punto de
extensión en el caso de uso relacionado (una posición en el caso de uso donde las adiciones
pueden ser hechas). Una vez que una instancia de un caso de uso alcanza un punto de extensión
en el cual una relación extends esta referida, la condición de la relación es evaluada. Si la
condición se cumple, la secuencia acatada por el caso de uso es extendida. Diferentes partes de la
secuencia del caso de uso extendido pueden ser insertadas en diferentes puntos de extensión en
la secuencia original. Si todavía se cumple la condición (si la condición de la relación extends es
cumplida en el primer punto de extensión), entonces el comportamiento extendido es insertado en
la secuencia original.
Elementos estándar
Consultar el apéndice Elementos Estándar en el documento del UML para las definiciones
de los estereotipos <<extends>> y <<modelo de caso de uso>>.
Notas
Una regla pragmática de uso, cuando se definen casos de uso, indica que cada uno de
ellos deberá entregar algún tipo de resultado de valor a uno de sus actores. Esto asegura que el
caso de uso esta completo y por lo tanto no tiene fragmentos.
Paola Romero Guillén
116
Descargar