Está en la página 1de 18

4.6.2.

Refinamiento de los diagramas de clases y objetos


Refinamiento
El refinamiento sucesivo es una primera estrategia de diseo descendente propuesta por
Niklaus Wirth. La arquitectura de un programa se desarrolla en niveles sucesivos de
refinamiento de los detalles procedimentales. Se desarrolla una jerarqua descomponiendo
una funcin de forma sucesiva hasta que se llega a las sentencias del lenguaje de
programacin. Comenzamos con una declaracin de la funcin (o una descripcin de la
informacin) definida a un nivel superior de abstraccin. Es decir, la declaracin describe la
funcin o la informacin conceptualmente, pero no proporciona informacin sobre el
funcionamiento interno de la funcin o sobre la estructura interna de la informacin, sino que
se va a realizando sucesivamente, dando cada vez ms detalles.
Modularidad
El software se divide en componentes con nombres y ubicaciones determinados, que se
denominan mdulos y que se integran para satisfacer los requisitos del proveedor. El
software monoltico (es decir, un programa grande compuesto de un solo mdulo) no puede
ser estudiado fcilmente por un lector, ya que el nmero de caminos de control, el nmero de
variables y la complejidad global haran el cdigo prcticamente indescifrable.
Matemticamente, esto se explica de esta forma:
Sea C(x) una funcin que defina la complejidad de un problema x, y E(x) una funcin que
defina el esfuerzo de desarrollo de un problema x.
Para dos problemas
p1 y p2, si C(p1) > C(p2)
se deduce que
E(p1) > E(p2)
Adems, se cumple que
C(p1 + p2) > C(p1) + C(p2)
y que
E(p1 + p2) > E(p1) + E(p2)
Esto nos lleva a la conclusin divide y vencers, por tanto la modularidad del software facilita
el desarrollo del mismo, pero hasta un cierto lmite, porque si llegramos a dividir el problema
en infinitos mdulos, los mdulos tendran una complejidad y un esfuerzo mucho menor, pero
crecera el coste asociado a la creacin de interfaces entre los mdulos, tal y como muestra
la figura 1.1

Figura 1.1: Modularidad y costes de software


El refinamiento verdaderamente es un proceso de elaboracin. Se comienza con una
sentencia de funcin (o descripcin de informacin) que se define a un nivel alto de
abstraccin. Esto es, la sentencia describe la funcin o informacin conceptualmente, pero
no proporciona informacin sobre el funcionamiento interno de la informacin. El refinamiento
hace que el diseador trabaje sobre la sentencia original, proporcionando cada vez ms
detalles a medida que van teniendo lugar sucesivamente todos y cada uno de los
refinamientos (elaboracin).
Relacin de Refinamiento
Es una relacin entre dos elementos donde uno de ellos especifica de forma completa al otro
que ya ha sido especificado con cierto detalle.
Nuevas caractersticas del UML
Adems de los conceptos extrados de mtodos anteriores, se han aadido otros nuevos que
vienen a suplir carencias antiguas de la metodologa de modelado. Estos nuevos conceptos
son los siguientes:
Definicin de estereotipos: un estereotipo es una nueva clase de elemento de modelado
que debe basarse en ciertas clases ya existentes en el metamodelo y constituye un
mecanismo de extensin del modelo.
Mecanismos de extensibilidad: estereotipos, valores etiquetados y restricciones.
Tareas y procesos.

Distribucin y concurrencia (para modelar por ejemplo ActiveX/DCOM y CORBA).


Patrones/Colaboraciones.
Diagramas de actividad (para reingeniera de proceso de negocios)
Clara separacin de tipo, clase e instancia.
Refinamiento (para manejar relaciones entre niveles de abstraccin).
Interfaces y componentes.

4.6.3. DIAGRAMA DE SECUENCIAS


Los diagramas de estado se enfocan a diferentes estados de un objeto, esto sola una
pequea parte del cuadro. El diagrama de secuencias del UML establece el siguiente paso y
le muestra la forma en que los objetos se comunican entre si al trascurrir el tiempo.

Ilustracin a) Ejemplo de diagrama de secuencias.


Qu es un diagrama de secuencias ?
El diagrama de secuencias consta de objetos que se representan del modo usual;
rectngulos con nombre (subrayado), mensajes representados por lineas continuas con una
punta de flecha y el tiempo representado como una progresin vertical.
Propsitos.
Poner nfasis en el orden y momento en que se envan los mensajes a los objetos.

Proporcionar un camino a partir de los escenarios para describir las operaciones en una
forma ms detallada.
Mostrar la secuencia de comportamiento de un caso de uso.
Caractersticas.
Mostrar la secuencia de mensajes entre objetos durante un escenario concreto.
Cada objeto viene dado por una barra vertical.
El tiempo transcurre de arriba abajo.
Cuando existe demora entre el envo y la atencin se puede indicar usando una lnea
oblicua
Ventajas.
Da la posibilidad de representar los mensajes en funcin del tiempo.
La separacin de los mensajes no indica intervalos o cantidades de tiempo, solo
ordenacin temporal.
Es posible aadir restricciones temporales.
Desventajas.
Una representacin de un diagrama de secuencia demasiado largo, puede ser difcilmente
entendido por alguien ajeno al sistema.
Objetos
los objetos se colocan cerca de la parte superior del diagrama de izquierda a derecha y se
acomodan de manera que simplifiquen al diagrama. La extensin que esta debajo (y en
forma descendente) de cada objeto ser una linea discontinua conocida como la linea de
vida de un objeto. Junto con la linea de vida de un objeto se encuentra un pequeo
rectngulo conocido como activacin, el cual representa la ejecucin de una operacin que
realiza el objeto. La longitud del rectngulo se interpreta como la duracin de la activacin.
La figura 1 muestra un objeto, su linea de vida y su activacin.

Figura 1:
Representacin de
un objeto en un
diagrama de
secuencias.

Mensaje
un mensaje que va de un objeto a otro pasa de la linea de vida de un objeto a la de otro. Un
objeto puede enviarse un mensaje a s mismo (es decir, desde su linea de va hacia su propia
linea de vida).
Un mensaje puede ser simple, sincrnico o asincrnico. Un mensaje simple es la
transferencia del control de un objeto a otro. Si un objeto enva un mensaje sincrnico,
esperar la respuesta a tal mensaje antes de continuar. En el diagrama de secuencias, los
smbolos del mensaje varan por ejemplo la punta de la flecha de un mensaje simple est
formada por dos lineas, la punta de la flecha de un mensaje sincrnico esta rellena y la de un
asincronico tiene una sola linea, como se aprecia en la figura 2.

Figura 2: Smbolos para los


mensajes en un diagrama de
secuencias.

Tiempo
el diagrama representa al tiempo en direccin vertical. El tiempo se inicia en la parte superior
y avanza hacia la parte inferior, un mensaje que est ms cerca de la parte superior ocurrir
antes que uno que est cerca de la parte inferior.

Con ello, el diagrama de secuencias tiene dos dimensiones, la dimensin horizontal es la


disposicin de los objetos, y la dimensin vertical muestra el paso del tiempo. La figura 3,
muestra el conjunto bsico de smbolos del diagrama de secuencias, con los smbolos en
funcionamiento conjunto. La figura muestra a un actor que inicia la secuencia, aunque en
sentido estricto, la figura adjunta no es parte del conjunto de smbolos del diagrama de
secuencias.

Figura 3: En un diagrama de secuencias de objetos se


colocan de izquierda a derecha en la parte superior, cada
linea de vida de un objeto es una linea discontinua que se
desplaza hacia abajo del objeto. Una linea continua con
una punta de flecha conecta a una linea de vida con otra, y
representa un mensaje de un objeto a otro. El tiempo se
inicia en la parte superior y continua hacia abajo. Aunque
un actor es el que normalmente inicia la secuencia, su
smbolo no es parte del conjunto de smbolos del diagrama
de secuencias.

Para ver en accin a esta importante herramienta del UML, apliquemosla en los ejemplos
que hemos visto, cada aplicacin le mostrar algunos conceptos importantes que se
relacionan con las diagramas de secuencias.
LA GUI
La secuencia
suponga que el usuario de una GUI presiona una tecla alfanumrica, si asumimos que utiliza
una aplicacin como un procesador de textos, el carcter correspondiente deber aparecer
de inmediato en la pantalla Qu ocurre tras bambalinas para que esto suceda?
1.
2.
3.
4.
5.
6.

La GUI notifica al sistema operativo que se oprimi una tecla.


El sistema operativo le notifica a la CPU.
El sistema operativo actualiza la GUI.
La CPU notifica a la tarjeta de video.
La tarjeta de video enva un mensaje al monitor.
El monitor presenta el carcter alfanumrico en la pantalla, con lo que se har
evidente al usuario.

Todo esto ocurre con tanta rapidez que olvidamos que todo ello se realiza. (si acaso
pensbamos que ocurra).
El diagramas de secuencias
la figura 4 representa el diagrama de secuencias de la GUI. Como ve, los mensajes son
asincrnicos: ninguno de los componentes aguarda nada antes de continuar. Al trabajar con
algunas aplicaciones de Windows, tal vez haya sentido algunos de los efectos de la
comunicacin asincrnica, particularmente en una mquina lenta. Cuando teclea en un
procesador de textos, en ocasiones no ve aparecer en la pantalla el carcter correspondiente
a la tecla que haya oprimido sino hasta despus de haber oprimido algunas ms.

Figura 4: Un diagrama de secuencias que muestra la forma en que la GUI interacciona con
otros objetos.
En ocasiones, es muy instructivo mostrar los estados de uno o varios de los objetos en
diagrama de secuencias. Dado que se ha analizado los estados de la GUI, esto es fcil de
hacer. La figura 5 le muestra un hbrido: el diagrama de secuencias de la GUI con los
estados de la GUI. Observe que la secuencia se origina y finaliza en el estado Operativo de
la GUI, como podra esperarlo.

Figura 5: un diagrama de secuencias puede mostrar los estados de un objeto.

En un diagrama de secuencias, otra forma de mostrar el cambio de estado de un objeto es incluir


al objeto ms de una vez en el diagrama.

El caso de uso
que exactamente lo que presenta un diagrama de secuencias? En este ejemplo, muestra
las iteraciones de objetos que se realizan durante un escenario sencillo: la opresin de una
tecla. Este escenario podr ser parte de un caso de uso llamado Ejecutar la opresin de una
tecla (vea la Figura 6). al representar grficamente las iteraciones del sistema en el caso de
uso, el diagrama de secuencias habr, en efecto, delineado el caso de uso dentro del
sistema.

Figura 6: El caso de uso representado grficamente por el diagrama de


secuencias de la Figura 4.
El el siguiente ejemplo; examinare detalladamente la relacin entre los casos de uso y los
diagramas de secuencias.
Instancias y genricos
el ejemplo anterior comenz con un diagrama de estados, este otro ejemplo empieza con un
caso de uso. comprar gaseosa fue uno de los casos del ejemplo anterior.
Un diagrama de secuencias de instancias
En el mejor escenario del caso de uso comprar gaseosa, recuerde que el actor es un cliente
que desea adquirir una lata de gaseosa. El cliente inicia el escenario mediante la insercin de
dinero en la maquina tiene al menos una lata de la gaseosa elegida y por lo tanto presenta
una lata fra al cliente.
Asumamos que en la mquina de gaseosas hay tres objetos que realizan la tarea que nos
ocupa: la fachada (la interfaz que la mquina de gaseosas presenta al usuario), el registrador
de dinero (que lo recolecta), y el dispensador (que entrega la gaseosa). Tambin daremos
por hecho que el registrador de dinero controlar al dispensador.
La secuencia ser como sigue:
1. el cliente inserta el dinero en la alcanca que se encuentra en la fachada de la
maquina.
2. El cliente hace su eleccin.
3. El dinero viaja hacia el registrador.
4. El registrador verifica si la gaseosa elegida est en el dispensador.
5. Dado que es el mejor escenario asumimos que si hay gaseosas, y el registrador
actualiza su reserva de efectivo.
6. El registrador hace que el dispensador entregue la gaseosa en la fachada de la
mquina.
Dado que el diagrama de secuencias solo se centra en un escenario (una instancia) en el

caso de uso comprar gaseosa se conoce como diagrama de secuencias de instancias. La


figura 7 muestra este diagrama. Vea que el diagrama muestra mensajes sencillos. Cada
mensaje mueve el flujo de control de un objeto a otro.

Figura 7: Este diagrama se secuencias modela tan slo el mejor escenario del caso de uso
"Comprar gaseosa". Por lo tanto, es un diagrama de secuencias de instancias.

Cmo representar la recursividad


En ocasiones un objeto cuenta con una operacin que se invoca a s misma. A esto se le
conoce como recursividad, y es una caracterstica fundamental de varios lenguajes de
programacin.
He aqu un ejemplo, suponga que uno de los objetos en su sistema sea una calculadora, y
que una de sus operaciones sea el calculo de intereses. Para calcular el inters compuesto
para un periodo que incluya a varios periodos, la operacin del calculo de intereses del
objeto tendr que invocarse a s misma varias veces.
Para representar esto en el UML, dibujar una flecha de mensaje fuera de la activacin.
Dibuje una flecha de modo que apunte al pequeo rectngulo, y una que regresa al objeto
que inici la recursividad. La figura 8 muestra lo anterior.

Figura 8: Cmo representar la recursividad en el


diagrama de secuencias.

4.6.4. DIAGRAMAS DE COLABORACIONES


los diagramas de colaboraciones muestran la forma en que los objetos colaboran entre s, tal
como sucede con un diagrama de secuencias. Muestran los objetos junto con los mensajes
que se enva entre ellos. Si el diagrama de secuencias hace eso, por qu el UML requera
otro diagrama?, qu no es lo mismo?, no es una prdida de tiempo?
Ambos tipos de diagramas son similares. De hecho, son sistemticamente equivalentes. Esto
significa que representan la misma informacin, y podr convertir un diagrama de secuencias
en un diagrama de colaboraciones equivalente o viceversa.
Como se infiere, es til contar con ambas formas, los diagramas de secuencias destacan la
sucesin de las iteraciones. Los diagramas de colaboraciones destacan del contexto y
organizacin general de los objetos que interactan. He aqu otra forma de encontrar la
diferencia: el diagrama de secuencias se organiza de acuerdo al tiempo, y el de colaboracin
de acuerdo al espacio.

Ilustracin b) Ejemplo de diagrama de colaboraciones.

Qu es un diagrama de colaboraciones ?
Un diagrama de objetos muestra a los objetos como tales y sus relaciones entre s. Un
diagrama de colaboraciones es una extensin de uno de objetos. Ademas de las relaciones
entre objetos, el diagrama de colaboraciones muestra los mensajes que se envan los
objetos entre si, por lo general, evitar la multiplicidad dado que podra ser fuente de
confusin.
Propsitos
Manejar la comunicacin entre los elementos del sistema.
Mostrar cmo ser implementada una operacin.
Indicar cmo deben colaborar los objetos del sistema para llevar a cabo una operacin.
Caractersticas
Muestra cmo las instancias especficas de las clases trabajan juntas para conseguir un
objetivo comn.
Implementa las asociaciones del diagrama de clases mediante el paso de mensajes de un
objeto a otro. Dicha implementacin es llamada "enlace".
Ventajas
Permite elegir el orden en que pueden hacerse las cosas.
Puede describir procesos o casos de uso.
Muestra los aspectos dinmicos de un sistema.
Establece las reglas de secuencia a seguir.
Ayuda a un programador a desarrollar cdigo a travs de una descripcin lgica de un
proceso.
Desventajas
La gran desventaja de los diagramas de colaboracin es que no indican de forma explcita
que los objetos ejecutan qu actividades ni tampoco la forma en que el servicio de
mensajera trabaja entre ellos. Para mostrar tales interacciones de forma clara son
necesarios los diagramas de interaccin, los cuales son ms utilizados en la prctica.
Elementos
Objetos o Roles: nodos del grafo.
Enlaces o comunicaciones: arcos del grafo.
Mensajes: llevan nmero de secuencia y flecha dirigida.
Anidamiento: se utiliza la numeracin decimal

Iteracin: colocar un * antes del nmero de secuencia y una clusula de condicin, si es


necesario.
Bifurcacin: los caminos alternativos tendrn el mismo nmero de secuencia, seguido del
nmero de subsecuencia, y se deben distinguir por una condicin.
Para representar un mensaje, dibujar una flecha cerca de la linea de asociacin entre dos
objetos, esta flecha apunta al objeto receptor. El tipo de mensaje se mostrar en una etiqueta
cerca de la flecha; por lo general, el mensaje le indicar al objeto receptor que ejecute una de
sus operaciones. El mensaje finalizar con un par de parntesis, dentro de los cuales
colocar los parmetros (en caso de haber alguno) con los que funcionar la operacin.
Mencion que podr convertir cualquier diagrama de secuencias en diagrama de
colaboraciones y viceversa. Por medio de esta podr representar la informacin de
secuencia un diagrama de colaboraciones. Para ello, agregar una cifra a la etiqueta de un
mensaje, misma que corresponder a la secuencia propia del mensaje. La cifra y el mensaje
se separan mediante dos puntos (:).
la figura 9 le muestra la simboga del diagrama de colaboraciones.
Aprovechemos la equivalencia de ambos tipos de diagramas. Para desarrollar el conceptos
de los diagramas de colaboraciones volveremos a ver los ejemplos que revisamos
anteriormente.

La GUI
Figura 9: Simbologa del diagrama de colaboraciones.
Este ejemplo
es el caso ms directo. Un actor inicia la secuencia de interaccion al oprimir una tecla, con lo
que los mensajes ocurrirn de manera secuencial. Tal secuencia (a partir del ejemplo
anterior) es:
1.
2.
3.
4.
5.
6.

La GUI notifica al sistema operativo que se oprimi una tecla.


El sistema operativo le notifica a la CPU.
El sistema operativo actualiza la GUI.
La CPU notifica a la tarjeta de video.
La tarjeta de video enva un mensaje al monitor.
El monitor presenta el carcter alfanumrico en la pantalla, con lo que se har
evidente al usuario.

La figura 10 muestra la forma de representar esta secuencia de interacciones en un


diagrama de colaboraciones. El diagrama muestra la figura agregada que representa al
usuario que inicia la secuencia, aunque esta figura no es parte de la simbologa de este
diagrama.

Figura 10: Un diagrama de colaboraciones para el ejemplo de la GUI.


Cambios de estado
puede mostrar los cambios de estado en un objeto en un diagrama de colaboraciones. En el
rectngulo del objeto indique su estado. Agregue otro rectngulo al diagrama que haga las
veces del objeto e indique el estado modificado. Conecte a los dos con una linea discontinua
y etiquete la linea con un estereotipo <<se torna>>.
La figura 11 ilustra un cambio de estado para la GUI, que muestra que el estado de
inicializacin se convierte en el estado operativo.

Figura 11: Diagrama de colaboraciones puede incorporar cambios de estado.


La mquina de gaseosas
las cosas se hacen ms interesantes cuando aplica las condiciones a una situacin real,
como lo hizo en el ejemplo anterior con las mquinas gaseosas. Iniciemos con la mejor
situacin del caso de uso Comprar gaseosa, donde la secuencia es:
1. el cliente inserta el dinero en la alcanca que se encuentra en la fachada de la
maquina.
2. El cliente hace su eleccin.
3. El dinero viaja hacia el registrador.
4. El registrador verifica si la gaseosa elegida est en el dispensador.
5. Dado que es el mejor escenario asumimos que si hay gaseosas, y el registrador
actualiza su reserva de efectivo.
6. El registrador hace que el dispensador entregue la gaseosa en la fachada de la
mquina.
El diagrama de colaboraciones es directo, como lo muestra la figura 12.

Figura 12: El diagrama de colaboraciones para el mejor caso de "Comprar


gaseosa".
Ahora, agregaremos el caso de cantidad incorrecta de dinero, el diagrama tiene que
contabilizar varias condiciones:
1. El usuario ha introducido ms dinero que el necesario para la compra.
2. La mquina cuenta con la cantidad adecuada de cambio.
3. La mquina no tiene la cantidad correcta de cambio.
Usted representar las condiciones de la misma forma en que las represent en el diagrama
de secuencias. Colocar la condicin entre corchetes, misma que antecede a la etiqueta. Lo
importante es coordinar las condiciones con la numeracin.
Esto podra ser algo complicado, por lo que haremos el diagrama de secciones.
Empezaremos con la condicin donde el usuario ha insertado ms dinero del indicado en el
precio y el registrador cuenta con el cambio adecuado. Agregar al paso de la mquina al
devolver el cambio al cliente, y agregar las condiciones entre corchetes. El paso que
devuelve el cambio es una consecuencia del que verifica si hay cambio. Para indicar esto en
el paso de devolver cambio utilizar el mismo nmero del mensaje que verifica el cambio, y
agregar un punto decimal y un uno. A esto se le conoce como anidacin.
La figura 13 le muestra los detalles.
Qu ocurre cuando la mquina no cuenta con el cambio correcto? Tendr que mostrar un
mensaje que lo indique, devuelva el dinero y pida al usuario que inserte el importe correcto.
As la transaccin habr finalizado.
Cuando agregue este condicin, agregar una bifurcacin en el control del flujo. Numerar
esta bifurcacin como un mensaje anidado, dado que es el segundo mensaje anidado, habr
un 2 luego del punto decimal. Finalmente, y debido a que la transaccin habr finalizado,
har clara esta situacin mediante la adicin de un estereotipo transaccin finalizada en
este mensaje, y otro en el mensaje que despacha la gaseosa. La figura 14 presentar la
situacin.

Figura 13: El diagrama de colaboraciones con parte de la situacin "monto de dinero


inadecuado".

Figura 14: El diagrama de colaboraciones "Comprar gaseosa" con toda la situacin


"monto de dinero inadecuado".

4.7.

Diseo detallado

Diseo del Software


Los requisitos y el anlisis orientado a objetos se centran en aprender a hacer lo correcto:
Entender los objetos de nuestro sistema.
Reglas y restricciones relacionadas. Las primeras iteraciones de las fases del inicio y
elaboracin centran su trabajo en esta labor. Las siguientes iteraciones centran su trabajo en
el diseo de una solucin en funcin de objetos software que colaboran. En cada iteracin
tendr lugar una transicin desde los requisitos hacia el diseo y la implementacin, con retro
alimentacin constante. Lo esencial de esta actividad es la creacin de diagramas de
interaccin que representan el modo en el que los objetos colaboran. Despus de esto, o al
mismo tiempo, se desarrollan los diagramas de clases (del diseo), resumen de la definicin
de las clases software que se van a implementar. Estos artefactos forman parte en el PU del
Modelo de Diseo. Requieren mayor esfuerzo creativo y la aplicacin de principios de
asignacin de responsabilidades (patrones de diseo).

Bibliografa
http://jams001.blogspot.mx/2012/09/diagrama-de-secuencia-y-colaboracion.html
Libro PDF: Aprendiendo UML en 24 Horas
Booch, Grady. 1996. Anlisis y Diseo Orientado a Objetos. 2da edicin. Ed. Addison-Wesley

También podría gustarte