Capítulo 3
Capítulo 3
Capítulo 3
Fase Elaboración
Al comienzo de esta fase recibimos de la primera fase un plan para la fase
elaboración, un modelo de casos de uso parcialmente completo y una descripción de la
arquitectura candidata, también contamos con un modelo de análisis y diseño
rudimentarios. Los cuales no sirven para ser reutilizados porque son tomados como guía
para elaborar con mayor profundidad a estos modelos sin llegar a ser completados en su
totalidad. Pero los mismos alcanzan para especificar la línea base de la arquitectura.
Detallamos este estudio en el párrafo que se describe el Análisis.
También podemos disponer de un prototipo para mostrar el funcionamiento del
sistema, debemos conocer cómo este prototipo ha sido diseñado solamente para mostrar
la funcionalidad primitiva del sistema y por lo tanto no se reutilizará.
Durante el diseño de la arquitectura recopilaremos, analizaremos, diseñaremos,
implementaremos y probaremos solamente aquellos requisitos relevantes desde el punto
de vista de la arquitectura. Apenas prestaremos atención a los detalles que no sean
significativos, postergándolos hasta la fase de la construcción. La línea base de la
arquitectura será simplemente un esqueleto.
El arquitecto establece la prioridad de los casos de uso y realiza la actividad de
análisis, diseño e implementación de la arquitectura del producto. Otros trabajadores
llevan a cabo actividades de diseño, analizarán clases y paquetes, y diseñarán las clases y
subsistemas.
Ahora no estamos buscando simplemente casos de uso para representar riesgos
críticos sino los casos de uso significativos desde el punto de vista de la arquitectura. En
esta fase se concluye con una línea base de arquitectura ejecutable, una línea base estable
sobre la que podamos añadir cosas en la fase de construcción.
3.1.1. Requisitos
El analista de sistemas identifica casos de uso y actores adicionales de aquellos
identificados en la fase de inicio. Aunque es necesario comprender alrededor del 80% de
los casos de uso para alcanzar los objetivos de esta fase no es necesario detallar toda esa
cantidad. Por comprender queremos decir aprender lo que es significativo desde el punto
de vista de la arquitectura y estar seguros de no haber pasado nada por alto que pueda
tener un impacto en la arquitectura o la apuesta económica.
Los casos de uso son seleccionados dependiendo de su funcionalidad importante o
crítica o porque impliquen algún requisito importante que deba desarrollarse pronto
dentro del ciclo de vida del software. La vista de arquitectura utiliza a los mismos como
entrada cuando los casos de uso se priorizan para su desarrollo (análisis, diseño e
implementación) dentro de cada iteración. Para estructurar los analistas utilizan
mecanismos de extensión o de generalización, logrando una visión mucho la clara y fácil
de entender los casos de uso.
3.1.3. Diseño
Es esta fase diseñaremos e implementaremos menos del 10 % de los casos de uso.
Solamente nos abocaremos a diseñar los casos de uso, clases y subsistemas que sean
arquitectónicamente significativos.
El arquitecto vuelve a considerar la capa software del sistema y la capa intermedia
seleccionando los productos que el va a utilizar finalmente.
Es necesario que trabaje en los niveles más altos de la arquitectura. Normalmente
intentará hacer de cada paquete de servicio del modelo de análisis un subsistema de
servicio en el diseño.
También traducirá las clases de análisis que sean interesantes desde el punto de vista
de la arquitectura y la describirá en la descripción de la arquitectura.
Deberá tomar contacto con las funcionalidades principales del sistema sobre su
concurrencia y distribución, estudiando los hilos y procesos necesarios y la red física de
procesadores y otros dispositivos. Transformará los objetos usados en los diagramas de
interacción en clases activas, las cuales serán asignadas a procesadores y otros
dispositivos.
Estos casos de uso significativos son diseñados en términos de subsistemas de
servicio y clases de diseño. Los paquetes y clases del análisis nos proporcionan una
forma directa de encontrar subsistemas y clases de diseño. Una vez encontrados
describiremos no sólo las responsabilidades que estos elementos de diseño deben asumir,
sino también el detalle de las interacciones entre ellos.
Diseñar las clases que participan en los casos de uso y sus conjuntos de escenarios
de realización significa detallar sin completar enteramente cada clase, ya que a su vez
estas mismas podrán participar en las futuras especificaciones de casos y sus
correspondientes escenarios de realizaciones.
Y los ingenieros de componentes diseñan los subsistemas resultantes del diseño de
la arquitectura.
Todos estos puntos serán expuestos detalladamente en la fase de construcción.
3.1.5. Pruebas
Empezar por las capas más bajas de la arquitectura significa probar los mecanismos
de distribución, almacenamiento, recuperación (persistencia) y concurrencia de objetos.
Lo que necesitamos probar que las capas superiores hacen uso de las inferiores.
Los ingenieros de pruebas seleccionarán los objetivos para evaluar la línea base de la
arquitectura. Tomando como base estos objetivos el ingeniero de pruebas evaluará los
casos de pruebas necesarios y preparará procedimientos de pruebas para comprobar la
sucesiva integración de los subsistemas hasta acabar con la línea base completa.
Estos ingenieros revisarán los resultados de las pruebas del sistema para verificar
cómo se cumplen los objetivos originales o para decidir cómo se deben modificar los
casos de pruebas con el objeto de alcanzar estos objetivos.
Todos estos puntos serán expuestos detalladamente en la fase de implementación.
3.3. Ejemplificación
Minuta 1.2.4.doc
Estructuración de los casos de uso desde el punto de vista del cliente
(funcional).
Laboratorio 1.1.5.ea
En el interior del paquete (“Modelo Caso Uso - “Laboratorio” –
“Depósito”) podemos observar el modelo de caso de uso para dicho
departamento, el cual está basado en requerimientos definidos en el documento
("Minuta 1.2.4.doc").
En este modelo realizamos la estructuración conceptual del modelo de caso
de uso (“Laboratorio 1.1.4”) desde la perspectiva del usuario. Existen cuatro
paquetes reflejando el ingreso y egreso de los movimientos del sector y cuatro
paquetes para administrar los ingresos y egresos.
Laboratorio 1.1.6.ea
La explicación de los diagramas de actividad complicaron el diálogo con los
usuarios, por lo tanto se construyeron dos cursogramas. En esta situación los
profesionales farmacéuticos poseían conocimientos administrativos
(organigramas, cursogramas, etc.) y a través de ellos se facilito el detalle de los
requerimientos del sistema.
En el modelo de casos de uso (“Modelo Caso Uso - “Laboratorio” –
“Depósito”) vemos la gráfica de colaboración (“Cursograma Ingreso Materia
Prima”) donde se detalla el movimiento de los documentos participantes en el
ingreso de materia prima.
Vínculo: Análisis
Durante el análisis estudiamos los requisitos descriptos en la captura de requisitos
refinándolos y estructurándolos.
El objetivo de hacerlo es conseguir una comprensión más precisa de los requisitos y
una descripción de los mismos para que sea más fácil de mantenerlos y nos ayude a
estructurar el sistema entero, incluyendo su arquitectura.
Si conseguimos llegar a un acuerdo con el cliente sobre lo que debería hacer el
sistema es probable que aún queden aspectos sin resolver relativos a los requisitos del
sistema. Este es el precio que hay que pagar por el uso del lenguaje intuitivo pero
impreciso del cliente durante la captura de requerimientos. Para comunicarnos
eficientemente con el cliente debemos tener en claro:
Los casos de uso deben mantenerse tan independientes unos de otros como sea
posible. Esto se consigue no quedando en detalles relativos a las interfaces,
concurrencias y conflictos entre los casos de uso cuando estos compiten por
recursos compartidos internos al sistema.
Los casos de uso deben describirse utilizando el lenguaje del cliente. Esto se
consigue fundamentalmente mediante el uso del lenguaje natural en las
descripciones de casos de uso y siendo cuidadosos al utilizar notaciones más
formales, como un diagrama de estados o actividad o interacción.
Deben estructurarse los casos de uso para poder armar una especificación de
funcionalidad completa e intuitiva reflejando los casos de uso reales que el
sistema proporciona. Por ejemplo, no deberían estructurarse en casos de uso
pequeños, abstractos y no intuitivo para minimizar redundancias. Por lo tanto, los
aspectos relativos a esas redundancias entre los requisitos descritos puede que
queden sin resolver durante la captura de requisitos.
En el análisis podemos razonar más los aspectos internos del sistema y por lo tanto
resolver los aspectos relativos a la interferencia de casos de uso. También podemos
utilizar un lenguaje más natural para reflejar los detalles relativos a los requisitos del
sistema.
Además en el análisis podemos estructurar los requisitos de manera que nos facilite
su comprensión, preparación, modificación y en general su mantenimiento. Esta etapa se
basa en clases de análisis y paquetes, la cual es independiente de la estructura que se dio
en los requisitos (basada en casos de uso).
Artefactos
≈ Clase interfaz
Estas clases se utilizan para modelar la interacción entre el sistema y sus
actores (usuarios y sistemas externos), clarifican y reúnen los requisitos en los
límites del sistema. Deben mantener un nivel conceptual describiendo lo que
se obtiene con la interacción (informaciones y peticiones que se intercambian
entre el sistema y sus actores). Sin ser necesario que se describan como se
ejecutan físicamente estas interacciones.
Las clases de interfaz a menudo representan abstracciones de ventanas,
formularios, paneles, interfaces de comunicación, interfaces de impresoras,
sensores, terminales y API.
≈ Clase entidad
Se utilizan para modelar información que posee una larga vida y que es a
menudo persistente. Modelando la información y el comportamiento asociado
de algún fenómeno o concepto. En la mayoría de los casos las clases entidad
se derivan directamente de una clase de entidad del negocio o domino
correspondiente.
Un objeto entidad no ha de ser necesariamente pasivo y puede tener en
ocasiones un comportamiento complejo relativo a la información que
representa. Las clases entidad suelen mostrar una estructura de datos lógica y
contribuyen a comprender cuál es la información dependiente el sistema.
≈ Clase control
Representan coordinación, secuencia, transacciones y control de otros
objetos, se usan con frecuencia para encapsular el control de un caso de uso
concreto. Las clases de control también se utilizan para representar
derivaciones y cálculos complejos que no pueden asociarse con ninguna
información concreta, de larga duración, almacenada por el sistema.
Los aspectos dinámicos del sistema se modelan con clases de control
porque ellas manejan y coordinan las acciones y los flujos de control
principales, delegando trabajo a otros objetos (interfaz y entidad).
≈ Diagramas de clases
Una clase de análisis y sus objetos normalmente participan en varias
realizaciones de casos de uso, y algunas de las responsabilidades, atributos y
asociaciones de una clase concreta suelen ser relevantes para una única
realización de caso de uso-análisis. De esta manera adjuntamos diagramas de
clases a las realizaciones de casos de uso, mostrando sus clases participantes y
sus relaciones.
≈ Diagrama de interacción
En los diagramas de colaboración, mostramos las interacciones entre
objetos creando enlaces entre ellos y añadiendo mensajes a esos enlaces. El
nombre del mensaje debería denotar el propósito del objeto invocante en la
interacción con el objeto invocado. Con los diagramas de colaboración en el
análisis podemos identificar requisitos y responsabilidades, y no identificar
secuencias de interacción detalladas y ordenadas cronológicamente (para ello
utilizamos diagramas de secuencias).
En relación con la creación y finalización de los objetos del análisis
dentro de la realización de un caso de uso podemos observar:
Un objeto interfaz no tiene porque ser particular de una realización de
caso de uso, pero a menudo se crean y se finalizan dentro de una sola
realización
Un objeto entidad suele tener una vida larga y participa en una o
varias realizaciones de caso de uso antes de su destrucción
Un objeto de control suele encapsular el control asociado con un caso
de uso concreto, lo cual implica que debería crearse cuando el caso de
uso comienza y ese objeto de control debería destruirse cuando
termina el caso de uso. Sin embargo existen excepciones cuando
participa en más de un caso de uso, cuando existe más de un objeto
control para una realización de caso de uso o cuando una realización
de caso de uso no requiere ningún objeto control.
≈ Flujo de sucesos-análisis
Los diagramas, especialmente los de colaboración, dentro de una
realización de caso de uso pueden ser difícil de leer por sí mismo siendo
necesario acompañarlos con un texto adicional para explicarlos.
≈ Requisitos especiales
Los requisitos especiales son descripciones textuales que recogen todos
los requisitos no funcionales sobre una realización de caso de uso. Algunos de
estos requisitos ya se habían capturado pero los mismos pueden ser requisitos
nuevos o derivados encontrados a medida que avanza el trabajo de análisis.
≈ Paquetes de servicios
Representa un conjunto coherente de acciones relacionadas
funcionalmente y utilizado en varios casos de uso. Un servicio es indivisible
porque el sistema necesita ofrecerlo todo entero o nada en absoluto.
En UML el concepto de servicio esta representado por los paquetes de
servicios los cuales se utilizan en un nivel más bajo, agregación de la
jerarquía de los paquetes de análisis para estructurar el sistema de acuerdo a
los servicios que brinda.
Contienen un conjunto de clases relacionadas funcionalmente, es
indivisible y cuando se lleva a cabo un caso de uso puede llegar a participar
uno o más paquetes de servicio. Además es frecuente que un paquete de
servicio concreto participe en varias realizaciones de caso de uso diferentes, y
generalmente es relevante para uno o pocos actores.
Cuando un paquete de servicio queda excluido también lo que todo caso
de uso cuya realización requiere el paquete. Pueden ser mutuamente
excluyentes o representar diferentes aspectos o variantes del mismo servicio,
por ejemplo corrección ortográfica del inglés británico y corrección
ortográfica del inglés americano.
Los subsistemas de servicios tienen una influencia decisiva en la
descomposición del sistema en componentes binarios y ejecutables. Tienen
muchas características buenas como ser: cohesivos, indivisibles, débilmente
acoplados, distribuidos de manera separada y haciéndolos principalmente
candidatos a ser reutilizados.
Trabajadores
Arquitecto
Durante el flujo de trabajo del análisis el arquitecto es responsable de la
integridad del modelo de análisis garantizando que éste sea correcto, consistente y
legible como un todo. Será responsable del paquete de nivel superior del modelo
de análisis conforme con la descripción de la arquitectura.
El modelo de análisis es correcto cuando realiza la funcionalidad descrita en
él modelo de casos de uso y solo esa funcionalidad. Es responsable de la
descripción de la arquitectura y del modelo de análisis.
No es responsable del desarrollo y mantenimiento continuo de los diferentes
artefactos del modelo de análisis.
Ingeniero de componentes
Es responsable de definir y mantener las responsabilidades, atributos,
relaciones y requisitos especiales de una o varias clases del análisis,
asegurándose cómo cada clase del análisis cumple con los requisitos esperados de
acuerdo a las realizaciones de caso de uso en las que participa.
Debe mantener la integridad de uno o varios paquetes del análisis. Esto
incluye garantizar sus contenidos: las clases y las relaciones deben correctas y las
dependencias entre otros paquetes del análisis también sean correctas y mínimas.
En general si es responsable de un paquete del análisis también lo será de las clases
de análisis contenidas en él. Posteriormente será responsable de los posibles
subsistemas que pueden llegar a estar conformados por los paquetes de análisis a
cargo de él.
Actividad
Cliente
Pagar Enviar Enviar aviso Cuenta de Pago
Factu Factura
Enviar
aviso
Gestión de Facturas
de Vendedor
<<service package>>
Gestión de Cuentas
Cuenta Transferencias
entre cuentas Estimación
Historia de Riesgo
de riesgos
Cuenta
Gestión de
Cuentas
≈ Identificar responsabilidades
Las responsabilidades de una clase pueden obtenerse combinando todos
los roles que cumple en las diferentes realizaciones de caso de uso. Podemos
identificar todas las realizaciones de caso de uso en las cuales participa la
clase mediante el estudio de clases y diagramas de interacción.
≈ Identificación de atributos
Un atributo especifica una propiedad de una clase del análisis y
normalmente es necesaria para las responsabilidades de su clase.
Un atributo debe posee un nombre. Los atributos de una clase entidad
suelen ser bastantes evidentes.
El tipo debería ser conceptual en el análisis no debería verse
restringido por el entorno de implementación. Al decidir su tipo
debemos intentar reutilizar uno ya existente.
Si una clase de análisis se hace demasiado difícil de entender por sus
atributos algunos de estos atributos debería separarse en una clase
independiente.
Los atributos de las clases de interfaz que interactúan con los actores
humanos, suelen representar elementos de información manipulados
por los actores.
Los atributos de las clases control son poco frecuentes debido a su
corto tiempo de vida. Sin embargo, las clases control pueden poseer
atributos para representar valores acumulados o calculados durante la
realización de un caso de uso.
Si una clase tiene muchos atributos o atributos complejos podemos
representarlos en un diagrama de clases aparte, que solo muestre la
sección de atributos.
≈ Identificación de generalizaciones
Las generalizaciones deberían utilizarse durante el análisis para extraer
comportamiento compartido y común entre varias clases de análisis
diferentes, deberían mantenerse en un nivel alto y conceptual, y su objetivo
fundamental debería ser hacer el modelo de análisis más fácil de comprender.