Recomend Ac I Ones Eva Luac I Ones
Recomend Ac I Ones Eva Luac I Ones
Recomend Ac I Ones Eva Luac I Ones
1. PRESENTACIÓN
El objeto de estudio en esta asignatura es, directa y vulgarmente hablando, la programación. Tras
cursar, en años anteriores, varias asignaturas enfocadas, directamente, a la programación, se
parte del supuesto de que el estudiante es capaz de construir una sencilla aplicación en java o
algún otro lenguaje OO. Si no es así, convendría trabajar en esta cuestión. Pero, si es cierto, es
muy importante que no olvide que ya tiene esa destreza.
En otras asignaturas, también anteriores, se le han mostrado algunos aspectos ingenieriles
directamente aplicables a cómo hacer ese desarrollo del producto software, a cómo programar
(Ingeniería de Software y otras estrechamente relacionadas con la ingeniería).
Esta asignatura consiste en ejercitar la práctica para aplicar aquellos aspectos ingenieriles a
mejorar su eficacia en la codificación de las aplicaciones y su destreza en la programación. Es
decir, el estudio del diseño pretende obtener mejores aplicaciones, con menor coste de desarrollo
y mayores prestaciones en su explotación.
A la hora de desarrollar, desde el principio, un sistema software es necesario adoptar varios
puntos de vista, ubicar y parcelar esos enfoques, profundizar en el conocimiento del
comportamiento deseado, de las interacciones entre sus partes y sus implicaciones, tomar
decisiones sobre qué simplificaciones se pueden abordar (con el conocimiento de qué
repercusiones puede tener hacerlas) y afrontar, progresiva e iterativamente, la construcción de
cada parte.
De la misma manera que un diseño es una especificación del funcionamiento de un componente
software, de su estructura y características, tanto estáticas como funcionales, y cuya granularidad
puede llegar hasta la estructura de datos o hasta la función; una arquitectura también es un
diseño, pero se centra en los aspectos organizativos entre los componentes. Describe el
comportamiento del sistema o subsistema estudiado, en función de cómo se organizan sus
componentes y las interacciones que se producen entre ellos.
Sin que exista la posibilidad de eludir cómo se organizan e interaccionan los distintos
componentes de una aplicación para alcanzar los objetivos del comportamiento deseado
por el cliente para su negocio; el enfoque de esta asignatura se centra en el diseño
detallado. Es decir, en la especificación del comportamiento (hasta el nivel del código)
de un componente o un grupo reducido de ellos; generalmente asociado a un caso
de uso principal y obvio en la aplicación.
Página 2 de 15
ENFOQUES PARA LA ASIGNATURA
• Capa de la Lógica del Negocio, Lógica de la Aplicación o Dominio del Negocio. Está
constituida por los elementos software que implementan el comportamiento deseado
para el caso de uso. Es, precisamente, el objetivo de trabajo en cualquier evaluación:
el análisis del comportamiento deseado, de las interacciones (a través de las otras 2 capas)
con los elementos externos y que son necesarias para obtener ese comportamiento; y la
construcción (diseño y codificación) de los objetos software que gestionan esas
interacciones y que se comportan según los requisitos establecidos en el enunciado para
ese caso de uso. En Figura 1 sería el bloque azul del centro.
Capa de Capa de
presentación servicios técnicos
Figura 1. Arquitectura en capas del Caso de Uso.
• Capa de Servicios Técnicos. Está formada por los elementos software que no
constituyen, directamente, un componente conceptual representativo en el
comportamiento de la lógica del negocio, sino que sirven de apoyo, en la consecución de
dicho comportamiento, o actúan como mediadores para posibilitarlo.
Frecuentemente, una funcionalidad descrita o implícita en la lógica del negocio no tiene
una representación conceptual, en esa capa, que pueda albergar dicha responsabilidad,
sino que requiere otros objetos conceptuales que provienen de algún servicio de apoyo
técnico. Por ejemplo, en la lógica del caso de uso ProcesarVenta no hay ninguna
indicación explícita de la necesidad de dejar constancia de la transacción realizada (es
decir, un Registro) y, sin embargo, es obvio que esa necesidad existe y es fundamental
(junto con el mecanismo de persistencia) para éste, otros casos de uso, otros componentes
del sistema global y para la aplicación entera, en interés del negocio del cliente. Este
objeto conceptual, con la responsabilidad de registrar la venta, proviene de esta capa de
Servicios Técnicos y de apoyo; pero, por ser una parte fundamental en el comportamiento
del caso de uso de una venta, se analizará y se implementará (en los objetos software
que sean necesarios) en la capa del Dominio (como se muestra en el capítulo 30 del libro,
en la página 422 y siguientes).
En esa misma situación están algunos adaptadores, conectores polimórficos o interfaces
que intercambian información y servicios con los actores y sistemas de apoyo; y, aunque
provengan de esta capa, son elementos fundamentales para la creación o gestión de
objetos o estructuras de información que resultan indispensables para la realización de
la funcionalidad del caso de uso (consulta a BB.DD, creación de catálogos, etc.). Por este
motivo se incluyen en el Dominio del Negocio.
Página 3 de 15
ENFOQUES PARA LA ASIGNATURA
Por tanto, en la construcción del software que nos ocupa, en el análisis, diseño y
codificación de este caso de uso, sólo nos ocuparemos del comportamiento de lo
que debe estar dentro de ese bloque azul: de qué datos e información se necesita
manejar y cómo se tiene que manipular para conseguir el resultado esperado, de qué
interacciones se producen, de qué actor proviene cada estímulo y qué reacción se
espera, hacia qué actor de apoyo se envía cada petición y qué respuesta se necesita
recibir.
Entiéndase que todo lo que se ha descrito, sobre una arquitectura genérica y universalmente
válida para cualquier caso de uso, no tiene nada que ver con la arquitectura efectiva de la
aplicación, con la manera en que se organizan sus componentes para colaborar y obtener así,
conjuntamente, la funcionalidad y las prestaciones del sistema global; que puede ser muy
variada.
De hecho, con un mínimo aumento de las funciones que realice, la organización de su
comportamiento suele necesitar incluir, en la arquitectura, un componente o una capa
arquitectónica (la capa de aplicación) que gestione la manera en la que se accede o se posibilita
cada caso de uso (por ejemplo: inicio de la aplicación, acceso de un usuario con un rol
determinado, etc.). Como se verá a continuación, conviene tener esto muy en cuenta para
delimitar el comportamiento del caso de uso sometido a estudio y para determinar qué procesos
y qué elementos de información son antecedentes y apoyos necesarios para su inicio y su
desarrollo; y de dónde provienen dichos antecedentes. Es decir: qué funcionamiento se debe
haber producido en la aplicación y qué artefactos deben estar disponibles, con anterioridad a su
inicio, para que el flujo de éxito, del caso de uso estudiado, sea posible.
Página 4 de 15
ENFOQUES PARA LA ASIGNATURA
1. Hay que determinar el inicio y la situación final de éxito en el caso de uso. Aunque
esta labor se refiere a un caso de uso primario, las limitaciones mencionadas para los
exámenes o la PEC frecuentemente inducen a hacer el desarrollo sobre algo que no es un
caso de uso primario. Para reducir la complejidad o la extensión del desarrollo, a menudo,
se enuncian escenarios de uso que, en realidad, deberían ser operaciones de un caso de
uso primario. En este punto, no se pretende que se diferencie entre casos de uso primarios
y los que no lo son (como en el diagrama de casos de uso); así que asúmalo,
axiomáticamente, dedíquese a comprender qué inicia el caso de uso, qué se pretende
con esa utilización del sistema y cuándo se ha conseguido (según se indica en el
enunciado de la pregunta).
Por descontado, esa simplificación tendrá sus consecuencias, pero será en la elaboración
del modelo de dominio y, posteriormente, en desarrollo del diseño. Forzar la delimitación
del caso de uso seguramente exigirá la existencia previa de objetos y estructuras de
información que se han obtenido mediante procesos que, aún, no se han tenido en
cuenta.
2. El relato se plantea como una secuencia de estímulo — respuesta. Como su propio
nombre indica, la perspectiva del relato es la del usuario; y lo que se pretende describir
es qué tiene que hacer el usuario para obtener el resultado de su objetivo de uso.
Cada estímulo se origina en el actor principal. El formato ‘a dos columnas’ favorece la
visualización contrapuesta del planteamiento. Pero, si no lo usa, en ningún caso puede
eludir dicho planteamiento de «estímulo del actor» vs «respuesta del sistema» (la otra
columna). De esta forma, el inicio del caso de uso es el primer estímulo del actor, el que
desencadena toda la secuencia, y casi siempre debería enunciarse: «El caso de uso
comienza cuando el ‘actor principal’ ‘hace algo’ —el estímulo—…». Otra cuestión es
cuándo se producen los estímulos: el actor generará un estímulo únicamente en el caso
de que quede bien sentado que esa acción es la única vía para conseguir su objetivo.
En cuanto a la respuesta, es la descripción de la reacción del sistema en correspondencia
al estímulo recibido. Se trata, siempre, de sistemas causales: no puede haber reacción sin
estímulo. En coherencia con el punto de vista del uso por parte del actor, la descripción
de la reacción del sistema debería limitarse a lo que le ofrece al usuario para continuar el
recorrido hacia la consecución de su objetivo. Pero estamos en un momento delicado del
análisis en el que sabemos el resultado deseado (por el actor) pero no cómo llegar a él.
Sin entrar en detalles técnicos sobre estructuras de datos o descomposiciones funcionales
(el cómo, que decidiremos en el diseño), aquí se trata de meditar qué secuencia de
operaciones debe realizar el sistema (y en qué orden) en aras de conseguir el resultado
final o hasta que requiera otro estímulo, en un paso intermedio hacia él.
El estilo esencial consiste en presentar la naturaleza de la información o de las acciones
que se manejan en lugar de comprometerse con su contenido concreto o los detalles
técnicos o tecnológicos de cómo se hace o se gestiona algo: «…El usuario solicita
acceso al sistema y se identifica…» no «…El usuario introduce su
tarjeta en el lector y el sistema consulta la base de datos con sus
credenciales…». En este sentido, ni el relato de los estímulos ni el de las operaciones
realizadas por el sistema, en respuesta a ellos, deben contener referencias a cómo lo
hacen o a sus detalles técnicos; más allá de la secuencia de pasos u operaciones para
hacerlo.
3. Los flujos alternativos son bifurcaciones en el relato de la línea principal de éxito cuando
sucede alguna contingencia probable en ella. Son líneas completas y, por lo tanto, se
deben enumerar todos los pasos: desde la bifurcación y su condición, hasta su término o
su reconexión con la línea principal de éxito.
Página 5 de 15
ENFOQUES PARA LA ASIGNATURA
4. EL MODELO DE DOMINIO
El modelo de dominio es la descripción del funcionamiento del caso de uso, derivado del
relato desarrollado en el punto anterior.
Mientras que en la escritura del caso de uso se ha meditado y concluido qué operaciones son
necesarias para alcanzar el objetivo del caso de uso, en qué secuencia temporal se deben
producir y qué estímulos requieren por parte del/los actor/es, en esta representación se plantea
el análisis de qué información se requiere para hacer esas operaciones y cómo se agrupa para
que sea manejable.
El modelo de dominio debe reflejar el funcionamiento del caso de uso. Para ello, se deben
construir unas clases de objetos (objetos conceptuales) que puedan realizar las acciones que se
han descrito en el flujo principal de éxito elaborado, en la pregunta anterior, para este caso de
uso. Es decir:
1. Que puedan recibir los estímulos generados por los actores.
2. Que puedan realizar las operaciones indicadas en la escritura del caso de uso.
3. Que, en el caso de que requiera algún dato o información adicional para realizar alguna
acción correspondiente al rol que se le ha asignado, un objeto pueda obtenerlo de otro
o a través de un actor de apoyo.
También se representan los actores principales y los estímulos (eventos del sistema) dirigidos a los
objetos que, según la lógica del funcionamiento del caso de uso 1, se encargan de recibirlos.
Se trata de elaborar una representación con objetos a los que se asigna un rol funcional; pero
no se hacen explícitas las funciones o los métodos que va a realizar cada uno (porque no se ha
decidido aún, se hará en el diseño); sino que, pensando en la funcionalidad o rol que va a
desempeñar, se le asigna la información, datos o componentes (atributos, que sí se
representan) que necesita para llevarla a cabo. Por lo tanto, la tarea de elaboración del Modelo
de Dominio va orientada a decidir qué objetos son los representantes candidatos para realizar
las acciones que se han expresado en la escritura del caso de uso (su rol funcional) y qué
información (los atributos) necesitan para hacerlo.
Un buen ejemplo de asignación de un rol funcional a un objeto conceptual es el del
Registro:
• El Registro. Hay una gran cantidad de operaciones realizadas con software, que
representan una transacción. En general, una transacción es una acción en la que se
involucran al menos dos partes y en la que se intercambia algo entre ellas. La imagen
más obvia es la de la transacción comercial, en la se intercambia un producto o servicio
generalmente por dinero. También en la mayoría de los casos, hay un interés muy alto,
de todas las partes implicadas, porque quede constancia fiable de lo que se intercambia
y en qué circunstancias. La figura encargada de esto (dejar constancia fiable del
intercambio) es el registro.
A la hora de modelar un escenario (el modelo de dominio o de la lógica del negocio)
puede haber innumerables situaciones (no sólo en las transacciones) en las que exista
ese interés por dejar constancia de algún hecho; y debe existir un registro o el objeto que
haga esa función, se llame como se llame. Esta argumentación nos vuelve a dirigir hacia
la reflexión más importante del análisis:
¿Cuál es la operación principal que define el caso de uso?
1
Nótese que no se está refiriendo a qué objeto software va a ser el encargado de recibir y gestionar el evento (un
controlador); si no al objeto conceptual al que, según el relato del caso de uso, va dirigido el estímulo. Por ejemplo,
en PdV, el Cliente inicia una nueva Venta; que es lo obvio e inmediato según la escritura del caso de uso. Más
adelante, en el diseño, se decidirá que el controlador (el que recibe los estímulos de los actores principales) será el
mismo que el Registro (con el rol funcional de ‘dejar constancia de la transacción’), como estrategia para la
inmediatez en la obtención de los datos que va a registrar. Por este motivo, en la implementación que se deriva del
diseño, es el Registro el que recibe la orden de iniciar (crear) una nueva Venta por parte del Cliente – Cajero.
Página 6 de 15
ENFOQUES PARA LA ASIGNATURA
Tras la decisión de qué objetos son necesarios, la reflexión sobre el balance y el equilibrio de las
operaciones que realiza cada uno (y de los datos o atributos que requieren) nos puede llevar a
derivar en otros objetos con los que se relacionan. En esta distribución, siempre hay que tener
presente que un objeto sólo puede manejar la información de sus atributos; el resto no la
conoce. Por ejemplo, en PdV, una Venta está formada por ítems vendidos (LineaDeVenta);
cada uno de los cuales está definido por la cantidad del producto y su precio (algo fundamental
que necesitamos conocer). La lógica del negocio nos indica que, en una venta, la transacción que
hay que registrar es la lista de ítems vendidos (cantidad – ArticuloID – Precio) y el precio
total. La reflexión sobre cómo se articula esta operación (la de obtener el precio de un producto)
nos lleva a la conclusión de que habrá que consultar algún almacén de información
(posiblemente un SGBD, sistema—actor de apoyo externo) del que, a través de un adaptador
(para el desacoplo), obtendremos únicamente la caracterización que se necesita para ese
producto: el objeto EspecificacionDelProducto.
Otro ejemplo de deducción para un objeto conceptual, en función de la información que se
necesita manejar y su procedencia, es el del Catálogo—InformaciónDeObjeto:
• El par Catálogo-InformaciónDeObjeto. Se asume que la privacidad, ocultación y
encapsulamiento de los objetos consiste en que sólo pueden manejar su propia
información (son Expertos) y viceversa: la información de sus atributos es la estrictamente
necesaria para que realicen las operaciones que se les encomienda. Por otro lado, en la
implementación del software, se busca la cohesión y el acoplamiento bajo
(independencia funcional), que consiste en que las operaciones que realiza un objeto
sean independientes de las que realizan otros. Es decir, que no requieran la información
de otro objeto. Pero, para que haya colaboración entre las operaciones, es muy frecuente
que éstas utilicen alguna información de otro objeto. La respuesta inmediata, y errónea,
es incluir al objeto como componente. Si sólo es necesario un atributo del objeto ¿qué
sentido tiene incluir todo el objeto? Especialmente cuando existen varias alternativas para
usar un objeto u otro (listas, colecciones o multiobjetos), esto lleva a diseños monolíticos,
inconexos y fuertemente acoplados en los que todos los objetos están unos dentro de otros,
como las muñecas rusas.
La solución a esto puede ser el uso de un grado de indirección y el catálogo es un
ejemplo, como mecanismo de desacoplo, similar. De ahí su gran importancia.
Aquí se están manejando varias cuestiones:
1. La operación que se está evaluando en el caso de uso maneja un subconjunto
dentro de una colección de objetos (un subconjunto, seleccionable, de un
multiobjeto). El mecanismo para acceder a la información objetivo de cada objeto
seleccionado es el catálogo. En este caso, en el modelo de dominio se debe
modelar un mecanismo de acceso a cada uno de los elementos de
información utilizados en esa operación del caso de uso.
2. La información objetivo de cada objeto, la que se va a manejar en la operación
del caso de uso, ni es el objeto ni es toda la información del objeto que pueda
existir en el almacén de información o en la base de datos. En el caso de PdV, es
EspecificacionDelProducto, que consiste en articuloID, descripción y
precio. La repercusión en el modelo de dominio es que se debe crear una clase
que represente la información específica que se está manejando en la operación
Página 7 de 15
ENFOQUES PARA LA ASIGNATURA
Página 8 de 15
ENFOQUES PARA LA ASIGNATURA
una idea (ésta sí debe ser exacta) de cómo se procesa la información en este caso de uso.
Por el mismo motivo, tampoco se indican, aquí, los tipos de esos atributos.
Página 9 de 15
ENFOQUES PARA LA ASIGNATURA
2
Personalmente he de confesar que hago trampa: tras escribir el caso de uso y esbozar el modelo de dominio, me vuelco
en la elaboración, exhaustiva y detallada, del diagrama de secuencia; totalmente equivalente a los diagramas de
colaboración y, en parte, al código. Es aquí donde articulo los estímulos con la creación de instancias, con el desglose
de invocaciones a los métodos necesarios para reproducir el comportamiento deseado y con el paso de los parámetros
correspondientes a la información que necesitan manejar. Tras comprobar el funcionamiento y su coherencia, los
hallazgos aquí los paso al diagrama del modelo de dominio.
Página 10 de 15
ENFOQUES PARA LA ASIGNATURA
(arriba, en el punto de su creación) hacia abajo; y en la que se sitúa cada ocurrencia, tanto
de los eventos o estímulos, como del resto de acciones que inicia cada objeto. Aunque
cada acción tiene su origen en un punto concreto de la línea temporal del objeto que la
inicia, se dirige a la línea temporal del objeto destinatario según una línea horizontal; es
decir, se transmite en el mismo instante (excepto los auto-mensajes). Es muy importante
mantener esta ortogonalidad porque, de lo contrario, se perdería la referencia temporal y
el sentido secuencial. También es imprescindible indicar, con una flecha en la línea, el
sentido en el que se produce la acción (que, en realidad, es una llamada a una función,
perteneciente al objeto destinatario, desde el objeto origen).
3. Cada evento, estímulo, acción, reacción o respuesta de los objetos (excepto hacia el actor
principal humano, en el caso de los dos últimos), aunque inicialmente se denominan
“mensajes” en el libro, se van a resolver como invocaciones a funciones, a métodos; y
así se van a representar aquí. Cada método es conocido sólo dentro de su clase; por lo
que, si un objeto inicia una acción hacia otro objeto, está invocando a un método que está
en el objeto destinatario y, por consiguiente, necesita tener a esa instancia destinataria
como componente del objeto invocante. El control de tipos obliga a que ocurra lo mismo
con los argumentos utilizados en la invocación de cada método.
Todos los sistemas que se estudian aquí son causales. Ningún objeto produce una
reacción sin que exista una acción o estímulo sobre él. Incluso los estímulos
producidos por los actores ‘humanos’ necesariamente deben originarse porque el sistema
sólo ofrece esa alternativa para llegar al objetivo del actor. También en el inicio del caso
de uso se reproduce esta situación de única opción, bien porque el control del sistema (a
nivel de la aplicación) o bien porque un caso de uso o proceso antecesor lo ha llevado
hasta allí.
Este orden causal se representa en el diagrama situando la reacción del objeto en un
tiempo posterior, en su línea de tiempo, a la llegada del estímulo.
4. En la mayoría de los casos los estímulos y eventos principales provienen de un actor
humano. Como se ha explicado en el punto 2.2 y en la Figura 1, la interacción entre el
actor y el sistema software (el dominio del negocio del caso de uso) se produce a través
de la interfaz de usuario y, con este punto de vista, lo que ocurra en ella (IU) es
absolutamente irrelevante para este estudio (la IU es opaca o totalmente transparente,
como se quiera decir). Además, por el enfoque del estudio, centrado exclusivamente en
la lógica del negocio, y otras razones, conviene que la IU sea ‘thin layer’ (capa delgada); es
decir: sin responsabilidades de la lógica del negocio y, por tanto, muy poco acoplada con
él. Esto se traduce en que la IU se limita a formatear, representar y transmitir código de
información plana, sin ningún valor semántico; el cuál se aporta en la interpretación del
actor, por un lado, y en la responsabilidad de construir, por parte del software del caso
de uso, una estructura de datos útil para la función que tiene que realizar.
Así, independientemente de la significación para él/ella, cada selección, texto escrito,
lectura en algún dispositivo, click en una imagen, etc., que realice el actor, llegará al lado
del sistema como una invocación a algún método de un objeto (normalmente, el
controlador), que incorpora, en forma de argumento, la información transmitida. Para
evitar acoplamientos, dicha información tampoco puede tener una significación directa
para la aplicación, representada por una estructura de datos – objeto que pueda utilizar
inmediatamente; sino que debe responsabilizarse de obtener el objeto que necesita
manejar a partir de ella. Suele ser un código (articuloID), un texto (nomViajero), una
lista de ellos (listaVueloID, datosViajero), con el que deberá modificar el valor de
un atributo o enviar una consulta a la base de datos, a través de un adaptador, para que
éste cree un catálogo o consultarlo para obtener, a partir del código recibido como clave
de búsqueda, la información del objeto que necesita manejar o, rara vez, adecuar una
lista de campos para inicializar los atributos en la creación de un objeto.
Por el contrario, aunque la aplicación envíe información en los argumentos de alguna
llamada al adaptador de la IU, en respuesta o indicación de espera para el actor, éste no
tiene capacidad para decodificar una función o sus argumentos. Esa información la
formateará y la presentará la IU y será responsabilidad del actor su interpretación y, si es
Página 11 de 15
ENFOQUES PARA LA ASIGNATURA
el caso y le resulta conveniente, contestar con alguna acción. Por ello, las reacciones o
respuestas hacia el actor, o la presentación de resultados, nunca se representan, como
una llamada a función; sino que se indica un mensaje, simplemente, con la naturaleza
de la información que se transmite (cambio devuelto, recibo).
5. Lo mencionado hasta aquí está demostrando que, claramente, se están realizando tareas
del diseño y, por tanto, se debería pensar cómo aplicar los Principios Generales de
Asignación de Responsabilidades (GRASP). También parece evidente que el primer
principio que se está teniendo en cuenta es el del acoplamiento bajo: es una cuestión
prioritaria por ser fundamental para obtener la independencia funcional en el
diseño-código; uno de los objetivos de la mejora en la construcción de software que se
quieren obtener en esta asignatura. Como ya se ha comentado, debería tenerse en cuenta
el código que se va a generar desde el principio del desarrollo y, en concreto, desde la
elaboración del modelo de dominio, al asignar roles funcionales a los objetos o al decidir
qué información maneja cada objeto, se deberían tener en cuenta esos principios GRASP
(Experto, Controlador, Cohesión y Acoplamiento Bajo…). Como no se ha hecho allí, aquí,
en el diseño, casi todo se está justificando desde el principio de acoplamiento bajo.
De la misma manera que se está implementando el diseño considerando los principios
GRASP mencionados, en este punto hay que tomar la decisión de elegir el objeto que va
a regular la secuencia del funcionamiento en el caso de uso: el controlador. Como en los
otros casos, esta decisión debería comenzarse en la elaboración del modelo de dominio;
pero, en las evaluaciones, es aquí donde se refleja.
Página 12 de 15
ENFOQUES PARA LA ASIGNATURA
Página 13 de 15
ENFOQUES PARA LA ASIGNATURA
6. DIAGRAMAS DE COLABORACIÓN
Los diagramas de colaboración, aunque sean fragmentos por operaciones, expresan
exactamente lo mismo que el diagrama de secuencia elaborado en 5.1 Por ello, si se ha
simplificado el DS únicamente con los eventos que dan lugar a las operaciones, el controlador,
sus reacciones más notables y los objetos que intervienen en ellas, es probable que se haya
eludido gran parte de las reflexiones, conclusiones y decisiones a las que hemos llegado allí; y
habrá que hacerlas ahora. Además de que los diagramas de colaboración son un desglose, por
operaciones, del DS completo anterior, estos dos diagramas difieren, ligeramente, en su sintaxis
gráfica.
1. En estos diagramas la representación es horizontal, centrándose en el intercambio de
mensajes (invocaciones a métodos) entre los objetos que intervienen en la operación.
2. El diagrama parte del evento que inicia la operación y que llega al controlador desde el
actor que lo genera.
3. Siempre que exista algún intercambio de mensajes entre dos objetos (llamada a función)
se establece un vínculo entre ellos, representado por una línea.
4. Cuando un objeto realiza una llamada a un método de otro objeto, el texto de la
invocación correspondiente (sintaxis de código) se sitúa en el espacio adyacente a la línea
de vínculo que los une, con una flecha orientada hacia el propietario del método.
5. Los objetos y los multiobjetos, en sí, se representan igual que en el DS. En este diagrama,
los objetos carecen de línea temporal. Esta información, imprescindible, se suple
numerando, con un índice, cada uno de los mensajes; en el mismo orden que la
secuencia temporal en la que se producen. Si alguna invocación da lugar a varias
acciones, en las que se desglosa, también se indica el orden temporal, en el que se
suceden, mediante un subíndice.
Con estos elementos y las mismas pautas utilizadas en el DS, se construye el diagrama de
colaboración de una operación. Lógicamente, se podrían unir los diagramas de todas las
operaciones y obtener uno global para el caso de uso, como se ha hecho en el DS; pero se
amontonarían los mensajes en torno a las líneas de vínculo, haciéndolo bastante menos
Página 14 de 15
ENFOQUES PARA LA ASIGNATURA
comprensible. Por el contrario, permite indicar con más facilidad los roles que desempeñan los
objetos (principios GRASP de Controlador, Experto, Creador y otros de comportamiento; los
demás en menor medida, porque se identifican peor o no están localizados en un objeto
concreto).
Página 15 de 15