Академический Документы
Профессиональный Документы
Культура Документы
PROCESO DE DESARROLLO RELACIN ENTRE MODELOS ........... 1 MODELO DE ANLISIS .......................................................................4 MODELO DE DISEO ........................................................................4 MODELO DE ANLISIS - GUA DE SELECCIN DE OBJETOS .......... 5 PATRONES DE COLABORACIN ENTRE OBJETOS ..........................................5 REGLAS DE NEGOCIO ..................................................................... 10 Tipos de reglas ....................................................................... 10 Asignacin ............................................................................. 10 Patrones de asignacin de Reglas de Negocio.............................. 11 TIPOS DE SERVICIOS ...................................................................... 14 Asignacin ............................................................................. 14 CRITERIOS DE BUEN ANLISIS.................................................. 17
Sabemos que el cdigo surgi de un diseo previo. Pero, Cmo surgi el diseo? Seguimos la secuencia de pasos que nos lleva a este Diseo.
Primer 1: relevar requerimientos a partir de las necesidades de los usuarios en relacin con su trabajo utilizando el sistema en desarrollo.
Paso 2: especificar los casos de uso para entender su comportamiento dinmico (diagramas de colaboracin y / o secuencia). Tenemos Comportamiento, hace falta una estructura.
Paso 3: pensar una estructura simple a partir de conceptos extrados del dominio del problema (Modelo de Dominio).
Paso 4: refinar el Modelo de Dominio a partir de la informacin de los Casos de Uso y Patrones de Anlisis en un Modelo de Anlisis.
MODELO DE ANLISIS Objetivo: entender en detalle el negocio y sus reglas Mecanismo utilizado: Patrones de Anlisis
MODELO DE DISEO Objetivo: implementar una solucin al problema planteado en el anlisis ms las restricciones impuestas por los requerimientos no funcionales. Mecanismo utilizado: Patrones de Diseo
Instancias
cd Class Model
Item
1 0..*
ItemEspecifico
Ejemplo
Pelicula
1 0..*
CopiaVideo
cd Class Model
Contenedor
0..1 0..*
Contenido
Ejemplo
Pallet
Caj a
cd Class Model
Grupo
0..* 0..*
Miembro
Ejemplo
CategoriaProducto
Producto
cd Class Model
Rol
1 0..*
Transaccion
Ejemplo
Cliente
1 0..*
OrdenCompra
0..* 0..1
Vendedor
Ejemplo
Vehiculo
Inspeccion
Ejemplo
REGLAS DE NEGOCIO
Son las restricciones que gobiernan las acciones dentro de un dominio de negocio. En el modelo se traducen en reglas de colaboracin. La forma de incorporarlas al modelo consiste en restricciones a ser probadas en la colaboracin entre los distintos objetos del modelo. En el modelo se traduce por ejemplo en si dos objetos pueden crear una nueva relacin o remover una existente. Donde ubicarlas? Si no se ubican en el modelo, el mismo es incompleto. La dinmica de los objetos ser externa al mismo. Cmo expresarlas? Qu colaborador (objeto) prueba cada regla en funcin de la informacin que conoce o puede consultar?
Tipos de reglas
Tipo: un medicamento puede ser cargado solo en un container refrigerado Multiplicidad: un pallet refrigerado puede contener hasta 10 cajas Propiedad (validacin, comparacin): un pago debe registrar un nmero vlido de tarjeta de crdito, la temperatura de un container refrigerado debe ser menor a 0 grados centgrados Estado: una orden no debe ser entregada si antes fue cancelada Conflicto: un vuelo no puede ser programado en una puerta en un mismo horario que otro vuelo, un producto no puede ser sumado a una orden de compra de un menor de edad si la venta est prohibida a menores.
Reglas de colaboracin: chequeo de reglas de negocio entre objetos participantes de las relaciones. El cambio de estado, el establecimiento de una relacin o la ruptura de la misma requiere el chequeo de una regla de negocio. Este chequeo lo vemos como una colaboracin entre objetos.
Asignacin
Asignacin de Reglas: 1. cuando se modela gente, lugares y cosas, SIEMPRE asignar las reglas a los objetos ms especficos, locales o detallados. 2. cuando la gente, lugares y cosas interactan con un evento, son los propietarios de sus reglas. 3. cuando existen transacciones en secuencia, la transaccin precedente es la que chequea las reglas.
10
4. En el patrn A-R las reglas dependen del contexto, por esta razn estn asignadas al rol, ya que este es quien conoce el contexto. 5. Los patrones de agregacin (GL-L, E-P, C-C, G-M) tienen un comportamiento similar en cuanto a las reglas que deben probar. Solo en el G-M el G debe probar la regla que define el conflicto con otros grupos. 6. Los patrones en los que uno de los objetos es un evento o transaccin (T-R, T-L, T-IE) la responsabilidad de la prueba de las reglas es asignada a los objetos que participan de la transaccin. La transaccin debe cumplir con que solo conoce al colaborador y no puede romper con l. Los objetos que participan pueden ser interrogados acerca de si aceptan participar de la transaccin, en ese momento prueban las reglas. (ver servicios que conducen). En el caso de las transacciones cronolgicas se da el mismo patrn, donde la precedente adopta el rol de la prueba de reglas. 7. En el caso de transacciones secuenciales o cronolgicas (TC-T), la precedente prueba las reglas. Solo la multiplicidad es chequeada por la segunda transaccin.
Tipos de Reglas Tipo, Propiedades, Fechas, Horas, Descripciones, Estados Patrn setXXX(valor) solo estos mtodos aparecen en las interfaces testXXX(valor) doSetXXX(valor) Ej. SetTitle(String) en Documento Ej. makeChair() en TeamMember (no se usa setChair porque se reservan los sets para mtodos con valores). Validacin
11
La validacin la realiza la clase propietaria de la propiedad Variaciones Validaciones cruzadas Una propiedad de una clase depende de otra clase (Ej. TeamMember Team) Ej. testSetRoleChair() en TeamMember Ej. Implementacin
cd DD_DiagramaClasesRN_3 Adm inStock
Im plem e nta la re gla R N_3 Producto + C odigopProducto: String Descripcion: String inStock (int) : boole a n } RN_3 boole an inStock (int ca ntidad) { if(testInStock (ca ntida d)) doInStock (ca ntida d); e lse return false ;
Tipos de Reglas Reglas que son validadas con la participacin de ms de una clase, los que forman el patrn de anlisis. Patrn addXXX(referencia) testAddXXX(referencia) doAddXXX(referencia) removeXXX(referencia) testRemoveXXX(referencia) doRemoveXXX(referencia) Validacin Asignar validacin y director a las colaboraciones Las validaciones se delegan:
12
Genrico -> Especfico Todo -> Parte Especfico -> Transaccin Las validaciones las conducen: Genrico Especfico Todo Parte Especfico Transaccin 9 9 Los mtodos addXX y removeXX solo aparecen en las interfaces de las clases que conducen las validaciones Los mtodos doAddXX, doRemoveXXX y los testAddXX, testRemoveXXX aparecen en todas
Tipos de Reglas Conflicto Patrn Validacin El director las valida desde sus propias validaciones Ej. Nominacion TestAddDocumento() > Documento testAddNominationConflic() Ej. Implementacin de Reglas compuestas
13
DatosTransaccion
ITransaccion
Item Items
realize
OrdenCompra + + + costoEnvio: double estado: Estado monto: double addItem(int, String) : boolean conItem() : boolean getCosto() : double getEstado() : Estado setCostoEnvio(double) : void RN_1
RN_2
RN_4
RN_5
1 ReglasNegocio Property
TIPOS DE SERVICIOS
1. conduccin del negocio 2. interrogacin (informacin del estado actual) 3. anlisis de transacciones (informacin histrica)
Asignacin
Asignacin de servicios:
14
capacitacin y gua para el desarrollo de software 1. Los objetos ms especficos conducen la realizacin del negocio a partir de sus servicios. 2. cuando para la realizacin de una accin es necesario la participacin de ms de un objeto, los eventos conducen a travs de sus servicios.
15
Servicios de Acciones: creacin de Conduccin del objetos, asignacin de Negocio valores. Cambian estados, establecen relaciones y las rompen.
Servicios de Respuestas a preguntas: boolean hasNominatePrivilege(), ver TeamMemberProfile Determinacin informacin actual, no de Valores cambia estados, boolean hasValidEmail(), ver PersonProfile devuelve valores o los calcula en colaboracin. boolean isPublished(), ver Documento Servicios de Anlisis de Transacciones Respuestas a preguntas: INomination getApprovedNomination(), ver Documento informacin histrica
INomination getLatestNomination(), ver
Documento
Colaboradores: acceso a IPerson getPerson(), TeamMemberProfile colaboradores Reglas de Negocio: validacin de las reglas asignadas
ver TeamMember
void testAddPerson(IPerson aPerson), Void testAddNominationConflict(INomination aNomination, ITeamMember aTeamMember), ver Documento
16
Aplicacin
Negocio
Decisin
Mecanismo analticos (cambios muy lentos)
Polticas
Criterios de Administracin del Negocio (cambios lentos)
Operaciones
Actividades que reflejan la realidad del negocio (cambios rpidos)
Servicios
Procesos soporte (cambios moderados)
Infraestructura
17
Referencias
BIBLIOGRAFA Libros Streamlined Object Modeling Patterns, rules and implementations, Jill Nicola et. al., PHPTR, 2002. Analysis Patterns, Martin Fowler, 1997. Domain Driven Design, Eric Evans, Addison-Wesley, 2004. Object-Oriented Analysis and Design with Applications (2nd Edition), Grady Booch, 1994.
18