sesion 6 3 diseño particionamiento de dominio

65
Diseño: Particionamiento de Dominio Lic. César Alcántara Loayza

Upload: julio-pari

Post on 18-Jul-2015

257 views

Category:

Documents


1 download

TRANSCRIPT

Diseño:Particionamiento de Dominio

Lic. César Alcántara Loayza

CAL/Fundamentos 2

Particionando El Dominio Particionar el dominio es un proceso de

dividir un dominio de problema en unidades cohesivas antes de proceder al diseño 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 dinámico.

CAL/Fundamentos 3

Para una revisión de Paquetes vea la PPT. UML - Paquetes

Particionando El Dominio

CAL/Fundamentos 4

Particionando El Dominio

Cada uno de los modelos Revelan algunas cosas diferentesAcerca del dominio del problema.

El dominio del problema fue Definido durante la iniciación del proyecto y El análisis del problema.

Modelo de Casos de Uso

Define espectativas del usuario por el sistemaIdentifica características requeridas del sistemaIdentifica dependencias entre características

Modelo de Objetos

Define recursos usados por el dominio del problemaDefine la estructura de los recursosDefine las relaciones entre recursos

Modelo Dinámico

Define como los recursos interactúan uno con otroDefine las interfaces entre los objetos del dominioDefine las dependencias entre objetos del dominio

CAL/Fundamentos 5

El modelo de casos de uso describe lo que los usuarios esperan ver cuando interactúen 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 número de cuenta bancario y el monto de dinero a retirar. Los casos de uso proveen la base para el particionamiento funcional.

Particionando El Dominio

CAL/Fundamentos 6

El modelo de objetos define los recursos del dominio del problema. Estos recursos son la información 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 información que el objeto posee. Consecuentemente, el modelo de objetos es particionado para coincidir con las particiones funcionales.

Particionando El Dominio

CAL/Fundamentos 7

El modelo dinámico incluye dos tipos de diagramas de interacción: el diagrama de secuencia y el diagrama de colaboración. Ambos diagramas ilustran la conversación de los objetos. Describen la comunicación entre los objetos participantes y de este modo proporcionan información valiosa acerca de los atributos e interfaces de los objetos del dominio participantes.

Particionando El Dominio

CAL/Fundamentos 8

Cuando se particiona el modelo de objetos, las asociaciones entre objetos deben preservarse porque ellas se traducen en dependencias entre particiones.

Particionando El Dominio

CAL/Fundamentos 9

Paquetes Los paquetes proporcionan una

herramienta genérica para agrupar información 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.

CAL/Fundamentos 10

Ejemplo

Paquetes

Ventas<<Domain Package>>

Gestion de Presentaciones

<<Domain Package>>

Icono de Paquete

Nombre del Paquete y Estereotipo

Flecha de dependencia: La partición ventas depende de la partición Gestión de Presentaciones

CAL/Fundamentos 11

Estereotipos Estándares Ver documento de:

Estereotipos

CAL/Fundamentos 12

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.

CAL/Fundamentos 13

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 presentación se hayan definido y cotizado.

CAL/Fundamentos 14

Consecuentemente, el subsistema de ventas podría depender de la Gestión de Asientos, el cual pone los asientos dentro del auditorio. El subsistema de ventas podría también depender de la Gestión de presentaciones, el cual define las presentaciones, y Poner precios, el cual asigna los precios a los sitios de cada presentación.

Dependencias De Paquetes

CAL/Fundamentos 15

Dependencias De Subsistemas

Gestion De Sitios<<Domain Package>>

Poner Precio A Presentaciones

<<Domain Package>>

Ventas<<Domain Package>>

Gestión De Presentaciones

<<Domain Package>>

Requiere que los sitios ya esten definidos en el sistema con una localidad válida

Ventas Necesita los precios asignados a cada asiento en la presentación

Requiere acceso a los asientos dentro de la presentación

Este subsistema definirá las ubicaciones de los asientos en el auditorio

Este subsistema rastrea cuales sitios estan disponibles para la venta en cada presentación

Este subsistema asigna precios a los asientos dentro de cada presentación

CAL/Fundamentos 16

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 función 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.

CAL/Fundamentos 17

Identificar las dependencias entre los paquetes/ particiones evaluando las asociaciones entre las clases participantes y las interacciones que toman lugar entre los objetos asociados.

El Proceso De Particionar

CAL/Fundamentos 18

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 solución deseada.

El Proceso De Particionar

CAL/Fundamentos 19

Puede continuar el proceso de refinamiento solicitando input de otros. Use los diagramas para comunicar ideas y para capturar visiones obtenidas a través de revisiones. Esta práctica mantendrá los diagramas actualizados con la comprensión de los requerimientos y los diseños realizados durante el proceso.

El Proceso De Particionar

CAL/Fundamentos 20

Trate de evitar el hábito de tomar notas y luego actualizar diagramas. Los diagramas se convertirán en otra tarea de documentación molesta y perderá su valor como herramienta para asistir en el proceso de modelado.

El Proceso De Particionar

CAL/Fundamentos 21

Partición De Casos De Uso 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 aplicación finalizada, los casos de uso se traducen en opciones de menú, transacciones y otras unidades de trabajo discretas.

CAL/Fundamentos 22

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 podrían necesitar combinarse para proporcionar una unidad de trabajo completa.

Partición De Casos De Uso

CAL/Fundamentos 23

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 interacción será más claramente visible y podrá probar su efectividad.

Partición De Casos De Uso

CAL/Fundamentos 24

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.

Partición De Casos De Uso

CAL/Fundamentos 25

Partición De Casos De Uso

<<subsystem>>Manejar PlanDePrecios

Crear PlanDe Precio

Crear NivelDe Precio

CrearDescuento

Para crear el plan de Precios Tiene primero que crear el Nivel de precios y descuento De donde pueda escoger.

La única razón para crear un Nivel de precio es para utilizarse en el mismo subsistema donde el usuario pueda usarlo.

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.

CAL/Fundamentos 26

Mantenga las siguientes preguntas en mente cuando particione: ¿Podría este caso de uso estar solo? ¿Sería razonable para un usuario

completar su tarea o hacer algo mas? Si es así, trate de aislar el caso de uso en su propia partición.

Partición De Casos De Uso

CAL/Fundamentos 27

¿Podría un usuario usar juntas un grupo de funciones?, si es así, entonces trate de poner los casos de uso juntos en la misma partición.

¿El resultado de una función influye las opciones de otra función?

¿Existe tipo de relaciones de reconciliación, balanceo o ensamble de relaciones entre las funciones?

Partición De Casos De Uso

CAL/Fundamentos 28

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.

Partición De Casos De Uso

CAL/Fundamentos 29

El modelo de objetos en el particionamiento del dominio. 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.

Modelo de Objetos - Partición

CAL/Fundamentos 30

Para asignar clases a particiones de dominio se necesita examinar recursos en dos niveles: ¿qué recursos son creados o controlados

por la partición de dominio? ¿Qué recursos son referenciados por la

partición de dominio pero creados o controlados en otra parte?

Modelo de Objetos - Partición

CAL/Fundamentos 31

Cada recursos objeto debe ser creado. La pregunta que necesita responder cuando intenta asignar objetos a particiones es, “¿quién es responsable de la creación del objeto?” tipicamente, ud. debería 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.

Modelo de Objetos - Partición

CAL/Fundamentos 32

Una vez que se crea el objeto, este puede ser accedido por otros casos de uso en otras particiones a través de la base de datos (repositorio persistente) o a través de cualquier número de componentes servidor de objetos. Los casos de uso “creadores” y “referenciadores” no tienen que conocerse uno al otro.

Modelo de Objetos - Partición

CAL/Fundamentos 33

Cada clase en el modelo de objetos debe estar asignada a una partición. Este proceso proporciona una medida de la integridad (completness) en la transición entre el análisis y diseño.

Modelo de Objetos - Partición

CAL/Fundamentos 34

Recursos Referenciados – Cuando una partición 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 definición de clase reside en un paquete pero se usa en el otro paquete. Por esta razón, algunas herramientas soportan el uso de un icono diferente para las clases referenciadas o importadas.

Modelo de Objetos - Partición

CAL/Fundamentos 35

Ejemplo 1 Partición de dominio Planear precio.

Modelo de Objetos - Partición

Planear Precio

ActualizarNivelPrecio

ActualizarPlanPrecio

ActualizarDescuento

CAL/Fundamentos 36

Actualiza NivelPrecio crea y mantiene los objetos NivelPrecio

Modelo de Objetos - Partición

Planear Precio

ActualizarNivelPrecio

ActualizarPlanPrecio

ActualizarDescuento

NivelPrecio

CAL/Fundamentos 37

Actualiza descuento crea y mantiene los objetos descuento.

Modelo de Objetos - Partición

Planear Precio

ActualizarNivelPrecio

ActualizarPlanPrecio

ActualizarDescuento

NivelPrecio

Descuento

DescuentoVolumen DescuentoGrupo

DescuentoValorDescuentoCantidad

CAL/Fundamentos 38

Actualizar PlanPrecio crea y mantiene los objetos PlanPrecio.

Modelo de Objetos - Partición

Planear Precio

ActualizarNivelPrecio

ActualizarPlanPrecio

ActualizarDescuento

Descuento

PlanDePrecios

0..*

0..*

0..*

0..*

NivelPrecio

1..*

0..*

1..*

0..*

DescuentoVolumen DescuentoGrupo

DescuentoCantidad DescuentoValor

{criterio de calificación}

{criterio de volumen}

CAL/Fundamentos 39

Ningún otro objeto es requerido para establecer y mantener un PlandePrecio, de este modo que no hay referencias adicionales a objetos. La definición completa del subsistema en el siguiente cuadro

Modelo de Objetos - Partición

CAL/Fundamentos 40

Modelo de Objetos - Partición<<subsystem>>

Planear Precio

ActualizarNivelPrecio

ActualizarPlanPrecio

ActualizarDescuento

Descuento

PlanDePrecios

0..*

0..*

0..*

0..*

NivelPrecio

1..*

0..*

1..*

0..*

DescuentoVolumen DescuentoGrupo

DescuentoCantidad DescuentoValor

{criterio de calificación}

{criterio de volumen}

CAL/Fundamentos 41

Ejemplo 2: Partición de dominio Poner precio a la presentación. Este ejemplo es diferente pues no crea objetos solo enlaces. Identificar las clases que el caso de uso Poner

precio a la presentación referencia. Para hacerlo deberá leer la descripción narrativa del caso de uso. El primer paso en Poner precio a la presentación es seleccionar una presentación. Se indica con un sombreado sobre la clase que ésta pertenece a otra partición pero está referenciando aquí.

Modelo de Objetos - Partición

CAL/Fundamentos 42

Poner precio a presentación

Modelo de Objetos - Partición

Presentación

CAL/Fundamentos 43

El siguiente paso es seleccionar el PlanDePrecio para la presentación.

Modelo de Objetos - Partición

Poner precio a presentación

Presentación PlanDePrecios

CAL/Fundamentos 44

Crear el enlace entre Presentación y PrecioDelPlan.

Modelo de Objetos - Partición

Poner precio a presentación

PlanDePrecios

0..1 0..*

Presentación

CAL/Fundamentos 45

Una vez que ha seleccionado la presentación y el PlanDePrecios, debe seleccionar un conjunto de AsientoPresentación para poner precio.

Modelo de Objetos - Partición

Poner precio a presentación

PlanDePrecios

0..1 0..*

Presentación

AsientoPresentacion

CAL/Fundamentos 46

Seleccione el NivelPrecio para asignar al AsientoPresentación

Modelo de Objetos - Partición

Poner precio a presentación

PlanDePrecios

0..1 0..*

Presentación

AsientoPresentacionNivelPrecio1..*

0..*

CAL/Fundamentos 47

Cree un enlace entre NivelPrecio y cada uno de los objetos AsientoPresentación seleccionados.

Modelo de Objetos - Partición

Poner precio a presentación

PlanDePrecios

0..1 0..*

Presentación

AsientoPresentacionNivelPrecio1..*

0..*

0..*0..1

CAL/Fundamentos 48

Modelo de Objetos - Partición

Poner precio a presentación

PlanDePrecios

0..1 0..*

Presentación

AsientoPresentacionNivelPrecio1..*

0..*

0..*0..1

<<Subsystem>>Poner Precio Presentación

Definición del Subsistema Final

CAL/Fundamentos 49

Ejercicio Ver documento Word: Diseño – Particionar Casos de Uso.

Partición De Casos De Uso

CAL/Fundamentos 50

Las dependencias describen una relación entre particiones. Ud. puede deducir las dependencias evaluando las asociaciones. Una clase está asociada con otra clase porque existe alguna forma de comunicación entre ellas. Los objetos de una clase podrían consultar por información de otra clase. P.e. El AsientoPresentación podría pedir a Asiento el detalle de sus ubicaciones para imprimir en el boleto.

Particionar Dependencias

CAL/Fundamentos 51

Una forma de hallar la dirección de las dependencias es buscas la dirección de la comunicación entre los objetos. En los diagramas de secuencia y colaboración se ha documentado la forma que los objetos conversan.

Particionar Dependencias

CAL/Fundamentos 52

En el siguiente diagrama. Busque los diagramas de interacción donde los dos tipos de objetos se comunican. Ver si la flecha de evento va en una sola dirección o en ambas. La(s) dirección(es) de la flecha de evento le dirá la dirección de la dependencia.

Particionar Dependencias

CAL/Fundamentos 53

Vea el Subsistema Gestión de Eventos y el subsistema Gestión de Facilidades. Existen tres asociaciones para examinar entre ellas.

Particionar Dependencias

CAL/Fundamentos 54

Particionar Dependencias

Evento10..*

Auditorio

1

1PlanPisoAuditorio

1

0..*

PlanPisoEvento 0..* 0..*

1

0..1

Asiento

0..*

0..*

se basa en

se hace en

0..*

0..*1

0..*

1

110..*

0..1

1

Gestión deEventos

Gestión defaci l idades

CAL/Fundamentos 55

Encontrar los diagramas de secuencia o colaboración que muestren la comunicación 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.

Particionar Dependencias

CAL/Fundamentos 56

Determine la dirección de comunicación entre los dos objetos en cuestión.

Particionar Dependencias

CAL/Fundamentos 57

Actualice el diagrama de paquetes para indicar la dirección de la dependencia.

Particionar Dependencias

CAL/Fundamentos 58

Dependencia paquetes

Particionar Dependencias

Evento10..*

Auditorio

1

1PlanPisoAuditorio

1

0..*

PlanPisoEvento 0..* 0..*

1

0..1

Asiento

0..*

0..*

se basa en

se hace en

0..*

0..*1

0..*

1

110..*

0..1

1

Gestion de Eventos

<<subsystem>>

Gestion de Facilidades

<<subsystem>>

CAL/Fundamentos 59

Dependencia funcional. Una dependencia puede existir entre una función y una clase u objeto. Por ejemplo, el modelo de objetos le dice que las presentaciones deben formar parte de un evento (composición). Para crear un objeto presentación debería invocar el objeto evento, pedir que cree una nueva presentación y agregar el nuevo objeto presentación a su composición. ...

Particionar Dependencias

CAL/Fundamentos 60

...La función gestión de presentaciones (caso de uso) inicia la adición, cancelación y reprogramación de presentaciones. Pero gestión de presentaciones depende, para hacer el trabajo, del objeto evento que se encuentra en Gestión de Eventos

Particionar Dependencias

CAL/Fundamentos 61

Dependencia de tiempo. Otra forma de identificar dependencias es determinar cual objeto debe existir primero. Por ejemplo, en el subsistema Poner Precios no hay interacción de objeto que pudiera decirle explícitamente en que dirección dibujar la dependencia. Tanto el objeto presentación como el objeto PlanDePrecio han de existir antes que el subsistema de poner precios pueda hacer su trabajo.

Particionar Dependencias

CAL/Fundamentos 62

Dependencia entre particiones

Particionar Dependencias

Poner precios a Presentación

<<subsystem>>Gestión de

Presentaciones

<<subsystem>>

Planear Precios<<subsystem>>

CAL/Fundamentos 63

Ejercicio: Ver documento word

Diseño – Asignar dependencias

Particionar Dependencias

CAL/Fundamentos 64

Resumen El particionamiento del dominio proporciona

una división 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 también fija la fase de particionamiento arquitectural pues cada tipo de trabajo o funcionalidad podría implicar una solución arquitectural diferente.

CAL/Fundamentos 65

¿cómo dividiría el particionamiento de dominio? Debe primero asignar cada caso de uso y cada clase de sus modelos de análisis a una partición de dominio y todas las asociaciones del modelo de objetos deben preservarse. Nada debe perderse en la transición del análisis al diseño.

Resumen