Está en la página 1de 4

Enunciado de exmen analizado

Este enunciado es el resultado de la desgrabacin de la clase de Pantaleo previa al


parcial de diciembre de 2006. Luego de su lectura a la clase, Pantaleo lo reley,
analizndolo en conjunto con los alumnos.

Enunciado : Para la especificacin del siguiente problema, proponer un bosquejo del


diseo justificando su propuesta en base a ............ del problema a resolver y al contexto en
el que se plantea ese problema. Obviamente se pide que el diseo sea en base a patrones.

Pantaleo aclara que lo que pide es que se seale con un nmero el parrafo al que se
referir cada comentario a efectuarse. Estos comentarios consistirn en indicar cual es el
contexto reconocido en el prrafo, cual es el problema que se seala, y cual es el
patrn que aplicara para resolver ese problema. Seguido a esto y una vez finalizado el
anlisis anterior sugiere que sera muy bueno hacer un diagrama de clases del sistema,
empleando los patrnes reconocidos y conectndolos entre s para completar el diseo.
Estima que en el enunciado se reconocern entre 8 y 10 patrones.

El sistema a desarrollar debe administrar el servicio de transporte de cargas


internacionales por barco.(1)

La funcionalidad bsica es la programacin con antelacin de solicitudes de carga, el


seguimiento de las cargas despachadas y la facturacin del servicio a los clientes. (2)

Las cargas son clasificadas por tamao y peso. (3)

En funcin del origen y el destino, se especifica una ruta. (4)

Los itinerarios posibles para recorrer dicha ruta se obtendrn de un subsistema tal que,
dada una especificacin de ruta y un criterio de utilizacin, el subsistema devuelve un
itinerario. (5)

Este subsistema implementar un algoritmo para cada itinerario ........ Estos criterios son
: por tiempo, por mejor clima y por costo. (6)

Cada posible itinerario est compuesto por una o ms etapas ordenadas. (7)

Cada etapa posee un puerto de carga y uno de descarga. (8)

El viaje entre los puertos de las etapas posee una fecha de partida y una de llegada, y
una tarifa asociada a la carga transportada en dicho viaje. La tarifa final se obtiene como
sumatoria de las tarifas por etapa. (9)
Para implementar dicha funcionalidad, el sistema debe interactuar con un mdulo de
otro sistema ya desarrollado que memoriza las cargas programadas a efectos de conocer al
momento de las altas de la solicitud cuantas cargas de tal tipo fueron programadas para no
tener la capacidad completa. (10)

Por otro lado debe interactuar con un sistema externo a efectos de tercerizar las cargas
que la empresa no pueda transportar. (11)

Ambos sistemas externos resuelven problemas del mismo negocio, sin embargo el
modelo de estos es diferente. (12)

Cuando las cargas son descargadas en el puerto de destino de la ruta especificada, se


enva un e-mail con una notificacin, cronologa del itinerario y la factura al cliente. (13)

En el futuro puede ser que se desee enviar alguna otra informacin a travs de este
mismo medio. (14)

Se desea contar con reportes de seguimiento por fecha de partida, de alta de la solicitud,
tipo de carga, carga por puerto y facturacin diaria. (15)

Al momento de esta especificacin no se han terminado de definir todos los reportes.


(16)

Este sistema se instalar a distintas empresas de este negocio y cada una de estas ha
especificado diferentes interfaces de usuario para su administracin y diferentes formatos
de reporte. (17)

Algunas de ellas han definido nuevas interfaces para algunas de las funcionalidades
existentes en el sistema original. (18)

Anlisis y resolucin

(2) Seala que la funcionalidad bsica del sistema consiste en dar de alta solicitudes y el
seguimiento de las cargas despachadas. Seguimiento de las cargas le indica que esto tiene
estados, entonces propone un patrn para modelar esto, STATE.

(6) Pantaleo entiende aqu que el cliente tiene la posibilidad de optar entre distintos
itinerarios de acuerdo a sus intereses. As podr elegir entre uno para minizar el costo, uno
para circular con los climas ms favorables y uno que permita el transporte en un tiempo
mnimo. El itinerario se calcular en funcin de esto. Pantaleo dice el subsistema me
devuelve la mejor ruta de acuerdo a un criterio, entonces, STRATEGY. Este patrn
encapsular los criterios posibles. Este patrn est orientado a encapsular algoritmos de
modo de tener luego la posibilidad de elegir entre uno u otro.
(7) Hay un itinerario o ruta. Una ruta puede ser una composicin de etapas o una simple
etapa. Entonces mi sistema tiene que manejarse con un patrn que me permita tratar a las
rutas como una nica etapa o como una composicin de ellas. Luego, propone usar
COMPOSITE.

Etapa

(9) Al tiempo que lea el enunciado y una vez que lleg a este punto, indic que ya deban
reconocerse 3 patrones.

(11) Al mencionar sistema externo menciona que esto hace pensar en la utilizacin de un
FACADE.

(12) Al llegar aqu indic que entre el punto 10 y este deban reconocerse 2 patrones ms.
Dice que cuando tengo que trabajar con sistemas externos vamos a tener que controlar el
acceso porque no quiero que mis programadores se metan con el cdigo que vamos a
escribir con un cdigo que no es el nuestro. Controlar el acceso tiene que ver con FACADE y
este tipo de cosas, y es muy probable que si tengo un sistema distinto tenga que meter un
facade en el medio. Y eventualmente y dependiendo de la magnitud del sistema me puedo
achicar y usar cosas como un ADAPTER.

(14) DECORATOR, porque quiero extender algo ( contexto : agregar en forma dinmica una
nueva funcionalidad ).

(16) Aqu Pantaleo nos hace notar que hay una ambigedad en la especificacin, el
enfsis puesto en esto parece buscar llamarnos la atencin y hacernos pensar en algn
patrn que apunte a este tipo de problemas. Tengo un conjunto de clases pero puede ser que
en el futuro, por esta ambigedad, a estas clases les quiera pedir algo ms. Para esto
dejamos una puertita abierta en el diseo, usabamos algo que se llamaba VISITOR.

(18) El modelo es el mismo. Han cambiado la forma de accederlo, entonces BRIDGE. Para
desacoplar las abstracciones ( que hacen al modelo subyacente, que es el mismo ) por un
lado, y las implementacin de las interfaces para acceder a esta cosa ( que van a variar ) por
otro.

Luego propone dibujar un diagrama de clases en base a los patrones visto, entonces solo
considerando el decorator y un state, dibuja lo siguiente :
1 Etapa *
Carga

Estado Ruta

Estado1 Estado2 Estado3

Est obviamente incompleto, pero sirve para guiarnos haca lo que nos est pidiendo. Es
simplemente un diagrama con patrones conectados.

También podría gustarte