Professional Documents
Culture Documents
Particionando El Dominio
Particionar el dominio es un proceso de dividir un dominio de problema en unidades cohesivas antes de proceder al diseo detallado. El dominio del problema se ha definido en las dos primeras fases usando los modelos de casos de uso, el modelo de objetos y el modelo dinmico.
2
CAL/Fundamentos
Particionando El Dominio
CAL/Fundamentos
Particionando El Dominio
Modelo de Casos de Uso Define espectativas del usuario por el sistema Identifica caractersticas requeridas del sistema Identifica dependencias entre caractersticas
Cada uno de los modelos Revelan algunas cosas diferentes Acerca del dominio del problema
Modelo de Objetos Define recursos usados por el dominio del problema Define la estructura de los recursos Define las relaciones entre recursos
El dominio del problema fue Definido durante la iniciacin del proyecto y El anlisis del problema
Modelo Dinmico Define como los recursos interactan uno con otro Define las interfaces entre los objetos del dominio Define las dependencias entre objetos del dominio
CAL/Fundamentos
Particionando El Dominio
El modelo de casos de uso describe lo que los usuarios esperan ver cuando interacten con el sistema. Estas espectativas son expresadas en objetivos. Como Retirar dinero y transferir fondos estos objetivos implican funcionalidad. Por ejemplo, el usuario debe ser capaz de proporcionar un nmero de cuenta bancario y el monto de dinero a retirar. Los casos de uso proveen la base para el particionamiento funcional.
5
CAL/Fundamentos
Particionando El Dominio
El modelo de objetos define los recursos del dominio del problema. Estos recursos son la informacin que el sistema debe manejar para soportar los casos de uso. Los casos de uso pueden crear o alterar recursos o simplemente acceder a la informacin que el objeto posee. Consecuentemente, el modelo de objetos es particionado para coincidir con las particiones funcionales.
6
CAL/Fundamentos
Particionando El Dominio
El modelo dinmico incluye dos tipos de diagramas de interaccin: el diagrama de secuencia y el diagrama de colaboracin. Ambos diagramas ilustran la conversacin de los objetos. Describen la comunicacin entre los objetos participantes y de este modo proporcionan informacin valiosa acerca de los atributos e interfaces de los objetos del dominio participantes.
7
CAL/Fundamentos
Particionando El Dominio
Cuando se particiona el modelo de objetos, las asociaciones entre objetos deben preservarse porque ellas se traducen en dependencias entre particiones.
CAL/Fundamentos
Paquetes
Los paquetes proporcionan una herramienta genrica para agrupar informacin y modelar elementos. Los contenidos de un paquete son enteramente definidos por el usuario, de modo que los paquetes constituyen una herramienta conveniente para definir las particiones.
9
CAL/Fundamentos
Paquetes
Ejemplo
Icono de Paquete
CAL/Fundamentos
10
Estereotipos Estndares
Estereotipos
CAL/Fundamentos
11
Paquetes y Subsistemas
Los paquetes pueden representar subsistemas. El objetivo de particionar el dominio es colocar todos los elementos del modelo que definen el comportamiento y sus recursos para el sistema en paquetes cohesivos. Cada paquete representa un subsistema un subconjunto de la funcionalidad completa del sistema.
12
CAL/Fundamentos
Dependencias De Paquetes
Una dependencia indica que el paquete fuente requiere la asistencia del paquete objetivo, tal como un acceso a un objeto creado y mantenido por el paquete objetivo, o funcionalidad poseida por el paquete objetivo. En el sistema de reserva, por ejemplo, Ud. no puede vender boletos para presentaciones hasta que los asientos de la presentacin se hayan definido y cotizado.
13
CAL/Fundamentos
Dependencias De Paquetes
Consecuentemente, el subsistema de ventas podra depender de la Gestin de Asientos, el cual pone los asientos dentro del auditorio. El subsistema de ventas podra tambin depender de la Gestin de presentaciones, el cual define las presentaciones, y Poner precios, el cual asigna los precios a los sitios de cada presentacin.
14
CAL/Fundamentos
Dependencias De Subsistemas
Requiere que los sitios ya esten definidos en el sistema con una localidad vlida <<Domain Package>> Ventas Ventas Necesita los precios asignados a cada asiento en la presentacin
Este subsistema rastrea cuales sitios estan disponibles para la venta en cada presentacin
15
El Proceso De Particionar
Tomando los recursos del dominio como fuente, se puede dividir el proceso de particionar el dominio en tres pasos.
Dividir los casos de uso en grupos cohesivos de uno o mas casos de uso que juntos describan una funcin del sistema. Identificar los objetos que utilizan los casos de uso y poner las clases representativas en los paquetes/particiones con los casos de uso.
16
CAL/Fundamentos
El Proceso De Particionar
Identificar las dependencias entre los paquetes/ particiones evaluando las asociaciones entre las clases participantes y las interacciones que toman lugar entre los objetos asociados.
CAL/Fundamentos
17
El Proceso De Particionar
Recuerde que como cualquier proceso de modelamiento, las tareas son iterativas. agrupe los casos de uso que tengan sentido. Muevase al siguiente paso y trate de asignar clases. Este intento revelar algunos errores o le har pensar diferente acerca del particionamiento. Continue hasta que est satisfecho y ellos representen la solucin deseada.
18
CAL/Fundamentos
El Proceso De Particionar
Puede continuar el proceso de refinamiento solicitando input de otros. Use los diagramas para comunicar ideas y para capturar visiones obtenidas a travs de revisiones. Esta prctica mantendr los diagramas actualizados con la comprensin de los requerimientos y los diseos realizados durante el proceso.
19
CAL/Fundamentos
El Proceso De Particionar
Trate de evitar el hbito de tomar notas y luego actualizar diagramas. Los diagramas se convertirn en otra tarea de documentacin molesta y perder su valor como herramienta para asistir en el proceso de modelado.
CAL/Fundamentos
20
Los casos de uso definen la funcionalidad del dominio del problema estableciendo los objetivos que el sistema debe ayudar a lograr para los usuario. En un aplicacin finalizada, los casos de uso se traducen en opciones de men, transacciones y otras unidades de trabajo discretas.
21
CAL/Fundamentos
Cuando se refinan los casos de uso puede encontrar algunos que definen piezas de una tarea mayor. En este caso, puede hallar multiples casos de uso que podran necesitar combinarse para proporcionar una unidad de trabajo completa.
22
CAL/Fundamentos
Dividir la funcionalidad del sistema basado en casos de uso es probablemente la parte mas subjetiva del proceso de particionamiento. Cuando Ud. sigue hacia los diagramas de clases e interaccin ser ms claramente visible y podr probar su efectividad.
23
CAL/Fundamentos
Unidades de trabajo: En algunos casos, un caso de uso define una unidad de trabajo que puede incluirse enteramente en el. Otras veces un grupo de casos de uso definen una unidad de trabajo.
CAL/Fundamentos
24
La nica razn para crear un Nivel de precio es para utilizarse en el mismo subsistema donde el usuario pueda usarlo.
Crear Descuento
CAL/Fundamentos
De igual forma, los descuentos se crean solo porque son utilizados como parte del plan de precios. Se mantienen juntos con las funciones de plan de precios de manera que se puedan manejar como una unidad. 25
Podra este caso de uso estar solo? Sera razonable para un usuario completar su tarea o hacer algo mas? Si es as, trate de aislar el caso de uso en su propia particin.
CAL/Fundamentos
26
Podra un usuario usar juntas un grupo de funciones?, si es as, entonces trate de poner los casos de uso juntos en la misma particin. El resultado de una funcin influye las opciones de otra funcin? Existe tipo de relaciones de reconciliacin, balanceo o ensamble de relaciones entre las funciones?
27
CAL/Fundamentos
Tenga cuidado de copiar solamente la forma en que los usuarios actualmente hacen su trabajo. Haga preguntas de prueba acerca de porque la tarea puede o no, ejecutarse como una unidad. Muy frecuentemente, las personas simplemente hacen cosas de la manera en que las han aprendido, exista o no beneficio substancial o cualquier dependencia fundamental entre las tareas.
28
CAL/Fundamentos
Los casos de uso definen el objetivo. Para llevar a cabo el objetivo, los casos de uso necesitan recursos. Los recursos de los casos de uso son objetos definidos por las clases en el modelo de objetos.
CAL/Fundamentos
29
Para asignar clases a particiones de dominio se necesita examinar recursos en dos niveles:
qu recursos son creados o controlados por la particin de dominio? Qu recursos son referenciados por la particin de dominio pero creados o controlados en otra parte?
30
CAL/Fundamentos
Cada recursos objeto debe ser creado. La pregunta que necesita responder cuando intenta asignar objetos a particiones es, quin es responsable de la creacin del objeto? tipicamente, ud. debera asignar la clase que define los objetos a los casos de uso que crea los objetos. Usualmente hay solo uno o muy pocos casos de uso que crean el mismo tipo de objetos.
31
CAL/Fundamentos
Una vez que se crea el objeto, este puede ser accedido por otros casos de uso en otras particiones a travs de la base de datos (repositorio persistente) o a travs de cualquier nmero de componentes servidor de objetos. Los casos de uso creadores y referenciadores no tienen que conocerse uno al otro.
32
CAL/Fundamentos
Cada clase en el modelo de objetos debe estar asignada a una particin. Este proceso proporciona una medida de la integridad (completness) en la transicin entre el anlisis y diseo.
CAL/Fundamentos
33
Recursos Referenciados Cuando una particin de dominio requiere acceso a un recurso ste puede o crear el recurso o buscarlo. Un recurso referenciado puede ser consultado o actualizado. En un lenguaje como Java, este arreglo puede verse como una clase importada. En otras palabras, la definicin de clase reside en un paquete pero se usa en el otro paquete. Por esta razn, algunas herramientas soportan el uso de un icono diferente para las clases referenciadas o importadas.
34
CAL/Fundamentos
35
NivelPrecio
36
DescuentoGrupo
Actualizar Descuento
CAL/Fundamentos
DescuentoCantidad
DescuentoValor
37
Actualizar Descuento
CAL/Fundamentos
38
Ningn otro objeto es requerido para establecer y mantener un PlandePrecio, de este modo que no hay referencias adicionales a objetos. La definicin completa del subsistema en el siguiente cuadro
CAL/Fundamentos
39
Actualizar NivelPrecio
{criterio de calificacin} DescuentoVolumen DescuentoGrupo
Actualizar Descuento
{criterio de volumen} DescuentoCantidad DescuentoValor
CAL/Fundamentos
40
Ejemplo 2: Particin de dominio Poner precio a la presentacin. Este ejemplo es diferente pues no crea objetos solo enlaces.
Identificar las clases que el caso de uso Poner precio a la presentacin referencia. Para hacerlo deber leer la descripcin narrativa del caso de uso. El primer paso en Poner precio a la presentacin es seleccionar una presentacin. Se indica con un sombreado sobre la clase que sta pertenece a otra particin pero est referenciando aqu.
41
CAL/Fundamentos
Presentacin
CAL/Fundamentos
42
Presentacin
PlanDePrecios
CAL/Fundamentos
43
Presentacin
CAL/Fundamentos
44
Una vez que ha seleccionado la presentacin y el PlanDePrecios, debe seleccionar un conjunto de AsientoPresentacin para poner precio.
Poner precio a presentacin
PlanDePrecios 0..1 0..* Presentacin
AsientoPresentacion
CAL/Fundamentos
45
1..* NivelPrecio
AsientoPresentacion
CAL/Fundamentos
46
Cree un enlace entre NivelPrecio y cada uno de los objetos AsientoPresentacin seleccionados.
AsientoPresentacion
CAL/Fundamentos
47
AsientoPresentacion
CAL/Fundamentos
48
CAL/Fundamentos
49
Particionar Dependencias
Las dependencias describen una relacin entre particiones. Ud. puede deducir las dependencias evaluando las asociaciones. Una clase est asociada con otra clase porque existe alguna forma de comunicacin entre ellas. Los objetos de una clase podran consultar por informacin de otra clase. P.e. El AsientoPresentacin podra pedir a Asiento el detalle de sus ubicaciones para imprimir en el boleto.
50
CAL/Fundamentos
Particionar Dependencias
Una forma de hallar la direccin de las dependencias es buscas la direccin de la comunicacin entre los objetos. En los diagramas de secuencia y colaboracin se ha documentado la forma que los objetos conversan.
CAL/Fundamentos
51
Particionar Dependencias
En el siguiente diagrama. Busque los diagramas de interaccin donde los dos tipos de objetos se comunican. Ver si la flecha de evento va en una sola direccin o en ambas. La(s) direccin(es) de la flecha de evento le dir la direccin de la dependencia.
CAL/Fundamentos
52
Particionar Dependencias
Vea el Subsistema Gestin de Eventos y el subsistema Gestin de Facilidades. Existen tres asociaciones para examinar entre ellas.
CAL/Fundamentos
53
Particionar Dependencias
Evento 0..* 1 se hace en 1 1 0..1 PlanPisoEvento 0..* 1 0..* se basa en 0..* Auditorio
Gestin de Eventos
1 PlanPisoAuditorio
Gestin de facilidades
0..*
0..* Asiento
CAL/Fundamentos
54
Particionar Dependencias
Encontrar los diagramas de secuencia o colaboracin que muestren la comunicacin de los objetos asociados. Aqu tenemos dos diagramas de secuencia que contienen los objetos asociados. Por simplicidad se ha combinado en un solo diagrama con notas en ambos lados.
55
CAL/Fundamentos
Particionar Dependencias
CAL/Fundamentos
56
Particionar Dependencias
CAL/Fundamentos
57
Particionar Dependencias
<<subsystem>> Gestion de Eventos <<subsystem>> Gestion de Facilidades
se hace en 1
Auditorio 1
1 PlanPisoAuditorio
0..*
0..* Asiento
Dependencia paquetes
58
CAL/Fundamentos
Particionar Dependencias
Dependencia funcional. Una dependencia puede existir entre una funcin y una clase u objeto. Por ejemplo, el modelo de objetos le dice que las presentaciones deben formar parte de un evento (composicin). Para crear un objeto presentacin debera invocar el objeto evento, pedir que cree una nueva presentacin y agregar el nuevo objeto presentacin a su composicin. ...
59
CAL/Fundamentos
Particionar Dependencias
...La funcin gestin de presentaciones (caso de uso) inicia la adicin, cancelacin y reprogramacin de presentaciones. Pero gestin de presentaciones depende, para hacer el trabajo, del objeto evento que se encuentra en Gestin de Eventos
CAL/Fundamentos
60
Particionar Dependencias
Dependencia de tiempo. Otra forma de identificar dependencias es determinar cual objeto debe existir primero. Por ejemplo, en el subsistema Poner Precios no hay interaccin de objeto que pudiera decirle explcitamente en que direccin dibujar la dependencia. Tanto el objeto presentacin como el objeto PlanDePrecio han de existir antes que el subsistema de poner precios pueda hacer su trabajo.
61
CAL/Fundamentos
Particionar Dependencias
CAL/Fundamentos
62
Particionar Dependencias
Ejercicio:
CAL/Fundamentos
63
Resumen
El particionamiento del dominio proporciona una divisin del sistema completo en unidades cohesivas de trabajo. En las aplicaciones culminadas estas unidades se pueden combinar para soportar diferentes flujos de trabajo (workflows) o deberes. El particionamiento de dominio tambin fija la fase de particionamiento arquitectural pues cada tipo de trabajo o funcionalidad podra implicar una solucin arquitectural diferente.
64
CAL/Fundamentos
Resumen
cmo dividira el particionamiento de dominio? Debe primero asignar cada caso de uso y cada clase de sus modelos de anlisis a una particin de dominio y todas las asociaciones del modelo de objetos deben preservarse. Nada debe perderse en la transicin del anlisis al diseo.
65
CAL/Fundamentos