Contexto de La Arquitectura de Software
Contexto de La Arquitectura de Software
Contexto de La Arquitectura de Software
FACULTAD DE INGENIERÍAS
PROGRAMA DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN
INGENIERÍA DE SOFTWARE III
Pero la arquitectura es algo más que una estructura; el IEEE Working Group on
Architecture la define como "el concepto de más alto nivel de un sistema en su
entorno”. También incluye el "ajuste" con la integridad del sistema, con las
restricciones económicas, con las preocupaciones estéticas y con el estilo. No se
limita a un enfoque interior, si no que tiene en cuenta el sistema en su totalidad
dentro del entorno de usuario y el entorno de desarrollo, un enfoque exterior.
DESCRIPCIÓN DE LA ARQUITECTURA
Para poder hablar y razonar sobre la arquitectura de software, antes se debe definir
una representación arquitectónica, una manera de describir aspectos importantes
de una arquitectura. Esta descripción se captura en un documento de arquitectura
de software, que proporciona una visión general arquitectónica completa del
sistema, mediante una serie de vistas arquitectónicas diferentes para representar
diferentes aspectos del sistema.
VISTAS DE LA ARQUITECTURA
Estilo de la arquitectura
Anteproyecto de arquitectura
de uso en los siguientes disciplina de Requisitos . Sólo hay una vista de guión
de uso del sistema, que ilustra los guiones de uso y los escenarios que implican
riesgos técnicos, de clase o de comportamiento significativos
arquitectónicamente. La vista de guión de uso se perfecciona y se contempla
inicialmente en todas las iteraciones.
Priorizar los guiones de uso: En esta tarea se priorizan los guiones de uso, para
que se pueda decidir su orden de desarrollo. En esta tarea es donde se
identifican y priorizan los guiones de uso significativos arquitectónicamente.
El objetivo de esta actividad es:
Definir entradas en la selección del conjunto de casos de ejemplo y guiones
de uso que se van a analizar en la iteración actual.
Definir el conjunto de casos de ejemplo y guiones de uso que representan
alguna funcionalidad significativa o central.
Para proporcionar una base para comprender la distribución física del sistema
en un conjunto de nodos de proceso, se utiliza una vista de la arquitectura
llamada vista de despliegue en el flujo de trabajo de análisis y diseño. La
vista de despliegue (una de las cinco vistas, que se muestran a continuación)
ilustra la distribución de procesos en un conjunto de nodos del sistema, incluida
la distribución física de procesos y hebras. La vista de despliegue se perfecciona
durante las iteraciones.
El cliente aprueba el modelo de caso de uso . Cuando tenga la aprobación, sabe que el
sistema es lo que desea el cliente. También puede utilizar el modelo para discutir el
sistema con el cliente durante el desarrollo.
Los usuarios potenciales utilizan el modelo de caso de uso para comprender mejor el
sistema.
El arquitecto de software utiliza el modelo de caso de uso para identificar la
funcionalidad arquitectónicamente significativa.
Los diseñadores utilizan el modelo de caso de uso para obtener una visión general del
sistema. Cuando perfeccione el sistema, por ejemplo, necesita documentación sobre el
modelo de caso de uso para ayudarle en ese trabajo.
El gestor utiliza el modelo de caso de uso para planificar y hacer el seguimiento del
modelado de caso de uso y también del diseño posterior.
Las personas externas al proyecto pero dentro de la organización, ejecutivos, y comités
directivos, utilizan el modelo de caso de uso para obtener una perspectiva en lo que se ha
llevado a cabo.
Las personas revisan el modelo de caso de uso para proporcionar la información de
retorno apropiada a los desarrolladores de forma regular.
Los diseñadores utilizan el modelo de caso de uso como base para su trabajo.
Los verificadores utilizan el modelo de caso de uso para planear las actividades de
prueba (prueba de caso de uso y de integración) tan pronto como sea posible.
Quienes desarrollarán la versión siguiente del sistema utilizan el modelo de caso de
uso para comprender como funciona la versión existente.
Los escritores de documentación utilizan los casos de uso como base para escribir los
manuales de usuario del sistema.
Explicación
Un modelo de caso de uso es un modelo de las funciones previstas del sistema
y su entorno y sirve como un contrato entre el cliente y los desarrolladores. Los
casos de uso sirven como hebra de unión a lo largo del desarrollo del sistema.
El mismo modelo de caso de uso es el resultado de la disciplina de Requisitos y
se utiliza como entrada para disciplinas de Prueba, Diseño y Análisis.
En el diagrama que se incluye más abajo se muestra una parte de un modelo
de caso de uso para el Sistema de máquinas de reciclaje.
caso de uso para verificar que se encuentren todos los casos de uso y los
actores y que, juntos, pueden facilitar lo que desea el cliente.
En el entorno de desarrollo iterativo, debe seleccionar un subconjunto de casos
de uso que se detallan en cada iteración. Consulte también el apartado Tarea:
Dar prioridad a los casos de uso .
Una vez que se han encontrado los actores y los casos de uso , se describe con
detalle el flujo de sucesos de cada caso de uso . Las descripciones muestran
cómo interactúa el sistema con los actores y lo que hace el sistema en cada
caso individual.
Por último, se revisa el modelo de guiíón de uso completado (incluidas las
descripciones de los casos de uso ) y lo utilizan los desarrolladores y los
clientes a fin de ponerse de acuerdo sobre lo que debe llevar a cabo el sistema.
Cómo evitar la descomposición funcional
No es extraño que el modelo de caso de uso degenere en una descomposición
funcional del sistema. Para evitarlo, fíjese en los síntomas siguientes:
Casos de uso "pequeños", lo que significa que el flujo de sucesos sólo tiene
una o unas pocas sentencias.
"Muchos" casos de uso , lo que significa que el número de casos de uso es
algún múltiplo de cien, en lugar de un múltiplo de diez.
Nombres de casos de uso que son construcciones tales como "realice esta
operación en estos datos concretos", o bien, "realice esta función con estos
datos concretos". Por ejemplo, "Entre número de identificación personal en
un cajero automático" no se debe modelar como un caso de uso separado
para el cajero automático, puesto que nadie utiliza el sistema sólo para
hacer esto. Un caso de uso es un flujo de sucesos completo, cuyo resultado
es algo de valor para un actor.
A fin de evitar la descomposición, asegúrese de que el modelo de caso de uso
ayuda a responder preguntas como, por ejemplo:
¿Cuál es el contexto del sistema?
¿Por qué se ha construido el sistema?
¿Qué quiere conseguir el usuario al utilizar el sistema?
¿Qué valor añade el sistema a los usuarios?
Requisitos no funcionales
Resulta bastante fácil ver que los casos de uso son un procedimiento óptimo
para capturar requisitos funcionales en un sistema. Pero ¿qué sucede en el
caso de los requisitos no funcionales? ¿Qué son y dónde se capturan?
Especificaciones suplementarias
Este artefacto captura los requisitos del sistema que todavía no se han
capturado en los artefactos de requisitos de comportamiento como las
especificaciones de guión de uso.
Ejemplo:
En el Sistema de máquinas de reciclaje, un requisito no funcional que se
aplique al sistema completo podría ser:
La máquina sólo permite un usuario a la vez.
El dilema del qué frente al cómo
Una de las cosas más difíciles es aprender cómo determinar el nivel de detalle
de los casos de uso para "empezar y terminar". ¿Dónde se inician las
características y empiezan los casos de uso , y dónde termina el caso de uso y
empieza el diseño? Con frecuencia se ha indicado que los casos de uso o los
requisitos de software debe indicar lo que hace el sistema, pero no cómo lo
lleva a cabo. Considere el gráfico siguiente:
El caso de uso Crear tarea se incluye en el caso de uso Registrar pedido. Crear
tarea es un caso de uso abstracto.
En el Sistema de manipulación de almacén, el caso de uso abstracto Crear
tarea se incluye en el caso de uso Registrar pedido. Cuando se inicia Registrar
pedido, se crea una instancia de Registrar pedido que, aparte de seguir el flujo
de sucesos de Registrar pedido, también sigue el flujo de sucesos descrito en el
caso de uso Crear tarea incluido. Crear tarea nunca se ejecuta por sí mismo,
siempre como parte de Registrar pedido (o cualquier otro caso de uso en el que
se haya incluido). Por consiguiente, Crear tarea es un caso de uso abstracto.
Estructuración del modelo de caso de uso
Existen tres motivos principales para estructurar el modelo de caso de uso :
Para simplificar la comprensión de los casos de uso .
Para particionar el comportamiento común descrito en varios casos de uso .
Para simplificar el mantenimiento del modelo de caso de uso .
No obstante, la estructuración no es la primera cosa que debe hacer. No es
necesario estructurar los casos de uso hasta que se sepa un poco más sobre su
comportamiento, más allá de una descripción breve de una frase. Debe haber
establecido, al menos, un esquema paso a paso para el flujo de sucesos del
caso de uso con el objeto de garantizar que las decisiones se basan en la
comprensión bastante precisa del comportamiento.
Para estructurar los casos de uso , existen tres tipos de relaciones. Debe
utilizar dichas relaciones para descomponer en factores fragmentos de los
casos de uso que se pueden reutilizar en otros casos de uso , o que son
especializaciones u opciones del caso de uso . El caso de uso que representa la
modificación se denomina caso de uso de adición. El caso de uso que se
modifica se denomina caso de uso de base.
Si alguna parte del caso de uso de base representa una función y el caso de
uso sólo depende del resultado de ésta, no del método utilizado para
generar el resultado, puede descomponer en factores dicha parte en un caso
El diagrama de caso de uso muestra parte del modelo de caso de uso para un
Sistema de gestión de pedidos.
En la tabla siguiente se muestra una comparación más detallada entre las tres
relaciones de casos de uso diferentes:
Generalizac
Pregunta Ampliación Inclusión
ión
El caso de
El caso de El caso de uso de
¿Cuál es
uso de uso de base adición
la
adición hace hace (hijo) hace
dirección
referencia al referencia al referencia al
de la
caso de uso caso de uso caso de uso
relación?
de base. de adición. de base
(padre).
¿La Sí, en la No. Si se No.
relación parte de la desea incluir
el mismo
segmento de
comportami
ento más de
tiene
una vez, se
multiplicid adición.
debe
ad?
establecer
en el caso
de uso de
base.
No. Si se
desea
expresar
una
¿La condición en
relación la inclusión,
Sí. No.
tiene una se debe
condición? indicar
explícitamen
te en el caso
de uso de
base.
Con
¿El caso Con
frecuencia
de uso de frecuencia
sí, pero no Sí.
adición es no, pero
necesariame
abstracto? puede serlo.
nte.
¿Modifica La La inclusión Las
la adición ampliación modifica instancias
el caso de modifica explícitamen que se crean
uso de implícitamen te el efecto del caso de
base? te el del caso de uso de base
comportamie uso de base. (padre) no
nto del caso afectan al
de uso de hijo. Para
base. obtener los
efectos de la
adición, se
deben crear
instancias
del caso de
uso de base
(hijo).
¿El caso
de uso de
base debe
Junto con Si es
ser
Sí. las abstracto,
completo
adiciones, sí. no.
y
significativ
o?
¿El caso
de uso de
adición Junto con el
debe ser caso de uso
No. No.
completo de base
y (padre), sí.
significativ
o?
¿El caso
de uso de
No. La
adición
inclusión Sí, por parte
puede
está de los
acceder a
Sí. encapsulada mecanismos
los
, y sólo se de herencia
atributos
"ve" a sí normales.
del caso
misma.
de uso de
base?
¿El caso No. El caso No. El caso No. En este
de uso de de uso de de uso de sentido, el
Este gráfico muestra la jerarquía del modelo de caso de uso . Las flechas
indican posibles propiedades.
¿Los casos de uso siempre están relacionados con actores?
La ejecución de cada caso de uso incluye la comunicación con uno o más
actores. Un actor que solicita al sistema que lleve a cabo una acción
determinada inicia siempre las instancias de caso de uso . Esto implica que
todos los casos de uso deben tener asociaciones de comunicación con actores.
El motivo de esta regla es reforzar el sistema para proporcionar sólo la
funcionalidad que necesitan los usuarios, y nada más. Tener casos de uso que
nadie solicita, indica que existe algún error en el modelo de caso de uso o en
los requisitos.
Sin embargo, esta regla tiene algunas excepciones:
Si el caso de uso es abstracto (no se pueden crear instancias del mismo por
separado), su comportamiento puede no incluir la interacción con actores.
En este caso, no existe ninguna asociación de comunicación con actores
desde el caso de uso abstracto.
Un caso de uso hijo en una relación de generalización no necesita tener un
actor asociado al mismo si el caso de uso padre describe la comunicación
con todos los actores.
Un caso de uso de base en una relación de inclusión no necesita tener un
actor asociado al mismo si el caso de uso de inclusión describe la
comunicación con todos los actores.
Un caso de uso se puede iniciar según una planificación (por ejemplo, una
vez a la semana o una vez al día), lo que significa que el reloj del sistema es
el iniciador. El reloj del sistema es interno del sistema, y un actor no inicia el
caso de uso , sino que lo inicia un suceso interno del sistema. Si no se
produce ninguna otra interacción de los actores en el caso de uso , no tiene
ninguna asociación con los actores. Sin embargo, para mayor claridad,
puede utilizar un actor ficticio, "Hora", a fin de mostrar el modo en el que se
inicia el caso de uso en los diagramas de caso de uso .
Descripción de inspección
La descripción de inspección del modelo de caso de uso debe:
Establecer cuáles son los casos de uso principales del sistema (el motivo por
el que se ha construido el sistema).
Resumir hechos técnicos importantes sobre el sistema.
Señalar las delimitaciones del sistema - cosas se espera que no haga el
sistema.
Resumir el entorno del sistema, por ejemplo, las plataformas de destino y el
software existente.
Describir todas las secuencias en las que se ejecutan normalmente los casos
de uso en el sistema.
Especificar la funcionalidad que no maneja el modelo de caso de uso .
Ejemplo:
A continuación, se incluye un ejemplo de una descripción de inspección del
modelo de caso de uso de la Máquina de reciclaje:
Este modelo contiene tres actores y tres casos de uso . El caso de uso principal
es Elementos de reciclaje, que representa el objetivo más importante de la
máquina de reciclaje.
Explicación
En esta definición hay numerosas palabras clave:
Instancia de guión de uso. La secuencia a la que se hace referencia en la
definición es, en realidad, un flujo de sucesos específico a través del
sistema, o una instancia. Puede haber varios flujos de sucesos, y muchos de
ellos pueden ser muy similares. Para que el modelo de guiones de uso sea
comprensible, debe agrupar flujos de sucesos similares en un guión de uso.
Identificar y describir un guión de uso significa, en realidad, identificar y
describir un grupo de flujos de sucesos relacionados.
Ejecuciones del sistema. Significa que el sistema proporciona el guión de
uso. Un actor se comunica con una instancia de guión de uso del sistema.
Un valor de resultado observable. Puede transferir un valor en un guión
de uso ejecutado satisfactoriamente. Un guión de uso debe asegurarse de
que un actor puede realizar una tarea que tiene un valor identificable. Es
muy importante al identificar la granularidad o el nivel correcto para un
guión de uso. El nivel correcto hace referencia a conseguir guiones de uso
que no sean demasiado pequeños. En circunstancias determinadas, puede
utilizar un guión de uso como una unidad de planificación en una
organización que incluya personas que son actores en el sistema.
paso a paso. Los criterios para tomar esta decisión se basan en que no se
observan desacuerdos entre el tipo de lectores del usuario sobre lo que significa
el guión de uso, y que los diseñadores y los verificadores se siente satisfechos
con el nivel de detalle que proporciona el formato paso a paso. Por ejemplo, lo
guiones de uso que describen la recuperación o entrada simple de algunos datos
del sistema.
Ámbito de un guión de uso
A menudo resulta difícil decidir si un conjunto de interacciones de usuario-
sistema, o diálogo, son uno o varios guiones de uso. Considere el uso de una
máquina de reciclaje. El cliente inserta elementos de depósito como, por
ejemplo, latas, botellas y cajas en la máquina de reciclaje. Una vez que ha
insertado todos los elementos de depósito, pulsa un botón y se imprime un
recibo. A continuación, puede intercambiar el recibo por dinero.
¿Hay un guión de uso para insertar un elemento de depósito y otro guión de uso
para solicitar el recibo? O bien, ¿está todo en un guión de uso? Hay dos
acciones, pero la una sin la otra tienen escaso valor para el cliente. Más bien, lo
que tiene valor para el cliente (y tiene sentido para él), es un diálogo completo
con todas las inserciones y la obtención del recibo. Por ello, el diálogo completo,
desde la inserción del primer elemento de depósito hasta que pulsa el botón para
obtener el recibo, es un guión de uso completo, un solo guión de uso.
Además, es posible que desee mantener juntas las dos acciones, a fin de
revisarlas al mismo tiempo, modificarlas y probarlas juntas, escribir manuales y,
en general, gestionarlas como una unidad. Esto se convierte en una cuestión
obvia en los sistemas más grandes.
Cómo se realizan los guiones de uso
Un guión de uso describe lo que sucede en el sistema cuando un actor interactúa
con el sistema para ejecutar el guión de uso. El guión de uso no define cómo
ejecuta el sistema internamente sus tareas en términos de objetos de
colaboración. Este aspecto se deja para que lo muestren las realizaciones de los
guiones de uso.
Ejemplo:
En el ejemplo del teléfono, el guión de uso indica, entre otras cosas, que el
sistema emite una señal cuando se descuelga el receptor y que entonces el
sistema recibe dígitos, busca la parte receptora, llama a su teléfono, conecta la
llamada, transmite la conversación, y así sucesivamente.
La estructura típica del flujo de sucesos. La flecha recta representa el flujo básico
de sucesos y las curvas representan vías de acceso alternativas en relación con
lo normal. Algunas vías de acceso alternativas vuelven al flujo básico de sucesos,
mientras que otras finalizan el guión de uso.
Los flujos de sucesos básico y alternativo se deben estructurar más en pasos o
subflujos. Al hacerlo, el objetivo principal debe ser la legibilidad del texto
(consulte también el apartado Flujo de sucesos - Estilo, que se encuentra más
abajo). Como norma general, el subflujo debe ser un segmento de
comportamiento del guión de uso con un objetivo claro, y es global en el sentido
que se realizan o todas o ninguna de las acciones descritas. Es posible que
necesite varios niveles de subflujos, pero si puede lo debe evitar, puesto que el
Ejemplo:
Éste es un subflujo alternativo del guión de uso Devolver elementos del Sistema
de máquinas de reciclaje.
2.2. Desmontaje del panel frontal
Si alguien desmonta el panel frontal de la Máquina de reciclaje, la compresión de
latas se desactiva. Resulta imposible iniciar la compresión de latas con el panel
frontal extraído. La extracción también activa una alarma para el operador. Una
vez que se haya vuelto a cerrar el panel frontal, la máquina reinicia el
funcionamiento a partir de la ubicación del flujo de sucesos básico en el que se
había detenido.
Puede resultar tentador, si el flujo de sucesos alternativo es muy simple,
describirlo sólo en la sección del flujo de sucesos básico (utilizando alguna
construcción "si-entonces-lo otro" informal). Se debe evitar. Demasiadas
alternativas dificultan que se vea el comportamiento normal. Además, si se
incluyen vías de acceso alternativas en la sección del flujo de sucesos básico, el
texto es más "similar a un seudocódigo", por lo que resulta más complicado de
leer.
Por lo general, al extraer partes del flujo de sucesos y describir dichas partes por
separado, se puede mejorar la legibilidad del flujo de sucesos básico, así como la
estructura del guión de uso y del modelo de guión de uso. Puede modelar las
partes extraídas como:
Un flujo de sucesos alternativo dentro del guión de uso de base si es una
variante, opción o excepción simple del flujo de sucesos básico.
Como una inclusión explícita en el guión de uso de base (consulte el
apartado Directriz de producto de trabajo: Relación de inclusión), si desea
encapsularlo de modo que lo puedan reutilizar otros guiones de uso.
Como una inclusión implícita en el guión de uso de base (consulte el
apartado Directriz de producto de trabajo: Relación ampliada), si el flujo de
sucesos básico está completo, es decir, tienen un principio y un final
definidos. La naturaleza del flujo de ampliación debe ser tal que se prefiera
ocultarlo en la descripción del guión de uso de base para convertirlo en
menos complejo.
Un subflujo del flujo de sucesos básico, posiblemente como otra opción, si
no se aplica ninguna de las alternativas anteriores. Por ejemplo, en un guión
de uso Mantener información de los empleados, puede haber subflujos
separados para añadir, suprimir y modificar información de los empleados.
Descripción del guión de uso: En este estilo, el texto resulta fácil de leer y el
flujo de sucesos es fácil de seguir. Propóngase este estilo en sus descripciones.
Ejemplo 2:
error).
A continuación, se notifica a la interfaz de usuario que se ha
creado una nueva Orden y recibe una referencia a la nueva orden a
fin de que se pueda visualizar.
Requisitos especiales
En los Requisitos especiales de un guión de uso, puede describir todos los
requisitos del guión de uso que no tratan los flujos de sucesos. Hay requisitos no
funcionales que influyen en el modelo de diseño. Consulte también la discusión
sobre requisitos no funcionales en el apartado Directriz de producto de trabajo:
Modelo de guión de uso. Si lo desea, puede organizar estos requisitos por
categorías como, por ejemplo, Utilización, Fiabilidad, Rendimiento y Condición de
sustitución pero, por lo general, hay tan pocos que este tipo de agrupación no
añade especialmente valor.
Ejemplo:
En el Sistema de máquinas de reciclaje, un requisito especial del guión de uso
Devolver elementos de depósito podría ser:
La máquina debe poder reconocer elementos de depósito con una fiabilidad de
más del 95 por ciento.
Condiciones previas y posteriores
Una condición previa es el estado del sistema y su entorno necesario para que se
pueda iniciar el guión de uso. Una condición posterior son los estados en los que
se puede encontrar el sistema una vez que ha finalizado el guión de uso.
Considere lo siguiente:
Los estados que describen las condiciones previas y posteriores deben ser
estados que pueda observar el usuario. "El usuario ha iniciado la sesión en el
sistema", o bien, "El usuario ha abierto el documento" son ejemplos de
estados observables.
Una condición previa es una restricción sobre el momento en el que se
iniciar un guión de uso. No es el suceso que inicia el guión de uso.
Una condición previa para un guión de uso no es una condición previa sólo
para un subflujo, aunque se pueden definir condiciones previas y posteriores
a nivel del subflujo.
Una condición posterior para un guión de uso debe ser verdadera,
independientemente de los flujos alternativos que se ejecuten: no debe ser
verdadera sólo para el flujo principal. Si algo diera error, se podría tratar en
la condición posterior indicando "La acción se ha completado, o bien, si algo
da error, la acción no se ha llevado a cabo", en lugar de indicar,
simplemente, "La acción se ha completado".
solicitado, o no, el receptor. Una descripción del punto de ampliación del guión
de uso Establecer llamada podría ser similar a la siguiente:
Nombre: Mostrar identidad
Ubicación: Después de la sección 1.9 Llamada al teléfono de la parte receptora.
Diagramas de guión de uso
Si lo desea, puede elegir un diagrama de guión de uso para ilustrar cómo se
relaciona un guión de uso con actores y otros guiones de uso (en casos
extraordinarios, más de un diagrama), propiedad del guión de uso. Resulta útil si
el guión de uso está relacionado con varios actores o tiene relaciones con otros
guiones de uso. Un diagrama de este tipo tiene carácter "local", puesto que
muestra el modelo de guión de uso desde la perspectiva de un solo guión de
uso, y su finalidad no es explicar ningún hecho general sobre el modelo de guión
de uso completo. Consulte también el apartado Directriz de producto de trabajo:
Diagrama de guión de uso.
Los diagramas con actores, guiones de uso y relaciones entre ellos se denominan diagramas de
directriz se identifica donde utilizarlas.
Explicación
Los diagramas con actores, guiones de uso y relaciones entre ellos se
denominan diagramas de guión de uso e ilustran las relaciones en el modelo de
guión de uso.
Los diagramas de guión de uso se pueden organizar en (y ser propiedad de)
paquetes de guiones de uso, mostrando sólo lo que es relevante en un paquete
concreto.
Utilización
No existen reglas estrictas sobre qué ilustrar en los diagramas de guión de uso.
Muestre las relaciones que considere interesantes en el modelo. Los diagramas
siguientes pueden resultar interesantes:
Actores que pertenecen al mismo paquete de guiones de uso.
Un actor y todos los guiones de uso con los que interactúa. Un diagrama de
este tipo puede funcionar como diagrama local del actor, y es posible que
esté relacionado con este.
Los guiones de uso que manejan la misma información.
Los guiones de uso utilizados por el mismo grupo de actores.
Los guiones de uso que se ejecutan a menudo en una secuencia.
Los guiones de uso que pertenecen al mismo paquete de guiones de uso.
Los guiones de uso más importantes. Un diagrama de este tipo puede
funcionar como resumen del modelo, y es posible que se incluya en la vista
de guión de uso.
Los guiones de uso desarrollados juntos (dentro del mismo incremento).
Un guión de uso específico y sus relaciones con actores y otros guiones de
uso. Un diagrama de este tipo puede funcionar como diagrama local del
guión de uso, y es posible que esté relacionado con este.
Se recomienda incluir todos los actores, guiones de uso y relaciones en, como
mínimo, uno de los diagramas. Si aclara el modelo de guión de uso, pueden
formar parte de varios diagramas y puede mostrarlos varias veces en el mismo
diagrama.
Directriz: Asociación-comunicar
Una asociación-comunicar modela como los guiones de uso y los actores
interactúan enviando señales entre si. En esta directriz se explica cómo
utilizar esta relación.
Explicación
Los guiones de uso y los actores interactúan enviando señales entre si. Para
indicar estas interacciones, utilizamos una asociación-comunicar entre
guión de uso y actor. Un guión de uso tiene, como máximo, una asociación-
comunicar con un actor específico, y un actor tiene, como máximo, una
asociación-comunicar con un guión de uso específico, sin importar cuantas
transmisiones de señal existen. La red completa de estas asociaciones es una
imagen estática de la comunicación entre el sistema y su entorno.
Las asociaciones-comunicar no son nombres. Como sólo puede existir una
asociación-comunicar entre un guión de uso y un actor, sólo debe especificar
los puntos de inicio y final para identificar una asociación-comunicar concreta.
Una línea o flecha entre un actor y un guión de uso indica que interactúan
enviando señales entre si.
Roles
Cada extremo de una asociación-comunicar es un rol que especifica la cara
que juega un guión de uso o un actor en la asociación. Los roles se utilizan
para especificar multiplicidades y direcciones de la asociación (vea a
continuación).
Multiplicidad
Cada rol de una asociación-comunicar indica la multiplicidad de su tipo, es
decir, cuántas instancias de ese actor o guión de uso se puede asociar con
una instancia del otro guión de uso o actor. La multiplicidad se indica con una
expresión de texto en el rol. La expresión es una lista de rangos enteros
separados por comas. Un rango se indica con un entero (el valor más bajo),
dos puntos y un entero (el valor más alto); un único entero es un rango
válido, y el símbolo '*' indica "muchos", es decir, un número de objetos
ilimitado. El símbolo '*' por si mismo equivale a '0..*', es decir, cualquier
número que incluya ninguno; el valor por omisión. Un rol escalar opcional
tiene la multiplicidad 0..1.
La multiplicidad se puede aumentar con una restricción de unidad de tiempo.
Esto se efectúa para indicar cuántas instancias se pueden asociar,
posiblemente por diferentes instancias, durante la unidad de tiempo. Esta
información resulta útil porque indica si el guión de uso se realiza a menudo,
y con qué frecuencia cada instancia de actor emplea el guión de uso.
Ejemplo:
Navegabilidad
Cada rol de una asociación-comunicar tiene una propiedad navegabilidad,
que indica quien inicia la comunicación en la interacción. La navegabilidad se
muestra con una punta de flecha abierta. Si la punta de flecha apunta a un
guión de uso, el actor del otro extremo de la asociación inicia la interacción
con el sistema. Si la punta de flecha apunta a un actor, el sistema inicia la
interacción con el actor. La navegabilidad en dos direcciones se muestra con
una línea sin puntas de flecha (dos puntas de flecha tienden a desordenar los
diagramas).
Convenios opcionales
Los siguientes son convenios opcionales que aclaran qué actor inicia el guión
de uso.
La punta de flecha que inicia el actor-a-guión-de-uso siempre se muestra,
incluso si el guión de uso posterior inicia la comunicación con el actor que lo
inicia. También es la única punta de flecha actor-a-guión-de-uso que se
muestra.
Las puntas de flecha del guión de uso a los actores se pueden omitir, o
pueden incluirse como aclaración.
Explicación
Varios actores pueden realizar el mismo rol en un guión de uso concreto. Así,
un Cajero y un Contable, que comprueban el balance de una cuenta, se
consideran como la misma entidad externa del guión de uso que realiza la
comprobación. El rol compartido está modelado como actor, Supervisor de
balances, heredado de dos actores originales. Esta relación se muestra con las
generalizaciones de actor.
Los actores Cajero y Contable heredan todas las propiedades del Supervisor de
balances. Por lo tanto, estos actores pueden actuar como Supervisores de
balances.
Utilización
Un usuario puede desempeñar diferentes roles respecto al sistema, lo que
significa que el usuario puede, en realidad, corresponder a varios actores. Para
aclarar el modelo, puede representar al usuario como un actor que hereda
varios actores. Cada actor heredado representa uno de los roles del usuario
relativo al sistema.
Explicación
Un guión de uso padre se puede especializar en uno o más guiones de uso hijos
que representen formatos del padre más específicos. Ni el padre ni el hijo
tienen que ser, necesariamente, abstractos, aunque en la mayoría de casos el
padre es abstracto. Un hijo hereda toda la estructura, el comportamiento y las
relaciones del padre. Todos los hijos del mismo padre son especializaciones del
padre. Se trata de una generalización que se puede aplicar a los guiones de uso
(para obtener más información sobre el concepto de generalización tal como se
aplica a las clases, consulte el apartado Directriz: Generalización).
La generalización se utiliza cuando se encuentran dos o más guiones de uso
que tienen puntos comunes en el comportamiento, la estructura y el objetivo.
Cuando sucede, puede describir las partes compartidas en un nuevo guión de
uso, con frecuencia abstracto que, a continuación, se especializa por medio de
guiones de uso hijos.
Ejemplo:
Los guiones de uso Pedido por teléfono y Pedido por Internet son
especializaciones del guión de uso abstracto Hacer pedido.
En un sistema de Gestión de pedidos, los guiones de uso Pedido por teléfono y
Pedido por Internet comparten mucho en cuanto a estructura y
comportamiento. Un guión de uso general Hacer pedido se define en que se ha
definido la estructura y el comportamiento común. El guión de uso abstracto
Hacer pedido no tiene que completarse por sí mismo, pero proporciona una
infraestructura de comportamiento general que pueden completar los guiones
de uso hijos.
El guión de uso padre no siempre es abstracto.
Ejemplo:
Considere el sistema Gestión de pedidos del ejemplo anterior. Se puede añadir
un actor Encargado del registro de pedidos, que pueda entrar pedidos en el
sistema en nombre de un cliente. Este actor inicia el guión de uso Hacer pedido
general, que ahora debe tener un flujo de sucesos completo descrito. El guión
de uso hijo puede añadir comportamiento a la estructura que proporciona el
guión de uso padre, y también puede modificar comportamiento del padre.
Los guiones de uso Hacer llamada local y Hacer llamada internacional heredan
del guión de uso abstracto Hacer llamada.
Explicación
La relación de inclusión conecta un guión de uso de base a un guión de uso de
inclusión. El guión de uso de inclusión siempre es abstracto. Describe un
segmento del comportamiento que se inserta en una instancia de guión de uso
que ejecuta el guión de uso de base. El guión de uso de base tiene control de la
relación para la inclusión y puede depender del resultado de que se lleve a cabo
la inclusión, pero ni la base ni la inclusión pueden acceder a los atributos entre
sí. En este sentido, la inclusión está encapsulada y representa el
comportamiento que se puede reutilizar en guiones de uso de base diferentes.
La relación de inclusión se puede utilizar para lo siguiente:
Descomponer en factores el comportamiento del guión de uso de base que
no sea necesario para la comprensión del objetivo principal del guión de uso,
lo único importante es el resultado.
Descomponer en factores el comportamiento que sea común a dos o más
guiones de uso.
Ejemplo:
En un sistema de cajero automático, los guiones de uso Retirar dinero, Ingresar
dinero en efectivo y Transferir fondos necesitan incluir cómo se identifica el
cliente en el sistema. Este comportamiento se puede extraer en un nuevo guión
de uso de inclusión llamado Identificar cliente, que incluyen los tres guiones de
uso de base. Los guiones de uso de base son independientes del método que se
utiliza para la identificación y, por este motivo, se encapsula en el guión de uso
de inclusión. Desde la perspectiva de los guiones de uso de base, no importa si
el método para la identificación va a leer una tarjeta bancaria magnética, o
bien, si va a realizar un reconocimiento de retina. Sólo dependen del resultado
de Identificar cliente, que es la identidad del cliente. Y viceversa, desde la
perspectiva del guión de uso Identificar cliente, no importa cómo utiliza el
guión de uso de base la identidad del cliente ni lo que sucede en el mismo
antes de ejecutar la inclusión; el método para la identificación sigue siendo
exactamente el mismo.
ninguna relación entre los guiones de uso de base. Pueden incluso existir varias
relaciones de inclusión entre el mismo guión de uso de inclusión y el guión de
uso de base, siempre que la inclusión se haya insertado en ubicaciones
diferentes del guión de uso de base. La relación de inclusión define la
ubicación. Se pueden anidar todas las adiciones, lo que significa que un guión
de uso de inclusión puede servir como guión de uso de base para otra
inclusión.
Puesto que los guiones de uso de inclusión son abstractos, no necesitan un
actor asociado. Sólo se necesita una asociación de comunicación con un actor si
el comportamiento en la inclusión implica, explícitamente, la interacción con un
actor.
Ejecución de la inclusión
El comportamiento de la inclusión se inserta en una ubicación del guión de uso
de base. Cuando una instancia de guión de uso que sigue la descripción de un
guión de uso de base llega a una ubicación del guión de uso de base del que se
ha definido la relación de inclusión, sigue la descripción del guión de uso de
inclusión. Una vez llevada a cabo la inclusión, la instancia de guión de uso se
reanuda a partir del punto en el que dejó el guión de uso de base.
Explicación
llamada. Un esquema paso a paso del flujo de sucesos básico tendría un aspecto
similar al siguiente:
1. El llamador levanta el receptor.
2. El sistema presenta tono de marcado.
3. El llamador marca un dígito.
4. El sistema desactiva el tono de marcado.
5. El llamador marca el resto del número.
6. El sistema analiza dígitos, determina la dirección de red del receptor.
7. El sistema analiza los dígitos y determina la ubicación de la red en la que se
encuentra el receptor.
8. A continuación, el sistema determina si se puede establecer un circuito
virtual al receptor.
9. Si se puede establecer un circuito virtual, el sistema llama al teléfono del
receptor y presenta el tono de marcado en el teléfono del llamador.
10. Cuando el receptor responde al teléfono, el sistema inhabilita el tono de
marcado del teléfono del llamador, detiene tono de marcado del teléfono del
receptor y completa el circuito virtual.
11. El sistema inicia un registro de facturación, registra la hora de inicio de la
llamada, los puntos finales de la llamada y la información de cliente del
llamador.
12. La llamada continúa durante un lapso de tiempo determinado. Cuando o el
llamador o el receptor se desconectan de la llamada, el sistema registra la
hora final de la misma, libera todos los recursos necesarios para dar soporte
al circuito virtual y, a continuación, finaliza el guión de uso.
Para añadir funciones a este sistema de modo que permita que el llamador o el
receptor puedan conectar un tercero en la llamada (con frecuencia llamado
"teleconferencia"), se debe añadir comportamiento al flujo de sucesos. Una
alternativa, y la primera que se va a tener en cuenta, consiste en situar las
diferencias directamente en Establecer llamada. Dichas diferencias se podrían
modelar por medio de flujos de sucesos alternativos, tal como se describe en el
apartado Directriz de producto de trabajo: Guión de uso. La solución funciona
con las adiciones más sencillas, siempre que la funcionalidad añadida no
confunda ni oculte el significado original del guión de uso. La otra alternativa
consiste en separar las diferencias en un guión de uso de ampliación abstracto
denominado Establecer teleconferencia que amplíe el guión de uso de base.
El guió de uso Establecer llamada tendría la adición siguiente:
Puntos de ampliación:
Teleconferencia se produce después del paso 11.
El guión de uso de ampliación, Establecer teleconferencia, se podría describir del
modo siguiente:
Guión de uso Establecer teleconferencia
Este guión de uso amplia Establecer llamada. Se ha insertado en el punto de
ampliación Teleconferencia.
Flujo básico:
1. El llamador pulsa el botón de colgar, enlace o señal.
2. El sistema genera 3 pitidos cortos como confirmación.
3..12.<estos pasos son idénticos a los pasos 3..12 del guión de uso de base>
13. El llamador se vuelve a conectar al receptor del guión de uso Establecer
llamada.
Se desaconseja que los pasos 3..12 sean comunes con el guión de uso. Un
modo de resolverlo consiste en descomponer en factores la parte común como
un guión de uso de inclusión (consulte el apartado Directriz de producto de
trabajo: Relación de inclusión).
Modelo de análisis
Responsable:
Arquitecto de software
Clase de análisis
Responsable:
Diseñador
Las clases de análisis especifican los elementos de un modelo casi conceptual para
'cosas del sistema que tienen responsabilidades y comportamiento'. Representan
clases prototípicas del sistema, y son un primer paso de las abstracciones
principales que el sistema debe manejar. Las clases de análisis se pueden mantener
por su propio derecho, si se desea una visión general de alto nivel y conceptual del
sistema. Las clases de análisis también ocasionan las principales abstracciones del
diseño del sistema: las clases de diseño y los subsistemas del sistema.
Clase de límite
Una clase de límite es una clase que se utiliza para modelar la interacción entre
el entorno del sistema y los trabajos internos. Tal interacción implica la
transformación y la traducción de sucesos y cambios de notación en la
presentación del sistema (como la interfaz).
Las clases de límite modelan los componentes del sistema que dependen del
entorno. Las clases de entidad y las de control modelan los componentes que
son independientes del entorno del sistema. Por lo tanto, cambiar la GUI o el
protocolo de comunicación debe significar cambiar sólo las clases de límite, no
las clases de control y de entidad.
Las clases de límite también facilitan la compresión del sistema porque aclaran
los límites del sistema. Ayudan en el diseño proporcionando un buen punto de
partida para identificar los servicios relacionados. Por ejemplo, si identifica una
interfaz de la impresora pronto en el diseño, podrá ver que también debe
modelar el formato de las salidas impresas.
Las clases de límites comunes incluyen ventanas, protocolos de comunicación,
interfaces de impresoras, sensores y terminales. No tiene que modelar
Para cada "dispositivo-actor", cree una clase de límite para capturar las
responsabilidades del dispositivo o sensor. Si ya existe una interfaz bien definida
para el dispositivo, téngala en cuenta para una posterior referencia durante el
diseño.
Clase de control
Una clase de control es una clase que se utiliza para modelar el
comportamiento de control específico a uno o a varios guiones de uso. Los
objetos de control (instancias de clases de control) a menudo controlan otros
objetos, para que el comportamiento sea de tipo de coordinación. Las clases de
control resumen el comportamiento de guión de uso específico.
El comportamiento de un objeto de control está estrechamente relacionado con
la ejecución de un guión de uso específico. En muchos casos de ejemplo, incluso
puede decir que los objetos de control "ejecutan" las ejecuciones de guión de
uso de análisis. Sin embargo, algunos objetos de control pueden participar en
más de una ejecución de guiones de uso de análisis si las tareas de guión de uso
están fuertemente relacionadas. Además, varios objetos de control de diferentes
clases de control pueden participar en un guión de uso. No todos los guiones de
uso requieren un objeto de control. Por ejemplo, si el flujo de sucesos en un
guión de uso está relacionado con un objeto de entidad, un objeto de límite
puede realizar el guión de uso en colaboración con el objeto de entidad. Puede
empezar identificando una clase de control por ejecución de guiones de uso de
análisis y, a continuación, perfeccionando esto a medida que se identifican más
ejecuciones de guiones de uso de análisis y se descubren más similitudes.
Las clases de control pueden contribuir en la comprensión del sistema porque
representan las dinámicas del sistema, gestionando las tareas principales y los
flujos de control.
Cuando el sistema efectúa el guión de uso, se crea un objeto de control. Los
objetos de control habitualmente mueren cuando el guión de uso
correspondiente se ha llevado a cabo.
Tenga en cuenta que una clase de control no maneja todo lo necesario en un
guión de uso. En cambio, coordina las tareas de otros objetos que implementan
la funcionalidad. La clase de control delega trabajo a los objetos que se han
asignado a la responsabilidad de la funcionalidad.
Encontrar las clases de control
Clase de entidad
Una clase de entidad es una clase que se utiliza para modelar información y el
comportamiento asociado que debe almacenarse. Los objetos de entidad
(instancias de clases de entidad) se utilizan para mantener y actualizar la
información sobre algún fenómeno, como un suceso, una persona, o algún
objeto real. Habitualmente son persistentes, teniendo atributos y relaciones
necesarias durante un periodo prolongado, a veces para toda la vida del sistema.
Un objeto de entidad no suele ser específico para una ejecución de guiones de
uso de análisis; a veces, un objeto de entidad no es ni siquiera específico del
mismo sistema. Los valores de los atributos y relaciones suelen venir de un
actor. Un objeto de entidad también puede ser necesario para ayudar a realizar
tareas internas del sistema. Los objetos de entidad pueden tener un
comportamiento tan complicado como el de otros estereotipos de objeto. Sin
embargo, a diferencia de otros objetos, este comportamiento está fuertemente
relacionado con el fenómeno que representa el objeto de entidad. Los objetos de
entidad son independientes del entorno (los actores).
Los objetos de entidad representan conceptos clave del sistema que se está
desarrollando. Ejemplos típicos de las clases de entidad en un sistema bancario
son Cuenta y Cliente. En un sistema de manejo de red, los ejemplos
son Nodo y Enlace.
Si ninguna otra clase utiliza el fenómeno que desea modelar, puede modelarlo
como un atributo de una clase de entidad, o incluso como una relación entre
clases de entidad. Por otra parte, si otra clase utiliza el fenómeno en el modelo
de diseño, debe modelarlo como clase.
Las clases de entidad proporcionan otro punto de vista desde el cual se
comprende el sistema porque muestran la estructura de datos lógica, que puede
ayudarle a comprender qué se supone que ofrece el sistema a los usuarios.
Encontrar las clases de entidad
Las clases de entidad representan almacenes de información en el sistema; se
utilizan habitualmente para representar los conceptos clave que gestiona el
sistema. Los objetos de entidad suelen ser pasivos y persistentes. Sus
principales responsabilidades son almacenar y gestionar información en el
sistema.
Una fuente de inspiración frecuente para las clases de entidad son el Glosario
(desarrollado durante los requisitos) y un modelo de dominio empresarial
(desarrollado durante el modelado empresarial, si se efectúa modelado
empresarial).
Restricciones de uso de los estereotipos de asociación
Restricciones para clases de límite
Se permite lo siguiente:
Comunicar asociaciones entre dos clases de límite, por ejemplo, para
describir como una ventana específica está relacionada con otros objetos de
límite.
Comunicar o suscribir asociaciones de una clase de límite a una clase de
entidad, porque los objetos de límite pueden necesitar el seguimiento de
ciertos objetos de entidad entre acciones en el objeto de límite, o estar
informados de los cambios de estado en el objeto de entidad.
Comunicar asociaciones de una clase de límite a una clase de control, para
que el objeto de límite pueda desencadenar un comportamiento concreto.
Restricciones para clases de control
Se permite lo siguiente:
Comunicar o suscribir asociaciones entre clases de control y clases de
entidad, porque los objetos de control pueden necesitar el seguimiento de
ciertos objetos de entidad entre acciones en el objeto de control, o estar
informados de los cambios de estado en el objeto de entidad.
FromTo
Límite Entidad Control
(navegabilidad)
comunica
Límite comunica comunica
suscribe
comunica
Entidad
suscribe
comunica
Control comunica comunica
suscribe
Una clase con sólo una responsabilidad no es un problema, per se, pero
puede generar preguntas sobre porqué es necesaria. Esté preparado para
solicitudes de identificación y para justificar la existencia de todas las clases.
Modelo de diseño
Responsable:
Arquitecto de software
El proceso de arquitectura